diff --git a/ab_batches/normal_camera/normal_camera_acceptance_gates.md b/ab_batches/normal_camera/normal_camera_acceptance_gates.md
new file mode 100644
index 0000000..bfa96bd
--- /dev/null
+++ b/ab_batches/normal_camera/normal_camera_acceptance_gates.md
@@ -0,0 +1,14 @@
+# Normal Camera Pre-A/B Acceptance Gates
+
+No-generation gate sheet for later fixed-seed generation review. This file does not record generated evidence.
+
+- `camera_geometry`: Camera angle, elevation, side/front/back orientation, and framing match the atlas family.
+- `pose_ownership`: The visible actors own the pose correctly, with no POV body cues leaking into normal-camera framing.
+- `workspace_continuity`: Workspace/lounge details support the camera angle instead of fighting the pose.
+- `clothing_visibility`: Clothing cues stay attached to the intended visible subject and only describe garments visible in this pose.
+- `subject_identity`: The same woman identity, face, hair, eyes, and body type remain stable across fixed-seed variants.
+- `body_proportion_control`: Penis/body proportions and limb lengths stay plausible for the selected atlas framing.
+- `prompt_noise`: Prompt text uses direct visual cues, with option, negative, and instruction-like wording removed from positive text.
+- `atlas_reference_match`: The generated frame can be matched back to the selected atlas references for this variant.
+
+Prompt-ready cues must stay positive and direct. Cues with option words, negative wording, or instruction-like cleanup text remain review-only until manually rewritten from atlas evidence.
diff --git a/ab_batches/normal_camera/normal_camera_needs_samples_acquisition.json b/ab_batches/normal_camera/normal_camera_needs_samples_acquisition.json
new file mode 100644
index 0000000..7943006
--- /dev/null
+++ b/ab_batches/normal_camera/normal_camera_needs_samples_acquisition.json
@@ -0,0 +1,1928 @@
+{
+ "schema": "sxcp_normal_camera_needs_samples_acquisition_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "source_variant_catalog": "categories/normal_camera_variants.json",
+ "selection": "needs_samples variants sorted by missing reference count, action family, and variant key",
+ "target_reference_count": 12,
+ "available_variant_count": 76,
+ "selected_count": 76,
+ "variants": [
+ {
+ "variant_key": "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "blowjob laying - back view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "blowjob laying - back view - 3-4 angle",
+ "canonical_folder": "blowjob laying - back view - 3-4 angle",
+ "canonical_key": "blowjob_laying_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference laying oral-contact back three-quarter source pool: one reviewed sample preserves the rear-offset cue but remains too thin for a prompt-ready route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one rear-offset sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 1
+ },
+ {
+ "variant_key": "normal_blowjob_low_angle",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "low_angle",
+ "atlas_folders": [
+ "blowjob - low angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "blowjob - low angle",
+ "canonical_folder": "blowjob - low angle",
+ "canonical_key": "blowjob_low_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin generic low-angle normal-camera oral reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a one-sample low-angle reference; keep needs_samples.",
+ "acquisition_rank": 2
+ },
+ {
+ "variant_key": "normal_anal_cowgirl_single_reference_pool",
+ "family": "cowgirl",
+ "action_family": "cowgirl",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "anal cowgirl"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anal cowgirl",
+ "canonical_folder": "anal cowgirl",
+ "canonical_key": "anal_cowgirl",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference anal cowgirl source pool: one reviewed third-person sample preserves the action cue but cannot define a stable normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 3
+ },
+ {
+ "variant_key": "normal_cowgirl_front_view",
+ "family": "cowgirl",
+ "action_family": "cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "cowgirl - front view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "cowgirl - front view",
+ "canonical_folder": "cowgirl - front view",
+ "canonical_key": "cowgirl_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin generic cowgirl front normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Split from the cowgirl front grouping; kept as needs_samples because the source folder is a single thin sample. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.",
+ "acquisition_rank": 4
+ },
+ {
+ "variant_key": "normal_anal_doggy_side_view_single_reference_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "anal doggy - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anal doggy - side view",
+ "canonical_folder": "anal doggy - side view",
+ "canonical_key": "anal_doggy_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference anal doggy side-view source pool: one reviewed side-view sample preserves the label but remains too thin for a prompt-ready route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review confirmed one side-view sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 5
+ },
+ {
+ "variant_key": "normal_anal_laying_back_three_quarter_single_reference_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "anal fuck from behind laying - back view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anal fuck from behind laying - back view - 3-4 angle",
+ "canonical_folder": "anal fuck from behind laying - back view - 3-4 angle",
+ "canonical_key": "anal_fuck_from_behind_laying_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference laying rear three-quarter anal source pool: one reviewed sample preserves the back three-quarter cue but remains coverage only.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one rear three-quarter sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 6
+ },
+ {
+ "variant_key": "normal_doggy_press_back_side_single_reference_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "back_view",
+ "atlas_folders": [
+ "doggy press - back side"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "doggy press - back side",
+ "canonical_folder": "doggy press - back side",
+ "canonical_key": "doggy_press_back_side",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference doggy-press back-side source pool: one reviewed rear/back sample preserves the posture cue but remains coverage only.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one rear/back sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 7
+ },
+ {
+ "variant_key": "normal_double_blowjob_handjob_front_view",
+ "family": "double_contact",
+ "action_family": "double_contact",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "double blowjob-handjob-frontview"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "double blowjob-handjob-frontview",
+ "canonical_folder": "double blowjob-handjob-frontview",
+ "canonical_key": "double_blowjob_handjob_frontview",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin double-contact front normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label as plausible, but the folder has only one front-view double-contact reference; keep needs_samples.",
+ "acquisition_rank": 8
+ },
+ {
+ "variant_key": "normal_double_blowjob_handjob_top_view",
+ "family": "double_contact",
+ "action_family": "double_contact",
+ "camera_view": "top_view",
+ "atlas_folders": [
+ "double blowjob-handjob-topview"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "double blowjob-handjob-topview",
+ "canonical_folder": "double blowjob-handjob-topview",
+ "canonical_key": "double_blowjob_handjob_topview",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin double-contact top-view normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label as plausible, but the folder has only one top-view double-contact reference; keep needs_samples.",
+ "acquisition_rank": 9
+ },
+ {
+ "variant_key": "normal_double_penetration_back_three_quarter",
+ "family": "double_contact",
+ "action_family": "double_contact",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "double penetration - back view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "double penetration - back view - 3-4 angle",
+ "canonical_folder": "double penetration - back view - 3-4 angle",
+ "canonical_key": "double_penetration_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin double-contact rear three-quarter normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label as plausible, but the folder has only one rear three-quarter reference; keep needs_samples.",
+ "acquisition_rank": 10
+ },
+ {
+ "variant_key": "normal_double_penetration_on_back_back_three_quarter",
+ "family": "double_contact",
+ "action_family": "double_contact",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "double penetration on her back- back view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "double penetration on her back- back view - 3-4 angle",
+ "canonical_folder": "double penetration on her back- back view - 3-4 angle",
+ "canonical_key": "double_penetration_on_her_back_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin double-contact on-back rear three-quarter normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label as plausible, but the folder has only one on-back rear three-quarter reference; keep needs_samples.",
+ "acquisition_rank": 11
+ },
+ {
+ "variant_key": "normal_face_sitting_front_view_single_reference_pool",
+ "family": "face_sitting",
+ "action_family": "face_sitting",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "face sitting - front view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "face sitting - front view",
+ "canonical_folder": "face sitting - front view",
+ "canonical_key": "face_sitting_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference face-sitting front-view source pool: one reviewed front sample preserves the label but remains too thin for a selected route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one front-view sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 12
+ },
+ {
+ "variant_key": "normal_fist_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "fist"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fist",
+ "canonical_folder": "fist",
+ "canonical_key": "fist",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference manual-contact source pool: the folder has one reviewed sample, so it is coverage evidence only and not a normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found only one reference. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 13
+ },
+ {
+ "variant_key": "normal_handjob_standing_low_angle_single_reference_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "low_angle",
+ "atlas_folders": [
+ "handjob - standing -low angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "handjob - standing -low angle",
+ "canonical_folder": "handjob - standing - low angle",
+ "canonical_key": "handjob_standing_low_angle",
+ "alias_applied": true,
+ "alias_reason": "Spacing typo normalized for review metadata while preserving exact source path."
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference standing manual-contact low-angle source pool: one reviewed low-angle sample preserves the label but remains coverage only.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one low-angle sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 14
+ },
+ {
+ "variant_key": "normal_missionary_front_three_quarter",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "missionary - front view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "missionary - front view - 3-4 angle",
+ "canonical_folder": "missionary - front view - 3-4 angle",
+ "canonical_key": "missionary_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin generic missionary front three-quarter normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Single sample matches the front three-quarter label but is too thin to promote. Split from the missionary front grouping and kept as needs_samples because this source folder has one sample.",
+ "acquisition_rank": 15
+ },
+ {
+ "variant_key": "normal_missionary_top_down",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "top_view",
+ "atlas_folders": [
+ "missionary - top view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "missionary - top view",
+ "canonical_folder": "missionary - top view",
+ "canonical_key": "missionary_top_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Sparse overhead missionary reference: camera looks down from above, bodies are arranged below the camera plane, and the relationship of legs, torsos, and contact line matters more than front/side azimuth.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Single sample matches a top/downward camera reference, but it remains too thin for A/B. Only one source image; keep as needs-samples before serious A/B.",
+ "acquisition_rank": 16
+ },
+ {
+ "variant_key": "normal_anus_licking_single_reference_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "anus lickiing"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anus lickiing",
+ "canonical_folder": "anus licking",
+ "canonical_key": "anus_licking",
+ "alias_applied": true,
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path."
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference anal oral-contact source pool: one reviewed sample preserves the action cue but remains coverage only.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 17
+ },
+ {
+ "variant_key": "normal_penis_worship_foreground_close_reference_folder_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "penis worship"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "penis worship",
+ "canonical_folder": "penis worship",
+ "canonical_key": "penis_worship",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Foreground-heavy close-reference source pool: many samples place the contact object prominently near camera with performer face visible, so the folder is useful for action reference but not a clean normal third-person camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Residual mixed foreground-close source pool after user-anchored top-view and side-view subsets were split out. Keep needs_samples and manually filter for non-POV crops before any A/B.",
+ "acquisition_rank": 18
+ },
+ {
+ "variant_key": "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "pussy licking leg up - back view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pussy licking leg up - back view - 3-4 angle",
+ "canonical_folder": "pussy licking leg up - back view - 3-4 angle",
+ "canonical_key": "pussy_licking_leg_up_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference leg-up oral-contact back three-quarter source pool: one reviewed sample preserves the label but remains coverage only.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one rear-offset leg-up sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 19
+ },
+ {
+ "variant_key": "normal_pussy_licking_standing_woman_single_reference_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "pussy licking standing woman"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pussy licking standing woman",
+ "canonical_folder": "pussy licking standing woman",
+ "canonical_key": "pussy_licking_standing_woman",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference standing-woman oral-contact source pool: one reviewed sample preserves the posture cue but remains coverage only.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 20
+ },
+ {
+ "variant_key": "normal_under_desk_single_reference_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "under desk"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "under desk",
+ "canonical_folder": "under desk",
+ "canonical_key": "under_desk",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference under-desk oral-contact source pool: one reviewed sample preserves the under-desk context cue but remains coverage only.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one contextual sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 21
+ },
+ {
+ "variant_key": "normal_anal_reverse_congress_single_reference_pool",
+ "family": "reverse_congress",
+ "action_family": "reverse_congress",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "anal reverse congress"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anal reverse congress",
+ "canonical_folder": "anal reverse congress",
+ "canonical_key": "anal_reverse_congress",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Single-reference anal reverse-congress source pool: one reviewed sample preserves the posture/action cue but cannot define a selected normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "acquisition_rank": 22
+ },
+ {
+ "variant_key": "normal_standing_sideway_side_view",
+ "family": "standing_penetration",
+ "action_family": "standing_penetration",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck standing - woman sideway"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fuck standing - woman sideway",
+ "canonical_folder": "fuck standing - woman sideway",
+ "canonical_key": "fuck_standing_woman_sideway",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 1,
+ "target_reference_count": 12,
+ "missing_reference_count": 11,
+ "canonical_geometry": "Thin standing sideway normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a one-sample reference; keep needs_samples.",
+ "acquisition_rank": 23
+ },
+ {
+ "variant_key": "normal_ballsucking_laying_close_reference_folder_pool",
+ "family": "ballsucking",
+ "action_family": "ballsucking",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "ballsucking - laying"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "ballsucking - laying",
+ "canonical_folder": "ballsucking - laying",
+ "canonical_key": "ballsucking_laying",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Laying oral-contact close-reference source pool with only two samples and no stable camera azimuth.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a two-sample laying close-reference pool; keep needs_samples.",
+ "acquisition_rank": 24
+ },
+ {
+ "variant_key": "normal_blowjob_front_low_angle",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "blowjob - front view - low angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "blowjob - front view - low angle",
+ "canonical_folder": "blowjob - front view - low angle",
+ "canonical_key": "blowjob_front_view_low_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Thin front low-angle normal-camera oral reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label, but this remains needs_samples because the source folder contains only two examples.",
+ "acquisition_rank": 25
+ },
+ {
+ "variant_key": "normal_double_contact_bj_pen_back_three_quarter",
+ "family": "double_contact",
+ "action_family": "double_contact",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "double penetration - BJ and Pen - back view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "double penetration - BJ and Pen - back view - 3-4 angle",
+ "canonical_folder": "double penetration - BJ and Pen - back view - 3-4 angle",
+ "canonical_key": "double_penetration_bj_and_pen_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Thin mixed double-contact rear three-quarter normal-camera reference with distinct layout cues.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label as plausible, but the folder has only two mixed-layout rear three-quarter references; keep needs_samples.",
+ "acquisition_rank": 26
+ },
+ {
+ "variant_key": "normal_double_penetration_side_view",
+ "family": "double_contact",
+ "action_family": "double_contact",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "double penetration - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "double penetration - side view",
+ "canonical_folder": "double penetration - side view",
+ "canonical_key": "double_penetration_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Thin double-contact side-view normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label as plausible, but the folder has only two side-view double-contact references; keep needs_samples.",
+ "acquisition_rank": 27
+ },
+ {
+ "variant_key": "normal_footjob_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "footjob"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "footjob",
+ "canonical_folder": "footjob",
+ "canonical_key": "footjob",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Foot-contact mixed-camera source pool: two reviewed references share the action family but vary between seated front context and tighter lower-body crop, so the folder is too thin for a camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found two related but camera-variable references. Keep as needs_samples until more matched samples define a route.",
+ "acquisition_rank": 28
+ },
+ {
+ "variant_key": "normal_mating_press_front_view",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "mating press - front view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "mating press - front view",
+ "canonical_folder": "mating press - front view",
+ "canonical_key": "mating_press_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Thin mating-press front normal-camera reference with folded/pressed posture cues.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Mating-press front label is accurate, but the source is only two near-duplicate samples. Split from the missionary front grouping because mating press needs distinct posture wording; kept needs_samples due thin source.",
+ "acquisition_rank": 29
+ },
+ {
+ "variant_key": "normal_pussy_licking_front_three_quarter",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "pussy licking - front view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pussy licking - front view - 3-4 angle",
+ "canonical_folder": "pussy licking - front view - 3-4 angle",
+ "canonical_key": "pussy_licking_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Thin-sample front-offset oral-contact reference: the receiving partner and performer are arranged so the front contact plane remains readable while the camera is offset enough to show body depth.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed the label, but this remains needs_samples because the source folder contains only two examples.",
+ "acquisition_rank": 30
+ },
+ {
+ "variant_key": "normal_pretzel_mixed_camera_folder_pool",
+ "family": "piledriver_or_pretzel",
+ "action_family": "piledriver_or_pretzel",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "pretzel"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pretzel",
+ "canonical_folder": "pretzel",
+ "canonical_key": "pretzel",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Pretzel folded-body action reference with camera not locked enough for a preset.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a two-sample pretzel mixed-camera pool; keep needs_samples.",
+ "acquisition_rank": 31
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "reverse cowgirl - leg up"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "reverse cowgirl - leg up",
+ "canonical_folder": "reverse cowgirl - leg up",
+ "canonical_key": "reverse_cowgirl_leg_up",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Reverse-cowgirl leg-up source pool: two references preserve the posture cue, but the sample count and camera/crop variation are too thin for a locked normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review preserved this as a two-sample posture source pool. Do not promote until a larger matched camera subset exists.",
+ "acquisition_rank": 32
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "reverse cowgirl -pretzel"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "reverse cowgirl -pretzel",
+ "canonical_folder": "reverse cowgirl - pretzel",
+ "canonical_key": "reverse_cowgirl_pretzel",
+ "alias_applied": true,
+ "alias_reason": "Missing-space folder label normalized for review metadata while preserving exact source path."
+ }
+ ],
+ "reference_count": 2,
+ "target_reference_count": 12,
+ "missing_reference_count": 10,
+ "canonical_geometry": "Reverse-cowgirl pretzel source pool: two references preserve a compact pretzel-like posture cue, but the folder is too thin and posture-specific for a pre-A/B camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review preserved this as a two-sample posture source pool. Do not promote until a larger matched camera subset exists.",
+ "acquisition_rank": 33
+ },
+ {
+ "variant_key": "normal_anal_random_mixed_camera_folder_pool",
+ "family": "anal",
+ "action_family": "anal",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anal random",
+ "canonical_folder": "anal random",
+ "canonical_key": "anal_random",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Large anal source pool with mixed normal-camera examples and no single locked camera view until contact-sheet review selects stable subsets.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Added as a large unused-pool review tranche after reverse cowgirl. The full 99-image folder is a cue-expansion pool, not a prompt-ready route; split selected-reference subvariants only after contact-sheet evidence shows repeated non-POV camera geometry.",
+ "acquisition_rank": 34
+ },
+ {
+ "variant_key": "normal_ballsucking_standing_partner_mixed_camera_folder_pool",
+ "family": "ballsucking",
+ "action_family": "ballsucking",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "ballsucking - standing"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "ballsucking - standing",
+ "canonical_folder": "ballsucking - standing",
+ "canonical_key": "ballsucking_standing",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Standing-partner oral-contact source pool: the receiving partner stands while the performer is kneeling, squatting, or low in frame, and the camera varies between side, front, close, and low angles.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a standing-partner source pool, not a locked normal-camera route. Needs sample selection before A/B.",
+ "acquisition_rank": 35
+ },
+ {
+ "variant_key": "normal_blowjob_kneeling_side_profile_folder_pool",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "blowjob - kneeling - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "blowjob - kneeling - side view",
+ "canonical_folder": "blowjob - kneeling - side view",
+ "canonical_key": "blowjob_kneeling_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Kneeling oral-contact side-view source pool with only a few samples and mixed side, front, and low/overhead framing.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Downgraded after visual review: the folder has only six samples and mixes side, front, and low/overhead frames. Keep as a folder_pool until more clean kneeling side references are selected.",
+ "acquisition_rank": 36
+ },
+ {
+ "variant_key": "normal_blowjob_laying_side_profile_folder_pool",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "blowjob - laying - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "blowjob - laying - side view",
+ "canonical_folder": "blowjob - laying - side view",
+ "canonical_key": "blowjob_laying_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Laying oral-contact side-view source pool: the source folder contains useful side-profile references plus frontal close and offset samples, so the full folder is not a locked side-profile route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Full source folder mixes true side-profile samples with frontal close and offset oral references. Renamed as a folder_pool; use the selected-reference side-profile subvariant for generator-ready wording.",
+ "acquisition_rank": 37
+ },
+ {
+ "variant_key": "normal_boobjob_front_close_mixed_camera_folder_pool",
+ "family": "boobjob",
+ "action_family": "boobjob",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "boobjob"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "boobjob",
+ "canonical_folder": "boobjob",
+ "canonical_key": "boobjob",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Boobjob front-close mixed-camera source pool: many samples are frontal close references, but the folder also contains side, standing, and foreground-heavy crops, so it is not a single camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed useful front-close material, but the full source folder is mixed. Keep as a folder_pool until a representative non-POV subset is selected.",
+ "acquisition_rank": 38
+ },
+ {
+ "variant_key": "normal_couple_kissing_mixed_camera_folder_pool",
+ "family": "couple",
+ "action_family": "couple",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "couple kissing"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "couple kissing",
+ "canonical_folder": "couple kissing",
+ "canonical_key": "couple_kissing",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Normal-camera couple kissing action pool: two-person kissing or intimacy examples with mixed camera placement, useful for future soft/non-explicit camera tests after selecting a consistent subset.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a mixed normal-camera couple-contact pool across standing, seated, bed, close, side, and front crops; keep needs_samples.",
+ "acquisition_rank": 39
+ },
+ {
+ "variant_key": "normal_display_breasts_exposed_mixed_camera_folder_pool",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "breasts exposed",
+ "canonical_folder": "breasts exposed",
+ "canonical_key": "breasts_exposed",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Upper-body display mixed-camera source pool: the folder combines standing, seated, side, front, close, and full-body display crops.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a broad mixed-camera display pool; keep needs_samples until a camera-specific subset is selected.",
+ "acquisition_rank": 40
+ },
+ {
+ "variant_key": "normal_display_front_open_leg_mixed_camera_folder_pool",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pussy spread",
+ "canonical_folder": "pussy spread",
+ "canonical_key": "pussy_spread",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Front/open-leg display mixed-camera source pool: the subject usually faces camera, but camera height, crop, and azimuth vary widely across the folder.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a large useful display pool, but it needs subset selection before A/B because camera geometry varies.",
+ "acquisition_rank": 41
+ },
+ {
+ "variant_key": "normal_display_rear_body_view_folder_pool",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "woman solo showing her hass - back view",
+ "canonical_folder": "woman solo showing her ass - back view",
+ "canonical_key": "woman_solo_showing_her_ass_back_view",
+ "alias_applied": true,
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path."
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Solo rear-body display source pool: the folder contains many useful back/rear references plus seated, standing, side, and three-quarter crops, so the full folder is not a locked back-view route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Full source folder is broad and mixes rear, side, seated, standing, and three-quarter crops. Renamed as a folder_pool; use the selected-reference rear-view subvariant for generator-ready wording.",
+ "acquisition_rank": 42
+ },
+ {
+ "variant_key": "normal_display_rear_close_reference_folder_pool",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "anus exposed - back view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anus exposed - back view",
+ "canonical_folder": "anus exposed - back view",
+ "canonical_key": "anus_exposed_back_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Rear close display source pool: one sample is a true rear/back close view while the folder also contains front and oblique close references.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Downgraded after visual review: only one of four samples is a clear rear/back close reference; keep as a mixed close-reference pool.",
+ "acquisition_rank": 43
+ },
+ {
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "removing pants"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "removing pants",
+ "canonical_folder": "removing pants",
+ "canonical_key": "removing_pants",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Removing-pants action source pool: three near-duplicate close references show a standing clothing-removal setup with strong foreground crop, so the folder is review evidence rather than a stable normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found three near-duplicate close action references with strong foreground crop. Keep as needs_samples and do not queue the folder as a pre-A/B camera preset until more matched, wider non-POV samples exist.",
+ "acquisition_rank": 44
+ },
+ {
+ "variant_key": "normal_doggy_all_fours_side_view_folder_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "doggy on all four - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "doggy on all four - side view",
+ "canonical_folder": "doggy on all four - side view",
+ "canonical_key": "doggy_on_all_four_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Normal third-person doggy all-fours side view: the woman is low or on all fours, the partner is behind or beside her, and the camera stays lateral so the body axis and rear-entry contact line read across the frame.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Mostly useful non-POV side/rear-entry material, but the full folder mixes all-fours, standing, seated, low/close, and front-leaning frames. Select a narrower all-fours side-profile subset before fixed-seed A/B testing. Renamed as a folder_pool because the full source folder is mixed. The clean route name is reserved for the reviewed image-selected subvariant.",
+ "acquisition_rank": 45
+ },
+ {
+ "variant_key": "normal_doggy_from_behind_side_view_folder_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from behind - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fuck from behind - side view",
+ "canonical_folder": "fuck from behind - side view",
+ "canonical_key": "fuck_from_behind_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Normal third-person from-behind side view: the source folder is kept separate from all-fours and generic doggy side folders, with the partner behind and the camera lateral rather than POV.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "The folder is normal-camera and from-behind related, but many frames read as reclined front/three-quarter rather than stable side-profile. Select a tighter side-view subset before testing. Renamed as a folder_pool because the full source folder is mixed and does not consistently support the strict side-view route.",
+ "acquisition_rank": 46
+ },
+ {
+ "variant_key": "normal_doggy_laying_from_behind_back_three_quarter_folder_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "fuck from behind laying - back view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fuck from behind laying - back view - 3-4 angle",
+ "canonical_folder": "fuck from behind laying - back view - 3-4 angle",
+ "canonical_key": "fuck_from_behind_laying_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Laying from-behind rear three-quarter normal-camera view, with the camera offset behind the action rather than from POV.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Folder is from-behind/laying related, but the contact sheet reads mixed front/side/reclined more than stable rear three-quarter. Needs a narrower camera-confirmed subset. Renamed as a folder_pool because the full source folder label says back 3/4, while the reviewed images are visually mixed and include a front three-quarter reclined subcategory.",
+ "acquisition_rank": 47
+ },
+ {
+ "variant_key": "normal_doggy_standing_backside_side_view_folder_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from behind standing - woman backside - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fuck from behind standing - woman backside - side view",
+ "canonical_folder": "fuck from behind standing - woman backside - side view",
+ "canonical_key": "fuck_from_behind_standing_woman_backside_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Standing from-behind side-profile normal-camera view where the backside/hip orientation is the dominant folder cue.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Standing normal-camera material is present, but many images are front/three-quarter or portrait-like instead of strict side/backside framing. Needs sample narrowing. Renamed as a folder_pool because the full source folder contains standing backside material plus front/three-quarter and portrait-like frames.",
+ "acquisition_rank": 48
+ },
+ {
+ "variant_key": "normal_doggy_standing_from_behind_side_view_folder_pool",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from behind standing - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fuck from behind standing - side view",
+ "canonical_folder": "fuck from behind standing - side view",
+ "canonical_key": "fuck_from_behind_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Standing from-behind side-profile normal-camera view with the camera beside the action and the standing body line readable.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contains useful standing side/back examples, but also reclined and front-facing frames. Needs a narrowed standing side/back subset before fixed-seed A/B testing. Renamed as a folder_pool because the full source folder contains standing side/back examples plus reclined and front-facing frames.",
+ "acquisition_rank": 49
+ },
+ {
+ "variant_key": "normal_front_penetration_low_angle",
+ "family": "front_penetration",
+ "action_family": "front_penetration",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "fuck from front - front view -low angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fuck from front - front view -low angle",
+ "canonical_folder": "fuck from front - front view -low angle",
+ "canonical_key": "fuck_from_front_front_view_low_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Front-entry low/front normal camera reference: camera faces the front contact plane and sits low enough to emphasize upward body scale, but source coverage is modest.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a thin front/low-angle reference; keep needs_samples until narrowed or expanded.",
+ "acquisition_rank": 50
+ },
+ {
+ "variant_key": "normal_fingering_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "fingering"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "fingering",
+ "canonical_folder": "fingering",
+ "canonical_key": "fingering",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Fingering mixed-camera source pool: the folder contains useful manual-contact examples, but mixes reclined front views with upright, standing, side, and oral-adjacent frames, so it is not one locked normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed useful manual-contact material, but the full 15-image source folder mixes reclined front, upright, standing, side, and oral-adjacent frames. Keep as a folder_pool and use the selected reclined front-view split for prompt testing.",
+ "acquisition_rank": 51
+ },
+ {
+ "variant_key": "normal_handjob_laying_front_view",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "handjob - laying - front view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "handjob - laying - front view",
+ "canonical_folder": "handjob - laying - front view",
+ "canonical_key": "handjob_laying_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Laying manual-contact front normal-camera view.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Downgraded after visual review: only three samples, with posture/camera variation that is too thin for a front laying route.",
+ "acquisition_rank": 52
+ },
+ {
+ "variant_key": "normal_handjob_laying_side_profile_folder_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "handjob - laying -side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "handjob - laying -side view",
+ "canonical_folder": "handjob - laying -side view",
+ "canonical_key": "handjob_laying_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Laying manual-contact side-view source pool with too few clean side-profile examples to define a selected pre-A/B route in this batch.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Downgraded after visual review: the folder contains useful laying references but not enough clean, consistent side-profile samples for a pre-A/B route.",
+ "acquisition_rank": 53
+ },
+ {
+ "variant_key": "normal_handjob_sitting_side_profile_folder_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "handjob - sitting - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "handjob - sitting - side view",
+ "canonical_folder": "handjob - sitting - side view",
+ "canonical_key": "handjob_sitting_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Sitting manual-contact side-view source pool: the folder contains seated side references plus close, front, and posture-variable frames, so the full folder is not a locked route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Full source folder is visually mixed and the reviewed candidate subset still drifted too much across seated, standing/close, and front-facing frames. Keep as a folder_pool until a cleaner seated side subset exists.",
+ "acquisition_rank": 54
+ },
+ {
+ "variant_key": "normal_handjob_standing_side_profile_folder_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "handjob standing - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "handjob standing - side view",
+ "canonical_folder": "handjob standing - side view",
+ "canonical_key": "handjob_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Standing manual-contact side-view source pool: the full folder contains useful standing side references plus kneeling, seated, close, front, and oral-adjacent frames, so it is not a locked side-profile route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Full source folder is visually over-broad. Renamed as a folder_pool; use the selected-reference standing side-profile subvariant for generator-ready wording.",
+ "acquisition_rank": 55
+ },
+ {
+ "variant_key": "normal_wand_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "wand"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "wand",
+ "canonical_folder": "wand",
+ "canonical_key": "wand",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Wand toy-contact mixed-camera source pool: the folder contains useful front-close tool-contact examples, but includes side, portrait-close, and wider posture variation, so it is not one locked normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed useful wand/contact material, but the full 9-image source folder mixes front-close, side, portrait-close, and wider posture framing. Keep as a folder_pool and use the selected front-close split for prompt testing.",
+ "acquisition_rank": 56
+ },
+ {
+ "variant_key": "normal_anal_missionary_front_three_quarter",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "anal missionary - front view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anal missionary - front view - 3-4 angle",
+ "canonical_folder": "anal missionary - front view - 3-4 angle",
+ "canonical_key": "anal_missionary_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Thin anal missionary front three-quarter normal-camera reference.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Front three-quarter anal missionary label is visually accurate, but the source remains thin. Split from the missionary front grouping and kept as needs_samples because the source folder is thin.",
+ "acquisition_rank": 57
+ },
+ {
+ "variant_key": "normal_mating_press_side_view",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "mating press - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "mating press - side view",
+ "canonical_folder": "mating press - side view",
+ "canonical_key": "mating_press_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Thin mating-press side-view normal-camera reference with folded/pressed posture cues.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Mating-press side label is accurate, but only three samples are available; keep needs_samples. Split from the missionary side grouping because mating press needs distinct posture wording; kept needs_samples due thin source.",
+ "acquisition_rank": 58
+ },
+ {
+ "variant_key": "normal_missionary_anal_side_view_folder_pool",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "missionary anal - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "missionary anal - side view",
+ "canonical_folder": "missionary anal - side view",
+ "canonical_key": "missionary_anal_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Thin missionary side-view anal reference; useful but not broad enough for default testing.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "The folder is thin and not consistently side-profile; keep as a source pool until a cleaner subset exists. Renamed as a folder_pool because the thin source folder does not consistently support strict side-profile wording.",
+ "acquisition_rank": 59
+ },
+ {
+ "variant_key": "normal_missionary_folded_leg_mixed_camera_folder_pool",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "missionary - leg folded - back view 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "missionary - leg folded - back view 3-4 angle",
+ "canonical_folder": "missionary - leg folded - back view 3-4 angle",
+ "canonical_key": "missionary_leg_folded_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Folded-leg missionary source pool with mixed normal-camera angles; posture is useful, but camera geometry is not stable enough for a locked back-three-quarter route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "The folded-leg posture is clear, but the reviewed images read front, side, low, and top mixed rather than stable back three-quarter. Do not use as a back 3/4 candidate until a narrower subset is selected. Renamed from folded back-three-quarter because visual review showed a mixed-camera folded-leg source pool rather than a stable back 3/4 route.",
+ "acquisition_rank": 60
+ },
+ {
+ "variant_key": "normal_missionary_side_profile_folder_pool",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "missionary - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "missionary - side view",
+ "canonical_folder": "missionary - side view",
+ "canonical_key": "missionary_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Missionary side-profile normal-camera view with the stacked body line visible from the side.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "The full missionary side-view folder is useful but visually broad: it mixes strict side-profile samples with front/open-leg, low/close, and offset framing. Use the selected side-profile subvariant for generator-ready wording. Renamed as a folder_pool because the full side-view folder is mixed. The clean route name is reserved for the reviewed selected-reference subvariant.",
+ "acquisition_rank": 61
+ },
+ {
+ "variant_key": "normal_missionary_side_profile_full_visibility_folder_pool",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "missionary - side view - full penis"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "missionary - side view - full penis",
+ "canonical_folder": "missionary - side view - full penis",
+ "canonical_key": "missionary_side_view_full_penis",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Missionary side-profile normal-camera reference emphasizing full contact visibility from the side.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "The full visibility side folder contains some strong side references, but also front/three-quarter and close framing. Use the selected full-contact side subvariant for precise wording. Renamed as a folder_pool because the full visibility side folder is mixed. The clean route name is reserved for the reviewed selected-reference subvariant.",
+ "acquisition_rank": 62
+ },
+ {
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "pussy licking - backv iew"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pussy licking - backv iew",
+ "canonical_folder": "pussy licking - back view",
+ "canonical_key": "pussy_licking_back_view",
+ "alias_applied": true,
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path."
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Thin oral-contact source pool from the mislabeled back-view folder: the reviewed samples show high/front and high-oblique third-person framing rather than one stable back-view normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found only three samples, all closer to high-front or high-oblique oral-contact framing than a stable back-view route. Keep as needs_samples and do not queue the folder as a pre-A/B preset.",
+ "acquisition_rank": 63
+ },
+ {
+ "variant_key": "normal_pussy_licking_side_profile_folder_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "pussy licking - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pussy licking - side view",
+ "canonical_folder": "pussy licking - side view",
+ "canonical_key": "pussy_licking_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Side-view oral-contact source pool: contains many useful side-profile references but also front, low, leg-up, and oblique samples, so the full folder is not a locked side-profile route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Full source folder mixes side-profile references with front, low, leg-up, and oblique frames. Renamed as a folder_pool; use the selected-reference side-profile subvariant for generator-ready wording.",
+ "acquisition_rank": 64
+ },
+ {
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "rimjob"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "rimjob",
+ "canonical_folder": "rimjob",
+ "canonical_key": "rimjob",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Rimjob mixed-camera source pool: three reviewed references include close side/back oral-contact framing plus a wider kneeling context, so the folder is useful evidence but not a locked camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found only three mixed close/wide references. Keep as needs_samples and do not queue the folder as a pre-A/B camera preset.",
+ "acquisition_rank": 65
+ },
+ {
+ "variant_key": "normal_sixty_nine_mixed_camera_folder_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "69"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "69",
+ "canonical_folder": "69",
+ "canonical_key": "69",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Sixty-nine mixed-camera source pool: the folder contains useful mutual oral-contact examples, but mixes close/front, side/downward, upright seated, and wider room-context views, so it is not one locked normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed useful mutual oral-contact material, but the full 10-image source folder mixes close/front, side/downward, upright seated, and wider room-context framing. Keep as a folder_pool and use the selected front-close split for prompt testing.",
+ "acquisition_rank": 66
+ },
+ {
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "family": "piledriver_or_pretzel",
+ "action_family": "piledriver_or_pretzel",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "piledriver"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "piledriver",
+ "canonical_folder": "piledriver",
+ "canonical_key": "piledriver",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Piledriver folded-body action reference with camera not locked enough for a preset.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed a coherent piledriver action pool, but camera angle varies across top, front, close, and inverted views; keep needs_samples.",
+ "acquisition_rank": 67
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_anal_front_view",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ " anal reverse cowgirl - front view",
+ "anal reverse cowgirl - front view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": " anal reverse cowgirl - front view",
+ "canonical_folder": " anal reverse cowgirl - front view",
+ "canonical_key": "anal_reverse_cowgirl_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ {
+ "exact_source_folder": "anal reverse cowgirl - front view",
+ "canonical_folder": "anal reverse cowgirl - front view",
+ "canonical_key": "anal_reverse_cowgirl_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Thin reverse-cowgirl front-view reference group from duplicate front-view source labels.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Split from the broad reverse-cowgirl front variant; kept needs_samples because the combined duplicate folders are thin. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.",
+ "acquisition_rank": 68
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_mixed_camera_folder_pool",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "reverse cowgirl",
+ "canonical_folder": "reverse cowgirl",
+ "canonical_key": "reverse_cowgirl",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 3,
+ "target_reference_count": 12,
+ "missing_reference_count": 9,
+ "canonical_geometry": "Large reverse-cowgirl source pool with normal-camera examples but no single locked camera view until contact-sheet review selects stable subsets.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Added as the first large unused-pool review tranche. The full 240-image folder is a cue-expansion pool, not a prompt-ready route; split selected-reference subvariants only after contact-sheet evidence shows repeated non-POV camera geometry.",
+ "acquisition_rank": 69
+ },
+ {
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "woman ass exposed"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "woman ass exposed",
+ "canonical_folder": "woman ass exposed",
+ "canonical_key": "woman_ass_exposed",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 4,
+ "target_reference_count": 12,
+ "missing_reference_count": 8,
+ "canonical_geometry": "Rear exposed-body display source pool with only four mixed rear/side samples and no locked camera preset.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Visual review confirmed this as a thin mixed rear-display pool; keep needs_samples. The reviewed source-pool references now include all four folder images.",
+ "acquisition_rank": 70
+ },
+ {
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "family": "face_sitting",
+ "action_family": "face_sitting",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "face sitting"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "face sitting",
+ "canonical_folder": "face sitting",
+ "canonical_key": "face_sitting",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 4,
+ "target_reference_count": 12,
+ "missing_reference_count": 8,
+ "canonical_geometry": "Face-sitting mixed-camera source pool: the folder has three front or near-front samples plus one rear/back-view outlier, so it preserves review evidence without defining one locked normal-camera route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Contact-sheet review found a thin, mixed 4-image source pool. Keep as needs_samples; do not queue the full folder as a pre-A/B route until a narrower camera subset has enough matched samples.",
+ "acquisition_rank": 71
+ },
+ {
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "penis worship"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "penis worship",
+ "canonical_folder": "penis worship",
+ "canonical_key": "penis_worship",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 5,
+ "target_reference_count": 12,
+ "missing_reference_count": 7,
+ "canonical_geometry": "User-anchored penis-worship side-view subset with the receiving partner laying down and the contact axis reading vertically in the frame; distinct from the broader side-view subset because posture and vertical alignment are part of the route.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Created from five user-provided laying-partner vertical side-view anchors inside a mixed penis-worship folder. Keep needs_samples for now; promote only after broader visual split or enough additional matching samples make it stable for fixed-seed A/B.",
+ "acquisition_rank": 72
+ },
+ {
+ "variant_key": "normal_pussy_licking_leg_up_mixed_camera_folder_pool",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "mixed_or_unspecified",
+ "atlas_folders": [
+ "pussy licking woman standing - side view"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "pussy licking woman standing - side view",
+ "canonical_folder": "pussy licking woman standing - side view",
+ "canonical_key": "pussy_licking_woman_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 5,
+ "target_reference_count": 12,
+ "missing_reference_count": 7,
+ "canonical_geometry": "Leg-up oral-contact mixed-camera source pool: the folder label says standing side view, but the reviewed samples mostly read as leg-up or reclined setups with mixed front, side, and low framing.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Downgraded after visual review: the folder name implies standing side-profile, but the five images are mostly leg-up or reclined mixed-camera references. Keep as a folder_pool until manually narrowed.",
+ "acquisition_rank": 73
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_anal_front_three_quarter",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "anal reverse cowgirl - front view - 3-4 angle",
+ "anal reverse cowgirl - front view - 3-4 angle"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "anal reverse cowgirl - front view - 3-4 angle",
+ "canonical_folder": "anal reverse cowgirl - front view - 3-4 angle",
+ "canonical_key": "anal_reverse_cowgirl_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ {
+ "exact_source_folder": "anal reverse cowgirl - front view - 3-4 angle",
+ "canonical_folder": "anal reverse cowgirl - front view - 3-4 angle",
+ "canonical_key": "anal_reverse_cowgirl_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 5,
+ "target_reference_count": 12,
+ "missing_reference_count": 7,
+ "canonical_geometry": "Thin reverse-cowgirl front three-quarter reference group from duplicate 3/4 source labels.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Split from the broad reverse-cowgirl front variant; kept needs_samples until the thin 3/4 samples are reviewed. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.",
+ "acquisition_rank": 74
+ },
+ {
+ "variant_key": "normal_penis_worship_top_view",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "top_view",
+ "atlas_folders": [
+ "penis worship"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "penis worship",
+ "canonical_folder": "penis worship",
+ "canonical_key": "penis_worship",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 6,
+ "target_reference_count": 12,
+ "missing_reference_count": 6,
+ "canonical_geometry": "User-anchored penis-worship top-view normal-camera subset: camera looks down from above the interaction, making elevation the defining geometry instead of front, side, or foreground-close framing.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Created from six user-provided top-view anchors inside a mixed penis-worship folder. Keep needs_samples for now; promote only after broader visual split or enough additional top-view samples make it stable for fixed-seed A/B.",
+ "acquisition_rank": 75
+ },
+ {
+ "variant_key": "normal_penis_worship_side_view",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "penis worship"
+ ],
+ "folder_aliases": [
+ {
+ "exact_source_folder": "penis worship",
+ "canonical_folder": "penis worship",
+ "canonical_key": "penis_worship",
+ "alias_applied": false,
+ "alias_reason": ""
+ }
+ ],
+ "reference_count": 8,
+ "target_reference_count": 12,
+ "missing_reference_count": 4,
+ "canonical_geometry": "User-anchored penis-worship side-view normal-camera subset: camera reads the interaction laterally enough that the body/contact axis runs across the frame instead of from overhead or foreground-close framing.",
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": "Created from eight user-provided side-view anchors inside a mixed penis-worship folder. Keep needs_samples for now; promote only after broader visual split or enough additional side-view samples make it stable for fixed-seed A/B.",
+ "acquisition_rank": 76
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/normal_camera_needs_samples_acquisition.md b/ab_batches/normal_camera/normal_camera_needs_samples_acquisition.md
new file mode 100644
index 0000000..ec1d342
--- /dev/null
+++ b/ab_batches/normal_camera/normal_camera_needs_samples_acquisition.md
@@ -0,0 +1,84 @@
+# Normal Camera Needs-Samples Acquisition
+
+No-generation acquisition list for variants that are not ready for fixed-seed pre-A/B testing.
+
+Target reference count per promoted selected-reference family: 12.
+
+| Rank | Variant | Action | Camera | Refs | Missing | Source folders |
+| ---: | --- | --- | --- | ---: | ---: | --- |
+| 1 | normal_blowjob_laying_back_three_quarter_single_reference_pool | blowjob | back_three_quarter | 1 | 11 | blowjob laying - back view - 3-4 angle |
+| 2 | normal_blowjob_low_angle | blowjob | low_angle | 1 | 11 | blowjob - low angle |
+| 3 | normal_anal_cowgirl_single_reference_pool | cowgirl | mixed_or_unspecified | 1 | 11 | anal cowgirl |
+| 4 | normal_cowgirl_front_view | cowgirl | front_view | 1 | 11 | cowgirl - front view |
+| 5 | normal_anal_doggy_side_view_single_reference_pool | doggy | side_view | 1 | 11 | anal doggy - side view |
+| 6 | normal_anal_laying_back_three_quarter_single_reference_pool | doggy | back_three_quarter | 1 | 11 | anal fuck from behind laying - back view - 3-4 angle |
+| 7 | normal_doggy_press_back_side_single_reference_pool | doggy | back_view | 1 | 11 | doggy press - back side |
+| 8 | normal_double_blowjob_handjob_front_view | double_contact | front_view | 1 | 11 | double blowjob-handjob-frontview |
+| 9 | normal_double_blowjob_handjob_top_view | double_contact | top_view | 1 | 11 | double blowjob-handjob-topview |
+| 10 | normal_double_penetration_back_three_quarter | double_contact | back_three_quarter | 1 | 11 | double penetration - back view - 3-4 angle |
+| 11 | normal_double_penetration_on_back_back_three_quarter | double_contact | back_three_quarter | 1 | 11 | double penetration on her back- back view - 3-4 angle |
+| 12 | normal_face_sitting_front_view_single_reference_pool | face_sitting | front_view | 1 | 11 | face sitting - front view |
+| 13 | normal_fist_mixed_camera_folder_pool | manual_or_toy | mixed_or_unspecified | 1 | 11 | fist |
+| 14 | normal_handjob_standing_low_angle_single_reference_pool | manual_or_toy | low_angle | 1 | 11 | handjob - standing -low angle |
+| 15 | normal_missionary_front_three_quarter | missionary | front_three_quarter | 1 | 11 | missionary - front view - 3-4 angle |
+| 16 | normal_missionary_top_down | missionary | top_view | 1 | 11 | missionary - top view |
+| 17 | normal_anus_licking_single_reference_pool | oral_other | mixed_or_unspecified | 1 | 11 | anus lickiing |
+| 18 | normal_penis_worship_foreground_close_reference_folder_pool | oral_other | mixed_or_unspecified | 1 | 11 | penis worship |
+| 19 | normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool | oral_other | back_three_quarter | 1 | 11 | pussy licking leg up - back view - 3-4 angle |
+| 20 | normal_pussy_licking_standing_woman_single_reference_pool | oral_other | mixed_or_unspecified | 1 | 11 | pussy licking standing woman |
+| 21 | normal_under_desk_single_reference_pool | oral_other | mixed_or_unspecified | 1 | 11 | under desk |
+| 22 | normal_anal_reverse_congress_single_reference_pool | reverse_congress | mixed_or_unspecified | 1 | 11 | anal reverse congress |
+| 23 | normal_standing_sideway_side_view | standing_penetration | side_view | 1 | 11 | fuck standing - woman sideway |
+| 24 | normal_ballsucking_laying_close_reference_folder_pool | ballsucking | mixed_or_unspecified | 2 | 10 | ballsucking - laying |
+| 25 | normal_blowjob_front_low_angle | blowjob | front_view | 2 | 10 | blowjob - front view - low angle |
+| 26 | normal_double_contact_bj_pen_back_three_quarter | double_contact | back_three_quarter | 2 | 10 | double penetration - BJ and Pen - back view - 3-4 angle |
+| 27 | normal_double_penetration_side_view | double_contact | side_view | 2 | 10 | double penetration - side view |
+| 28 | normal_footjob_mixed_camera_folder_pool | manual_or_toy | mixed_or_unspecified | 2 | 10 | footjob |
+| 29 | normal_mating_press_front_view | missionary | front_view | 2 | 10 | mating press - front view |
+| 30 | normal_pussy_licking_front_three_quarter | oral_other | front_three_quarter | 2 | 10 | pussy licking - front view - 3-4 angle |
+| 31 | normal_pretzel_mixed_camera_folder_pool | piledriver_or_pretzel | mixed_or_unspecified | 2 | 10 | pretzel |
+| 32 | normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool | reverse_cowgirl | mixed_or_unspecified | 2 | 10 | reverse cowgirl - leg up |
+| 33 | normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool | reverse_cowgirl | mixed_or_unspecified | 2 | 10 | reverse cowgirl -pretzel |
+| 34 | normal_anal_random_mixed_camera_folder_pool | anal | mixed_or_unspecified | 3 | 9 | anal random |
+| 35 | normal_ballsucking_standing_partner_mixed_camera_folder_pool | ballsucking | mixed_or_unspecified | 3 | 9 | ballsucking - standing |
+| 36 | normal_blowjob_kneeling_side_profile_folder_pool | blowjob | side_view | 3 | 9 | blowjob - kneeling - side view |
+| 37 | normal_blowjob_laying_side_profile_folder_pool | blowjob | side_view | 3 | 9 | blowjob - laying - side view |
+| 38 | normal_boobjob_front_close_mixed_camera_folder_pool | boobjob | mixed_or_unspecified | 3 | 9 | boobjob |
+| 39 | normal_couple_kissing_mixed_camera_folder_pool | couple | mixed_or_unspecified | 3 | 9 | couple kissing |
+| 40 | normal_display_breasts_exposed_mixed_camera_folder_pool | display | mixed_or_unspecified | 3 | 9 | breasts exposed |
+| 41 | normal_display_front_open_leg_mixed_camera_folder_pool | display | mixed_or_unspecified | 3 | 9 | pussy spread |
+| 42 | normal_display_rear_body_view_folder_pool | display | mixed_or_unspecified | 3 | 9 | woman solo showing her hass - back view |
+| 43 | normal_display_rear_close_reference_folder_pool | display | mixed_or_unspecified | 3 | 9 | anus exposed - back view |
+| 44 | normal_removing_pants_mixed_camera_folder_pool | display | mixed_or_unspecified | 3 | 9 | removing pants |
+| 45 | normal_doggy_all_fours_side_view_folder_pool | doggy | side_view | 3 | 9 | doggy on all four - side view |
+| 46 | normal_doggy_from_behind_side_view_folder_pool | doggy | side_view | 3 | 9 | fuck from behind - side view |
+| 47 | normal_doggy_laying_from_behind_back_three_quarter_folder_pool | doggy | back_three_quarter | 3 | 9 | fuck from behind laying - back view - 3-4 angle |
+| 48 | normal_doggy_standing_backside_side_view_folder_pool | doggy | side_view | 3 | 9 | fuck from behind standing - woman backside - side view |
+| 49 | normal_doggy_standing_from_behind_side_view_folder_pool | doggy | side_view | 3 | 9 | fuck from behind standing - side view |
+| 50 | normal_front_penetration_low_angle | front_penetration | front_view | 3 | 9 | fuck from front - front view -low angle |
+| 51 | normal_fingering_mixed_camera_folder_pool | manual_or_toy | mixed_or_unspecified | 3 | 9 | fingering |
+| 52 | normal_handjob_laying_front_view | manual_or_toy | front_view | 3 | 9 | handjob - laying - front view |
+| 53 | normal_handjob_laying_side_profile_folder_pool | manual_or_toy | side_view | 3 | 9 | handjob - laying -side view |
+| 54 | normal_handjob_sitting_side_profile_folder_pool | manual_or_toy | side_view | 3 | 9 | handjob - sitting - side view |
+| 55 | normal_handjob_standing_side_profile_folder_pool | manual_or_toy | side_view | 3 | 9 | handjob standing - side view |
+| 56 | normal_wand_mixed_camera_folder_pool | manual_or_toy | mixed_or_unspecified | 3 | 9 | wand |
+| 57 | normal_anal_missionary_front_three_quarter | missionary | front_three_quarter | 3 | 9 | anal missionary - front view - 3-4 angle |
+| 58 | normal_mating_press_side_view | missionary | side_view | 3 | 9 | mating press - side view |
+| 59 | normal_missionary_anal_side_view_folder_pool | missionary | side_view | 3 | 9 | missionary anal - side view |
+| 60 | normal_missionary_folded_leg_mixed_camera_folder_pool | missionary | mixed_or_unspecified | 3 | 9 | missionary - leg folded - back view 3-4 angle |
+| 61 | normal_missionary_side_profile_folder_pool | missionary | side_view | 3 | 9 | missionary - side view |
+| 62 | normal_missionary_side_profile_full_visibility_folder_pool | missionary | side_view | 3 | 9 | missionary - side view - full penis |
+| 63 | normal_pussy_licking_backview_mixed_camera_folder_pool | oral_other | mixed_or_unspecified | 3 | 9 | pussy licking - backv iew |
+| 64 | normal_pussy_licking_side_profile_folder_pool | oral_other | side_view | 3 | 9 | pussy licking - side view |
+| 65 | normal_rimjob_mixed_camera_folder_pool | oral_other | mixed_or_unspecified | 3 | 9 | rimjob |
+| 66 | normal_sixty_nine_mixed_camera_folder_pool | oral_other | mixed_or_unspecified | 3 | 9 | 69 |
+| 67 | normal_piledriver_mixed_camera_folder_pool | piledriver_or_pretzel | mixed_or_unspecified | 3 | 9 | piledriver |
+| 68 | normal_reverse_cowgirl_anal_front_view | reverse_cowgirl | front_view | 3 | 9 | anal reverse cowgirl - front view, anal reverse cowgirl - front view |
+| 69 | normal_reverse_cowgirl_mixed_camera_folder_pool | reverse_cowgirl | mixed_or_unspecified | 3 | 9 | reverse cowgirl |
+| 70 | normal_display_rear_exposed_body_folder_pool | display | mixed_or_unspecified | 4 | 8 | woman ass exposed |
+| 71 | normal_face_sitting_mixed_camera_folder_pool | face_sitting | mixed_or_unspecified | 4 | 8 | face sitting |
+| 72 | normal_penis_worship_laying_partner_vertical_side_view | oral_other | side_view | 5 | 7 | penis worship |
+| 73 | normal_pussy_licking_leg_up_mixed_camera_folder_pool | oral_other | mixed_or_unspecified | 5 | 7 | pussy licking woman standing - side view |
+| 74 | normal_reverse_cowgirl_anal_front_three_quarter | reverse_cowgirl | front_three_quarter | 5 | 7 | anal reverse cowgirl - front view - 3-4 angle, anal reverse cowgirl - front view - 3-4 angle |
+| 75 | normal_penis_worship_top_view | oral_other | top_view | 6 | 6 | penis worship |
+| 76 | normal_penis_worship_side_view | oral_other | side_view | 8 | 4 | penis worship |
diff --git a/ab_batches/normal_camera/normal_camera_priority_plan.json b/ab_batches/normal_camera/normal_camera_priority_plan.json
new file mode 100644
index 0000000..dd6b0f7
--- /dev/null
+++ b/ab_batches/normal_camera/normal_camera_priority_plan.json
@@ -0,0 +1,2007 @@
+{
+ "schema": "sxcp_normal_camera_priority_plan_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "source_variant_catalog": "categories/normal_camera_variants.json",
+ "available_pre_ab_count": 55,
+ "selected_count": 55,
+ "deferred_counts": {
+ "needs_samples": 76,
+ "hold": 0
+ },
+ "acceptance_gate_descriptions": {
+ "camera_geometry": "Camera angle, elevation, side/front/back orientation, and framing match the atlas family.",
+ "pose_ownership": "The visible actors own the pose correctly, with no POV body cues leaking into normal-camera framing.",
+ "workspace_continuity": "Workspace/lounge details support the camera angle instead of fighting the pose.",
+ "clothing_visibility": "Clothing cues stay attached to the intended visible subject and only describe garments visible in this pose.",
+ "subject_identity": "The same woman identity, face, hair, eyes, and body type remain stable across fixed-seed variants.",
+ "body_proportion_control": "Penis/body proportions and limb lengths stay plausible for the selected atlas framing.",
+ "prompt_noise": "Prompt text uses direct visual cues, with option, negative, and instruction-like wording removed from positive text.",
+ "atlas_reference_match": "The generated frame can be matched back to the selected atlas references for this variant."
+ },
+ "candidates": [
+ {
+ "priority_rank": 1,
+ "key": "normal_doggy_all_fours_side_view",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "doggy on all four - side view"
+ ],
+ "reference_images": [
+ "doggy on all four - side view/0020.jpg",
+ "doggy on all four - side view/192.jpg",
+ "doggy on all four - side view/2.jpg",
+ "doggy on all four - side view/204.jpg",
+ "doggy on all four - side view/254.jpg",
+ "doggy on all four - side view/254_2.jpg",
+ "doggy on all four - side view/254_3.jpg",
+ "doggy on all four - side view/271.jpg",
+ "doggy on all four - side view/271_2.jpg",
+ "doggy on all four - side view/362.jpg",
+ "doggy on all four - side view/495.jpg",
+ "doggy on all four - side view/556.jpg",
+ "doggy on all four - side view/86.jpg",
+ "doggy on all four - side view/99.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected doggy all-fours side view: the woman is low or on all fours and the camera remains lateral enough for the body axis and rear-entry contact line to read across the frame.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 2,
+ "key": "normal_doggy_generic_side_view",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "doggy - side view"
+ ],
+ "reference_images": [
+ "doggy - side view/0014.jpg",
+ "doggy - side view/276.jpg",
+ "doggy - side view/541.jpg"
+ ],
+ "canonical_geometry": "Normal third-person generic doggy side view: the source folder is kept separate from all-fours and explicit from-behind side folders, with the camera lateral and the action axis readable across the frame.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 3,
+ "key": "normal_doggy_standing_from_behind_side_view",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "fuck from behind standing - side view"
+ ],
+ "reference_images": [
+ "fuck from behind standing - side view/0013.jpg",
+ "fuck from behind standing - side view/0019.jpg",
+ "fuck from behind standing - side view/0020.jpg",
+ "fuck from behind standing - side view/162.jpg",
+ "fuck from behind standing - side view/162_2.jpg",
+ "fuck from behind standing - side view/509.jpg",
+ "fuck from behind standing - side view/9.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected standing from-behind side view: upright posture is visible and the camera is lateral or rear-lateral rather than front portrait framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 4,
+ "key": "normal_doggy_standing_backside_side_view",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "fuck from behind standing - woman backside - side view"
+ ],
+ "reference_images": [
+ "fuck from behind standing - woman backside - side view/0010.jpg",
+ "fuck from behind standing - woman backside - side view/0012.jpg",
+ "fuck from behind standing - woman backside - side view/186.jpg",
+ "fuck from behind standing - woman backside - side view/186_2.jpg",
+ "fuck from behind standing - woman backside - side view/196.jpg",
+ "fuck from behind standing - woman backside - side view/257.jpg",
+ "fuck from behind standing - woman backside - side view/286.jpg",
+ "fuck from behind standing - woman backside - side view/288.jpg",
+ "fuck from behind standing - woman backside - side view/343.jpg",
+ "fuck from behind standing - woman backside - side view/343_2.jpg",
+ "fuck from behind standing - woman backside - side view/343_3.jpg",
+ "fuck from behind standing - woman backside - side view/345.jpg",
+ "fuck from behind standing - woman backside - side view/345_2.jpg",
+ "fuck from behind standing - woman backside - side view/542.jpg",
+ "fuck from behind standing - woman backside - side view/68.jpg",
+ "fuck from behind standing - woman backside - side view/68_2.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected standing backside side view: backside/hip orientation dominates and the camera is side or rear-lateral.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 5,
+ "key": "normal_doggy_all_fours_back_three_quarter",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "doggy on all four - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "doggy on all four - back view - 3-4 angle/0002.jpg",
+ "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "doggy on all four - back view - 3-4 angle/206.jpg",
+ "doggy on all four - back view - 3-4 angle/267.jpg",
+ "doggy on all four - back view - 3-4 angle/302.jpg",
+ "doggy on all four - back view - 3-4 angle/327.jpg",
+ "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "doggy on all four - back view - 3-4 angle/611.jpg",
+ "doggy on all four - back view - 3-4 angle/70.jpg",
+ "doggy on all four - back view - 3-4 angle/97.jpg"
+ ],
+ "canonical_geometry": "Doggy all-fours rear three-quarter normal-camera view with the camera offset behind the action.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 6,
+ "key": "normal_doggy_generic_back_three_quarter",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "doggy - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "doggy - back view - 3-4 angle/0002.jpg",
+ "doggy - back view - 3-4 angle/0002_2.jpg",
+ "doggy - back view - 3-4 angle/0008_2.jpg",
+ "doggy - back view - 3-4 angle/0013.jpg",
+ "doggy - back view - 3-4 angle/0015.jpg",
+ "doggy - back view - 3-4 angle/0017.jpg",
+ "doggy - back view - 3-4 angle/0021.jpg",
+ "doggy - back view - 3-4 angle/132.jpg",
+ "doggy - back view - 3-4 angle/145.jpg",
+ "doggy - back view - 3-4 angle/183.jpg",
+ "doggy - back view - 3-4 angle/185.jpg",
+ "doggy - back view - 3-4 angle/227.jpg",
+ "doggy - back view - 3-4 angle/39.jpg",
+ "doggy - back view - 3-4 angle/41.jpg",
+ "doggy - back view - 3-4 angle/77.jpg"
+ ],
+ "canonical_geometry": "Generic doggy rear three-quarter normal-camera view, separate from all-fours and laying from-behind source folders.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 7,
+ "key": "normal_doggy_laying_from_behind_front_three_quarter",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "front_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "fuck from behind laying - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "fuck from behind laying - back view - 3-4 angle/0002.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0004.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0004_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0006.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0009.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0009_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0011.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0013.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0014.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0015.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0016.jpg",
+ "fuck from behind laying - back view - 3-4 angle/377.jpg",
+ "fuck from behind laying - back view - 3-4 angle/379.jpg",
+ "fuck from behind laying - back view - 3-4 angle/537.jpg",
+ "fuck from behind laying - back view - 3-4 angle/560.jpg",
+ "fuck from behind laying - back view - 3-4 angle/590.jpg",
+ "fuck from behind laying - back view - 3-4 angle/591.jpg",
+ "fuck from behind laying - back view - 3-4 angle/591_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/595.jpg",
+ "fuck from behind laying - back view - 3-4 angle/606.jpg",
+ "fuck from behind laying - back view - 3-4 angle/615.jpg",
+ "fuck from behind laying - back view - 3-4 angle/615_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/624.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected laying from-behind front three-quarter view: reclined body layout is visible, the camera is normal third-person and front-offset more than rear 3/4.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 8,
+ "key": "normal_doggy_all_fours_front_view",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "doggy all four - front view"
+ ],
+ "reference_images": [
+ "doggy all four - front view/0016.jpg",
+ "doggy all four - front view/48.jpg",
+ "doggy all four - front view/58.jpg",
+ "doggy all four - front view/64.jpg",
+ "doggy all four - front view/69.jpg",
+ "doggy all four - front view/77.jpg",
+ "doggy all four - front view/83.jpg",
+ "doggy all four - front view/97.jpg",
+ "doggy all four - front view/171.jpg",
+ "doggy all four - front view/197.jpg",
+ "doggy all four - front view/204.jpg",
+ "doggy all four - front view/221.jpg",
+ "doggy all four - front view/290.jpg",
+ "doggy all four - front view/596.jpg",
+ "doggy all four - front view/598.jpg"
+ ],
+ "canonical_geometry": "Doggy all-fours front normal-camera view where the front subject plane faces the camera while the partner remains behind.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 9,
+ "key": "normal_doggy_generic_front_view",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "doggy - front view",
+ "doggy - front view "
+ ],
+ "reference_images": [
+ "doggy - front view/11.jpg",
+ "doggy - front view/5.jpg",
+ "doggy - front view/6.jpg",
+ "doggy - front view /0003.jpg",
+ "doggy - front view /253.jpg",
+ "doggy - front view /262.jpg",
+ "doggy - front view /349.jpg",
+ "doggy - front view /354.jpg",
+ "doggy - front view /41.jpg",
+ "doggy - front view /49.jpg",
+ "doggy - front view /505.jpg",
+ "doggy - front view /537.jpg",
+ "doggy - front view /541.jpg",
+ "doggy - front view /567.jpg",
+ "doggy - front view /627.jpg"
+ ],
+ "canonical_geometry": "Generic doggy front normal-camera view from the duplicate front-view source folders.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 10,
+ "key": "normal_doggy_under_view_low_camera",
+ "family": "doggy",
+ "action_family": "doggy",
+ "camera_view": "under_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "doggy - underview"
+ ],
+ "reference_images": [
+ "doggy - underview/0001.jpg",
+ "doggy - underview/0008.jpg",
+ "doggy - underview/614.jpg"
+ ],
+ "canonical_geometry": "Extreme low under-view doggy camera: the camera is below the hips or leg line, looking upward through or under the pose so underside body geometry dominates the frame.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 11,
+ "key": "normal_cowgirl_side_profile",
+ "family": "cowgirl",
+ "action_family": "cowgirl",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "cowgirl - side view"
+ ],
+ "reference_images": [
+ "cowgirl - side view/0003.jpg",
+ "cowgirl - side view/0004_2.jpg",
+ "cowgirl - side view/0005.jpg",
+ "cowgirl - side view/0007.jpg",
+ "cowgirl - side view/0009.jpg",
+ "cowgirl - side view/0011.jpg",
+ "cowgirl - side view/0015.jpg",
+ "cowgirl - side view/118.jpg",
+ "cowgirl - side view/195.jpg",
+ "cowgirl - side view/2.jpg",
+ "cowgirl - side view/200.jpg",
+ "cowgirl - side view/255.jpg",
+ "cowgirl - side view/280.jpg",
+ "cowgirl - side view/86.jpg",
+ "cowgirl - side view/86_2.jpg"
+ ],
+ "canonical_geometry": "Side-profile cowgirl view: woman sits or rises on top of the reclined partner, both bodies are seen from the side, and the vertical straddle relation remains readable without first-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 12,
+ "key": "normal_cowgirl_full_body_front_view",
+ "family": "cowgirl",
+ "action_family": "cowgirl",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "cowgirl full man body - front view"
+ ],
+ "reference_images": [
+ "cowgirl full man body - front view/0005.jpg",
+ "cowgirl full man body - front view/303.jpg",
+ "cowgirl full man body - front view/99.jpg"
+ ],
+ "canonical_geometry": "Cowgirl front normal-camera view with the partner body visible beneath the woman.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 13,
+ "key": "normal_cowgirl_front_three_quarter",
+ "family": "cowgirl",
+ "action_family": "cowgirl",
+ "camera_view": "front_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "cowgirl - front view - 3-4 angle"
+ ],
+ "reference_images": [
+ "cowgirl - front view - 3-4 angle/588.jpg",
+ "cowgirl - front view - 3-4 angle/62_2.jpg",
+ "cowgirl - front view - 3-4 angle/70.jpg"
+ ],
+ "canonical_geometry": "Cowgirl front three-quarter normal-camera view with the front contact plane readable from an offset camera.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 14,
+ "key": "normal_cowgirl_back_three_quarter",
+ "family": "cowgirl",
+ "action_family": "cowgirl",
+ "camera_view": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "cowgirl - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "cowgirl - back view - 3-4 angle/0002.jpg",
+ "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "cowgirl - back view - 3-4 angle/0006.jpg",
+ "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "cowgirl - back view - 3-4 angle/16.jpg",
+ "cowgirl - back view - 3-4 angle/22.jpg",
+ "cowgirl - back view - 3-4 angle/41.jpg",
+ "cowgirl - back view - 3-4 angle/82.jpg",
+ "cowgirl - back view - 3-4 angle/90.jpg",
+ "cowgirl - back view - 3-4 angle/145.jpg",
+ "cowgirl - back view - 3-4 angle/160.jpg",
+ "cowgirl - back view - 3-4 angle/172.jpg",
+ "cowgirl - back view - 3-4 angle/225.jpg",
+ "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "cowgirl - back view - 3-4 angle/248.jpg"
+ ],
+ "canonical_geometry": "Rear three-quarter cowgirl view: camera sits behind or behind-offset from the woman on top, with her back, hips, and legs closest while the reclined partner remains visible beneath or ahead of her.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 15,
+ "key": "normal_reverse_cowgirl_back_view",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "back_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "reverse cowgirl - back view"
+ ],
+ "reference_images": [
+ "reverse cowgirl - back view/267.jpg",
+ "reverse cowgirl - back view/64.jpg",
+ "reverse cowgirl - back view/80.jpg"
+ ],
+ "canonical_geometry": "Reverse-cowgirl rear normal-camera view where the woman faces away and the back-facing orientation dominates.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 16,
+ "key": "normal_reverse_cowgirl_back_three_quarter",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "reverse cowgirl - backview - 3-4 angle"
+ ],
+ "reference_images": [
+ "reverse cowgirl - backview - 3-4 angle/207.jpg",
+ "reverse cowgirl - backview - 3-4 angle/280_2.jpg",
+ "reverse cowgirl - backview - 3-4 angle/99.jpg"
+ ],
+ "canonical_geometry": "Reverse-cowgirl rear three-quarter normal-camera view from an offset back camera.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 17,
+ "key": "normal_reverse_cowgirl_side_profile",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "reverse cowgirl - side view"
+ ],
+ "reference_images": [
+ "reverse cowgirl - side view/0004.jpg",
+ "reverse cowgirl - side view/596.jpg",
+ "reverse cowgirl - side view/606_3.jpg"
+ ],
+ "canonical_geometry": "Side-profile reverse cowgirl view: woman is on top facing away from the partner, both bodies are seen laterally, and the back-facing orientation stays readable through hip, back, and leg placement.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 18,
+ "key": "normal_reverse_cowgirl_front_view",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/0004.jpg",
+ "reverse cowgirl/0005_4.jpg",
+ "reverse cowgirl/0014.jpg",
+ "reverse cowgirl/79.jpg",
+ "reverse cowgirl/82.jpg",
+ "reverse cowgirl/145.jpg",
+ "reverse cowgirl/260.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/319.jpg",
+ "reverse cowgirl/527.jpg",
+ "reverse cowgirl/608.jpg"
+ ],
+ "canonical_geometry": "Reviewed reverse-cowgirl front-view normal-camera subset from the large mixed source pool: the woman is on top facing the camera, the contact plane reads frontally, and the reclined partner remains visible below her in third person.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 19,
+ "key": "normal_reverse_cowgirl_front_three_quarter",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "front_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/153.jpg",
+ "reverse cowgirl/153_2.jpg",
+ "reverse cowgirl/239_2.jpg",
+ "reverse cowgirl/239_3.jpg",
+ "reverse cowgirl/241.jpg",
+ "reverse cowgirl/241_2.jpg",
+ "reverse cowgirl/241_3.jpg",
+ "reverse cowgirl/257.jpg",
+ "reverse cowgirl/287.jpg",
+ "reverse cowgirl/323_2.jpg",
+ "reverse cowgirl/609.jpg",
+ "reverse cowgirl/609_2.jpg"
+ ],
+ "canonical_geometry": "Reviewed reverse-cowgirl front three-quarter normal-camera subset from the large mixed source pool: the woman is on top turned partly toward the camera, the contact plane reads from a front-offset angle, and the reclined partner remains visible below or behind her in third person.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 20,
+ "key": "normal_reverse_cowgirl_low_close_front_view",
+ "family": "reverse_cowgirl",
+ "action_family": "reverse_cowgirl",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0009.jpg",
+ "reverse cowgirl/0009_2.jpg",
+ "reverse cowgirl/0009_3.jpg",
+ "reverse cowgirl/0015.jpg",
+ "reverse cowgirl/0015_2.jpg",
+ "reverse cowgirl/0016_2.jpg",
+ "reverse cowgirl/170.jpg",
+ "reverse cowgirl/261.jpg",
+ "reverse cowgirl/332.jpg",
+ "reverse cowgirl/332_2.jpg",
+ "reverse cowgirl/551.jpg",
+ "reverse cowgirl/618.jpg"
+ ],
+ "canonical_geometry": "Reviewed reverse-cowgirl low-close front-view normal-camera subset from the large mixed source pool: the woman is on top facing the camera, the foreground contact plane dominates the lower frame, and the subject remains visible above it in third-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 21,
+ "key": "normal_reverse_congress_front_view",
+ "family": "reverse_congress",
+ "action_family": "reverse_congress",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "reverse congress - front view"
+ ],
+ "reference_images": [
+ "reverse congress - front view/0012.jpg",
+ "reverse congress - front view/0012_2.jpg",
+ "reverse congress - front view/0013.jpg",
+ "reverse congress - front view/61.jpg",
+ "reverse congress - front view/105.jpg",
+ "reverse congress - front view/105_2.jpg",
+ "reverse congress - front view/122.jpg",
+ "reverse congress - front view/183.jpg",
+ "reverse congress - front view/189.jpg",
+ "reverse congress - front view/289.jpg",
+ "reverse congress - front view/289_2.jpg",
+ "reverse congress - front view/291.jpg",
+ "reverse congress - front view/542.jpg",
+ "reverse congress - front view/542_2.jpg",
+ "reverse congress - front view/563_2.jpg"
+ ],
+ "canonical_geometry": "Front-facing reverse-congress normal camera: the seated or folded position faces camera, with both bodies stacked or framed vertically and the contact plane visible from the front.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 22,
+ "key": "normal_missionary_side_profile",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "missionary - side view"
+ ],
+ "reference_images": [
+ "missionary - side view/0003.jpg",
+ "missionary - side view/0013.jpg",
+ "missionary - side view/0014.jpg",
+ "missionary - side view/509.jpg",
+ "missionary - side view/521.jpg",
+ "missionary - side view/533.jpg",
+ "missionary - side view/534.jpg",
+ "missionary - side view/593.jpg",
+ "missionary - side view/596.jpg",
+ "missionary - side view/596_2.jpg",
+ "missionary - side view/602.jpg",
+ "missionary - side view/613.jpg",
+ "missionary - side view/627.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected missionary side-profile normal-camera view with stacked body geometry readable from the side.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 23,
+ "key": "normal_missionary_side_profile_full_visibility",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "missionary - side view - full penis"
+ ],
+ "reference_images": [
+ "missionary - side view - full penis/0002.jpg",
+ "missionary - side view - full penis/0002_2.jpg",
+ "missionary - side view - full penis/0021.jpg",
+ "missionary - side view - full penis/550.jpg",
+ "missionary - side view - full penis/69_2.jpg",
+ "missionary - side view - full penis/74.jpg",
+ "missionary - side view - full penis/97.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected missionary side-profile normal-camera view emphasizing unobscured side contact visibility.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 24,
+ "key": "normal_missionary_front_view",
+ "family": "missionary",
+ "action_family": "missionary",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "missionary - front view"
+ ],
+ "reference_images": [
+ "missionary - front view/0011.jpg",
+ "missionary - front view/567.jpg",
+ "missionary - front view/72.jpg"
+ ],
+ "canonical_geometry": "Missionary front normal-camera view where the reclined partner faces the camera and the top partner remains visible.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 25,
+ "key": "normal_anal_random_front_view",
+ "family": "anal",
+ "action_family": "anal",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "reference_images": [
+ "anal random/0005.jpg",
+ "anal random/0006.jpg",
+ "anal random/0015.jpg",
+ "anal random/160_3.jpg",
+ "anal random/188.jpg",
+ "anal random/347_3.jpg",
+ "anal random/347_10.jpg",
+ "anal random/347_11.jpg",
+ "anal random/366.jpg",
+ "anal random/366_3.jpg",
+ "anal random/366_4.jpg"
+ ],
+ "canonical_geometry": "Reviewed anal front-view normal-camera subset from the large mixed source pool: the main subject faces the camera, the contact plane reads frontally, and partner context remains visible in third person.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 26,
+ "key": "normal_anal_random_back_side_offset_view",
+ "family": "anal",
+ "action_family": "anal",
+ "camera_view": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "reference_images": [
+ "anal random/0003.jpg",
+ "anal random/0003_3.jpg",
+ "anal random/0010.jpg",
+ "anal random/0013.jpg",
+ "anal random/119.jpg",
+ "anal random/119_2.jpg",
+ "anal random/119_3.jpg",
+ "anal random/124_2.jpg",
+ "anal random/124_8.jpg",
+ "anal random/347_4.jpg",
+ "anal random/347_5.jpg",
+ "anal random/347_8.jpg"
+ ],
+ "canonical_geometry": "Reviewed anal rear/side-offset normal-camera subset from the large mixed source pool: the main body turns partly away from the camera, the rear-side contact plane remains readable, and partner context stays visible in third person.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 27,
+ "key": "normal_blowjob_laying_front_view",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "blowjob - laying - front view"
+ ],
+ "reference_images": [
+ "blowjob - laying - front view/0001.jpg",
+ "blowjob - laying - front view/0003.jpg",
+ "blowjob - laying - front view/0004.jpg",
+ "blowjob - laying - front view/0010.jpg",
+ "blowjob - laying - front view/0010_2.jpg",
+ "blowjob - laying - front view/0018.jpg",
+ "blowjob - laying - front view/48.jpg",
+ "blowjob - laying - front view/69.jpg",
+ "blowjob - laying - front view/91.jpg",
+ "blowjob - laying - front view/94.jpg",
+ "blowjob - laying - front view/122.jpg",
+ "blowjob - laying - front view/171.jpg",
+ "blowjob - laying - front view/184.jpg",
+ "blowjob - laying - front view/274.jpg",
+ "blowjob - laying - front view/512.jpg"
+ ],
+ "canonical_geometry": "Front-facing laying blowjob normal camera: the receiving partner reclines or is partly visible while the performing partner lies or leans forward facing camera, with face, mouth contact, and body line visible from the front.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 28,
+ "key": "normal_blowjob_sitting_front_view",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "blowjob - sitting - frontview"
+ ],
+ "reference_images": [
+ "blowjob - sitting - frontview/0003.jpg",
+ "blowjob - sitting - frontview/37.jpg",
+ "blowjob - sitting - frontview/81.jpg"
+ ],
+ "canonical_geometry": "Front-facing seated-context blowjob normal camera: the performing partner is upright, kneeling, or leaning near a seated/reclined partner, with face, mouth contact, and partner placement readable from the front.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 29,
+ "key": "normal_blowjob_laying_side_profile",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "blowjob - laying - side view"
+ ],
+ "reference_images": [
+ "blowjob - laying - side view/0013.jpg",
+ "blowjob - laying - side view/119.jpg",
+ "blowjob - laying - side view/209.jpg",
+ "blowjob - laying - side view/232.jpg",
+ "blowjob - laying - side view/244.jpg",
+ "blowjob - laying - side view/255.jpg",
+ "blowjob - laying - side view/333.jpg",
+ "blowjob - laying - side view/36.jpg",
+ "blowjob - laying - side view/364.jpg",
+ "blowjob - laying - side view/375.jpg",
+ "blowjob - laying - side view/62.jpg",
+ "blowjob - laying - side view/74.jpg",
+ "blowjob - laying - side view/85.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected laying blowjob side-profile normal-camera view: the performer leans or lies laterally, the contact line reads from the side, and the receiving partner remains third-person visible without POV foreground framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 30,
+ "key": "normal_blowjob_sitting_side_profile",
+ "family": "blowjob",
+ "action_family": "blowjob",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "blowjob - sitting - side view"
+ ],
+ "reference_images": [
+ "blowjob - sitting - side view/0002.jpg",
+ "blowjob - sitting - side view/241.jpg",
+ "blowjob - sitting - side view/64.jpg"
+ ],
+ "canonical_geometry": "Sitting oral-contact side-profile normal-camera view.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 31,
+ "key": "normal_ballsucking_standing_low_side_view",
+ "family": "ballsucking",
+ "action_family": "ballsucking",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "ballsucking - standing"
+ ],
+ "reference_images": [
+ "ballsucking - standing/0014.jpg",
+ "ballsucking - standing/130.jpg",
+ "ballsucking - standing/137.jpg",
+ "ballsucking - standing/207.jpg",
+ "ballsucking - standing/222.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/333.jpg",
+ "ballsucking - standing/34.jpg",
+ "ballsucking - standing/540.jpg",
+ "ballsucking - standing/589.jpg",
+ "ballsucking - standing/624.jpg"
+ ],
+ "canonical_geometry": "Selected standing-partner low side or near-side normal-camera view where the receiving partner stands, the performer stays low beside or in front of the standing body, and the contact plane remains readable in third-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 32,
+ "key": "normal_boobjob_front_close_view",
+ "family": "boobjob",
+ "action_family": "boobjob",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "boobjob"
+ ],
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/0018_2.jpg",
+ "boobjob/141.jpg",
+ "boobjob/186.jpg",
+ "boobjob/218.jpg",
+ "boobjob/259.jpg",
+ "boobjob/327.jpg",
+ "boobjob/588.jpg",
+ "boobjob/592.jpg",
+ "boobjob/598.jpg",
+ "boobjob/615.jpg",
+ "boobjob/618.jpg"
+ ],
+ "canonical_geometry": "Selected front-close boobjob normal-camera view where the performer faces camera or near-camera, upper body and face remain readable, and the contact action stays centered without becoming POV.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 33,
+ "key": "normal_breast_contact_front_view",
+ "family": "breast_contact",
+ "action_family": "breast_contact",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "breast - touching - front view"
+ ],
+ "reference_images": [
+ "breast - touching - front view/0006.jpg",
+ "breast - touching - front view/0006_2.jpg",
+ "breast - touching - front view/12.jpg",
+ "breast - touching - front view/0014.jpg",
+ "breast - touching - front view/0015.jpg",
+ "breast - touching - front view/16.jpg",
+ "breast - touching - front view/56.jpg",
+ "breast - touching - front view/72.jpg",
+ "breast - touching - front view/183.jpg",
+ "breast - touching - front view/220.jpg",
+ "breast - touching - front view/246.jpg",
+ "breast - touching - front view/248.jpg",
+ "breast - touching - front view/281.jpg",
+ "breast - touching - front view/348.jpg",
+ "breast - touching - front view/361.jpg"
+ ],
+ "canonical_geometry": "Front-facing breast-contact normal camera: torso and face/front body are oriented toward the camera while hands or partner contact remains readable on the front body plane.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 34,
+ "key": "normal_breast_touching_side_view",
+ "family": "breast_contact",
+ "action_family": "breast_contact",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "breast - touching - side view"
+ ],
+ "reference_images": [
+ "breast - touching - side view/0010.jpg",
+ "breast - touching - side view/364.jpg",
+ "breast - touching - side view/97.jpg"
+ ],
+ "canonical_geometry": "Side-profile breast-touching normal-camera view.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 35,
+ "key": "normal_breast_sucking_side_view",
+ "family": "breast_contact",
+ "action_family": "breast_contact",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "breast sucking - side view"
+ ],
+ "reference_images": [
+ "breast sucking - side view/0003.jpg",
+ "breast sucking - side view/0005.jpg",
+ "breast sucking - side view/0007.jpg",
+ "breast sucking - side view/0009.jpg",
+ "breast sucking - side view/0010_2.jpg",
+ "breast sucking - side view/182.jpg",
+ "breast sucking - side view/186.jpg",
+ "breast sucking - side view/218.jpg",
+ "breast sucking - side view/234.jpg",
+ "breast sucking - side view/244.jpg",
+ "breast sucking - side view/257.jpg",
+ "breast sucking - side view/267.jpg",
+ "breast sucking - side view/269.jpg",
+ "breast sucking - side view/356.jpg",
+ "breast sucking - side view/99.jpg"
+ ],
+ "canonical_geometry": "Side-profile breast mouth-contact normal-camera view.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 36,
+ "key": "normal_sixty_nine_front_close_view",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "69"
+ ],
+ "reference_images": [
+ "69/0002.jpg",
+ "69/0008.jpg",
+ "69/0016.jpg",
+ "69/19.jpg",
+ "69/166.jpg",
+ "69/292.jpg",
+ "69/624.jpg"
+ ],
+ "canonical_geometry": "Selected sixty-nine front-close normal-camera view where the upper subject faces camera, opposed oral-contact pose stays centered, and both bodies remain readable in close third-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 37,
+ "key": "normal_fingering_reclined_front_view",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "fingering"
+ ],
+ "reference_images": [
+ "fingering/0004.jpg",
+ "fingering/0006.jpg",
+ "fingering/0013.jpg",
+ "fingering/0015.jpg",
+ "fingering/39.jpg",
+ "fingering/50.jpg",
+ "fingering/132.jpg",
+ "fingering/133.jpg",
+ "fingering/279.jpg",
+ "fingering/603.jpg"
+ ],
+ "canonical_geometry": "Selected reclined manual-contact front normal-camera view where the subject is reclined, faces the camera, the open-thigh contact plane stays centered, and face or upper body remains readable in third-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 38,
+ "key": "normal_wand_front_close_view",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "wand"
+ ],
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/0015.jpg",
+ "wand/217.jpg",
+ "wand/532.jpg",
+ "wand/561.jpg",
+ "wand/611.jpg",
+ "wand/75.jpg"
+ ],
+ "canonical_geometry": "Selected wand front-close normal-camera view where the subject faces camera or near-camera, the open-thigh tool-contact plane is centered, and the wand remains readable as one continuous object in third-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 39,
+ "key": "normal_handjob_standing_side_profile",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "handjob standing - side view"
+ ],
+ "reference_images": [
+ "handjob standing - side view/16.jpg",
+ "handjob standing - side view/105.jpg",
+ "handjob standing - side view/171.jpg",
+ "handjob standing - side view/174.jpg",
+ "handjob standing - side view/175.jpg",
+ "handjob standing - side view/305.jpg",
+ "handjob standing - side view/549.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected standing manual-contact side-profile normal-camera view: both participants remain upright or near-upright, the contact line reads laterally, and the framing stays third-person rather than POV.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 40,
+ "key": "normal_handjob_both_sitting_front_view",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "handjob - both sitting - front view"
+ ],
+ "reference_images": [
+ "handjob - both sitting - front view/109.jpg",
+ "handjob - both sitting - front view/588.jpg",
+ "handjob - both sitting - front view/598.jpg"
+ ],
+ "canonical_geometry": "Both-sitting manual-contact front normal-camera view.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 41,
+ "key": "normal_handjob_laying_front_three_quarter",
+ "family": "manual_or_toy",
+ "action_family": "manual_or_toy",
+ "camera_view": "front_three_quarter",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "handjob - laying - front view - 3-4 angle"
+ ],
+ "reference_images": [
+ "handjob - laying - front view - 3-4 angle/39.jpg",
+ "handjob - laying - front view - 3-4 angle/41.jpg",
+ "handjob - laying - front view - 3-4 angle/91.jpg"
+ ],
+ "canonical_geometry": "Laying manual-contact front three-quarter normal-camera view.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 42,
+ "key": "normal_pussy_licking_side_profile",
+ "family": "oral_other",
+ "action_family": "oral_other",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "pussy licking - side view"
+ ],
+ "reference_images": [
+ "pussy licking - side view/0003.jpg",
+ "pussy licking - side view/0006.jpg",
+ "pussy licking - side view/0010.jpg",
+ "pussy licking - side view/0013_2.jpg",
+ "pussy licking - side view/0015.jpg",
+ "pussy licking - side view/0015_2.jpg",
+ "pussy licking - side view/0016.jpg",
+ "pussy licking - side view/0016_2.jpg",
+ "pussy licking - side view/536.jpg",
+ "pussy licking - side view/537.jpg",
+ "pussy licking - side view/544.jpg",
+ "pussy licking - side view/560.jpg",
+ "pussy licking - side view/603.jpg",
+ "pussy licking - side view/609.jpg",
+ "pussy licking - side view/613.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected side-profile oral-contact normal-camera view: the performer is seen laterally, the receiving partner hips and legs remain readable, and the contact line runs across the frame without POV foreground cues.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 43,
+ "key": "normal_display_rear_body_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "back_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "reference_images": [
+ "woman solo showing her hass - back view/0001_2.jpg",
+ "woman solo showing her hass - back view/0003.jpg",
+ "woman solo showing her hass - back view/0006_2.jpg",
+ "woman solo showing her hass - back view/0009.jpg",
+ "woman solo showing her hass - back view/0015.jpg",
+ "woman solo showing her hass - back view/0016_2.jpg",
+ "woman solo showing her hass - back view/112.jpg",
+ "woman solo showing her hass - back view/153.jpg",
+ "woman solo showing her hass - back view/157.jpg",
+ "woman solo showing her hass - back view/162_2.jpg",
+ "woman solo showing her hass - back view/169.jpg",
+ "woman solo showing her hass - back view/182_2.jpg",
+ "woman solo showing her hass - back view/232.jpg",
+ "woman solo showing her hass - back view/270.jpg",
+ "woman solo showing her hass - back view/322.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected solo rear body-display normal-camera view: the subject is back-facing or rear three-quarter, rear body shape is the primary composition, and the camera remains third-person rather than POV.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 44,
+ "key": "normal_display_rear_body_standing_back_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "back_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "reference_images": [
+ "woman solo showing her hass - back view/0002.jpg",
+ "woman solo showing her hass - back view/0006.jpg",
+ "woman solo showing her hass - back view/0006_3.jpg",
+ "woman solo showing her hass - back view/0007_2.jpg",
+ "woman solo showing her hass - back view/173.jpg",
+ "woman solo showing her hass - back view/197.jpg",
+ "woman solo showing her hass - back view/230.jpg",
+ "woman solo showing her hass - back view/235.jpg",
+ "woman solo showing her hass - back view/287.jpg",
+ "woman solo showing her hass - back view/293.jpg",
+ "woman solo showing her hass - back view/300.jpg",
+ "woman solo showing her hass - back view/321.jpg"
+ ],
+ "canonical_geometry": "Reviewed standing solo rear body-display normal-camera subset: the subject stands upright with back or rear three-quarter side toward camera, rear body remains the primary composition, and the full standing posture stays readable in third-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 45,
+ "key": "normal_display_front_open_leg_front_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/0002_3.jpg",
+ "pussy spread/0003_4.jpg",
+ "pussy spread/0012.jpg",
+ "pussy spread/0015.jpg",
+ "pussy spread/0017.jpg",
+ "pussy spread/80.jpg",
+ "pussy spread/130.jpg",
+ "pussy spread/153.jpg",
+ "pussy spread/296.jpg",
+ "pussy spread/297.jpg",
+ "pussy spread/328.jpg",
+ "pussy spread/367.jpg"
+ ],
+ "canonical_geometry": "Reviewed front open-leg display normal-camera subset from the mixed source pool: the subject faces the camera, the open-leg display reads frontally, and enough body or room context remains visible to separate it from tight low-close crops.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 46,
+ "key": "normal_display_front_open_leg_low_close",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/1.jpg",
+ "pussy spread/1_2.jpg",
+ "pussy spread/0003.jpg",
+ "pussy spread/0003_2.jpg",
+ "pussy spread/0003_3.jpg",
+ "pussy spread/0010_2.jpg",
+ "pussy spread/0016.jpg",
+ "pussy spread/0016_2.jpg",
+ "pussy spread/41.jpg",
+ "pussy spread/201.jpg",
+ "pussy spread/217_2.jpg",
+ "pussy spread/223.jpg"
+ ],
+ "canonical_geometry": "Reviewed low-close front open-leg display normal-camera subset from the mixed source pool: the camera is front-facing and close enough that the foreground body plane dominates while the subject remains visible in normal third-person framing.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 47,
+ "key": "normal_display_front_open_leg_side_offset_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/0007.jpg",
+ "pussy spread/0008.jpg",
+ "pussy spread/73.jpg",
+ "pussy spread/121.jpg",
+ "pussy spread/134.jpg",
+ "pussy spread/154_3.jpg",
+ "pussy spread/163.jpg",
+ "pussy spread/175.jpg",
+ "pussy spread/256.jpg",
+ "pussy spread/308.jpg",
+ "pussy spread/311.jpg",
+ "pussy spread/368.jpg"
+ ],
+ "canonical_geometry": "Reviewed side-offset front open-leg display normal-camera subset from the mixed source pool: the subject sits or reclines at an oblique angle, the open-leg display reads from a lateral offset, and torso plus leg line angle across the frame in third-person composition.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 48,
+ "key": "normal_display_breasts_exposed_front_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_3.jpg",
+ "breasts exposed/0006.jpg",
+ "breasts exposed/0008_2.jpg",
+ "breasts exposed/0011_2.jpg",
+ "breasts exposed/141.jpg",
+ "breasts exposed/181.jpg",
+ "breasts exposed/263.jpg",
+ "breasts exposed/302.jpg",
+ "breasts exposed/327.jpg",
+ "breasts exposed/346.jpg",
+ "breasts exposed/594_2.jpg",
+ "breasts exposed/624.jpg"
+ ],
+ "canonical_geometry": "Reviewed display front-view normal-camera subset from the broad breasts-exposed source pool: the subject faces the camera, the upper torso and full body remain readable, and the frame uses normal third-person display composition.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 49,
+ "key": "normal_display_breasts_exposed_side_offset_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/83.jpg",
+ "breasts exposed/196.jpg",
+ "breasts exposed/235.jpg",
+ "breasts exposed/267.jpg",
+ "breasts exposed/271.jpg",
+ "breasts exposed/305.jpg",
+ "breasts exposed/353.jpg",
+ "breasts exposed/373.jpg",
+ "breasts exposed/590.jpg",
+ "breasts exposed/590_2.jpg"
+ ],
+ "canonical_geometry": "Reviewed display side-offset normal-camera subset from the broad breasts-exposed source pool: the subject turns laterally, the side torso outline is readable, and the frame remains normal third-person display composition.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 50,
+ "key": "normal_display_breasts_exposed_standing_front_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0002_2.jpg",
+ "breasts exposed/0003.jpg",
+ "breasts exposed/49.jpg",
+ "breasts exposed/138.jpg",
+ "breasts exposed/155.jpg",
+ "breasts exposed/169.jpg",
+ "breasts exposed/190.jpg",
+ "breasts exposed/230.jpg",
+ "breasts exposed/242.jpg",
+ "breasts exposed/302_2.jpg",
+ "breasts exposed/332.jpg",
+ "breasts exposed/368.jpg"
+ ],
+ "canonical_geometry": "Reviewed standing display front-view normal-camera subset from the broad breasts-exposed source pool: the subject stands upright facing the camera, the torso and legs remain readable, and the frame preserves normal third-person display composition.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 51,
+ "key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "family": "display",
+ "action_family": "display",
+ "camera_view": "front_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_2.jpg",
+ "breasts exposed/0007_2.jpg",
+ "breasts exposed/101_2.jpg",
+ "breasts exposed/154.jpg",
+ "breasts exposed/165.jpg",
+ "breasts exposed/173.jpg",
+ "breasts exposed/259.jpg",
+ "breasts exposed/285.jpg",
+ "breasts exposed/293.jpg",
+ "breasts exposed/322.jpg",
+ "breasts exposed/328.jpg",
+ "breasts exposed/523.jpg"
+ ],
+ "canonical_geometry": "Reviewed seated/kneeling display front-view normal-camera subset from the broad breasts-exposed source pool: the subject faces the camera from a seated or kneeling posture, the torso and lower-body placement remain readable, and the frame preserves normal third-person display composition.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 52,
+ "key": "normal_standing_from_front_side_view",
+ "family": "standing_penetration",
+ "action_family": "standing_penetration",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "fuck from front standing - side view"
+ ],
+ "reference_images": [
+ "fuck from front standing - side view/0001.jpg",
+ "fuck from front standing - side view/252.jpg",
+ "fuck from front standing - side view/73.jpg"
+ ],
+ "canonical_geometry": "Standing from-front side-profile normal-camera view with the upright body line readable.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 53,
+ "key": "normal_standing_suspended_side_view",
+ "family": "standing_penetration",
+ "action_family": "standing_penetration",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "fuck standing - woman suspended - side view"
+ ],
+ "reference_images": [
+ "fuck standing - woman suspended - side view/0005.jpg",
+ "fuck standing - woman suspended - side view/0015.jpg",
+ "fuck standing - woman suspended - side view/611.jpg"
+ ],
+ "canonical_geometry": "Suspended standing side-profile normal-camera view where lift posture is part of the cue.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 54,
+ "key": "normal_couple_kissing_upright_side_profile",
+ "family": "couple",
+ "action_family": "couple",
+ "camera_view": "side_view",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "couple kissing"
+ ],
+ "reference_images": [
+ "couple kissing/0001_2.jpg",
+ "couple kissing/0003.jpg",
+ "couple kissing/0005_2.jpg",
+ "couple kissing/16.jpg",
+ "couple kissing/159.jpg",
+ "couple kissing/247.jpg",
+ "couple kissing/247_2.jpg",
+ "couple kissing/253.jpg",
+ "couple kissing/253_2.jpg",
+ "couple kissing/322.jpg",
+ "couple kissing/354.jpg",
+ "couple kissing/379.jpg"
+ ],
+ "canonical_geometry": "Reviewed couple-kissing upright side-profile normal-camera subset from the mixed source pool: two subjects face each other laterally, the kissing contact is centered between their faces, and both bodies remain visible enough to preserve third-person camera geometry.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ {
+ "priority_rank": 55,
+ "key": "normal_piledriver_high_front_down_view",
+ "family": "piledriver_or_pretzel",
+ "action_family": "piledriver_or_pretzel",
+ "camera_view": "top_down_or_high_angle",
+ "status": "pre_ab_candidate",
+ "atlas_folders": [
+ "piledriver"
+ ],
+ "reference_images": [
+ "piledriver/0002.jpg",
+ "piledriver/0004_2.jpg",
+ "piledriver/0005.jpg",
+ "piledriver/0006_2.jpg",
+ "piledriver/0009.jpg",
+ "piledriver/0009_2.jpg",
+ "piledriver/0012.jpg",
+ "piledriver/0013.jpg",
+ "piledriver/282.jpg",
+ "piledriver/317.jpg",
+ "piledriver/317_2.jpg",
+ "piledriver/318.jpg",
+ "piledriver/319.jpg",
+ "piledriver/494_2.jpg",
+ "piledriver/538.jpg"
+ ],
+ "canonical_geometry": "Selected piledriver high front-down normal-camera view where the folded body stays readable below the partner from a high third-person camera.",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "priority_reason": "Catalog status is pre_ab_candidate with representative references; catalog order is preserved until fixed-seed evidence exists.",
+ "generator_hook_notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/normal_camera_prompt_cue_batch.json b/ab_batches/normal_camera/normal_camera_prompt_cue_batch.json
new file mode 100644
index 0000000..cfe4d3e
--- /dev/null
+++ b/ab_batches/normal_camera/normal_camera_prompt_cue_batch.json
@@ -0,0 +1,3129 @@
+{
+ "schema": "sxcp_normal_camera_prompt_cue_batch_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "selection": "pre_ab_candidate variants in catalog order",
+ "items": [
+ {
+ "batch_rank": 1,
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "doggy on all four - side view"
+ ],
+ "reference_images": [
+ "doggy on all four - side view/0020.jpg",
+ "doggy on all four - side view/192.jpg",
+ "doggy on all four - side view/2.jpg",
+ "doggy on all four - side view/204.jpg",
+ "doggy on all four - side view/254.jpg",
+ "doggy on all four - side view/254_2.jpg",
+ "doggy on all four - side view/254_3.jpg",
+ "doggy on all four - side view/271.jpg",
+ "doggy on all four - side view/271_2.jpg",
+ "doggy on all four - side view/362.jpg",
+ "doggy on all four - side view/495.jpg",
+ "doggy on all four - side view/556.jpg",
+ "doggy on all four - side view/86.jpg",
+ "doggy on all four - side view/99.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected doggy all-fours side view: the woman is low or on all fours and the camera remains lateral enough for the body axis and rear-entry contact line to read across the frame.",
+ "source_prompt_cues": [
+ "reviewed doggy all-fours side-profile normal camera view",
+ "woman on all fours or low forward in profile",
+ "body axis runs horizontally across the frame",
+ "rear-entry contact line visible from the side"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground body cues",
+ "standing from-behind wording",
+ "seated or couch posture wording",
+ "front-facing or overhead camera wording"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "reviewed doggy all-fours side-profile normal camera view",
+ "body axis runs horizontally across the frame",
+ "rear-entry contact line visible from the side"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "woman on all fours or low forward in profile",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "reviewed doggy all-fours side-profile normal camera view. body axis runs horizontally across the frame. rear-entry contact line visible from the side.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 2,
+ "variant_key": "normal_doggy_generic_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "doggy - side view"
+ ],
+ "reference_images": [
+ "doggy - side view/0014.jpg",
+ "doggy - side view/276.jpg",
+ "doggy - side view/541.jpg"
+ ],
+ "canonical_geometry": "Normal third-person generic doggy side view: the source folder is kept separate from all-fours and explicit from-behind side folders, with the camera lateral and the action axis readable across the frame.",
+ "source_prompt_cues": [
+ "generic doggy side-profile normal camera view",
+ "camera beside the couple",
+ "body axis runs horizontally across the frame",
+ "lateral contact line stays visible"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground body cues",
+ "all-fours-only wording",
+ "standing from-behind wording",
+ "front-facing or overhead camera wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "generic doggy side-profile normal camera view",
+ "camera beside the couple",
+ "body axis runs horizontally across the frame",
+ "lateral contact line stays visible"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "generic doggy side-profile normal camera view. camera beside the couple. body axis runs horizontally across the frame. lateral contact line stays visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 3,
+ "variant_key": "normal_doggy_standing_from_behind_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from behind standing - side view"
+ ],
+ "reference_images": [
+ "fuck from behind standing - side view/0013.jpg",
+ "fuck from behind standing - side view/0019.jpg",
+ "fuck from behind standing - side view/0020.jpg",
+ "fuck from behind standing - side view/162.jpg",
+ "fuck from behind standing - side view/162_2.jpg",
+ "fuck from behind standing - side view/509.jpg",
+ "fuck from behind standing - side view/9.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected standing from-behind side view: upright posture is visible and the camera is lateral or rear-lateral rather than front portrait framing.",
+ "source_prompt_cues": [
+ "reviewed standing from-behind side-profile normal camera view",
+ "upright body line visible",
+ "camera beside or slightly behind the action",
+ "rear-entry side relation readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground body cues",
+ "all-fours wording",
+ "reclined posture wording",
+ "front-facing portrait framing"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "reviewed standing from-behind side-profile normal camera view",
+ "upright body line visible",
+ "rear-entry side relation readable"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "camera beside or slightly behind the action",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "reviewed standing from-behind side-profile normal camera view. upright body line visible. rear-entry side relation readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 4,
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from behind standing - woman backside - side view"
+ ],
+ "reference_images": [
+ "fuck from behind standing - woman backside - side view/0010.jpg",
+ "fuck from behind standing - woman backside - side view/0012.jpg",
+ "fuck from behind standing - woman backside - side view/186.jpg",
+ "fuck from behind standing - woman backside - side view/186_2.jpg",
+ "fuck from behind standing - woman backside - side view/196.jpg",
+ "fuck from behind standing - woman backside - side view/257.jpg",
+ "fuck from behind standing - woman backside - side view/286.jpg",
+ "fuck from behind standing - woman backside - side view/288.jpg",
+ "fuck from behind standing - woman backside - side view/343.jpg",
+ "fuck from behind standing - woman backside - side view/343_2.jpg",
+ "fuck from behind standing - woman backside - side view/343_3.jpg",
+ "fuck from behind standing - woman backside - side view/345.jpg",
+ "fuck from behind standing - woman backside - side view/345_2.jpg",
+ "fuck from behind standing - woman backside - side view/542.jpg",
+ "fuck from behind standing - woman backside - side view/68.jpg",
+ "fuck from behind standing - woman backside - side view/68_2.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected standing backside side view: backside/hip orientation dominates and the camera is side or rear-lateral.",
+ "source_prompt_cues": [
+ "reviewed standing backside side-profile normal camera view",
+ "woman backside and hips readable in profile",
+ "camera beside or rear-lateral to the action",
+ "standing posture remains visible"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground body cues",
+ "all-fours wording",
+ "generic standing wording that loses backside orientation",
+ "front-facing portrait framing"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "reviewed standing backside side-profile normal camera view",
+ "woman backside and hips readable in profile",
+ "standing posture remains visible"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "camera beside or rear-lateral to the action",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "reviewed standing backside side-profile normal camera view. woman backside and hips readable in profile. standing posture remains visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 5,
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "family": "doggy",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "doggy on all four - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "doggy on all four - back view - 3-4 angle/0002.jpg",
+ "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "doggy on all four - back view - 3-4 angle/206.jpg",
+ "doggy on all four - back view - 3-4 angle/267.jpg",
+ "doggy on all four - back view - 3-4 angle/302.jpg",
+ "doggy on all four - back view - 3-4 angle/327.jpg",
+ "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "doggy on all four - back view - 3-4 angle/611.jpg",
+ "doggy on all four - back view - 3-4 angle/70.jpg",
+ "doggy on all four - back view - 3-4 angle/97.jpg"
+ ],
+ "canonical_geometry": "Doggy all-fours rear three-quarter normal-camera view with the camera offset behind the action.",
+ "source_prompt_cues": [
+ "doggy all-fours rear three-quarter normal camera view",
+ "camera offset behind the action",
+ "back and hips closest to camera",
+ "torso and partner context visible"
+ ],
+ "review_only_avoid_cues": [
+ "pure side-profile wording",
+ "front-facing camera wording",
+ "standing from-behind wording",
+ "POV viewer-body foreground cues"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "doggy all-fours rear three-quarter normal camera view",
+ "camera offset behind the action",
+ "back and hips closest to camera",
+ "torso and partner context visible"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "doggy all-fours rear three-quarter normal camera view. camera offset behind the action. back and hips closest to camera. torso and partner context visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 6,
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "family": "doggy",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "doggy - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "doggy - back view - 3-4 angle/0002.jpg",
+ "doggy - back view - 3-4 angle/0002_2.jpg",
+ "doggy - back view - 3-4 angle/0008_2.jpg",
+ "doggy - back view - 3-4 angle/0013.jpg",
+ "doggy - back view - 3-4 angle/0015.jpg",
+ "doggy - back view - 3-4 angle/0017.jpg",
+ "doggy - back view - 3-4 angle/0021.jpg",
+ "doggy - back view - 3-4 angle/132.jpg",
+ "doggy - back view - 3-4 angle/145.jpg",
+ "doggy - back view - 3-4 angle/183.jpg",
+ "doggy - back view - 3-4 angle/185.jpg",
+ "doggy - back view - 3-4 angle/227.jpg",
+ "doggy - back view - 3-4 angle/39.jpg",
+ "doggy - back view - 3-4 angle/41.jpg",
+ "doggy - back view - 3-4 angle/77.jpg"
+ ],
+ "canonical_geometry": "Generic doggy rear three-quarter normal-camera view, separate from all-fours and laying from-behind source folders.",
+ "source_prompt_cues": [
+ "generic doggy rear three-quarter normal camera view",
+ "camera offset behind the action",
+ "back and hips readable",
+ "third-person partner context visible"
+ ],
+ "review_only_avoid_cues": [
+ "pure side-profile wording",
+ "front-facing camera wording",
+ "all-fours-only wording",
+ "POV viewer-body foreground cues"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "generic doggy rear three-quarter normal camera view",
+ "camera offset behind the action",
+ "back and hips readable",
+ "third-person partner context visible"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "generic doggy rear three-quarter normal camera view. camera offset behind the action. back and hips readable. third-person partner context visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 7,
+ "variant_key": "normal_doggy_laying_from_behind_front_three_quarter",
+ "family": "doggy",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "fuck from behind laying - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "fuck from behind laying - back view - 3-4 angle/0002.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0004.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0004_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0006.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0009.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0009_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0011.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0013.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0014.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0015.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0016.jpg",
+ "fuck from behind laying - back view - 3-4 angle/377.jpg",
+ "fuck from behind laying - back view - 3-4 angle/379.jpg",
+ "fuck from behind laying - back view - 3-4 angle/537.jpg",
+ "fuck from behind laying - back view - 3-4 angle/560.jpg",
+ "fuck from behind laying - back view - 3-4 angle/590.jpg",
+ "fuck from behind laying - back view - 3-4 angle/591.jpg",
+ "fuck from behind laying - back view - 3-4 angle/591_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/595.jpg",
+ "fuck from behind laying - back view - 3-4 angle/606.jpg",
+ "fuck from behind laying - back view - 3-4 angle/615.jpg",
+ "fuck from behind laying - back view - 3-4 angle/615_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/624.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected laying from-behind front three-quarter view: reclined body layout is visible, the camera is normal third-person and front-offset more than rear 3/4.",
+ "source_prompt_cues": [
+ "reviewed laying from-behind front three-quarter normal camera view",
+ "reclined body line visible",
+ "front-offset contact plane readable",
+ "normal third-person framing"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground body cues",
+ "standing posture wording",
+ "strict rear three-quarter wording",
+ "pure side-profile wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed laying from-behind front three-quarter normal camera view",
+ "reclined body line visible",
+ "front-offset contact plane readable",
+ "normal third-person framing"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed laying from-behind front three-quarter normal camera view. reclined body line visible. front-offset contact plane readable. normal third-person framing.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 8,
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "family": "doggy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "doggy all four - front view"
+ ],
+ "reference_images": [
+ "doggy all four - front view/0016.jpg",
+ "doggy all four - front view/48.jpg",
+ "doggy all four - front view/58.jpg",
+ "doggy all four - front view/64.jpg",
+ "doggy all four - front view/69.jpg",
+ "doggy all four - front view/77.jpg",
+ "doggy all four - front view/83.jpg",
+ "doggy all four - front view/97.jpg",
+ "doggy all four - front view/171.jpg",
+ "doggy all four - front view/197.jpg",
+ "doggy all four - front view/204.jpg",
+ "doggy all four - front view/221.jpg",
+ "doggy all four - front view/290.jpg",
+ "doggy all four - front view/596.jpg",
+ "doggy all four - front view/598.jpg"
+ ],
+ "canonical_geometry": "Doggy all-fours front normal-camera view where the front subject plane faces the camera while the partner remains behind.",
+ "source_prompt_cues": [
+ "doggy all-fours front normal camera view",
+ "woman on all fours facing the camera",
+ "face and forearms visible in front",
+ "partner remains behind rather than becoming the viewpoint"
+ ],
+ "review_only_avoid_cues": [
+ "POV wording",
+ "rear-view wording as primary camera",
+ "generic doggy front wording that loses all-fours posture",
+ "cropping the face out"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "doggy all-fours front normal camera view",
+ "woman on all fours facing the camera",
+ "face and forearms visible in front"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "partner remains behind rather than becoming the viewpoint",
+ "issues": [
+ "contrast_wording"
+ ]
+ }
+ ],
+ "prompt_text": "doggy all-fours front normal camera view. woman on all fours facing the camera. face and forearms visible in front.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 9,
+ "variant_key": "normal_doggy_generic_front_view",
+ "family": "doggy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "doggy - front view",
+ "doggy - front view "
+ ],
+ "reference_images": [
+ "doggy - front view/11.jpg",
+ "doggy - front view/5.jpg",
+ "doggy - front view/6.jpg",
+ "doggy - front view /0003.jpg",
+ "doggy - front view /253.jpg",
+ "doggy - front view /262.jpg",
+ "doggy - front view /349.jpg",
+ "doggy - front view /354.jpg",
+ "doggy - front view /41.jpg",
+ "doggy - front view /49.jpg",
+ "doggy - front view /505.jpg",
+ "doggy - front view /537.jpg",
+ "doggy - front view /541.jpg",
+ "doggy - front view /567.jpg",
+ "doggy - front view /627.jpg"
+ ],
+ "canonical_geometry": "Generic doggy front normal-camera view from the duplicate front-view source folders.",
+ "source_prompt_cues": [
+ "generic doggy front normal camera view",
+ "front subject plane faces the camera",
+ "face and forearms readable",
+ "partner remains behind in third person"
+ ],
+ "review_only_avoid_cues": [
+ "POV wording",
+ "rear-view wording as primary camera",
+ "all-fours-only wording unless the selected sample supports it",
+ "cropping the face out"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "generic doggy front normal camera view",
+ "front subject plane faces the camera",
+ "face and forearms readable",
+ "partner remains behind in third person"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "generic doggy front normal camera view. front subject plane faces the camera. face and forearms readable. partner remains behind in third person.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 10,
+ "variant_key": "normal_doggy_under_view_low_camera",
+ "family": "doggy",
+ "camera_view": "under_view",
+ "atlas_folders": [
+ "doggy - underview"
+ ],
+ "reference_images": [
+ "doggy - underview/0001.jpg",
+ "doggy - underview/0008.jpg",
+ "doggy - underview/614.jpg"
+ ],
+ "canonical_geometry": "Extreme low under-view doggy camera: the camera is below the hips or leg line, looking upward through or under the pose so underside body geometry dominates the frame.",
+ "source_prompt_cues": [
+ "under-view normal camera angle",
+ "camera below the hips or legs",
+ "low camera looking upward through the pose",
+ "underside body geometry visible"
+ ],
+ "review_only_avoid_cues": [
+ "overhead wording",
+ "eye-level side profile wording",
+ "first-person viewer-body cues"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "under-view normal camera angle",
+ "low camera looking upward through the pose",
+ "underside body geometry visible"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "camera below the hips or legs",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "under-view normal camera angle. low camera looking upward through the pose. underside body geometry visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 11,
+ "variant_key": "normal_cowgirl_side_profile",
+ "family": "cowgirl",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "cowgirl - side view"
+ ],
+ "reference_images": [
+ "cowgirl - side view/0003.jpg",
+ "cowgirl - side view/0004_2.jpg",
+ "cowgirl - side view/0005.jpg",
+ "cowgirl - side view/0007.jpg",
+ "cowgirl - side view/0009.jpg",
+ "cowgirl - side view/0011.jpg",
+ "cowgirl - side view/0015.jpg",
+ "cowgirl - side view/118.jpg",
+ "cowgirl - side view/195.jpg",
+ "cowgirl - side view/2.jpg",
+ "cowgirl - side view/200.jpg",
+ "cowgirl - side view/255.jpg",
+ "cowgirl - side view/280.jpg",
+ "cowgirl - side view/86.jpg",
+ "cowgirl - side view/86_2.jpg"
+ ],
+ "canonical_geometry": "Side-profile cowgirl view: woman sits or rises on top of the reclined partner, both bodies are seen from the side, and the vertical straddle relation remains readable without first-person framing.",
+ "source_prompt_cues": [
+ "cowgirl side-profile normal camera view",
+ "woman on top seen from the side",
+ "reclined partner visible beneath her",
+ "vertical straddle relation readable in profile"
+ ],
+ "review_only_avoid_cues": [
+ "POV reclined-viewer wording",
+ "front-facing portrait framing",
+ "rear-view reverse cowgirl wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "cowgirl side-profile normal camera view",
+ "woman on top seen from the side",
+ "reclined partner visible beneath her",
+ "vertical straddle relation readable in profile"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "cowgirl side-profile normal camera view. woman on top seen from the side. reclined partner visible beneath her. vertical straddle relation readable in profile.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 12,
+ "variant_key": "normal_cowgirl_full_body_front_view",
+ "family": "cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "cowgirl full man body - front view"
+ ],
+ "reference_images": [
+ "cowgirl full man body - front view/0005.jpg",
+ "cowgirl full man body - front view/303.jpg",
+ "cowgirl full man body - front view/99.jpg"
+ ],
+ "canonical_geometry": "Cowgirl front normal-camera view with the partner body visible beneath the woman.",
+ "source_prompt_cues": [
+ "cowgirl full-body front normal camera view",
+ "woman faces the camera while on top",
+ "partner body visible beneath her",
+ "front torso and hips readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV recline framing",
+ "reverse-cowgirl back-facing wording",
+ "tight crop that loses partner placement",
+ "front three-quarter wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "cowgirl full-body front normal camera view",
+ "woman faces the camera while on top",
+ "partner body visible beneath her",
+ "front torso and hips readable"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "cowgirl full-body front normal camera view. woman faces the camera while on top. partner body visible beneath her. front torso and hips readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 13,
+ "variant_key": "normal_cowgirl_front_three_quarter",
+ "family": "cowgirl",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "cowgirl - front view - 3-4 angle"
+ ],
+ "reference_images": [
+ "cowgirl - front view - 3-4 angle/588.jpg",
+ "cowgirl - front view - 3-4 angle/62_2.jpg",
+ "cowgirl - front view - 3-4 angle/70.jpg"
+ ],
+ "canonical_geometry": "Cowgirl front three-quarter normal-camera view with the front contact plane readable from an offset camera.",
+ "source_prompt_cues": [
+ "cowgirl front three-quarter normal camera view",
+ "woman on top seen from a front-offset angle",
+ "body depth remains visible",
+ "partner placement readable beneath her"
+ ],
+ "review_only_avoid_cues": [
+ "POV recline framing",
+ "reverse-cowgirl back-facing wording",
+ "pure front-view wording",
+ "tight crop that loses partner placement"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "cowgirl front three-quarter normal camera view",
+ "woman on top seen from a front-offset angle",
+ "body depth remains visible",
+ "partner placement readable beneath her"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "cowgirl front three-quarter normal camera view. woman on top seen from a front-offset angle. body depth remains visible. partner placement readable beneath her.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 14,
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "family": "cowgirl",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "cowgirl - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "cowgirl - back view - 3-4 angle/0002.jpg",
+ "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "cowgirl - back view - 3-4 angle/0006.jpg",
+ "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "cowgirl - back view - 3-4 angle/16.jpg",
+ "cowgirl - back view - 3-4 angle/22.jpg",
+ "cowgirl - back view - 3-4 angle/41.jpg",
+ "cowgirl - back view - 3-4 angle/82.jpg",
+ "cowgirl - back view - 3-4 angle/90.jpg",
+ "cowgirl - back view - 3-4 angle/145.jpg",
+ "cowgirl - back view - 3-4 angle/160.jpg",
+ "cowgirl - back view - 3-4 angle/172.jpg",
+ "cowgirl - back view - 3-4 angle/225.jpg",
+ "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "cowgirl - back view - 3-4 angle/248.jpg"
+ ],
+ "canonical_geometry": "Rear three-quarter cowgirl view: camera sits behind or behind-offset from the woman on top, with her back, hips, and legs closest while the reclined partner remains visible beneath or ahead of her.",
+ "source_prompt_cues": [
+ "rear three-quarter cowgirl normal camera view",
+ "woman on top seen from behind",
+ "back and hips closest to camera",
+ "reclined partner still visible beneath her"
+ ],
+ "review_only_avoid_cues": [
+ "front-facing cowgirl wording",
+ "pure side profile wording",
+ "POV foreground body cues"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "rear three-quarter cowgirl normal camera view",
+ "woman on top seen from behind",
+ "back and hips closest to camera",
+ "reclined partner still visible beneath her"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "rear three-quarter cowgirl normal camera view. woman on top seen from behind. back and hips closest to camera. reclined partner still visible beneath her.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 15,
+ "variant_key": "normal_reverse_cowgirl_back_view",
+ "family": "reverse_cowgirl",
+ "camera_view": "back_view",
+ "atlas_folders": [
+ "reverse cowgirl - back view"
+ ],
+ "reference_images": [
+ "reverse cowgirl - back view/267.jpg",
+ "reverse cowgirl - back view/64.jpg",
+ "reverse cowgirl - back view/80.jpg"
+ ],
+ "canonical_geometry": "Reverse-cowgirl rear normal-camera view where the woman faces away and the back-facing orientation dominates.",
+ "source_prompt_cues": [
+ "reverse cowgirl rear normal camera view",
+ "woman faces away from camera",
+ "back and hips dominate the frame",
+ "partner visible below her in third person"
+ ],
+ "review_only_avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "front-facing cowgirl wording",
+ "rear three-quarter wording unless selected sample supports it",
+ "losing the back-facing orientation"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reverse cowgirl rear normal camera view",
+ "woman faces away from camera",
+ "back and hips dominate the frame",
+ "partner visible below her in third person"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reverse cowgirl rear normal camera view. woman faces away from camera. back and hips dominate the frame. partner visible below her in third person.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 16,
+ "variant_key": "normal_reverse_cowgirl_back_three_quarter",
+ "family": "reverse_cowgirl",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "reverse cowgirl - backview - 3-4 angle"
+ ],
+ "reference_images": [
+ "reverse cowgirl - backview - 3-4 angle/207.jpg",
+ "reverse cowgirl - backview - 3-4 angle/280_2.jpg",
+ "reverse cowgirl - backview - 3-4 angle/99.jpg"
+ ],
+ "canonical_geometry": "Reverse-cowgirl rear three-quarter normal-camera view from an offset back camera.",
+ "source_prompt_cues": [
+ "reverse cowgirl rear three-quarter normal camera view",
+ "woman faces away from camera",
+ "camera offset behind her",
+ "partner visible below in third person"
+ ],
+ "review_only_avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "front-facing cowgirl wording",
+ "pure back-view wording",
+ "losing the back-facing orientation"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reverse cowgirl rear three-quarter normal camera view",
+ "woman faces away from camera",
+ "camera offset behind her",
+ "partner visible below in third person"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reverse cowgirl rear three-quarter normal camera view. woman faces away from camera. camera offset behind her. partner visible below in third person.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 17,
+ "variant_key": "normal_reverse_cowgirl_side_profile",
+ "family": "reverse_cowgirl",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "reverse cowgirl - side view"
+ ],
+ "reference_images": [
+ "reverse cowgirl - side view/0004.jpg",
+ "reverse cowgirl - side view/596.jpg",
+ "reverse cowgirl - side view/606_3.jpg"
+ ],
+ "canonical_geometry": "Side-profile reverse cowgirl view: woman is on top facing away from the partner, both bodies are seen laterally, and the back-facing orientation stays readable through hip, back, and leg placement.",
+ "source_prompt_cues": [
+ "reverse cowgirl side-profile normal camera view",
+ "woman on top facing away",
+ "lateral body axis across frame",
+ "back-facing orientation visible from the side"
+ ],
+ "review_only_avoid_cues": [
+ "front-facing cowgirl wording",
+ "POV wording",
+ "overhead camera wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reverse cowgirl side-profile normal camera view",
+ "woman on top facing away",
+ "lateral body axis across frame",
+ "back-facing orientation visible from the side"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reverse cowgirl side-profile normal camera view. woman on top facing away. lateral body axis across frame. back-facing orientation visible from the side.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 18,
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "family": "reverse_cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/0004.jpg",
+ "reverse cowgirl/0005_4.jpg",
+ "reverse cowgirl/0014.jpg",
+ "reverse cowgirl/79.jpg",
+ "reverse cowgirl/82.jpg",
+ "reverse cowgirl/145.jpg",
+ "reverse cowgirl/260.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/319.jpg",
+ "reverse cowgirl/527.jpg",
+ "reverse cowgirl/608.jpg"
+ ],
+ "canonical_geometry": "Reviewed reverse-cowgirl front-view normal-camera subset from the large mixed source pool: the woman is on top facing the camera, the contact plane reads frontally, and the reclined partner remains visible below her in third person.",
+ "source_prompt_cues": [
+ "reviewed reverse cowgirl front-view normal camera",
+ "woman on top faces the camera",
+ "front contact plane centered between her legs",
+ "reclined partner visible below her in third person"
+ ],
+ "review_only_avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "rear or back-view reverse-cowgirl wording",
+ "side-profile reverse-cowgirl wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed reverse cowgirl front-view normal camera",
+ "woman on top faces the camera",
+ "front contact plane centered between her legs",
+ "reclined partner visible below her in third person"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed reverse cowgirl front-view normal camera. woman on top faces the camera. front contact plane centered between her legs. reclined partner visible below her in third person.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 19,
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "family": "reverse_cowgirl",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/153.jpg",
+ "reverse cowgirl/153_2.jpg",
+ "reverse cowgirl/239_2.jpg",
+ "reverse cowgirl/239_3.jpg",
+ "reverse cowgirl/241.jpg",
+ "reverse cowgirl/241_2.jpg",
+ "reverse cowgirl/241_3.jpg",
+ "reverse cowgirl/257.jpg",
+ "reverse cowgirl/287.jpg",
+ "reverse cowgirl/323_2.jpg",
+ "reverse cowgirl/609.jpg",
+ "reverse cowgirl/609_2.jpg"
+ ],
+ "canonical_geometry": "Reviewed reverse-cowgirl front three-quarter normal-camera subset from the large mixed source pool: the woman is on top turned partly toward the camera, the contact plane reads from a front-offset angle, and the reclined partner remains visible below or behind her in third person.",
+ "source_prompt_cues": [
+ "reviewed reverse cowgirl front three-quarter normal camera",
+ "woman on top turns partly toward the camera",
+ "front-offset contact plane remains readable",
+ "reclined partner visible below her from a three-quarter angle"
+ ],
+ "review_only_avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "pure front-view reverse-cowgirl wording",
+ "rear or side-profile reverse-cowgirl wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed reverse cowgirl front three-quarter normal camera",
+ "woman on top turns partly toward the camera",
+ "front-offset contact plane remains readable",
+ "reclined partner visible below her from a three-quarter angle"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed reverse cowgirl front three-quarter normal camera. woman on top turns partly toward the camera. front-offset contact plane remains readable. reclined partner visible below her from a three-quarter angle.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 20,
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "family": "reverse_cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0009.jpg",
+ "reverse cowgirl/0009_2.jpg",
+ "reverse cowgirl/0009_3.jpg",
+ "reverse cowgirl/0015.jpg",
+ "reverse cowgirl/0015_2.jpg",
+ "reverse cowgirl/0016_2.jpg",
+ "reverse cowgirl/170.jpg",
+ "reverse cowgirl/261.jpg",
+ "reverse cowgirl/332.jpg",
+ "reverse cowgirl/332_2.jpg",
+ "reverse cowgirl/551.jpg",
+ "reverse cowgirl/618.jpg"
+ ],
+ "canonical_geometry": "Reviewed reverse-cowgirl low-close front-view normal-camera subset from the large mixed source pool: the woman is on top facing the camera, the foreground contact plane dominates the lower frame, and the subject remains visible above it in third-person framing.",
+ "source_prompt_cues": [
+ "reviewed reverse cowgirl low-close front-view normal camera",
+ "woman on top faces the camera",
+ "foreground contact plane dominates the lower frame",
+ "subject remains visible above the foreground plane"
+ ],
+ "review_only_avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "wider room-context front-view wording",
+ "front three-quarter reverse-cowgirl wording",
+ "rear or side-profile reverse-cowgirl wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed reverse cowgirl low-close front-view normal camera",
+ "woman on top faces the camera",
+ "foreground contact plane dominates the lower frame",
+ "subject remains visible above the foreground plane"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed reverse cowgirl low-close front-view normal camera. woman on top faces the camera. foreground contact plane dominates the lower frame. subject remains visible above the foreground plane.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 21,
+ "variant_key": "normal_reverse_congress_front_view",
+ "family": "reverse_congress",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "reverse congress - front view"
+ ],
+ "reference_images": [
+ "reverse congress - front view/0012.jpg",
+ "reverse congress - front view/0012_2.jpg",
+ "reverse congress - front view/0013.jpg",
+ "reverse congress - front view/61.jpg",
+ "reverse congress - front view/105.jpg",
+ "reverse congress - front view/105_2.jpg",
+ "reverse congress - front view/122.jpg",
+ "reverse congress - front view/183.jpg",
+ "reverse congress - front view/189.jpg",
+ "reverse congress - front view/289.jpg",
+ "reverse congress - front view/289_2.jpg",
+ "reverse congress - front view/291.jpg",
+ "reverse congress - front view/542.jpg",
+ "reverse congress - front view/542_2.jpg",
+ "reverse congress - front view/563_2.jpg"
+ ],
+ "canonical_geometry": "Front-facing reverse-congress normal camera: the seated or folded position faces camera, with both bodies stacked or framed vertically and the contact plane visible from the front.",
+ "source_prompt_cues": [
+ "reverse-congress front normal camera view",
+ "stacked bodies face the camera",
+ "folded seated geometry readable",
+ "contact plane visible from the front"
+ ],
+ "review_only_avoid_cues": [
+ "POV wording",
+ "side-profile wording",
+ "generic sitting pose without stacked-body geometry"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reverse-congress front normal camera view",
+ "stacked bodies face the camera",
+ "folded seated geometry readable",
+ "contact plane visible from the front"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reverse-congress front normal camera view. stacked bodies face the camera. folded seated geometry readable. contact plane visible from the front.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 22,
+ "variant_key": "normal_missionary_side_profile",
+ "family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "missionary - side view"
+ ],
+ "reference_images": [
+ "missionary - side view/0003.jpg",
+ "missionary - side view/0013.jpg",
+ "missionary - side view/0014.jpg",
+ "missionary - side view/509.jpg",
+ "missionary - side view/521.jpg",
+ "missionary - side view/533.jpg",
+ "missionary - side view/534.jpg",
+ "missionary - side view/593.jpg",
+ "missionary - side view/596.jpg",
+ "missionary - side view/596_2.jpg",
+ "missionary - side view/602.jpg",
+ "missionary - side view/613.jpg",
+ "missionary - side view/627.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected missionary side-profile normal-camera view with stacked body geometry readable from the side.",
+ "source_prompt_cues": [
+ "reviewed missionary side-profile normal camera view",
+ "reclined partner beneath",
+ "top partner above in profile",
+ "stacked body line visible from the side"
+ ],
+ "review_only_avoid_cues": [
+ "front-facing bed portrait wording",
+ "overhead wording",
+ "POV body foreground cues",
+ "mating-press wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed missionary side-profile normal camera view",
+ "reclined partner beneath",
+ "top partner above in profile",
+ "stacked body line visible from the side"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed missionary side-profile normal camera view. reclined partner beneath. top partner above in profile. stacked body line visible from the side.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 23,
+ "variant_key": "normal_missionary_side_profile_full_visibility",
+ "family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "missionary - side view - full penis"
+ ],
+ "reference_images": [
+ "missionary - side view - full penis/0002.jpg",
+ "missionary - side view - full penis/0002_2.jpg",
+ "missionary - side view - full penis/0021.jpg",
+ "missionary - side view - full penis/550.jpg",
+ "missionary - side view - full penis/69_2.jpg",
+ "missionary - side view - full penis/74.jpg",
+ "missionary - side view - full penis/97.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected missionary side-profile normal-camera view emphasizing unobscured side contact visibility.",
+ "source_prompt_cues": [
+ "reviewed missionary side-profile normal camera view with full contact visibility",
+ "reclined partner beneath",
+ "top partner above in profile",
+ "side contact line unobscured"
+ ],
+ "review_only_avoid_cues": [
+ "front-facing bed portrait wording",
+ "overhead wording",
+ "POV body foreground cues",
+ "mating-press wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed missionary side-profile normal camera view with full contact visibility",
+ "reclined partner beneath",
+ "top partner above in profile",
+ "side contact line unobscured"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed missionary side-profile normal camera view with full contact visibility. reclined partner beneath. top partner above in profile. side contact line unobscured.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 24,
+ "variant_key": "normal_missionary_front_view",
+ "family": "missionary",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "missionary - front view"
+ ],
+ "reference_images": [
+ "missionary - front view/0011.jpg",
+ "missionary - front view/567.jpg",
+ "missionary - front view/72.jpg"
+ ],
+ "canonical_geometry": "Missionary front normal-camera view where the reclined partner faces the camera and the top partner remains visible.",
+ "source_prompt_cues": [
+ "missionary front normal camera view",
+ "reclined partner faces the camera",
+ "top partner visible above or between the legs",
+ "front contact plane readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV missionary wording",
+ "pure side-profile wording",
+ "front three-quarter wording unless selected sample supports it",
+ "cropping away the top partner"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "missionary front normal camera view",
+ "reclined partner faces the camera",
+ "front contact plane readable"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "top partner visible above or between the legs",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "missionary front normal camera view. reclined partner faces the camera. front contact plane readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 25,
+ "variant_key": "normal_anal_random_front_view",
+ "family": "anal",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "reference_images": [
+ "anal random/0005.jpg",
+ "anal random/0006.jpg",
+ "anal random/0015.jpg",
+ "anal random/160_3.jpg",
+ "anal random/188.jpg",
+ "anal random/347_3.jpg",
+ "anal random/347_10.jpg",
+ "anal random/347_11.jpg",
+ "anal random/366.jpg",
+ "anal random/366_3.jpg",
+ "anal random/366_4.jpg"
+ ],
+ "canonical_geometry": "Reviewed anal front-view normal-camera subset from the large mixed source pool: the main subject faces the camera, the contact plane reads frontally, and partner context remains visible in third person.",
+ "source_prompt_cues": [
+ "reviewed anal front-view normal camera",
+ "main subject faces the camera",
+ "front contact plane centered",
+ "partner context visible in third person"
+ ],
+ "review_only_avoid_cues": [
+ "POV anal wording",
+ "side-profile anal wording",
+ "rear-view anal wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed anal front-view normal camera",
+ "main subject faces the camera",
+ "front contact plane centered",
+ "partner context visible in third person"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed anal front-view normal camera. main subject faces the camera. front contact plane centered. partner context visible in third person.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 26,
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "family": "anal",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "reference_images": [
+ "anal random/0003.jpg",
+ "anal random/0003_3.jpg",
+ "anal random/0010.jpg",
+ "anal random/0013.jpg",
+ "anal random/119.jpg",
+ "anal random/119_2.jpg",
+ "anal random/119_3.jpg",
+ "anal random/124_2.jpg",
+ "anal random/124_8.jpg",
+ "anal random/347_4.jpg",
+ "anal random/347_5.jpg",
+ "anal random/347_8.jpg"
+ ],
+ "canonical_geometry": "Reviewed anal rear/side-offset normal-camera subset from the large mixed source pool: the main body turns partly away from the camera, the rear-side contact plane remains readable, and partner context stays visible in third person.",
+ "source_prompt_cues": [
+ "reviewed anal rear side-offset normal camera",
+ "main body turns partly away from the camera",
+ "rear-side contact plane remains readable",
+ "partner context visible in third person"
+ ],
+ "review_only_avoid_cues": [
+ "POV anal wording",
+ "straight front-view anal wording",
+ "standing anal wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed anal rear side-offset normal camera",
+ "main body turns partly away from the camera",
+ "rear-side contact plane remains readable",
+ "partner context visible in third person"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed anal rear side-offset normal camera. main body turns partly away from the camera. rear-side contact plane remains readable. partner context visible in third person.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 27,
+ "variant_key": "normal_blowjob_laying_front_view",
+ "family": "blowjob",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "blowjob - laying - front view"
+ ],
+ "reference_images": [
+ "blowjob - laying - front view/0001.jpg",
+ "blowjob - laying - front view/0003.jpg",
+ "blowjob - laying - front view/0004.jpg",
+ "blowjob - laying - front view/0010.jpg",
+ "blowjob - laying - front view/0010_2.jpg",
+ "blowjob - laying - front view/0018.jpg",
+ "blowjob - laying - front view/48.jpg",
+ "blowjob - laying - front view/69.jpg",
+ "blowjob - laying - front view/91.jpg",
+ "blowjob - laying - front view/94.jpg",
+ "blowjob - laying - front view/122.jpg",
+ "blowjob - laying - front view/171.jpg",
+ "blowjob - laying - front view/184.jpg",
+ "blowjob - laying - front view/274.jpg",
+ "blowjob - laying - front view/512.jpg"
+ ],
+ "canonical_geometry": "Front-facing laying blowjob normal camera: the receiving partner reclines or is partly visible while the performing partner lies or leans forward facing camera, with face, mouth contact, and body line visible from the front.",
+ "source_prompt_cues": [
+ "front-facing normal camera blowjob view",
+ "performing partner faces camera",
+ "mouth contact visible from the front",
+ "reclined partner placement readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV oral framing",
+ "side-profile wording",
+ "cropping the performer face out"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "front-facing normal camera blowjob view",
+ "performing partner faces camera",
+ "mouth contact visible from the front",
+ "reclined partner placement readable"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "front-facing normal camera blowjob view. performing partner faces camera. mouth contact visible from the front. reclined partner placement readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 28,
+ "variant_key": "normal_blowjob_sitting_front_view",
+ "family": "blowjob",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "blowjob - sitting - frontview"
+ ],
+ "reference_images": [
+ "blowjob - sitting - frontview/0003.jpg",
+ "blowjob - sitting - frontview/37.jpg",
+ "blowjob - sitting - frontview/81.jpg"
+ ],
+ "canonical_geometry": "Front-facing seated-context blowjob normal camera: the performing partner is upright, kneeling, or leaning near a seated/reclined partner, with face, mouth contact, and partner placement readable from the front.",
+ "source_prompt_cues": [
+ "seated-context blowjob front normal camera view",
+ "performing partner faces camera or near camera",
+ "mouth contact centered",
+ "receiving partner remains third-person visible"
+ ],
+ "review_only_avoid_cues": [
+ "POV oral wording",
+ "low-angle underside framing",
+ "side-profile-only wording"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "seated-context blowjob front normal camera view",
+ "mouth contact centered",
+ "receiving partner remains third-person visible"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "performing partner faces camera or near camera",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "seated-context blowjob front normal camera view. mouth contact centered. receiving partner remains third-person visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 29,
+ "variant_key": "normal_blowjob_laying_side_profile",
+ "family": "blowjob",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "blowjob - laying - side view"
+ ],
+ "reference_images": [
+ "blowjob - laying - side view/0013.jpg",
+ "blowjob - laying - side view/119.jpg",
+ "blowjob - laying - side view/209.jpg",
+ "blowjob - laying - side view/232.jpg",
+ "blowjob - laying - side view/244.jpg",
+ "blowjob - laying - side view/255.jpg",
+ "blowjob - laying - side view/333.jpg",
+ "blowjob - laying - side view/36.jpg",
+ "blowjob - laying - side view/364.jpg",
+ "blowjob - laying - side view/375.jpg",
+ "blowjob - laying - side view/62.jpg",
+ "blowjob - laying - side view/74.jpg",
+ "blowjob - laying - side view/85.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected laying blowjob side-profile normal-camera view: the performer leans or lies laterally, the contact line reads from the side, and the receiving partner remains third-person visible without POV foreground framing.",
+ "source_prompt_cues": [
+ "reviewed laying blowjob side-profile normal camera view",
+ "performer head and torso seen from the side",
+ "contact line visible laterally",
+ "receiving partner placement readable without POV"
+ ],
+ "review_only_avoid_cues": [
+ "front-facing oral portrait wording",
+ "sitting or kneeling posture wording",
+ "POV viewer-thigh foreground cues",
+ "overhead oral wording"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "reviewed laying blowjob side-profile normal camera view",
+ "performer head and torso seen from the side",
+ "contact line visible laterally"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "receiving partner placement readable without POV",
+ "issues": [
+ "negative_word"
+ ]
+ }
+ ],
+ "prompt_text": "reviewed laying blowjob side-profile normal camera view. performer head and torso seen from the side. contact line visible laterally.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 30,
+ "variant_key": "normal_blowjob_sitting_side_profile",
+ "family": "blowjob",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "blowjob - sitting - side view"
+ ],
+ "reference_images": [
+ "blowjob - sitting - side view/0002.jpg",
+ "blowjob - sitting - side view/241.jpg",
+ "blowjob - sitting - side view/64.jpg"
+ ],
+ "canonical_geometry": "Sitting oral-contact side-profile normal-camera view.",
+ "source_prompt_cues": [
+ "sitting side-profile normal camera oral view",
+ "performer head and torso seen from the side",
+ "contact line visible laterally",
+ "seated posture readable"
+ ],
+ "review_only_avoid_cues": [
+ "front-facing oral portrait wording",
+ "laying or kneeling posture wording",
+ "POV viewer-thigh foreground cues",
+ "overhead oral wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "sitting side-profile normal camera oral view",
+ "performer head and torso seen from the side",
+ "contact line visible laterally",
+ "seated posture readable"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "sitting side-profile normal camera oral view. performer head and torso seen from the side. contact line visible laterally. seated posture readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 31,
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "family": "ballsucking",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "ballsucking - standing"
+ ],
+ "reference_images": [
+ "ballsucking - standing/0014.jpg",
+ "ballsucking - standing/130.jpg",
+ "ballsucking - standing/137.jpg",
+ "ballsucking - standing/207.jpg",
+ "ballsucking - standing/222.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/333.jpg",
+ "ballsucking - standing/34.jpg",
+ "ballsucking - standing/540.jpg",
+ "ballsucking - standing/589.jpg",
+ "ballsucking - standing/624.jpg"
+ ],
+ "canonical_geometry": "Selected standing-partner low side or near-side normal-camera view where the receiving partner stands, the performer stays low beside or in front of the standing body, and the contact plane remains readable in third-person framing.",
+ "source_prompt_cues": [
+ "standing-partner low side normal camera view",
+ "performer stays low beside the standing partner",
+ "standing partner remains visible above the contact plane",
+ "third-person side or near-side framing keeps the bodies readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV oral wording",
+ "laying posture wording",
+ "water-close crop",
+ "using the full mixed folder as one preset"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "standing-partner low side normal camera view",
+ "performer stays low beside the standing partner",
+ "standing partner remains visible above the contact plane"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "third-person side or near-side framing keeps the bodies readable",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "standing-partner low side normal camera view. performer stays low beside the standing partner. standing partner remains visible above the contact plane.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 32,
+ "variant_key": "normal_boobjob_front_close_view",
+ "family": "boobjob",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "boobjob"
+ ],
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/0018_2.jpg",
+ "boobjob/141.jpg",
+ "boobjob/186.jpg",
+ "boobjob/218.jpg",
+ "boobjob/259.jpg",
+ "boobjob/327.jpg",
+ "boobjob/588.jpg",
+ "boobjob/592.jpg",
+ "boobjob/598.jpg",
+ "boobjob/615.jpg",
+ "boobjob/618.jpg"
+ ],
+ "canonical_geometry": "Selected front-close boobjob normal-camera view where the performer faces camera or near-camera, upper body and face remain readable, and the contact action stays centered without becoming POV.",
+ "source_prompt_cues": [
+ "boobjob front-close normal camera view",
+ "front-facing upper body and face remain readable",
+ "breast-contact action stays centered in the frame",
+ "third-person close camera without POV wording"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground body cues",
+ "side-profile boobjob wording",
+ "standing-only framing",
+ "using the full mixed folder as one locked camera preset"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "boobjob front-close normal camera view",
+ "front-facing upper body and face remain readable",
+ "breast-contact action stays centered in the frame"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "third-person close camera without POV wording",
+ "issues": [
+ "negative_word"
+ ]
+ }
+ ],
+ "prompt_text": "boobjob front-close normal camera view. front-facing upper body and face remain readable. breast-contact action stays centered in the frame.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 33,
+ "variant_key": "normal_breast_contact_front_view",
+ "family": "breast_contact",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breast - touching - front view"
+ ],
+ "reference_images": [
+ "breast - touching - front view/0006.jpg",
+ "breast - touching - front view/0006_2.jpg",
+ "breast - touching - front view/12.jpg",
+ "breast - touching - front view/0014.jpg",
+ "breast - touching - front view/0015.jpg",
+ "breast - touching - front view/16.jpg",
+ "breast - touching - front view/56.jpg",
+ "breast - touching - front view/72.jpg",
+ "breast - touching - front view/183.jpg",
+ "breast - touching - front view/220.jpg",
+ "breast - touching - front view/246.jpg",
+ "breast - touching - front view/248.jpg",
+ "breast - touching - front view/281.jpg",
+ "breast - touching - front view/348.jpg",
+ "breast - touching - front view/361.jpg"
+ ],
+ "canonical_geometry": "Front-facing breast-contact normal camera: torso and face/front body are oriented toward the camera while hands or partner contact remains readable on the front body plane.",
+ "source_prompt_cues": [
+ "front-facing breast-contact normal camera view",
+ "front torso visible",
+ "hands or contact on the front body plane",
+ "face or upper body remains readable"
+ ],
+ "review_only_avoid_cues": [
+ "side-profile wording",
+ "POV touch wording",
+ "cropping to only detail texture"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "front-facing breast-contact normal camera view",
+ "front torso visible"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "hands or contact on the front body plane",
+ "issues": [
+ "option_word"
+ ]
+ },
+ {
+ "cue": "face or upper body remains readable",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "front-facing breast-contact normal camera view. front torso visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 34,
+ "variant_key": "normal_breast_touching_side_view",
+ "family": "breast_contact",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "breast - touching - side view"
+ ],
+ "reference_images": [
+ "breast - touching - side view/0010.jpg",
+ "breast - touching - side view/364.jpg",
+ "breast - touching - side view/97.jpg"
+ ],
+ "canonical_geometry": "Side-profile breast-touching normal-camera view.",
+ "source_prompt_cues": [
+ "side-profile breast-touching normal camera view",
+ "lateral torso plane visible",
+ "hand contact readable from the side",
+ "body axis runs across the frame"
+ ],
+ "review_only_avoid_cues": [
+ "front-only body presentation",
+ "mouth-contact wording",
+ "POV touch language",
+ "overhead wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "side-profile breast-touching normal camera view",
+ "lateral torso plane visible",
+ "hand contact readable from the side",
+ "body axis runs across the frame"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "side-profile breast-touching normal camera view. lateral torso plane visible. hand contact readable from the side. body axis runs across the frame.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 35,
+ "variant_key": "normal_breast_sucking_side_view",
+ "family": "breast_contact",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "breast sucking - side view"
+ ],
+ "reference_images": [
+ "breast sucking - side view/0003.jpg",
+ "breast sucking - side view/0005.jpg",
+ "breast sucking - side view/0007.jpg",
+ "breast sucking - side view/0009.jpg",
+ "breast sucking - side view/0010_2.jpg",
+ "breast sucking - side view/182.jpg",
+ "breast sucking - side view/186.jpg",
+ "breast sucking - side view/218.jpg",
+ "breast sucking - side view/234.jpg",
+ "breast sucking - side view/244.jpg",
+ "breast sucking - side view/257.jpg",
+ "breast sucking - side view/267.jpg",
+ "breast sucking - side view/269.jpg",
+ "breast sucking - side view/356.jpg",
+ "breast sucking - side view/99.jpg"
+ ],
+ "canonical_geometry": "Side-profile breast mouth-contact normal-camera view.",
+ "source_prompt_cues": [
+ "side-profile breast mouth-contact normal camera view",
+ "lateral torso plane visible",
+ "mouth contact readable from the side",
+ "body axis runs across the frame"
+ ],
+ "review_only_avoid_cues": [
+ "front-only body presentation",
+ "hand-touch-only wording",
+ "POV touch language",
+ "overhead wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "side-profile breast mouth-contact normal camera view",
+ "lateral torso plane visible",
+ "mouth contact readable from the side",
+ "body axis runs across the frame"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "side-profile breast mouth-contact normal camera view. lateral torso plane visible. mouth contact readable from the side. body axis runs across the frame.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 36,
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "family": "oral_other",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "69"
+ ],
+ "reference_images": [
+ "69/0002.jpg",
+ "69/0008.jpg",
+ "69/0016.jpg",
+ "69/19.jpg",
+ "69/166.jpg",
+ "69/292.jpg",
+ "69/624.jpg"
+ ],
+ "canonical_geometry": "Selected sixty-nine front-close normal-camera view where the upper subject faces camera, opposed oral-contact pose stays centered, and both bodies remain readable in close third-person framing.",
+ "source_prompt_cues": [
+ "sixty-nine front-close normal camera view",
+ "upper subject faces the camera",
+ "opposed oral-contact pose stays centered",
+ "third-person close framing keeps both bodies readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV viewer-mouth framing",
+ "wide room-context layout",
+ "upright seated straddle framing",
+ "side-downward camera wording",
+ "using the full mixed folder as one preset"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "sixty-nine front-close normal camera view",
+ "upper subject faces the camera",
+ "opposed oral-contact pose stays centered",
+ "third-person close framing keeps both bodies readable"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "sixty-nine front-close normal camera view. upper subject faces the camera. opposed oral-contact pose stays centered. third-person close framing keeps both bodies readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 37,
+ "variant_key": "normal_fingering_reclined_front_view",
+ "family": "manual_or_toy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "fingering"
+ ],
+ "reference_images": [
+ "fingering/0004.jpg",
+ "fingering/0006.jpg",
+ "fingering/0013.jpg",
+ "fingering/0015.jpg",
+ "fingering/39.jpg",
+ "fingering/50.jpg",
+ "fingering/132.jpg",
+ "fingering/133.jpg",
+ "fingering/279.jpg",
+ "fingering/603.jpg"
+ ],
+ "canonical_geometry": "Selected reclined manual-contact front normal-camera view where the subject is reclined, faces the camera, the open-thigh contact plane stays centered, and face or upper body remains readable in third-person framing.",
+ "source_prompt_cues": [
+ "manual-contact reclined front normal camera view",
+ "reclined subject faces the camera",
+ "open-thigh contact plane centered in frame",
+ "face and upper body remain readable behind the contact plane"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground-hand framing",
+ "upright chair-only framing",
+ "side-profile manual-contact wording",
+ "oral-contact primary-action wording",
+ "using the full mixed folder as one preset"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "manual-contact reclined front normal camera view",
+ "reclined subject faces the camera",
+ "open-thigh contact plane centered in frame",
+ "face and upper body remain readable behind the contact plane"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "manual-contact reclined front normal camera view. reclined subject faces the camera. open-thigh contact plane centered in frame. face and upper body remain readable behind the contact plane.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 38,
+ "variant_key": "normal_wand_front_close_view",
+ "family": "manual_or_toy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "wand"
+ ],
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/0015.jpg",
+ "wand/217.jpg",
+ "wand/532.jpg",
+ "wand/561.jpg",
+ "wand/611.jpg",
+ "wand/75.jpg"
+ ],
+ "canonical_geometry": "Selected wand front-close normal-camera view where the subject faces camera or near-camera, the open-thigh tool-contact plane is centered, and the wand remains readable as one continuous object in third-person framing.",
+ "source_prompt_cues": [
+ "wand front-close normal camera view",
+ "subject faces camera or near camera",
+ "open-thigh tool-contact plane centered in frame",
+ "single continuous wand remains readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV foreground-tool wording",
+ "side portrait-only crop",
+ "wide posture-variable framing",
+ "split-device wording",
+ "using the full mixed folder as one preset"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "wand front-close normal camera view",
+ "open-thigh tool-contact plane centered in frame",
+ "single continuous wand remains readable"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "subject faces camera or near camera",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "wand front-close normal camera view. open-thigh tool-contact plane centered in frame. single continuous wand remains readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 39,
+ "variant_key": "normal_handjob_standing_side_profile",
+ "family": "manual_or_toy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "handjob standing - side view"
+ ],
+ "reference_images": [
+ "handjob standing - side view/16.jpg",
+ "handjob standing - side view/105.jpg",
+ "handjob standing - side view/171.jpg",
+ "handjob standing - side view/174.jpg",
+ "handjob standing - side view/175.jpg",
+ "handjob standing - side view/305.jpg",
+ "handjob standing - side view/549.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected standing manual-contact side-profile normal-camera view: both participants remain upright or near-upright, the contact line reads laterally, and the framing stays third-person rather than POV.",
+ "source_prompt_cues": [
+ "reviewed standing manual-contact side-profile normal camera view",
+ "upright participants seen from the side",
+ "hand contact visible laterally",
+ "third-person standing posture readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV manual-contact wording",
+ "sitting, kneeling, or laying posture wording",
+ "front-facing portrait-only crop",
+ "overhead camera wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed standing manual-contact side-profile normal camera view",
+ "upright participants seen from the side",
+ "hand contact visible laterally",
+ "third-person standing posture readable"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed standing manual-contact side-profile normal camera view. upright participants seen from the side. hand contact visible laterally. third-person standing posture readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 40,
+ "variant_key": "normal_handjob_both_sitting_front_view",
+ "family": "manual_or_toy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "handjob - both sitting - front view"
+ ],
+ "reference_images": [
+ "handjob - both sitting - front view/109.jpg",
+ "handjob - both sitting - front view/588.jpg",
+ "handjob - both sitting - front view/598.jpg"
+ ],
+ "canonical_geometry": "Both-sitting manual-contact front normal-camera view.",
+ "source_prompt_cues": [
+ "both-sitting manual-contact front normal camera view",
+ "hand contact visible from the front",
+ "both participants readable",
+ "normal third-person camera"
+ ],
+ "review_only_avoid_cues": [
+ "POV manual-contact wording",
+ "pure side-profile wording",
+ "laying posture wording",
+ "cropping away the performer"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "both-sitting manual-contact front normal camera view",
+ "hand contact visible from the front",
+ "both participants readable",
+ "normal third-person camera"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "both-sitting manual-contact front normal camera view. hand contact visible from the front. both participants readable. normal third-person camera.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 41,
+ "variant_key": "normal_handjob_laying_front_three_quarter",
+ "family": "manual_or_toy",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "handjob - laying - front view - 3-4 angle"
+ ],
+ "reference_images": [
+ "handjob - laying - front view - 3-4 angle/39.jpg",
+ "handjob - laying - front view - 3-4 angle/41.jpg",
+ "handjob - laying - front view - 3-4 angle/91.jpg"
+ ],
+ "canonical_geometry": "Laying manual-contact front three-quarter normal-camera view.",
+ "source_prompt_cues": [
+ "laying manual-contact front three-quarter normal camera view",
+ "hand contact visible from a front-offset camera",
+ "both participants readable",
+ "normal third-person camera"
+ ],
+ "review_only_avoid_cues": [
+ "POV manual-contact wording",
+ "pure side-profile wording",
+ "both-sitting posture wording",
+ "pure front-view wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "laying manual-contact front three-quarter normal camera view",
+ "hand contact visible from a front-offset camera",
+ "both participants readable",
+ "normal third-person camera"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "laying manual-contact front three-quarter normal camera view. hand contact visible from a front-offset camera. both participants readable. normal third-person camera.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 42,
+ "variant_key": "normal_pussy_licking_side_profile",
+ "family": "oral_other",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "pussy licking - side view"
+ ],
+ "reference_images": [
+ "pussy licking - side view/0003.jpg",
+ "pussy licking - side view/0006.jpg",
+ "pussy licking - side view/0010.jpg",
+ "pussy licking - side view/0013_2.jpg",
+ "pussy licking - side view/0015.jpg",
+ "pussy licking - side view/0015_2.jpg",
+ "pussy licking - side view/0016.jpg",
+ "pussy licking - side view/0016_2.jpg",
+ "pussy licking - side view/536.jpg",
+ "pussy licking - side view/537.jpg",
+ "pussy licking - side view/544.jpg",
+ "pussy licking - side view/560.jpg",
+ "pussy licking - side view/603.jpg",
+ "pussy licking - side view/609.jpg",
+ "pussy licking - side view/613.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected side-profile oral-contact normal-camera view: the performer is seen laterally, the receiving partner hips and legs remain readable, and the contact line runs across the frame without POV foreground cues.",
+ "source_prompt_cues": [
+ "reviewed side-profile oral-contact normal camera view",
+ "performer head seen from the side",
+ "receiving partner hips and legs visible laterally",
+ "contact line remains readable"
+ ],
+ "review_only_avoid_cues": [
+ "POV oral wording",
+ "front-facing presentation wording as primary camera",
+ "standing posture wording",
+ "overhead view"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed side-profile oral-contact normal camera view",
+ "performer head seen from the side",
+ "receiving partner hips and legs visible laterally",
+ "contact line remains readable"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed side-profile oral-contact normal camera view. performer head seen from the side. receiving partner hips and legs visible laterally. contact line remains readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 43,
+ "variant_key": "normal_display_rear_body_view",
+ "family": "display",
+ "camera_view": "back_view",
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "reference_images": [
+ "woman solo showing her hass - back view/0001_2.jpg",
+ "woman solo showing her hass - back view/0003.jpg",
+ "woman solo showing her hass - back view/0006_2.jpg",
+ "woman solo showing her hass - back view/0009.jpg",
+ "woman solo showing her hass - back view/0015.jpg",
+ "woman solo showing her hass - back view/0016_2.jpg",
+ "woman solo showing her hass - back view/112.jpg",
+ "woman solo showing her hass - back view/153.jpg",
+ "woman solo showing her hass - back view/157.jpg",
+ "woman solo showing her hass - back view/162_2.jpg",
+ "woman solo showing her hass - back view/169.jpg",
+ "woman solo showing her hass - back view/182_2.jpg",
+ "woman solo showing her hass - back view/232.jpg",
+ "woman solo showing her hass - back view/270.jpg",
+ "woman solo showing her hass - back view/322.jpg"
+ ],
+ "canonical_geometry": "Reviewed image-selected solo rear body-display normal-camera view: the subject is back-facing or rear three-quarter, rear body shape is the primary composition, and the camera remains third-person rather than POV.",
+ "source_prompt_cues": [
+ "reviewed solo rear body-display normal camera view",
+ "subject faces away or turns back",
+ "rear body closest to camera",
+ "solo display composition"
+ ],
+ "review_only_avoid_cues": [
+ "POV body inspection wording",
+ "front-facing portrait wording",
+ "partner-contact wording",
+ "mixed camera wording"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "reviewed solo rear body-display normal camera view",
+ "rear body closest to camera",
+ "solo display composition"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "subject faces away or turns back",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "reviewed solo rear body-display normal camera view. rear body closest to camera. solo display composition.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 44,
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "family": "display",
+ "camera_view": "back_view",
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "reference_images": [
+ "woman solo showing her hass - back view/0002.jpg",
+ "woman solo showing her hass - back view/0006.jpg",
+ "woman solo showing her hass - back view/0006_3.jpg",
+ "woman solo showing her hass - back view/0007_2.jpg",
+ "woman solo showing her hass - back view/173.jpg",
+ "woman solo showing her hass - back view/197.jpg",
+ "woman solo showing her hass - back view/230.jpg",
+ "woman solo showing her hass - back view/235.jpg",
+ "woman solo showing her hass - back view/287.jpg",
+ "woman solo showing her hass - back view/293.jpg",
+ "woman solo showing her hass - back view/300.jpg",
+ "woman solo showing her hass - back view/321.jpg"
+ ],
+ "canonical_geometry": "Reviewed standing solo rear body-display normal-camera subset: the subject stands upright with back or rear three-quarter side toward camera, rear body remains the primary composition, and the full standing posture stays readable in third-person framing.",
+ "source_prompt_cues": [
+ "reviewed standing rear body-display normal camera view",
+ "subject stands upright with back toward camera",
+ "rear body closest to camera",
+ "full standing solo display posture"
+ ],
+ "review_only_avoid_cues": [
+ "POV body inspection wording",
+ "seated rear-display wording",
+ "kneeling rear-display wording",
+ "front-facing portrait wording",
+ "partner-contact wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed standing rear body-display normal camera view",
+ "subject stands upright with back toward camera",
+ "rear body closest to camera",
+ "full standing solo display posture"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed standing rear body-display normal camera view. subject stands upright with back toward camera. rear body closest to camera. full standing solo display posture.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 45,
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/0002_3.jpg",
+ "pussy spread/0003_4.jpg",
+ "pussy spread/0012.jpg",
+ "pussy spread/0015.jpg",
+ "pussy spread/0017.jpg",
+ "pussy spread/80.jpg",
+ "pussy spread/130.jpg",
+ "pussy spread/153.jpg",
+ "pussy spread/296.jpg",
+ "pussy spread/297.jpg",
+ "pussy spread/328.jpg",
+ "pussy spread/367.jpg"
+ ],
+ "canonical_geometry": "Reviewed front open-leg display normal-camera subset from the mixed source pool: the subject faces the camera, the open-leg display reads frontally, and enough body or room context remains visible to separate it from tight low-close crops.",
+ "source_prompt_cues": [
+ "reviewed open-leg display front-view normal camera",
+ "subject faces the camera",
+ "front display pose readable",
+ "body and room context remain visible"
+ ],
+ "review_only_avoid_cues": [
+ "POV spread wording",
+ "tight low-close crop wording",
+ "side-offset display wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed open-leg display front-view normal camera",
+ "subject faces the camera",
+ "front display pose readable",
+ "body and room context remain visible"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed open-leg display front-view normal camera. subject faces the camera. front display pose readable. body and room context remain visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 46,
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/1.jpg",
+ "pussy spread/1_2.jpg",
+ "pussy spread/0003.jpg",
+ "pussy spread/0003_2.jpg",
+ "pussy spread/0003_3.jpg",
+ "pussy spread/0010_2.jpg",
+ "pussy spread/0016.jpg",
+ "pussy spread/0016_2.jpg",
+ "pussy spread/41.jpg",
+ "pussy spread/201.jpg",
+ "pussy spread/217_2.jpg",
+ "pussy spread/223.jpg"
+ ],
+ "canonical_geometry": "Reviewed low-close front open-leg display normal-camera subset from the mixed source pool: the camera is front-facing and close enough that the foreground body plane dominates while the subject remains visible in normal third-person framing.",
+ "source_prompt_cues": [
+ "reviewed low-close open-leg display front-view normal camera",
+ "front-facing close composition",
+ "foreground body plane dominates the frame",
+ "subject remains visible above the foreground plane"
+ ],
+ "review_only_avoid_cues": [
+ "POV spread wording",
+ "wider room-context front-view wording",
+ "side-offset display wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed low-close open-leg display front-view normal camera",
+ "front-facing close composition",
+ "foreground body plane dominates the frame",
+ "subject remains visible above the foreground plane"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed low-close open-leg display front-view normal camera. front-facing close composition. foreground body plane dominates the frame. subject remains visible above the foreground plane.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 47,
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "family": "display",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/0007.jpg",
+ "pussy spread/0008.jpg",
+ "pussy spread/73.jpg",
+ "pussy spread/121.jpg",
+ "pussy spread/134.jpg",
+ "pussy spread/154_3.jpg",
+ "pussy spread/163.jpg",
+ "pussy spread/175.jpg",
+ "pussy spread/256.jpg",
+ "pussy spread/308.jpg",
+ "pussy spread/311.jpg",
+ "pussy spread/368.jpg"
+ ],
+ "canonical_geometry": "Reviewed side-offset front open-leg display normal-camera subset from the mixed source pool: the subject sits or reclines at an oblique angle, the open-leg display reads from a lateral offset, and torso plus leg line angle across the frame in third-person composition.",
+ "source_prompt_cues": [
+ "reviewed side-offset open-leg display normal camera",
+ "subject sits or reclines at an oblique angle",
+ "open-leg display reads from a lateral offset",
+ "torso and leg line angle across the frame"
+ ],
+ "review_only_avoid_cues": [
+ "POV spread wording",
+ "straight front-view display wording",
+ "low-close foreground-dominant crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "needs_prompt_cleanup",
+ "positive_prompt_cues": [
+ "reviewed side-offset open-leg display normal camera",
+ "open-leg display reads from a lateral offset",
+ "torso and leg line angle across the frame"
+ ],
+ "blocked_prompt_cues": [
+ {
+ "cue": "subject sits or reclines at an oblique angle",
+ "issues": [
+ "option_word"
+ ]
+ }
+ ],
+ "prompt_text": "reviewed side-offset open-leg display normal camera. open-leg display reads from a lateral offset. torso and leg line angle across the frame.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 48,
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_3.jpg",
+ "breasts exposed/0006.jpg",
+ "breasts exposed/0008_2.jpg",
+ "breasts exposed/0011_2.jpg",
+ "breasts exposed/141.jpg",
+ "breasts exposed/181.jpg",
+ "breasts exposed/263.jpg",
+ "breasts exposed/302.jpg",
+ "breasts exposed/327.jpg",
+ "breasts exposed/346.jpg",
+ "breasts exposed/594_2.jpg",
+ "breasts exposed/624.jpg"
+ ],
+ "canonical_geometry": "Reviewed display front-view normal-camera subset from the broad breasts-exposed source pool: the subject faces the camera, the upper torso and full body remain readable, and the frame uses normal third-person display composition.",
+ "source_prompt_cues": [
+ "reviewed torso-display front-view normal camera",
+ "subject faces the camera",
+ "upper torso and full body remain readable",
+ "camera-facing display posture"
+ ],
+ "review_only_avoid_cues": [
+ "POV touch wording",
+ "side-offset display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed torso-display front-view normal camera",
+ "subject faces the camera",
+ "upper torso and full body remain readable",
+ "camera-facing display posture"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed torso-display front-view normal camera. subject faces the camera. upper torso and full body remain readable. camera-facing display posture.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 49,
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "family": "display",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/83.jpg",
+ "breasts exposed/196.jpg",
+ "breasts exposed/235.jpg",
+ "breasts exposed/267.jpg",
+ "breasts exposed/271.jpg",
+ "breasts exposed/305.jpg",
+ "breasts exposed/353.jpg",
+ "breasts exposed/373.jpg",
+ "breasts exposed/590.jpg",
+ "breasts exposed/590_2.jpg"
+ ],
+ "canonical_geometry": "Reviewed display side-offset normal-camera subset from the broad breasts-exposed source pool: the subject turns laterally, the side torso outline is readable, and the frame remains normal third-person display composition.",
+ "source_prompt_cues": [
+ "reviewed torso-display side-offset normal camera",
+ "body turned laterally",
+ "side torso outline readable",
+ "profile display pose"
+ ],
+ "review_only_avoid_cues": [
+ "POV touch wording",
+ "pure camera-facing display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed torso-display side-offset normal camera",
+ "body turned laterally",
+ "side torso outline readable",
+ "profile display pose"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed torso-display side-offset normal camera. body turned laterally. side torso outline readable. profile display pose.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 50,
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0002_2.jpg",
+ "breasts exposed/0003.jpg",
+ "breasts exposed/49.jpg",
+ "breasts exposed/138.jpg",
+ "breasts exposed/155.jpg",
+ "breasts exposed/169.jpg",
+ "breasts exposed/190.jpg",
+ "breasts exposed/230.jpg",
+ "breasts exposed/242.jpg",
+ "breasts exposed/302_2.jpg",
+ "breasts exposed/332.jpg",
+ "breasts exposed/368.jpg"
+ ],
+ "canonical_geometry": "Reviewed standing display front-view normal-camera subset from the broad breasts-exposed source pool: the subject stands upright facing the camera, the torso and legs remain readable, and the frame preserves normal third-person display composition.",
+ "source_prompt_cues": [
+ "reviewed standing torso-display front-view normal camera",
+ "subject stands upright facing the camera",
+ "torso and legs remain readable",
+ "front-facing standing display posture"
+ ],
+ "review_only_avoid_cues": [
+ "POV touch wording",
+ "seated or kneeling display wording",
+ "side-offset display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed standing torso-display front-view normal camera",
+ "subject stands upright facing the camera",
+ "torso and legs remain readable",
+ "front-facing standing display posture"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed standing torso-display front-view normal camera. subject stands upright facing the camera. torso and legs remain readable. front-facing standing display posture.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 51,
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_2.jpg",
+ "breasts exposed/0007_2.jpg",
+ "breasts exposed/101_2.jpg",
+ "breasts exposed/154.jpg",
+ "breasts exposed/165.jpg",
+ "breasts exposed/173.jpg",
+ "breasts exposed/259.jpg",
+ "breasts exposed/285.jpg",
+ "breasts exposed/293.jpg",
+ "breasts exposed/322.jpg",
+ "breasts exposed/328.jpg",
+ "breasts exposed/523.jpg"
+ ],
+ "canonical_geometry": "Reviewed seated/kneeling display front-view normal-camera subset from the broad breasts-exposed source pool: the subject faces the camera from a seated or kneeling posture, the torso and lower-body placement remain readable, and the frame preserves normal third-person display composition.",
+ "source_prompt_cues": [
+ "reviewed seated-kneeling torso-display front-view normal camera",
+ "subject faces the camera from a seated posture",
+ "kneeling posture remains readable",
+ "front-facing seated display posture"
+ ],
+ "review_only_avoid_cues": [
+ "POV touch wording",
+ "standing display wording",
+ "side-offset display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed seated-kneeling torso-display front-view normal camera",
+ "subject faces the camera from a seated posture",
+ "kneeling posture remains readable",
+ "front-facing seated display posture"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed seated-kneeling torso-display front-view normal camera. subject faces the camera from a seated posture. kneeling posture remains readable. front-facing seated display posture.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 52,
+ "variant_key": "normal_standing_from_front_side_view",
+ "family": "standing_penetration",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from front standing - side view"
+ ],
+ "reference_images": [
+ "fuck from front standing - side view/0001.jpg",
+ "fuck from front standing - side view/252.jpg",
+ "fuck from front standing - side view/73.jpg"
+ ],
+ "canonical_geometry": "Standing from-front side-profile normal-camera view with the upright body line readable.",
+ "source_prompt_cues": [
+ "standing from-front side-profile normal camera view",
+ "upright body line visible",
+ "camera beside the couple",
+ "standing posture readable"
+ ],
+ "review_only_avoid_cues": [
+ "front-only portrait wording",
+ "POV wording",
+ "suspended posture wording",
+ "cropping out the full standing posture"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "standing from-front side-profile normal camera view",
+ "upright body line visible",
+ "camera beside the couple",
+ "standing posture readable"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "standing from-front side-profile normal camera view. upright body line visible. camera beside the couple. standing posture readable.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 53,
+ "variant_key": "normal_standing_suspended_side_view",
+ "family": "standing_penetration",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck standing - woman suspended - side view"
+ ],
+ "reference_images": [
+ "fuck standing - woman suspended - side view/0005.jpg",
+ "fuck standing - woman suspended - side view/0015.jpg",
+ "fuck standing - woman suspended - side view/611.jpg"
+ ],
+ "canonical_geometry": "Suspended standing side-profile normal-camera view where lift posture is part of the cue.",
+ "source_prompt_cues": [
+ "suspended standing side-profile normal camera view",
+ "vertical lift posture readable",
+ "camera beside the couple",
+ "full standing body line visible"
+ ],
+ "review_only_avoid_cues": [
+ "front-only portrait wording",
+ "POV wording",
+ "ordinary standing wording that loses suspended posture",
+ "cropping out the full standing posture"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "suspended standing side-profile normal camera view",
+ "vertical lift posture readable",
+ "camera beside the couple",
+ "full standing body line visible"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "suspended standing side-profile normal camera view. vertical lift posture readable. camera beside the couple. full standing body line visible.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 54,
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "family": "couple",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "couple kissing"
+ ],
+ "reference_images": [
+ "couple kissing/0001_2.jpg",
+ "couple kissing/0003.jpg",
+ "couple kissing/0005_2.jpg",
+ "couple kissing/16.jpg",
+ "couple kissing/159.jpg",
+ "couple kissing/247.jpg",
+ "couple kissing/247_2.jpg",
+ "couple kissing/253.jpg",
+ "couple kissing/253_2.jpg",
+ "couple kissing/322.jpg",
+ "couple kissing/354.jpg",
+ "couple kissing/379.jpg"
+ ],
+ "canonical_geometry": "Reviewed couple-kissing upright side-profile normal-camera subset from the mixed source pool: two subjects face each other laterally, the kissing contact is centered between their faces, and both bodies remain visible enough to preserve third-person camera geometry.",
+ "source_prompt_cues": [
+ "reviewed couple kissing upright side-profile normal camera",
+ "two subjects face each other in lateral profile",
+ "kissing contact centered between their faces",
+ "both bodies visible in third-person framing"
+ ],
+ "review_only_avoid_cues": [
+ "POV kissing wording",
+ "front-facing couple portrait wording",
+ "bed or seated crop wording",
+ "tight face close-up wording",
+ "using the full mixed folder as one route"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "reviewed couple kissing upright side-profile normal camera",
+ "two subjects face each other in lateral profile",
+ "kissing contact centered between their faces",
+ "both bodies visible in third-person framing"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "reviewed couple kissing upright side-profile normal camera. two subjects face each other in lateral profile. kissing contact centered between their faces. both bodies visible in third-person framing.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ },
+ {
+ "batch_rank": 55,
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "family": "piledriver_or_pretzel",
+ "camera_view": "top_down_or_high_angle",
+ "atlas_folders": [
+ "piledriver"
+ ],
+ "reference_images": [
+ "piledriver/0002.jpg",
+ "piledriver/0004_2.jpg",
+ "piledriver/0005.jpg",
+ "piledriver/0006_2.jpg",
+ "piledriver/0009.jpg",
+ "piledriver/0009_2.jpg",
+ "piledriver/0012.jpg",
+ "piledriver/0013.jpg",
+ "piledriver/282.jpg",
+ "piledriver/317.jpg",
+ "piledriver/317_2.jpg",
+ "piledriver/318.jpg",
+ "piledriver/319.jpg",
+ "piledriver/494_2.jpg",
+ "piledriver/538.jpg"
+ ],
+ "canonical_geometry": "Selected piledriver high front-down normal-camera view where the folded body stays readable below the partner from a high third-person camera.",
+ "source_prompt_cues": [
+ "piledriver high front-down normal camera view",
+ "folded body visible below the partner",
+ "legs folded high around the torso",
+ "third-person camera looking down at the compact stacked pose"
+ ],
+ "review_only_avoid_cues": [
+ "POV folded-leg wording",
+ "tight genital-only crop",
+ "using the entire mixed piledriver folder as one camera angle",
+ "pretzel pose wording"
+ ],
+ "state": "prompt_ready",
+ "positive_prompt_cues": [
+ "piledriver high front-down normal camera view",
+ "folded body visible below the partner",
+ "legs folded high around the torso",
+ "third-person camera looking down at the compact stacked pose"
+ ],
+ "blocked_prompt_cues": [],
+ "prompt_text": "piledriver high front-down normal camera view. folded body visible below the partner. legs folded high around the torso. third-person camera looking down at the compact stacked pose.",
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues"
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": null,
+ "sampling_seed": null,
+ "fixed_subject_seed": null
+ }
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/normal_camera_score_sheet.json b/ab_batches/normal_camera/normal_camera_score_sheet.json
new file mode 100644
index 0000000..ba4aa53
--- /dev/null
+++ b/ab_batches/normal_camera/normal_camera_score_sheet.json
@@ -0,0 +1,2071 @@
+{
+ "schema": "sxcp_normal_camera_score_sheet_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "acceptance_gates": [
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match"
+ ],
+ "acceptance_gate_descriptions": {
+ "camera_geometry": "Camera angle, elevation, side/front/back orientation, and framing match the atlas family.",
+ "pose_ownership": "The visible actors own the pose correctly, with no POV body cues leaking into normal-camera framing.",
+ "workspace_continuity": "Workspace/lounge details support the camera angle instead of fighting the pose.",
+ "clothing_visibility": "Clothing cues stay attached to the intended visible subject and only describe garments visible in this pose.",
+ "subject_identity": "The same woman identity, face, hair, eyes, and body type remain stable across fixed-seed variants.",
+ "body_proportion_control": "Penis/body proportions and limb lengths stay plausible for the selected atlas framing.",
+ "prompt_noise": "Prompt text uses direct visual cues, with option, negative, and instruction-like wording removed from positive text.",
+ "atlas_reference_match": "The generated frame can be matched back to the selected atlas references for this variant."
+ },
+ "score_scale": {
+ "0": "fails the gate",
+ "1": "partial or unstable",
+ "2": "usable but needs wording refinement",
+ "3": "strong enough to preserve as candidate wording"
+ },
+ "rows": [
+ {
+ "batch_rank": 1,
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "doggy on all four - side view"
+ ],
+ "reference_images": [
+ "doggy on all four - side view/0020.jpg",
+ "doggy on all four - side view/192.jpg",
+ "doggy on all four - side view/2.jpg",
+ "doggy on all four - side view/204.jpg",
+ "doggy on all four - side view/254.jpg",
+ "doggy on all four - side view/254_2.jpg",
+ "doggy on all four - side view/254_3.jpg",
+ "doggy on all four - side view/271.jpg",
+ "doggy on all four - side view/271_2.jpg",
+ "doggy on all four - side view/362.jpg",
+ "doggy on all four - side view/495.jpg",
+ "doggy on all four - side view/556.jpg",
+ "doggy on all four - side view/86.jpg",
+ "doggy on all four - side view/99.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 2,
+ "variant_key": "normal_doggy_generic_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "doggy - side view"
+ ],
+ "reference_images": [
+ "doggy - side view/0014.jpg",
+ "doggy - side view/276.jpg",
+ "doggy - side view/541.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 3,
+ "variant_key": "normal_doggy_standing_from_behind_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from behind standing - side view"
+ ],
+ "reference_images": [
+ "fuck from behind standing - side view/0013.jpg",
+ "fuck from behind standing - side view/0019.jpg",
+ "fuck from behind standing - side view/0020.jpg",
+ "fuck from behind standing - side view/162.jpg",
+ "fuck from behind standing - side view/162_2.jpg",
+ "fuck from behind standing - side view/509.jpg",
+ "fuck from behind standing - side view/9.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 4,
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "family": "doggy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from behind standing - woman backside - side view"
+ ],
+ "reference_images": [
+ "fuck from behind standing - woman backside - side view/0010.jpg",
+ "fuck from behind standing - woman backside - side view/0012.jpg",
+ "fuck from behind standing - woman backside - side view/186.jpg",
+ "fuck from behind standing - woman backside - side view/186_2.jpg",
+ "fuck from behind standing - woman backside - side view/196.jpg",
+ "fuck from behind standing - woman backside - side view/257.jpg",
+ "fuck from behind standing - woman backside - side view/286.jpg",
+ "fuck from behind standing - woman backside - side view/288.jpg",
+ "fuck from behind standing - woman backside - side view/343.jpg",
+ "fuck from behind standing - woman backside - side view/343_2.jpg",
+ "fuck from behind standing - woman backside - side view/343_3.jpg",
+ "fuck from behind standing - woman backside - side view/345.jpg",
+ "fuck from behind standing - woman backside - side view/345_2.jpg",
+ "fuck from behind standing - woman backside - side view/542.jpg",
+ "fuck from behind standing - woman backside - side view/68.jpg",
+ "fuck from behind standing - woman backside - side view/68_2.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 5,
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "family": "doggy",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "doggy on all four - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "doggy on all four - back view - 3-4 angle/0002.jpg",
+ "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "doggy on all four - back view - 3-4 angle/206.jpg",
+ "doggy on all four - back view - 3-4 angle/267.jpg",
+ "doggy on all four - back view - 3-4 angle/302.jpg",
+ "doggy on all four - back view - 3-4 angle/327.jpg",
+ "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "doggy on all four - back view - 3-4 angle/611.jpg",
+ "doggy on all four - back view - 3-4 angle/70.jpg",
+ "doggy on all four - back view - 3-4 angle/97.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 6,
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "family": "doggy",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "doggy - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "doggy - back view - 3-4 angle/0002.jpg",
+ "doggy - back view - 3-4 angle/0002_2.jpg",
+ "doggy - back view - 3-4 angle/0008_2.jpg",
+ "doggy - back view - 3-4 angle/0013.jpg",
+ "doggy - back view - 3-4 angle/0015.jpg",
+ "doggy - back view - 3-4 angle/0017.jpg",
+ "doggy - back view - 3-4 angle/0021.jpg",
+ "doggy - back view - 3-4 angle/132.jpg",
+ "doggy - back view - 3-4 angle/145.jpg",
+ "doggy - back view - 3-4 angle/183.jpg",
+ "doggy - back view - 3-4 angle/185.jpg",
+ "doggy - back view - 3-4 angle/227.jpg",
+ "doggy - back view - 3-4 angle/39.jpg",
+ "doggy - back view - 3-4 angle/41.jpg",
+ "doggy - back view - 3-4 angle/77.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 7,
+ "variant_key": "normal_doggy_laying_from_behind_front_three_quarter",
+ "family": "doggy",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "fuck from behind laying - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "fuck from behind laying - back view - 3-4 angle/0002.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0004.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0004_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0006.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0009.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0009_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0011.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0013.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0014.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0015.jpg",
+ "fuck from behind laying - back view - 3-4 angle/0016.jpg",
+ "fuck from behind laying - back view - 3-4 angle/377.jpg",
+ "fuck from behind laying - back view - 3-4 angle/379.jpg",
+ "fuck from behind laying - back view - 3-4 angle/537.jpg",
+ "fuck from behind laying - back view - 3-4 angle/560.jpg",
+ "fuck from behind laying - back view - 3-4 angle/590.jpg",
+ "fuck from behind laying - back view - 3-4 angle/591.jpg",
+ "fuck from behind laying - back view - 3-4 angle/591_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/595.jpg",
+ "fuck from behind laying - back view - 3-4 angle/606.jpg",
+ "fuck from behind laying - back view - 3-4 angle/615.jpg",
+ "fuck from behind laying - back view - 3-4 angle/615_2.jpg",
+ "fuck from behind laying - back view - 3-4 angle/624.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 8,
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "family": "doggy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "doggy all four - front view"
+ ],
+ "reference_images": [
+ "doggy all four - front view/0016.jpg",
+ "doggy all four - front view/48.jpg",
+ "doggy all four - front view/58.jpg",
+ "doggy all four - front view/64.jpg",
+ "doggy all four - front view/69.jpg",
+ "doggy all four - front view/77.jpg",
+ "doggy all four - front view/83.jpg",
+ "doggy all four - front view/97.jpg",
+ "doggy all four - front view/171.jpg",
+ "doggy all four - front view/197.jpg",
+ "doggy all four - front view/204.jpg",
+ "doggy all four - front view/221.jpg",
+ "doggy all four - front view/290.jpg",
+ "doggy all four - front view/596.jpg",
+ "doggy all four - front view/598.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 9,
+ "variant_key": "normal_doggy_generic_front_view",
+ "family": "doggy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "doggy - front view",
+ "doggy - front view "
+ ],
+ "reference_images": [
+ "doggy - front view/11.jpg",
+ "doggy - front view/5.jpg",
+ "doggy - front view/6.jpg",
+ "doggy - front view /0003.jpg",
+ "doggy - front view /253.jpg",
+ "doggy - front view /262.jpg",
+ "doggy - front view /349.jpg",
+ "doggy - front view /354.jpg",
+ "doggy - front view /41.jpg",
+ "doggy - front view /49.jpg",
+ "doggy - front view /505.jpg",
+ "doggy - front view /537.jpg",
+ "doggy - front view /541.jpg",
+ "doggy - front view /567.jpg",
+ "doggy - front view /627.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 10,
+ "variant_key": "normal_doggy_under_view_low_camera",
+ "family": "doggy",
+ "camera_view": "under_view",
+ "atlas_folders": [
+ "doggy - underview"
+ ],
+ "reference_images": [
+ "doggy - underview/0001.jpg",
+ "doggy - underview/0008.jpg",
+ "doggy - underview/614.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 11,
+ "variant_key": "normal_cowgirl_side_profile",
+ "family": "cowgirl",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "cowgirl - side view"
+ ],
+ "reference_images": [
+ "cowgirl - side view/0003.jpg",
+ "cowgirl - side view/0004_2.jpg",
+ "cowgirl - side view/0005.jpg",
+ "cowgirl - side view/0007.jpg",
+ "cowgirl - side view/0009.jpg",
+ "cowgirl - side view/0011.jpg",
+ "cowgirl - side view/0015.jpg",
+ "cowgirl - side view/118.jpg",
+ "cowgirl - side view/195.jpg",
+ "cowgirl - side view/2.jpg",
+ "cowgirl - side view/200.jpg",
+ "cowgirl - side view/255.jpg",
+ "cowgirl - side view/280.jpg",
+ "cowgirl - side view/86.jpg",
+ "cowgirl - side view/86_2.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 12,
+ "variant_key": "normal_cowgirl_full_body_front_view",
+ "family": "cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "cowgirl full man body - front view"
+ ],
+ "reference_images": [
+ "cowgirl full man body - front view/0005.jpg",
+ "cowgirl full man body - front view/303.jpg",
+ "cowgirl full man body - front view/99.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 13,
+ "variant_key": "normal_cowgirl_front_three_quarter",
+ "family": "cowgirl",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "cowgirl - front view - 3-4 angle"
+ ],
+ "reference_images": [
+ "cowgirl - front view - 3-4 angle/588.jpg",
+ "cowgirl - front view - 3-4 angle/62_2.jpg",
+ "cowgirl - front view - 3-4 angle/70.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 14,
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "family": "cowgirl",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "cowgirl - back view - 3-4 angle"
+ ],
+ "reference_images": [
+ "cowgirl - back view - 3-4 angle/0002.jpg",
+ "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "cowgirl - back view - 3-4 angle/0006.jpg",
+ "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "cowgirl - back view - 3-4 angle/16.jpg",
+ "cowgirl - back view - 3-4 angle/22.jpg",
+ "cowgirl - back view - 3-4 angle/41.jpg",
+ "cowgirl - back view - 3-4 angle/82.jpg",
+ "cowgirl - back view - 3-4 angle/90.jpg",
+ "cowgirl - back view - 3-4 angle/145.jpg",
+ "cowgirl - back view - 3-4 angle/160.jpg",
+ "cowgirl - back view - 3-4 angle/172.jpg",
+ "cowgirl - back view - 3-4 angle/225.jpg",
+ "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "cowgirl - back view - 3-4 angle/248.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 15,
+ "variant_key": "normal_reverse_cowgirl_back_view",
+ "family": "reverse_cowgirl",
+ "camera_view": "back_view",
+ "atlas_folders": [
+ "reverse cowgirl - back view"
+ ],
+ "reference_images": [
+ "reverse cowgirl - back view/267.jpg",
+ "reverse cowgirl - back view/64.jpg",
+ "reverse cowgirl - back view/80.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 16,
+ "variant_key": "normal_reverse_cowgirl_back_three_quarter",
+ "family": "reverse_cowgirl",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "reverse cowgirl - backview - 3-4 angle"
+ ],
+ "reference_images": [
+ "reverse cowgirl - backview - 3-4 angle/207.jpg",
+ "reverse cowgirl - backview - 3-4 angle/280_2.jpg",
+ "reverse cowgirl - backview - 3-4 angle/99.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 17,
+ "variant_key": "normal_reverse_cowgirl_side_profile",
+ "family": "reverse_cowgirl",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "reverse cowgirl - side view"
+ ],
+ "reference_images": [
+ "reverse cowgirl - side view/0004.jpg",
+ "reverse cowgirl - side view/596.jpg",
+ "reverse cowgirl - side view/606_3.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 18,
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "family": "reverse_cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/0004.jpg",
+ "reverse cowgirl/0005_4.jpg",
+ "reverse cowgirl/0014.jpg",
+ "reverse cowgirl/79.jpg",
+ "reverse cowgirl/82.jpg",
+ "reverse cowgirl/145.jpg",
+ "reverse cowgirl/260.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/319.jpg",
+ "reverse cowgirl/527.jpg",
+ "reverse cowgirl/608.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 19,
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "family": "reverse_cowgirl",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/153.jpg",
+ "reverse cowgirl/153_2.jpg",
+ "reverse cowgirl/239_2.jpg",
+ "reverse cowgirl/239_3.jpg",
+ "reverse cowgirl/241.jpg",
+ "reverse cowgirl/241_2.jpg",
+ "reverse cowgirl/241_3.jpg",
+ "reverse cowgirl/257.jpg",
+ "reverse cowgirl/287.jpg",
+ "reverse cowgirl/323_2.jpg",
+ "reverse cowgirl/609.jpg",
+ "reverse cowgirl/609_2.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 20,
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "family": "reverse_cowgirl",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0009.jpg",
+ "reverse cowgirl/0009_2.jpg",
+ "reverse cowgirl/0009_3.jpg",
+ "reverse cowgirl/0015.jpg",
+ "reverse cowgirl/0015_2.jpg",
+ "reverse cowgirl/0016_2.jpg",
+ "reverse cowgirl/170.jpg",
+ "reverse cowgirl/261.jpg",
+ "reverse cowgirl/332.jpg",
+ "reverse cowgirl/332_2.jpg",
+ "reverse cowgirl/551.jpg",
+ "reverse cowgirl/618.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 21,
+ "variant_key": "normal_reverse_congress_front_view",
+ "family": "reverse_congress",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "reverse congress - front view"
+ ],
+ "reference_images": [
+ "reverse congress - front view/0012.jpg",
+ "reverse congress - front view/0012_2.jpg",
+ "reverse congress - front view/0013.jpg",
+ "reverse congress - front view/61.jpg",
+ "reverse congress - front view/105.jpg",
+ "reverse congress - front view/105_2.jpg",
+ "reverse congress - front view/122.jpg",
+ "reverse congress - front view/183.jpg",
+ "reverse congress - front view/189.jpg",
+ "reverse congress - front view/289.jpg",
+ "reverse congress - front view/289_2.jpg",
+ "reverse congress - front view/291.jpg",
+ "reverse congress - front view/542.jpg",
+ "reverse congress - front view/542_2.jpg",
+ "reverse congress - front view/563_2.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 22,
+ "variant_key": "normal_missionary_side_profile",
+ "family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "missionary - side view"
+ ],
+ "reference_images": [
+ "missionary - side view/0003.jpg",
+ "missionary - side view/0013.jpg",
+ "missionary - side view/0014.jpg",
+ "missionary - side view/509.jpg",
+ "missionary - side view/521.jpg",
+ "missionary - side view/533.jpg",
+ "missionary - side view/534.jpg",
+ "missionary - side view/593.jpg",
+ "missionary - side view/596.jpg",
+ "missionary - side view/596_2.jpg",
+ "missionary - side view/602.jpg",
+ "missionary - side view/613.jpg",
+ "missionary - side view/627.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 23,
+ "variant_key": "normal_missionary_side_profile_full_visibility",
+ "family": "missionary",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "missionary - side view - full penis"
+ ],
+ "reference_images": [
+ "missionary - side view - full penis/0002.jpg",
+ "missionary - side view - full penis/0002_2.jpg",
+ "missionary - side view - full penis/0021.jpg",
+ "missionary - side view - full penis/550.jpg",
+ "missionary - side view - full penis/69_2.jpg",
+ "missionary - side view - full penis/74.jpg",
+ "missionary - side view - full penis/97.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 24,
+ "variant_key": "normal_missionary_front_view",
+ "family": "missionary",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "missionary - front view"
+ ],
+ "reference_images": [
+ "missionary - front view/0011.jpg",
+ "missionary - front view/567.jpg",
+ "missionary - front view/72.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 25,
+ "variant_key": "normal_anal_random_front_view",
+ "family": "anal",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "reference_images": [
+ "anal random/0005.jpg",
+ "anal random/0006.jpg",
+ "anal random/0015.jpg",
+ "anal random/160_3.jpg",
+ "anal random/188.jpg",
+ "anal random/347_3.jpg",
+ "anal random/347_10.jpg",
+ "anal random/347_11.jpg",
+ "anal random/366.jpg",
+ "anal random/366_3.jpg",
+ "anal random/366_4.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 26,
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "family": "anal",
+ "camera_view": "back_three_quarter",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "reference_images": [
+ "anal random/0003.jpg",
+ "anal random/0003_3.jpg",
+ "anal random/0010.jpg",
+ "anal random/0013.jpg",
+ "anal random/119.jpg",
+ "anal random/119_2.jpg",
+ "anal random/119_3.jpg",
+ "anal random/124_2.jpg",
+ "anal random/124_8.jpg",
+ "anal random/347_4.jpg",
+ "anal random/347_5.jpg",
+ "anal random/347_8.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 27,
+ "variant_key": "normal_blowjob_laying_front_view",
+ "family": "blowjob",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "blowjob - laying - front view"
+ ],
+ "reference_images": [
+ "blowjob - laying - front view/0001.jpg",
+ "blowjob - laying - front view/0003.jpg",
+ "blowjob - laying - front view/0004.jpg",
+ "blowjob - laying - front view/0010.jpg",
+ "blowjob - laying - front view/0010_2.jpg",
+ "blowjob - laying - front view/0018.jpg",
+ "blowjob - laying - front view/48.jpg",
+ "blowjob - laying - front view/69.jpg",
+ "blowjob - laying - front view/91.jpg",
+ "blowjob - laying - front view/94.jpg",
+ "blowjob - laying - front view/122.jpg",
+ "blowjob - laying - front view/171.jpg",
+ "blowjob - laying - front view/184.jpg",
+ "blowjob - laying - front view/274.jpg",
+ "blowjob - laying - front view/512.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 28,
+ "variant_key": "normal_blowjob_sitting_front_view",
+ "family": "blowjob",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "blowjob - sitting - frontview"
+ ],
+ "reference_images": [
+ "blowjob - sitting - frontview/0003.jpg",
+ "blowjob - sitting - frontview/37.jpg",
+ "blowjob - sitting - frontview/81.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 29,
+ "variant_key": "normal_blowjob_laying_side_profile",
+ "family": "blowjob",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "blowjob - laying - side view"
+ ],
+ "reference_images": [
+ "blowjob - laying - side view/0013.jpg",
+ "blowjob - laying - side view/119.jpg",
+ "blowjob - laying - side view/209.jpg",
+ "blowjob - laying - side view/232.jpg",
+ "blowjob - laying - side view/244.jpg",
+ "blowjob - laying - side view/255.jpg",
+ "blowjob - laying - side view/333.jpg",
+ "blowjob - laying - side view/36.jpg",
+ "blowjob - laying - side view/364.jpg",
+ "blowjob - laying - side view/375.jpg",
+ "blowjob - laying - side view/62.jpg",
+ "blowjob - laying - side view/74.jpg",
+ "blowjob - laying - side view/85.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 30,
+ "variant_key": "normal_blowjob_sitting_side_profile",
+ "family": "blowjob",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "blowjob - sitting - side view"
+ ],
+ "reference_images": [
+ "blowjob - sitting - side view/0002.jpg",
+ "blowjob - sitting - side view/241.jpg",
+ "blowjob - sitting - side view/64.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 31,
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "family": "ballsucking",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "ballsucking - standing"
+ ],
+ "reference_images": [
+ "ballsucking - standing/0014.jpg",
+ "ballsucking - standing/130.jpg",
+ "ballsucking - standing/137.jpg",
+ "ballsucking - standing/207.jpg",
+ "ballsucking - standing/222.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/333.jpg",
+ "ballsucking - standing/34.jpg",
+ "ballsucking - standing/540.jpg",
+ "ballsucking - standing/589.jpg",
+ "ballsucking - standing/624.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 32,
+ "variant_key": "normal_boobjob_front_close_view",
+ "family": "boobjob",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "boobjob"
+ ],
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/0018_2.jpg",
+ "boobjob/141.jpg",
+ "boobjob/186.jpg",
+ "boobjob/218.jpg",
+ "boobjob/259.jpg",
+ "boobjob/327.jpg",
+ "boobjob/588.jpg",
+ "boobjob/592.jpg",
+ "boobjob/598.jpg",
+ "boobjob/615.jpg",
+ "boobjob/618.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 33,
+ "variant_key": "normal_breast_contact_front_view",
+ "family": "breast_contact",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breast - touching - front view"
+ ],
+ "reference_images": [
+ "breast - touching - front view/0006.jpg",
+ "breast - touching - front view/0006_2.jpg",
+ "breast - touching - front view/12.jpg",
+ "breast - touching - front view/0014.jpg",
+ "breast - touching - front view/0015.jpg",
+ "breast - touching - front view/16.jpg",
+ "breast - touching - front view/56.jpg",
+ "breast - touching - front view/72.jpg",
+ "breast - touching - front view/183.jpg",
+ "breast - touching - front view/220.jpg",
+ "breast - touching - front view/246.jpg",
+ "breast - touching - front view/248.jpg",
+ "breast - touching - front view/281.jpg",
+ "breast - touching - front view/348.jpg",
+ "breast - touching - front view/361.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 34,
+ "variant_key": "normal_breast_touching_side_view",
+ "family": "breast_contact",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "breast - touching - side view"
+ ],
+ "reference_images": [
+ "breast - touching - side view/0010.jpg",
+ "breast - touching - side view/364.jpg",
+ "breast - touching - side view/97.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 35,
+ "variant_key": "normal_breast_sucking_side_view",
+ "family": "breast_contact",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "breast sucking - side view"
+ ],
+ "reference_images": [
+ "breast sucking - side view/0003.jpg",
+ "breast sucking - side view/0005.jpg",
+ "breast sucking - side view/0007.jpg",
+ "breast sucking - side view/0009.jpg",
+ "breast sucking - side view/0010_2.jpg",
+ "breast sucking - side view/182.jpg",
+ "breast sucking - side view/186.jpg",
+ "breast sucking - side view/218.jpg",
+ "breast sucking - side view/234.jpg",
+ "breast sucking - side view/244.jpg",
+ "breast sucking - side view/257.jpg",
+ "breast sucking - side view/267.jpg",
+ "breast sucking - side view/269.jpg",
+ "breast sucking - side view/356.jpg",
+ "breast sucking - side view/99.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 36,
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "family": "oral_other",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "69"
+ ],
+ "reference_images": [
+ "69/0002.jpg",
+ "69/0008.jpg",
+ "69/0016.jpg",
+ "69/19.jpg",
+ "69/166.jpg",
+ "69/292.jpg",
+ "69/624.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 37,
+ "variant_key": "normal_fingering_reclined_front_view",
+ "family": "manual_or_toy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "fingering"
+ ],
+ "reference_images": [
+ "fingering/0004.jpg",
+ "fingering/0006.jpg",
+ "fingering/0013.jpg",
+ "fingering/0015.jpg",
+ "fingering/39.jpg",
+ "fingering/50.jpg",
+ "fingering/132.jpg",
+ "fingering/133.jpg",
+ "fingering/279.jpg",
+ "fingering/603.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 38,
+ "variant_key": "normal_wand_front_close_view",
+ "family": "manual_or_toy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "wand"
+ ],
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/0015.jpg",
+ "wand/217.jpg",
+ "wand/532.jpg",
+ "wand/561.jpg",
+ "wand/611.jpg",
+ "wand/75.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 39,
+ "variant_key": "normal_handjob_standing_side_profile",
+ "family": "manual_or_toy",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "handjob standing - side view"
+ ],
+ "reference_images": [
+ "handjob standing - side view/16.jpg",
+ "handjob standing - side view/105.jpg",
+ "handjob standing - side view/171.jpg",
+ "handjob standing - side view/174.jpg",
+ "handjob standing - side view/175.jpg",
+ "handjob standing - side view/305.jpg",
+ "handjob standing - side view/549.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 40,
+ "variant_key": "normal_handjob_both_sitting_front_view",
+ "family": "manual_or_toy",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "handjob - both sitting - front view"
+ ],
+ "reference_images": [
+ "handjob - both sitting - front view/109.jpg",
+ "handjob - both sitting - front view/588.jpg",
+ "handjob - both sitting - front view/598.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 41,
+ "variant_key": "normal_handjob_laying_front_three_quarter",
+ "family": "manual_or_toy",
+ "camera_view": "front_three_quarter",
+ "atlas_folders": [
+ "handjob - laying - front view - 3-4 angle"
+ ],
+ "reference_images": [
+ "handjob - laying - front view - 3-4 angle/39.jpg",
+ "handjob - laying - front view - 3-4 angle/41.jpg",
+ "handjob - laying - front view - 3-4 angle/91.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 42,
+ "variant_key": "normal_pussy_licking_side_profile",
+ "family": "oral_other",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "pussy licking - side view"
+ ],
+ "reference_images": [
+ "pussy licking - side view/0003.jpg",
+ "pussy licking - side view/0006.jpg",
+ "pussy licking - side view/0010.jpg",
+ "pussy licking - side view/0013_2.jpg",
+ "pussy licking - side view/0015.jpg",
+ "pussy licking - side view/0015_2.jpg",
+ "pussy licking - side view/0016.jpg",
+ "pussy licking - side view/0016_2.jpg",
+ "pussy licking - side view/536.jpg",
+ "pussy licking - side view/537.jpg",
+ "pussy licking - side view/544.jpg",
+ "pussy licking - side view/560.jpg",
+ "pussy licking - side view/603.jpg",
+ "pussy licking - side view/609.jpg",
+ "pussy licking - side view/613.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 43,
+ "variant_key": "normal_display_rear_body_view",
+ "family": "display",
+ "camera_view": "back_view",
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "reference_images": [
+ "woman solo showing her hass - back view/0001_2.jpg",
+ "woman solo showing her hass - back view/0003.jpg",
+ "woman solo showing her hass - back view/0006_2.jpg",
+ "woman solo showing her hass - back view/0009.jpg",
+ "woman solo showing her hass - back view/0015.jpg",
+ "woman solo showing her hass - back view/0016_2.jpg",
+ "woman solo showing her hass - back view/112.jpg",
+ "woman solo showing her hass - back view/153.jpg",
+ "woman solo showing her hass - back view/157.jpg",
+ "woman solo showing her hass - back view/162_2.jpg",
+ "woman solo showing her hass - back view/169.jpg",
+ "woman solo showing her hass - back view/182_2.jpg",
+ "woman solo showing her hass - back view/232.jpg",
+ "woman solo showing her hass - back view/270.jpg",
+ "woman solo showing her hass - back view/322.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 44,
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "family": "display",
+ "camera_view": "back_view",
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "reference_images": [
+ "woman solo showing her hass - back view/0002.jpg",
+ "woman solo showing her hass - back view/0006.jpg",
+ "woman solo showing her hass - back view/0006_3.jpg",
+ "woman solo showing her hass - back view/0007_2.jpg",
+ "woman solo showing her hass - back view/173.jpg",
+ "woman solo showing her hass - back view/197.jpg",
+ "woman solo showing her hass - back view/230.jpg",
+ "woman solo showing her hass - back view/235.jpg",
+ "woman solo showing her hass - back view/287.jpg",
+ "woman solo showing her hass - back view/293.jpg",
+ "woman solo showing her hass - back view/300.jpg",
+ "woman solo showing her hass - back view/321.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 45,
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/0002_3.jpg",
+ "pussy spread/0003_4.jpg",
+ "pussy spread/0012.jpg",
+ "pussy spread/0015.jpg",
+ "pussy spread/0017.jpg",
+ "pussy spread/80.jpg",
+ "pussy spread/130.jpg",
+ "pussy spread/153.jpg",
+ "pussy spread/296.jpg",
+ "pussy spread/297.jpg",
+ "pussy spread/328.jpg",
+ "pussy spread/367.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 46,
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/1.jpg",
+ "pussy spread/1_2.jpg",
+ "pussy spread/0003.jpg",
+ "pussy spread/0003_2.jpg",
+ "pussy spread/0003_3.jpg",
+ "pussy spread/0010_2.jpg",
+ "pussy spread/0016.jpg",
+ "pussy spread/0016_2.jpg",
+ "pussy spread/41.jpg",
+ "pussy spread/201.jpg",
+ "pussy spread/217_2.jpg",
+ "pussy spread/223.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 47,
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "family": "display",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "reference_images": [
+ "pussy spread/0007.jpg",
+ "pussy spread/0008.jpg",
+ "pussy spread/73.jpg",
+ "pussy spread/121.jpg",
+ "pussy spread/134.jpg",
+ "pussy spread/154_3.jpg",
+ "pussy spread/163.jpg",
+ "pussy spread/175.jpg",
+ "pussy spread/256.jpg",
+ "pussy spread/308.jpg",
+ "pussy spread/311.jpg",
+ "pussy spread/368.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 48,
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_3.jpg",
+ "breasts exposed/0006.jpg",
+ "breasts exposed/0008_2.jpg",
+ "breasts exposed/0011_2.jpg",
+ "breasts exposed/141.jpg",
+ "breasts exposed/181.jpg",
+ "breasts exposed/263.jpg",
+ "breasts exposed/302.jpg",
+ "breasts exposed/327.jpg",
+ "breasts exposed/346.jpg",
+ "breasts exposed/594_2.jpg",
+ "breasts exposed/624.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 49,
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "family": "display",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/83.jpg",
+ "breasts exposed/196.jpg",
+ "breasts exposed/235.jpg",
+ "breasts exposed/267.jpg",
+ "breasts exposed/271.jpg",
+ "breasts exposed/305.jpg",
+ "breasts exposed/353.jpg",
+ "breasts exposed/373.jpg",
+ "breasts exposed/590.jpg",
+ "breasts exposed/590_2.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 50,
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0002_2.jpg",
+ "breasts exposed/0003.jpg",
+ "breasts exposed/49.jpg",
+ "breasts exposed/138.jpg",
+ "breasts exposed/155.jpg",
+ "breasts exposed/169.jpg",
+ "breasts exposed/190.jpg",
+ "breasts exposed/230.jpg",
+ "breasts exposed/242.jpg",
+ "breasts exposed/302_2.jpg",
+ "breasts exposed/332.jpg",
+ "breasts exposed/368.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 51,
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "family": "display",
+ "camera_view": "front_view",
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_2.jpg",
+ "breasts exposed/0007_2.jpg",
+ "breasts exposed/101_2.jpg",
+ "breasts exposed/154.jpg",
+ "breasts exposed/165.jpg",
+ "breasts exposed/173.jpg",
+ "breasts exposed/259.jpg",
+ "breasts exposed/285.jpg",
+ "breasts exposed/293.jpg",
+ "breasts exposed/322.jpg",
+ "breasts exposed/328.jpg",
+ "breasts exposed/523.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 52,
+ "variant_key": "normal_standing_from_front_side_view",
+ "family": "standing_penetration",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck from front standing - side view"
+ ],
+ "reference_images": [
+ "fuck from front standing - side view/0001.jpg",
+ "fuck from front standing - side view/252.jpg",
+ "fuck from front standing - side view/73.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 53,
+ "variant_key": "normal_standing_suspended_side_view",
+ "family": "standing_penetration",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "fuck standing - woman suspended - side view"
+ ],
+ "reference_images": [
+ "fuck standing - woman suspended - side view/0005.jpg",
+ "fuck standing - woman suspended - side view/0015.jpg",
+ "fuck standing - woman suspended - side view/611.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 54,
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "family": "couple",
+ "camera_view": "side_view",
+ "atlas_folders": [
+ "couple kissing"
+ ],
+ "reference_images": [
+ "couple kissing/0001_2.jpg",
+ "couple kissing/0003.jpg",
+ "couple kissing/0005_2.jpg",
+ "couple kissing/16.jpg",
+ "couple kissing/159.jpg",
+ "couple kissing/247.jpg",
+ "couple kissing/247_2.jpg",
+ "couple kissing/253.jpg",
+ "couple kissing/253_2.jpg",
+ "couple kissing/322.jpg",
+ "couple kissing/354.jpg",
+ "couple kissing/379.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ },
+ {
+ "batch_rank": 55,
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "family": "piledriver_or_pretzel",
+ "camera_view": "top_down_or_high_angle",
+ "atlas_folders": [
+ "piledriver"
+ ],
+ "reference_images": [
+ "piledriver/0002.jpg",
+ "piledriver/0004_2.jpg",
+ "piledriver/0005.jpg",
+ "piledriver/0006_2.jpg",
+ "piledriver/0009.jpg",
+ "piledriver/0009_2.jpg",
+ "piledriver/0012.jpg",
+ "piledriver/0013.jpg",
+ "piledriver/282.jpg",
+ "piledriver/317.jpg",
+ "piledriver/317_2.jpg",
+ "piledriver/318.jpg",
+ "piledriver/319.jpg",
+ "piledriver/494_2.jpg",
+ "piledriver/538.jpg"
+ ],
+ "test_prompt_id": null,
+ "image_path": null,
+ "generator_seed": null,
+ "sampling_seed": null,
+ "scores": {
+ "camera_geometry": null,
+ "pose_ownership": null,
+ "workspace_continuity": null,
+ "clothing_visibility": null,
+ "subject_identity": null,
+ "body_proportion_control": null,
+ "prompt_noise": null,
+ "atlas_reference_match": null
+ },
+ "notes": "",
+ "decision": null
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/normal_camera_unused_pool_backlog.json b/ab_batches/normal_camera/normal_camera_unused_pool_backlog.json
new file mode 100644
index 0000000..90947c8
--- /dev/null
+++ b/ab_batches/normal_camera/normal_camera_unused_pool_backlog.json
@@ -0,0 +1,966 @@
+{
+ "schema": "sxcp_normal_camera_unused_pool_backlog_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "source_inventory": "categories/normal_camera_atlas.json",
+ "source_variant_catalog": "categories/normal_camera_variants.json",
+ "selection": "non-empty folders with unselected images, sorted by remaining image count",
+ "available_folder_count": 53,
+ "selected_count": 53,
+ "folders": [
+ {
+ "folder": "reverse cowgirl",
+ "folder_alias": {
+ "exact_source_folder": "reverse cowgirl",
+ "canonical_folder": "reverse cowgirl",
+ "canonical_key": "reverse_cowgirl",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 240,
+ "selected_reference_count": 36,
+ "remaining_image_count": 204,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "reverse_cowgirl",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "breasts exposed",
+ "folder_alias": {
+ "exact_source_folder": "breasts exposed",
+ "canonical_folder": "breasts exposed",
+ "canonical_key": "breasts_exposed",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 168,
+ "selected_reference_count": 49,
+ "remaining_image_count": 119,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "display",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "cowgirl - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "cowgirl - back view - 3-4 angle",
+ "canonical_folder": "cowgirl - back view - 3-4 angle",
+ "canonical_key": "cowgirl_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 129,
+ "selected_reference_count": 15,
+ "remaining_image_count": 114,
+ "covered_by_variants": true,
+ "camera_view": "back_three_quarter",
+ "action_family": "cowgirl",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "anal random",
+ "folder_alias": {
+ "exact_source_folder": "anal random",
+ "canonical_folder": "anal random",
+ "canonical_key": "anal_random",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 99,
+ "selected_reference_count": 26,
+ "remaining_image_count": 73,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "anal",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "couple kissing",
+ "folder_alias": {
+ "exact_source_folder": "couple kissing",
+ "canonical_folder": "couple kissing",
+ "canonical_key": "couple_kissing",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 88,
+ "selected_reference_count": 15,
+ "remaining_image_count": 73,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "couple",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "woman solo showing her hass - back view",
+ "folder_alias": {
+ "exact_source_folder": "woman solo showing her hass - back view",
+ "canonical_folder": "woman solo showing her ass - back view",
+ "canonical_key": "woman_solo_showing_her_ass_back_view",
+ "alias_applied": true,
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path."
+ },
+ "image_count": 99,
+ "selected_reference_count": 30,
+ "remaining_image_count": 69,
+ "covered_by_variants": true,
+ "camera_view": "back_view",
+ "action_family": "display",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "pussy spread",
+ "folder_alias": {
+ "exact_source_folder": "pussy spread",
+ "canonical_folder": "pussy spread",
+ "canonical_key": "pussy_spread",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 100,
+ "selected_reference_count": 39,
+ "remaining_image_count": 61,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "display",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "doggy on all four - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "doggy on all four - back view - 3-4 angle",
+ "canonical_folder": "doggy on all four - back view - 3-4 angle",
+ "canonical_key": "doggy_on_all_four_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 69,
+ "selected_reference_count": 15,
+ "remaining_image_count": 54,
+ "covered_by_variants": true,
+ "camera_view": "back_three_quarter",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "doggy on all four - side view",
+ "folder_alias": {
+ "exact_source_folder": "doggy on all four - side view",
+ "canonical_folder": "doggy on all four - side view",
+ "canonical_key": "doggy_on_all_four_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 70,
+ "selected_reference_count": 16,
+ "remaining_image_count": 54,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "handjob standing - side view",
+ "folder_alias": {
+ "exact_source_folder": "handjob standing - side view",
+ "canonical_folder": "handjob standing - side view",
+ "canonical_key": "handjob_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 63,
+ "selected_reference_count": 10,
+ "remaining_image_count": 53,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "manual_or_toy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "fuck from front standing - side view",
+ "folder_alias": {
+ "exact_source_folder": "fuck from front standing - side view",
+ "canonical_folder": "fuck from front standing - side view",
+ "canonical_key": "fuck_from_front_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 36,
+ "selected_reference_count": 3,
+ "remaining_image_count": 33,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "standing_penetration",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "fuck from behind standing - woman backside - side view",
+ "folder_alias": {
+ "exact_source_folder": "fuck from behind standing - woman backside - side view",
+ "canonical_folder": "fuck from behind standing - woman backside - side view",
+ "canonical_key": "fuck_from_behind_standing_woman_backside_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 47,
+ "selected_reference_count": 17,
+ "remaining_image_count": 30,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "penis worship",
+ "folder_alias": {
+ "exact_source_folder": "penis worship",
+ "canonical_folder": "penis worship",
+ "canonical_key": "penis_worship",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 49,
+ "selected_reference_count": 20,
+ "remaining_image_count": 29,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "breast sucking - side view",
+ "folder_alias": {
+ "exact_source_folder": "breast sucking - side view",
+ "canonical_folder": "breast sucking - side view",
+ "canonical_key": "breast_sucking_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 43,
+ "selected_reference_count": 15,
+ "remaining_image_count": 28,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "breast_contact",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "doggy - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "doggy - back view - 3-4 angle",
+ "canonical_folder": "doggy - back view - 3-4 angle",
+ "canonical_key": "doggy_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 35,
+ "selected_reference_count": 15,
+ "remaining_image_count": 20,
+ "covered_by_variants": true,
+ "camera_view": "back_three_quarter",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "cowgirl - side view",
+ "folder_alias": {
+ "exact_source_folder": "cowgirl - side view",
+ "canonical_folder": "cowgirl - side view",
+ "canonical_key": "cowgirl_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 34,
+ "selected_reference_count": 15,
+ "remaining_image_count": 19,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "cowgirl",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "blowjob - sitting - side view",
+ "folder_alias": {
+ "exact_source_folder": "blowjob - sitting - side view",
+ "canonical_folder": "blowjob - sitting - side view",
+ "canonical_key": "blowjob_sitting_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 17,
+ "selected_reference_count": 3,
+ "remaining_image_count": 14,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "blowjob",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "cowgirl full man body - front view",
+ "folder_alias": {
+ "exact_source_folder": "cowgirl full man body - front view",
+ "canonical_folder": "cowgirl full man body - front view",
+ "canonical_key": "cowgirl_full_man_body_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 17,
+ "selected_reference_count": 3,
+ "remaining_image_count": 14,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "cowgirl",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "doggy all four - front view",
+ "folder_alias": {
+ "exact_source_folder": "doggy all four - front view",
+ "canonical_folder": "doggy all four - front view",
+ "canonical_key": "doggy_all_four_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 28,
+ "selected_reference_count": 15,
+ "remaining_image_count": 13,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "fuck from behind - side view",
+ "folder_alias": {
+ "exact_source_folder": "fuck from behind - side view",
+ "canonical_folder": "fuck from behind - side view",
+ "canonical_key": "fuck_from_behind_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 16,
+ "selected_reference_count": 3,
+ "remaining_image_count": 13,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "pussy licking - side view",
+ "folder_alias": {
+ "exact_source_folder": "pussy licking - side view",
+ "canonical_folder": "pussy licking - side view",
+ "canonical_key": "pussy_licking_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 28,
+ "selected_reference_count": 16,
+ "remaining_image_count": 12,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "oral_other",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "blowjob - laying - front view",
+ "folder_alias": {
+ "exact_source_folder": "blowjob - laying - front view",
+ "canonical_folder": "blowjob - laying - front view",
+ "canonical_key": "blowjob_laying_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 26,
+ "selected_reference_count": 15,
+ "remaining_image_count": 11,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "blowjob",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "missionary - side view",
+ "folder_alias": {
+ "exact_source_folder": "missionary - side view",
+ "canonical_folder": "missionary - side view",
+ "canonical_key": "missionary_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 24,
+ "selected_reference_count": 13,
+ "remaining_image_count": 11,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "missionary",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "blowjob - laying - side view",
+ "folder_alias": {
+ "exact_source_folder": "blowjob - laying - side view",
+ "canonical_folder": "blowjob - laying - side view",
+ "canonical_key": "blowjob_laying_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 24,
+ "selected_reference_count": 14,
+ "remaining_image_count": 10,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "blowjob",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "breast - touching - front view",
+ "folder_alias": {
+ "exact_source_folder": "breast - touching - front view",
+ "canonical_folder": "breast - touching - front view",
+ "canonical_key": "breast_touching_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 25,
+ "selected_reference_count": 15,
+ "remaining_image_count": 10,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "breast_contact",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "blowjob - sitting - frontview",
+ "folder_alias": {
+ "exact_source_folder": "blowjob - sitting - frontview",
+ "canonical_folder": "blowjob - sitting - frontview",
+ "canonical_key": "blowjob_sitting_frontview",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 12,
+ "selected_reference_count": 3,
+ "remaining_image_count": 9,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "blowjob",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "doggy - side view",
+ "folder_alias": {
+ "exact_source_folder": "doggy - side view",
+ "canonical_folder": "doggy - side view",
+ "canonical_key": "doggy_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 12,
+ "selected_reference_count": 3,
+ "remaining_image_count": 9,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "missionary - leg folded - back view 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "missionary - leg folded - back view 3-4 angle",
+ "canonical_folder": "missionary - leg folded - back view 3-4 angle",
+ "canonical_key": "missionary_leg_folded_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 12,
+ "selected_reference_count": 3,
+ "remaining_image_count": 9,
+ "covered_by_variants": true,
+ "camera_view": "back_three_quarter",
+ "action_family": "missionary",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "piledriver",
+ "folder_alias": {
+ "exact_source_folder": "piledriver",
+ "canonical_folder": "piledriver",
+ "canonical_key": "piledriver",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 27,
+ "selected_reference_count": 18,
+ "remaining_image_count": 9,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "piledriver_or_pretzel",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "doggy - underview",
+ "folder_alias": {
+ "exact_source_folder": "doggy - underview",
+ "canonical_folder": "doggy - underview",
+ "canonical_key": "doggy_underview",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 11,
+ "selected_reference_count": 3,
+ "remaining_image_count": 8,
+ "covered_by_variants": true,
+ "camera_view": "under_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "fuck from behind standing - side view",
+ "folder_alias": {
+ "exact_source_folder": "fuck from behind standing - side view",
+ "canonical_folder": "fuck from behind standing - side view",
+ "canonical_key": "fuck_from_behind_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 16,
+ "selected_reference_count": 8,
+ "remaining_image_count": 8,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "handjob - laying -side view",
+ "folder_alias": {
+ "exact_source_folder": "handjob - laying -side view",
+ "canonical_folder": "handjob - laying -side view",
+ "canonical_key": "handjob_laying_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 11,
+ "selected_reference_count": 3,
+ "remaining_image_count": 8,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "manual_or_toy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "handjob - sitting - side view",
+ "folder_alias": {
+ "exact_source_folder": "handjob - sitting - side view",
+ "canonical_folder": "handjob - sitting - side view",
+ "canonical_key": "handjob_sitting_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 11,
+ "selected_reference_count": 3,
+ "remaining_image_count": 8,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "manual_or_toy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "breast - touching - side view",
+ "folder_alias": {
+ "exact_source_folder": "breast - touching - side view",
+ "canonical_folder": "breast - touching - side view",
+ "canonical_key": "breast_touching_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 10,
+ "selected_reference_count": 3,
+ "remaining_image_count": 7,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "breast_contact",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "boobjob",
+ "folder_alias": {
+ "exact_source_folder": "boobjob",
+ "canonical_folder": "boobjob",
+ "canonical_key": "boobjob",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 19,
+ "selected_reference_count": 13,
+ "remaining_image_count": 6,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "boobjob",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "fuck standing - woman suspended - side view",
+ "folder_alias": {
+ "exact_source_folder": "fuck standing - woman suspended - side view",
+ "canonical_folder": "fuck standing - woman suspended - side view",
+ "canonical_key": "fuck_standing_woman_suspended_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 9,
+ "selected_reference_count": 3,
+ "remaining_image_count": 6,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "standing_penetration",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "reverse congress - front view",
+ "folder_alias": {
+ "exact_source_folder": "reverse congress - front view",
+ "canonical_folder": "reverse congress - front view",
+ "canonical_key": "reverse_congress_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 21,
+ "selected_reference_count": 15,
+ "remaining_image_count": 6,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "reverse_congress",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "missionary - front view",
+ "folder_alias": {
+ "exact_source_folder": "missionary - front view",
+ "canonical_folder": "missionary - front view",
+ "canonical_key": "missionary_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 8,
+ "selected_reference_count": 3,
+ "remaining_image_count": 5,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "missionary",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "reverse cowgirl - side view",
+ "folder_alias": {
+ "exact_source_folder": "reverse cowgirl - side view",
+ "canonical_folder": "reverse cowgirl - side view",
+ "canonical_key": "reverse_cowgirl_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 8,
+ "selected_reference_count": 3,
+ "remaining_image_count": 5,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "reverse_cowgirl",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "blowjob - kneeling - side view",
+ "folder_alias": {
+ "exact_source_folder": "blowjob - kneeling - side view",
+ "canonical_folder": "blowjob - kneeling - side view",
+ "canonical_key": "blowjob_kneeling_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 6,
+ "selected_reference_count": 3,
+ "remaining_image_count": 3,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "blowjob",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "cowgirl - front view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "cowgirl - front view - 3-4 angle",
+ "canonical_folder": "cowgirl - front view - 3-4 angle",
+ "canonical_key": "cowgirl_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 6,
+ "selected_reference_count": 3,
+ "remaining_image_count": 3,
+ "covered_by_variants": true,
+ "camera_view": "front_three_quarter",
+ "action_family": "cowgirl",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "fingering",
+ "folder_alias": {
+ "exact_source_folder": "fingering",
+ "canonical_folder": "fingering",
+ "canonical_key": "fingering",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 15,
+ "selected_reference_count": 12,
+ "remaining_image_count": 3,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "manual_or_toy",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "reverse cowgirl - back view",
+ "folder_alias": {
+ "exact_source_folder": "reverse cowgirl - back view",
+ "canonical_folder": "reverse cowgirl - back view",
+ "canonical_key": "reverse_cowgirl_back_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 6,
+ "selected_reference_count": 3,
+ "remaining_image_count": 3,
+ "covered_by_variants": true,
+ "camera_view": "back_view",
+ "action_family": "reverse_cowgirl",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "69",
+ "folder_alias": {
+ "exact_source_folder": "69",
+ "canonical_folder": "69",
+ "canonical_key": "69",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 10,
+ "selected_reference_count": 8,
+ "remaining_image_count": 2,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ },
+ {
+ "folder": "missionary - side view - full penis",
+ "folder_alias": {
+ "exact_source_folder": "missionary - side view - full penis",
+ "canonical_folder": "missionary - side view - full penis",
+ "canonical_key": "missionary_side_view_full_penis",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 9,
+ "selected_reference_count": 7,
+ "remaining_image_count": 2,
+ "covered_by_variants": true,
+ "camera_view": "side_view",
+ "action_family": "missionary",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "reverse cowgirl - backview - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "reverse cowgirl - backview - 3-4 angle",
+ "canonical_folder": "reverse cowgirl - backview - 3-4 angle",
+ "canonical_key": "reverse_cowgirl_backview_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 5,
+ "selected_reference_count": 3,
+ "remaining_image_count": 2,
+ "covered_by_variants": true,
+ "camera_view": "back_three_quarter",
+ "action_family": "reverse_cowgirl",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "anal missionary - front view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "anal missionary - front view - 3-4 angle",
+ "canonical_folder": "anal missionary - front view - 3-4 angle",
+ "canonical_key": "anal_missionary_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 4,
+ "selected_reference_count": 3,
+ "remaining_image_count": 1,
+ "covered_by_variants": true,
+ "camera_view": "front_three_quarter",
+ "action_family": "missionary",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "anus exposed - back view",
+ "folder_alias": {
+ "exact_source_folder": "anus exposed - back view",
+ "canonical_folder": "anus exposed - back view",
+ "canonical_key": "anus_exposed_back_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 4,
+ "selected_reference_count": 3,
+ "remaining_image_count": 1,
+ "covered_by_variants": true,
+ "camera_view": "back_view",
+ "action_family": "display",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "doggy - front view ",
+ "folder_alias": {
+ "exact_source_folder": "doggy - front view ",
+ "canonical_folder": "doggy - front view",
+ "canonical_key": "doggy_front_view",
+ "alias_applied": true,
+ "alias_reason": "Trailing-space source folder preserved exactly for path stability."
+ },
+ "image_count": 13,
+ "selected_reference_count": 12,
+ "remaining_image_count": 1,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "doggy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "fuck from front - front view -low angle",
+ "folder_alias": {
+ "exact_source_folder": "fuck from front - front view -low angle",
+ "canonical_folder": "fuck from front - front view -low angle",
+ "canonical_key": "fuck_from_front_front_view_low_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 4,
+ "selected_reference_count": 3,
+ "remaining_image_count": 1,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "front_penetration",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "handjob - both sitting - front view",
+ "folder_alias": {
+ "exact_source_folder": "handjob - both sitting - front view",
+ "canonical_folder": "handjob - both sitting - front view",
+ "canonical_key": "handjob_both_sitting_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 4,
+ "selected_reference_count": 3,
+ "remaining_image_count": 1,
+ "covered_by_variants": true,
+ "camera_view": "front_view",
+ "action_family": "manual_or_toy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "handjob - laying - front view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "handjob - laying - front view - 3-4 angle",
+ "canonical_folder": "handjob - laying - front view - 3-4 angle",
+ "canonical_key": "handjob_laying_front_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 4,
+ "selected_reference_count": 3,
+ "remaining_image_count": 1,
+ "covered_by_variants": true,
+ "camera_view": "front_three_quarter",
+ "action_family": "manual_or_toy",
+ "catalog_status": "camera_reference",
+ "suggested_action": "mine_remaining_reference_images"
+ },
+ {
+ "folder": "wand",
+ "folder_alias": {
+ "exact_source_folder": "wand",
+ "canonical_folder": "wand",
+ "canonical_key": "wand",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 9,
+ "selected_reference_count": 8,
+ "remaining_image_count": 1,
+ "covered_by_variants": true,
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "manual_or_toy",
+ "catalog_status": "action_reference_only",
+ "suggested_action": "split_or_expand_selected_reference_subvariants"
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/69_contact_sheet.html b/ab_batches/normal_camera/review/69_contact_sheet.html
new file mode 100644
index 0000000..ac106da
--- /dev/null
+++ b/ab_batches/normal_camera/review/69_contact_sheet.html
@@ -0,0 +1,77 @@
+
+
+
+
+Normal Camera Review Contact Sheet: 69
+
+
+
+Normal Camera Review Contact Sheet: 69
+No-generation contact sheet. 10 JPGs from 69. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: 69.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-10
+
+
+
+001 69/0002.jpgbucket: front_view / normal_sixty_nine_front_close_view
+
+
+
+002 69/6.jpgbucket: unassigned
+
+
+
+003 69/0008.jpgbucket: front_view / normal_sixty_nine_front_close_view
+
+
+
+004 69/0016.jpgbucket: front_view / normal_sixty_nine_front_close_view
+
+
+
+005 69/19.jpgbucket: front_view / normal_sixty_nine_front_close_view
+
+
+
+006 69/166.jpgbucket: front_view / normal_sixty_nine_front_close_view
+
+
+
+007 69/196.jpgbucket: reject_or_unclear / normal_sixty_nine_mixed_camera_folder_pool
+
+
+
+008 69/292.jpgbucket: front_view / normal_sixty_nine_front_close_view
+
+
+
+009 69/354.jpgbucket: unassigned
+
+
+
+010 69/624.jpgbucket: front_view / normal_sixty_nine_front_close_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/69_review_manifest.json b/ab_batches/normal_camera/review/69_review_manifest.json
new file mode 100644
index 0000000..49117b9
--- /dev/null
+++ b/ab_batches/normal_camera/review/69_review_manifest.json
@@ -0,0 +1,248 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "69",
+ "folder_alias": {
+ "exact_source_folder": "69",
+ "canonical_folder": "69",
+ "canonical_key": "69",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 10,
+ "action_family": "oral_other",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_sixty_nine_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "69/0002.jpg",
+ "69/196.jpg",
+ "69/624.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The source images include useful mutual oral-contact examples, but side/downward, upright seated, and wider room-context frames keep the full folder from being one locked prompt-ready route."
+ },
+ {
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "69/0002.jpg",
+ "69/0008.jpg",
+ "69/0016.jpg",
+ "69/19.jpg",
+ "69/166.jpg",
+ "69/292.jpg",
+ "69/624.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "69/0002.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "69/6.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "69/0008.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "69/0016.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "69/19.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "69/166.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset.",
+ "index": 6
+ },
+ {
+ "reference_image": "69/196.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_sixty_nine_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The source images include useful mutual oral-contact examples, but side/downward, upright seated, and wider room-context frames keep the full folder from being one locked prompt-ready route.",
+ "index": 7
+ },
+ {
+ "reference_image": "69/292.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset.",
+ "index": 8
+ },
+ {
+ "index": 9,
+ "reference_image": "69/354.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "69/624.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset.",
+ "index": 10
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 10,
+ "image_count": 10,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "69/0002.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "69/6.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "69/0008.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "69/0016.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "69/19.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "69/166.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "69/196.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The source images include useful mutual oral-contact examples, but side/downward, upright seated, and wider room-context frames keep the full folder from being one locked prompt-ready route."
+ },
+ {
+ "index": 8,
+ "reference_image": "69/292.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ },
+ {
+ "index": 9,
+ "reference_image": "69/354.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "69/624.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the upper subject faces camera and the opposed oral-contact pose stays centered. Side/downward, upright seated, and wider room-context outliers remain outside this selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/anal_cowgirl_contact_sheet.html b/ab_batches/normal_camera/review/anal_cowgirl_contact_sheet.html
new file mode 100644
index 0000000..33dd621
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_cowgirl_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: anal cowgirl
+
+
+
+Normal Camera Review Contact Sheet: anal cowgirl
+No-generation contact sheet. 1 JPGs from anal cowgirl. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: anal cowgirl.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 anal cowgirl/49.jpgbucket: reject_or_unclear / normal_anal_cowgirl_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/anal_cowgirl_review_manifest.json b/ab_batches/normal_camera/review/anal_cowgirl_review_manifest.json
new file mode 100644
index 0000000..cd97e13
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_cowgirl_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "anal cowgirl",
+ "folder_alias": {
+ "exact_source_folder": "anal cowgirl",
+ "canonical_folder": "anal cowgirl",
+ "canonical_key": "anal_cowgirl",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "cowgirl",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_anal_cowgirl_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal cowgirl/49.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "anal cowgirl/49.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_anal_cowgirl_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "anal cowgirl/49.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_cowgirl_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/anal_doggy_side_view_contact_sheet.html b/ab_batches/normal_camera/review/anal_doggy_side_view_contact_sheet.html
new file mode 100644
index 0000000..d2b5faa
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_doggy_side_view_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: anal doggy - side view
+
+
+
+Normal Camera Review Contact Sheet: anal doggy - side view
+No-generation contact sheet. 1 JPGs from anal doggy - side view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: anal doggy - side view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 anal doggy - side view/16.jpgbucket: reject_or_unclear / normal_anal_doggy_side_view_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/anal_doggy_side_view_review_manifest.json b/ab_batches/normal_camera/review/anal_doggy_side_view_review_manifest.json
new file mode 100644
index 0000000..0848deb
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_doggy_side_view_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "anal doggy - side view",
+ "folder_alias": {
+ "exact_source_folder": "anal doggy - side view",
+ "canonical_folder": "anal doggy - side view",
+ "canonical_key": "anal_doggy_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "doggy",
+ "source_camera_view": "side_view",
+ "source_catalog_status": "thin_sample",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_anal_doggy_side_view_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal doggy - side view/16.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one side-view sample as coverage evidence only. The label is plausible, but a single image is too thin for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "anal doggy - side view/16.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_anal_doggy_side_view_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one side-view sample as coverage evidence only. The label is plausible, but a single image is too thin for a selected pre-A/B route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "anal doggy - side view/16.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_doggy_side_view_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one side-view sample as coverage evidence only. The label is plausible, but a single image is too thin for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/anal_fuck_from_behind_laying_back_view_3_4_angle_contact_sheet.html b/ab_batches/normal_camera/review/anal_fuck_from_behind_laying_back_view_3_4_angle_contact_sheet.html
new file mode 100644
index 0000000..2f6a739
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_fuck_from_behind_laying_back_view_3_4_angle_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: anal fuck from behind laying - back view - 3-4 angle
+
+
+
+Normal Camera Review Contact Sheet: anal fuck from behind laying - back view - 3-4 angle
+No-generation contact sheet. 1 JPGs from anal fuck from behind laying - back view - 3-4 angle. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: anal fuck from behind laying - back view - 3-4 angle.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 anal fuck from behind laying - back view - 3-4 angle/14.jpgbucket: reject_or_unclear / normal_anal_laying_back_three_quarter_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/anal_fuck_from_behind_laying_back_view_3_4_angle_review_manifest.json b/ab_batches/normal_camera/review/anal_fuck_from_behind_laying_back_view_3_4_angle_review_manifest.json
new file mode 100644
index 0000000..443a4db
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_fuck_from_behind_laying_back_view_3_4_angle_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "anal fuck from behind laying - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "anal fuck from behind laying - back view - 3-4 angle",
+ "canonical_folder": "anal fuck from behind laying - back view - 3-4 angle",
+ "canonical_key": "anal_fuck_from_behind_laying_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "doggy",
+ "source_camera_view": "back_three_quarter",
+ "source_catalog_status": "thin_sample",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_anal_laying_back_three_quarter_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal fuck from behind laying - back view - 3-4 angle/14.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one rear three-quarter sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "anal fuck from behind laying - back view - 3-4 angle/14.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_anal_laying_back_three_quarter_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one rear three-quarter sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "anal fuck from behind laying - back view - 3-4 angle/14.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_laying_back_three_quarter_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one rear three-quarter sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/anal_random_contact_sheet.html b/ab_batches/normal_camera/review/anal_random_contact_sheet.html
new file mode 100644
index 0000000..a8982e9
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_random_contact_sheet.html
@@ -0,0 +1,439 @@
+
+
+
+
+Normal Camera Review Contact Sheet: anal random
+
+
+
+Normal Camera Review Contact Sheet: anal random
+No-generation contact sheet. 99 JPGs from anal random. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: anal random.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 anal random/0001.jpgbucket: unassigned
+
+
+
+002 anal random/0002.jpgbucket: unassigned
+
+
+
+003 anal random/0002_2.jpgbucket: unassigned
+
+
+
+004 anal random/0002_3.jpgbucket: unassigned
+
+
+
+005 anal random/0003.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+006 anal random/0003_2.jpgbucket: unassigned
+
+
+
+007 anal random/0003_3.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+008 anal random/0003_4.jpgbucket: unassigned
+
+
+
+009 anal random/0005.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+010 anal random/0006.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+011 anal random/0008.jpgbucket: unassigned
+
+
+
+012 anal random/0008_2.jpgbucket: unassigned
+
+
+
+013 anal random/0009.jpgbucket: unassigned
+
+
+
+014 anal random/0010.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+015 anal random/0011.jpgbucket: unassigned
+
+
+
+016 anal random/0012.jpgbucket: unassigned
+
+
+
+017 anal random/0013.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+018 anal random/0014.jpgbucket: unassigned
+
+
+
+019 anal random/0014_2.jpgbucket: unassigned
+
+
+
+020 anal random/0015.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+021 anal random/0018.jpgbucket: unassigned
+
+
+
+022 anal random/94.jpgbucket: unassigned
+
+
+
+023 anal random/94_2.jpgbucket: unassigned
+
+
+
+024 anal random/94_3.jpgbucket: unassigned
+
+
+
+025 anal random/94_4.jpgbucket: unassigned
+
+
+
+026 anal random/94_5.jpgbucket: unassigned
+
+
+
+027 anal random/118.jpgbucket: unassigned
+
+
+
+028 anal random/118_2.jpgbucket: unassigned
+
+
+
+029 anal random/119.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+030 anal random/119_2.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+031 anal random/119_3.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+032 anal random/124.jpgbucket: unassigned
+
+
+
+033 anal random/124_2.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+034 anal random/124_3.jpgbucket: unassigned
+
+
+
+035 anal random/124_4.jpgbucket: unassigned
+
+
+
+036 anal random/124_5.jpgbucket: unassigned
+
+
+
+037 anal random/124_6.jpgbucket: unassigned
+
+
+
+038 anal random/124_7.jpgbucket: unassigned
+
+
+
+039 anal random/124_8.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+040 anal random/124_9.jpgbucket: unassigned
+
+
+Page 2: 41-80
+
+
+
+041 anal random/133.jpgbucket: unassigned
+
+
+
+042 anal random/133_2.jpgbucket: unassigned
+
+
+
+043 anal random/160.jpgbucket: unassigned
+
+
+
+044 anal random/160_2.jpgbucket: unassigned
+
+
+
+045 anal random/160_3.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+046 anal random/186.jpgbucket: unassigned
+
+
+
+047 anal random/186_2.jpgbucket: unassigned
+
+
+
+048 anal random/186_3.jpgbucket: unassigned
+
+
+
+049 anal random/186_4.jpgbucket: unassigned
+
+
+
+050 anal random/188.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+051 anal random/188_2.jpgbucket: unassigned
+
+
+
+052 anal random/223.jpgbucket: unassigned
+
+
+
+053 anal random/223_2.jpgbucket: unassigned
+
+
+
+054 anal random/266.jpgbucket: unassigned
+
+
+
+055 anal random/266_2.jpgbucket: unassigned
+
+
+
+056 anal random/266_3.jpgbucket: unassigned
+
+
+
+057 anal random/272.jpgbucket: unassigned
+
+
+
+058 anal random/272_2.jpgbucket: unassigned
+
+
+
+059 anal random/281.jpgbucket: unassigned
+
+
+
+060 anal random/283.jpgbucket: unassigned
+
+
+
+061 anal random/283_2.jpgbucket: unassigned
+
+
+
+062 anal random/283_3.jpgbucket: unassigned
+
+
+
+063 anal random/286.jpgbucket: unassigned
+
+
+
+064 anal random/286_2.jpgbucket: unassigned
+
+
+
+065 anal random/291.jpgbucket: unassigned
+
+
+
+066 anal random/291_2.jpgbucket: unassigned
+
+
+
+067 anal random/291_3.jpgbucket: unassigned
+
+
+
+068 anal random/318.jpgbucket: unassigned
+
+
+
+069 anal random/318_2.jpgbucket: unassigned
+
+
+
+070 anal random/318_3.jpgbucket: unassigned
+
+
+
+071 anal random/338.jpgbucket: unassigned
+
+
+
+072 anal random/347.jpgbucket: unassigned
+
+
+
+073 anal random/347_2.jpgbucket: unassigned
+
+
+
+074 anal random/347_3.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+075 anal random/347_4.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+076 anal random/347_5.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+077 anal random/347_6.jpgbucket: unassigned
+
+
+
+078 anal random/347_7.jpgbucket: unassigned
+
+
+
+079 anal random/347_8.jpgbucket: back_three_quarter / normal_anal_random_back_side_offset_view
+
+
+
+080 anal random/347_9.jpgbucket: unassigned
+
+
+Page 3: 81-99
+
+
+
+081 anal random/347_10.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+082 anal random/347_11.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+083 anal random/366.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+084 anal random/366_2.jpgbucket: unassigned
+
+
+
+085 anal random/366_3.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+086 anal random/366_4.jpgbucket: front_view / normal_anal_random_front_view
+
+
+
+087 anal random/366_5.jpgbucket: unassigned
+
+
+
+088 anal random/367.jpgbucket: unassigned
+
+
+
+089 anal random/367_2.jpgbucket: unassigned
+
+
+
+090 anal random/367_3.jpgbucket: unassigned
+
+
+
+091 anal random/367_4.jpgbucket: unassigned
+
+
+
+092 anal random/562.jpgbucket: unassigned
+
+
+
+093 anal random/569.jpgbucket: unassigned
+
+
+
+094 anal random/569_2.jpgbucket: unassigned
+
+
+
+095 anal random/589.jpgbucket: unassigned
+
+
+
+096 anal random/589_2.jpgbucket: unassigned
+
+
+
+097 anal random/589_3.jpgbucket: unassigned
+
+
+
+098 anal random/589_4.jpgbucket: unassigned
+
+
+
+099 anal random/595.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/anal_random_review_manifest.json b/ab_batches/normal_camera/review/anal_random_review_manifest.json
new file mode 100644
index 0000000..88c5413
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_random_review_manifest.json
@@ -0,0 +1,1866 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "anal random",
+ "folder_alias": {
+ "exact_source_folder": "anal random",
+ "canonical_folder": "anal random",
+ "canonical_key": "anal_random",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 99,
+ "action_family": "anal",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_anal_random_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal random/0005.jpg",
+ "anal random/0006.jpg",
+ "anal random/0015.jpg",
+ "anal random/160_3.jpg",
+ "anal random/188.jpg",
+ "anal random/347_3.jpg",
+ "anal random/347_10.jpg",
+ "anal random/347_11.jpg",
+ "anal random/366.jpg",
+ "anal random/366_3.jpg",
+ "anal random/366_4.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal random/0003.jpg",
+ "anal random/0003_3.jpg",
+ "anal random/0010.jpg",
+ "anal random/0013.jpg",
+ "anal random/119.jpg",
+ "anal random/119_2.jpg",
+ "anal random/119_3.jpg",
+ "anal random/124_2.jpg",
+ "anal random/124_8.jpg",
+ "anal random/347_4.jpg",
+ "anal random/347_5.jpg",
+ "anal random/347_8.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ }
+ ],
+ "review_items": [
+ {
+ "index": 1,
+ "reference_image": "anal random/0001.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 2,
+ "reference_image": "anal random/0002.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 3,
+ "reference_image": "anal random/0002_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "anal random/0002_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "anal random/0003_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/0003_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "anal random/0003_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/0005.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 9
+ },
+ {
+ "reference_image": "anal random/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 10
+ },
+ {
+ "index": 11,
+ "reference_image": "anal random/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "anal random/0008_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "anal random/0009.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/0010.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 14
+ },
+ {
+ "index": 15,
+ "reference_image": "anal random/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "anal random/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/0013.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 17
+ },
+ {
+ "index": 18,
+ "reference_image": "anal random/0014.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "anal random/0014_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 20
+ },
+ {
+ "index": 21,
+ "reference_image": "anal random/0018.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "anal random/94.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "anal random/94_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "anal random/94_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "anal random/94_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "anal random/94_5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "anal random/118.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "anal random/118_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/119.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 29
+ },
+ {
+ "reference_image": "anal random/119_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 30
+ },
+ {
+ "reference_image": "anal random/119_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 31
+ },
+ {
+ "index": 32,
+ "reference_image": "anal random/124.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/124_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 33
+ },
+ {
+ "index": 34,
+ "reference_image": "anal random/124_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "anal random/124_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "anal random/124_5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "anal random/124_6.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "anal random/124_7.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/124_8.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 39
+ },
+ {
+ "index": 40,
+ "reference_image": "anal random/124_9.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "anal random/133.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "anal random/133_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 43,
+ "reference_image": "anal random/160.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 44,
+ "reference_image": "anal random/160_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/160_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 45
+ },
+ {
+ "index": 46,
+ "reference_image": "anal random/186.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 47,
+ "reference_image": "anal random/186_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 48,
+ "reference_image": "anal random/186_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 49,
+ "reference_image": "anal random/186_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/188.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 50
+ },
+ {
+ "index": 51,
+ "reference_image": "anal random/188_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 52,
+ "reference_image": "anal random/223.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 53,
+ "reference_image": "anal random/223_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 54,
+ "reference_image": "anal random/266.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 55,
+ "reference_image": "anal random/266_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 56,
+ "reference_image": "anal random/266_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 57,
+ "reference_image": "anal random/272.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 58,
+ "reference_image": "anal random/272_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 59,
+ "reference_image": "anal random/281.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 60,
+ "reference_image": "anal random/283.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "anal random/283_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "anal random/283_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 63,
+ "reference_image": "anal random/286.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 64,
+ "reference_image": "anal random/286_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 65,
+ "reference_image": "anal random/291.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 66,
+ "reference_image": "anal random/291_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 67,
+ "reference_image": "anal random/291_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 68,
+ "reference_image": "anal random/318.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 69,
+ "reference_image": "anal random/318_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 70,
+ "reference_image": "anal random/318_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 71,
+ "reference_image": "anal random/338.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 72,
+ "reference_image": "anal random/347.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 73,
+ "reference_image": "anal random/347_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/347_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 74
+ },
+ {
+ "reference_image": "anal random/347_4.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 75
+ },
+ {
+ "reference_image": "anal random/347_5.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 76
+ },
+ {
+ "index": 77,
+ "reference_image": "anal random/347_6.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 78,
+ "reference_image": "anal random/347_7.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/347_8.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool.",
+ "index": 79
+ },
+ {
+ "index": 80,
+ "reference_image": "anal random/347_9.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/347_10.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 81
+ },
+ {
+ "reference_image": "anal random/347_11.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 82
+ },
+ {
+ "reference_image": "anal random/366.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 83
+ },
+ {
+ "index": 84,
+ "reference_image": "anal random/366_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "anal random/366_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 85
+ },
+ {
+ "reference_image": "anal random/366_4.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_anal_random_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool.",
+ "index": 86
+ },
+ {
+ "index": 87,
+ "reference_image": "anal random/366_5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 88,
+ "reference_image": "anal random/367.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 89,
+ "reference_image": "anal random/367_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 90,
+ "reference_image": "anal random/367_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 91,
+ "reference_image": "anal random/367_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 92,
+ "reference_image": "anal random/562.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 93,
+ "reference_image": "anal random/569.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 94,
+ "reference_image": "anal random/569_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 95,
+ "reference_image": "anal random/589.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 96,
+ "reference_image": "anal random/589_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 97,
+ "reference_image": "anal random/589_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 98,
+ "reference_image": "anal random/589_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 99,
+ "reference_image": "anal random/595.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "anal random/0001.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 2,
+ "reference_image": "anal random/0002.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "anal random/0002_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "anal random/0002_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "anal random/0003.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 6,
+ "reference_image": "anal random/0003_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "anal random/0003_3.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 8,
+ "reference_image": "anal random/0003_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "anal random/0005.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 10,
+ "reference_image": "anal random/0006.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 11,
+ "reference_image": "anal random/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "anal random/0008_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "anal random/0009.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "anal random/0010.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 15,
+ "reference_image": "anal random/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "anal random/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "anal random/0013.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 18,
+ "reference_image": "anal random/0014.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "anal random/0014_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "anal random/0015.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 21,
+ "reference_image": "anal random/0018.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "anal random/94.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "anal random/94_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "anal random/94_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "anal random/94_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "anal random/94_5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "anal random/118.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "anal random/118_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "anal random/119.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 30,
+ "reference_image": "anal random/119_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 31,
+ "reference_image": "anal random/119_3.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 32,
+ "reference_image": "anal random/124.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "anal random/124_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 34,
+ "reference_image": "anal random/124_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "anal random/124_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "anal random/124_5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "anal random/124_6.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "anal random/124_7.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "anal random/124_8.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 40,
+ "reference_image": "anal random/124_9.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 80,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "anal random/133.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "anal random/133_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "anal random/160.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 44,
+ "reference_image": "anal random/160_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 45,
+ "reference_image": "anal random/160_3.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 46,
+ "reference_image": "anal random/186.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "anal random/186_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 48,
+ "reference_image": "anal random/186_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "anal random/186_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 50,
+ "reference_image": "anal random/188.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 51,
+ "reference_image": "anal random/188_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 52,
+ "reference_image": "anal random/223.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "anal random/223_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "anal random/266.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "anal random/266_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "anal random/266_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 57,
+ "reference_image": "anal random/272.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "anal random/272_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 59,
+ "reference_image": "anal random/281.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 60,
+ "reference_image": "anal random/283.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "anal random/283_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "anal random/283_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "anal random/286.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "anal random/286_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "anal random/291.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "anal random/291_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 67,
+ "reference_image": "anal random/291_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 68,
+ "reference_image": "anal random/318.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 69,
+ "reference_image": "anal random/318_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 70,
+ "reference_image": "anal random/318_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 71,
+ "reference_image": "anal random/338.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 72,
+ "reference_image": "anal random/347.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 73,
+ "reference_image": "anal random/347_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 74,
+ "reference_image": "anal random/347_3.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 75,
+ "reference_image": "anal random/347_4.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 76,
+ "reference_image": "anal random/347_5.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 77,
+ "reference_image": "anal random/347_6.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 78,
+ "reference_image": "anal random/347_7.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 79,
+ "reference_image": "anal random/347_8.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "notes": "Residual-pool review found a repeated rear/side-offset anal camera family with third-person framing. Front-view, standing, overhead-like, and tight close-crop frames remain in the mixed source pool."
+ },
+ {
+ "index": 80,
+ "reference_image": "anal random/347_9.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 3,
+ "html_anchor": "page-03",
+ "start_index": 81,
+ "end_index": 99,
+ "image_count": 19,
+ "images": [
+ {
+ "index": 81,
+ "reference_image": "anal random/347_10.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 82,
+ "reference_image": "anal random/347_11.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 83,
+ "reference_image": "anal random/366.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 84,
+ "reference_image": "anal random/366_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 85,
+ "reference_image": "anal random/366_3.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 86,
+ "reference_image": "anal random/366_4.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_random_front_view",
+ "notes": "Paged review found a repeated front-view anal camera family. Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ },
+ {
+ "index": 87,
+ "reference_image": "anal random/366_5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 88,
+ "reference_image": "anal random/367.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 89,
+ "reference_image": "anal random/367_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 90,
+ "reference_image": "anal random/367_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 91,
+ "reference_image": "anal random/367_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 92,
+ "reference_image": "anal random/562.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 93,
+ "reference_image": "anal random/569.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 94,
+ "reference_image": "anal random/569_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 95,
+ "reference_image": "anal random/589.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 96,
+ "reference_image": "anal random/589_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 97,
+ "reference_image": "anal random/589_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 98,
+ "reference_image": "anal random/589_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 99,
+ "reference_image": "anal random/595.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/anal_reverse_congress_contact_sheet.html b/ab_batches/normal_camera/review/anal_reverse_congress_contact_sheet.html
new file mode 100644
index 0000000..59d8723
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_reverse_congress_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: anal reverse congress
+
+
+
+Normal Camera Review Contact Sheet: anal reverse congress
+No-generation contact sheet. 1 JPGs from anal reverse congress. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: anal reverse congress.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 anal reverse congress/160.jpgbucket: reject_or_unclear / normal_anal_reverse_congress_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/anal_reverse_congress_review_manifest.json b/ab_batches/normal_camera/review/anal_reverse_congress_review_manifest.json
new file mode 100644
index 0000000..f0ee42a
--- /dev/null
+++ b/ab_batches/normal_camera/review/anal_reverse_congress_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "anal reverse congress",
+ "folder_alias": {
+ "exact_source_folder": "anal reverse congress",
+ "canonical_folder": "anal reverse congress",
+ "canonical_key": "anal_reverse_congress",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "reverse_congress",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_anal_reverse_congress_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal reverse congress/160.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "anal reverse congress/160.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_anal_reverse_congress_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "anal reverse congress/160.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anal_reverse_congress_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/anus_lickiing_contact_sheet.html b/ab_batches/normal_camera/review/anus_lickiing_contact_sheet.html
new file mode 100644
index 0000000..11fd3c4
--- /dev/null
+++ b/ab_batches/normal_camera/review/anus_lickiing_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: anus lickiing
+
+
+
+Normal Camera Review Contact Sheet: anus lickiing
+No-generation contact sheet. 1 JPGs from anus lickiing. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: anus licking.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 anus lickiing/0004.jpgbucket: reject_or_unclear / normal_anus_licking_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/anus_lickiing_review_manifest.json b/ab_batches/normal_camera/review/anus_lickiing_review_manifest.json
new file mode 100644
index 0000000..e18274e
--- /dev/null
+++ b/ab_batches/normal_camera/review/anus_lickiing_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "anus lickiing",
+ "folder_alias": {
+ "exact_source_folder": "anus lickiing",
+ "canonical_folder": "anus licking",
+ "canonical_key": "anus_licking",
+ "alias_applied": true,
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path."
+ },
+ "image_count": 1,
+ "action_family": "oral_other",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_anus_licking_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anus lickiing/0004.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "anus lickiing/0004.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_anus_licking_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "anus lickiing/0004.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_anus_licking_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one available sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/ballsucking_laying_contact_sheet.html b/ab_batches/normal_camera/review/ballsucking_laying_contact_sheet.html
new file mode 100644
index 0000000..c917b52
--- /dev/null
+++ b/ab_batches/normal_camera/review/ballsucking_laying_contact_sheet.html
@@ -0,0 +1,45 @@
+
+
+
+
+Normal Camera Review Contact Sheet: ballsucking - laying
+
+
+
+Normal Camera Review Contact Sheet: ballsucking - laying
+No-generation contact sheet. 2 JPGs from ballsucking - laying. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: ballsucking - laying.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-2
+
+
+
+001 ballsucking - laying/271.jpgbucket: reject_or_unclear / normal_ballsucking_laying_close_reference_folder_pool
+
+
+
+002 ballsucking - laying/591.jpgbucket: reject_or_unclear / normal_ballsucking_laying_close_reference_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/ballsucking_laying_review_manifest.json b/ab_batches/normal_camera/review/ballsucking_laying_review_manifest.json
new file mode 100644
index 0000000..f766af4
--- /dev/null
+++ b/ab_batches/normal_camera/review/ballsucking_laying_review_manifest.json
@@ -0,0 +1,93 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "ballsucking - laying",
+ "folder_alias": {
+ "exact_source_folder": "ballsucking - laying",
+ "canonical_folder": "ballsucking - laying",
+ "canonical_key": "ballsucking_laying",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 2,
+ "action_family": "ballsucking",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_ballsucking_laying_close_reference_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "ballsucking - laying/271.jpg",
+ "ballsucking - laying/591.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review records the existing two-sample laying close-reference source pool as needs_samples. The folder is fully represented but too thin and crop-variable for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "ballsucking - laying/271.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_ballsucking_laying_close_reference_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing two-sample laying close-reference source pool as needs_samples. The folder is fully represented but too thin and crop-variable for a selected pre-A/B route.",
+ "index": 1
+ },
+ {
+ "reference_image": "ballsucking - laying/591.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_ballsucking_laying_close_reference_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing two-sample laying close-reference source pool as needs_samples. The folder is fully represented but too thin and crop-variable for a selected pre-A/B route.",
+ "index": 2
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 2,
+ "image_count": 2,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "ballsucking - laying/271.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_laying_close_reference_folder_pool",
+ "notes": "Contact-sheet review records the existing two-sample laying close-reference source pool as needs_samples. The folder is fully represented but too thin and crop-variable for a selected pre-A/B route."
+ },
+ {
+ "index": 2,
+ "reference_image": "ballsucking - laying/591.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_laying_close_reference_folder_pool",
+ "notes": "Contact-sheet review records the existing two-sample laying close-reference source pool as needs_samples. The folder is fully represented but too thin and crop-variable for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/ballsucking_standing_contact_sheet.html b/ab_batches/normal_camera/review/ballsucking_standing_contact_sheet.html
new file mode 100644
index 0000000..d21e270
--- /dev/null
+++ b/ab_batches/normal_camera/review/ballsucking_standing_contact_sheet.html
@@ -0,0 +1,85 @@
+
+
+
+
+Normal Camera Review Contact Sheet: ballsucking - standing
+
+
+
+Normal Camera Review Contact Sheet: ballsucking - standing
+No-generation contact sheet. 12 JPGs from ballsucking - standing. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: ballsucking - standing.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-12
+
+
+
+001 ballsucking - standing/0014.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+002 ballsucking - standing/0017.jpgbucket: reject_or_unclear / normal_ballsucking_standing_partner_mixed_camera_folder_pool
+
+
+
+003 ballsucking - standing/34.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+004 ballsucking - standing/130.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+005 ballsucking - standing/137.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+006 ballsucking - standing/207.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+007 ballsucking - standing/222.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+008 ballsucking - standing/252.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+009 ballsucking - standing/333.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+010 ballsucking - standing/540.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+011 ballsucking - standing/589.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+012 ballsucking - standing/624.jpgbucket: side_view / normal_ballsucking_standing_low_side_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/ballsucking_standing_review_manifest.json b/ab_batches/normal_camera/review/ballsucking_standing_review_manifest.json
new file mode 100644
index 0000000..396c1ba
--- /dev/null
+++ b/ab_batches/normal_camera/review/ballsucking_standing_review_manifest.json
@@ -0,0 +1,284 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "ballsucking - standing",
+ "folder_alias": {
+ "exact_source_folder": "ballsucking - standing",
+ "canonical_folder": "ballsucking - standing",
+ "canonical_key": "ballsucking_standing",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 12,
+ "action_family": "ballsucking",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_ballsucking_standing_partner_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "ballsucking - standing/0017.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/624.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the existing mixed source-pool anchor. The standing-partner context is useful, but the full folder still mixes close, side, front, and one water-close outlier; the outlier is anchored here rather than in the pre-A/B split."
+ },
+ {
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "ballsucking - standing/0014.jpg",
+ "ballsucking - standing/130.jpg",
+ "ballsucking - standing/137.jpg",
+ "ballsucking - standing/207.jpg",
+ "ballsucking - standing/222.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/333.jpg",
+ "ballsucking - standing/34.jpg",
+ "ballsucking - standing/540.jpg",
+ "ballsucking - standing/589.jpg",
+ "ballsucking - standing/624.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "ballsucking - standing/0014.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "ballsucking - standing/0017.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_ballsucking_standing_partner_mixed_camera_folder_pool",
+ "selection_date": "2026-06-29",
+ "review_notes": "Contact-sheet review preserved the existing mixed source-pool anchor. The standing-partner context is useful, but the full folder still mixes close, side, front, and one water-close outlier; the outlier is anchored here rather than in the pre-A/B split.",
+ "index": 2
+ },
+ {
+ "reference_image": "ballsucking - standing/34.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "ballsucking - standing/130.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "ballsucking - standing/137.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "ballsucking - standing/207.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 6
+ },
+ {
+ "reference_image": "ballsucking - standing/222.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 7
+ },
+ {
+ "reference_image": "ballsucking - standing/252.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 8
+ },
+ {
+ "reference_image": "ballsucking - standing/333.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 9
+ },
+ {
+ "reference_image": "ballsucking - standing/540.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 10
+ },
+ {
+ "reference_image": "ballsucking - standing/589.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 11
+ },
+ {
+ "reference_image": "ballsucking - standing/624.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset.",
+ "index": 12
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 12,
+ "image_count": 12,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "ballsucking - standing/0014.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "ballsucking - standing/0017.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_partner_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the existing mixed source-pool anchor. The standing-partner context is useful, but the full folder still mixes close, side, front, and one water-close outlier; the outlier is anchored here rather than in the pre-A/B split."
+ },
+ {
+ "index": 3,
+ "reference_image": "ballsucking - standing/34.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "ballsucking - standing/130.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "ballsucking - standing/137.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "ballsucking - standing/207.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "ballsucking - standing/222.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "ballsucking - standing/252.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 9,
+ "reference_image": "ballsucking - standing/333.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 10,
+ "reference_image": "ballsucking - standing/540.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 11,
+ "reference_image": "ballsucking - standing/589.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ },
+ {
+ "index": 12,
+ "reference_image": "ballsucking - standing/624.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "notes": "Contact-sheet review found a repeated standing-partner, low-performer side or near-side camera family. The water-close crop remains outside this selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/blowjob_laying_back_view_3_4_angle_contact_sheet.html b/ab_batches/normal_camera/review/blowjob_laying_back_view_3_4_angle_contact_sheet.html
new file mode 100644
index 0000000..0df572d
--- /dev/null
+++ b/ab_batches/normal_camera/review/blowjob_laying_back_view_3_4_angle_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: blowjob laying - back view - 3-4 angle
+
+
+
+Normal Camera Review Contact Sheet: blowjob laying - back view - 3-4 angle
+No-generation contact sheet. 1 JPGs from blowjob laying - back view - 3-4 angle. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: blowjob laying - back view - 3-4 angle.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 blowjob laying - back view - 3-4 angle/14.jpgbucket: reject_or_unclear / normal_blowjob_laying_back_three_quarter_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/blowjob_laying_back_view_3_4_angle_review_manifest.json b/ab_batches/normal_camera/review/blowjob_laying_back_view_3_4_angle_review_manifest.json
new file mode 100644
index 0000000..4b83c84
--- /dev/null
+++ b/ab_batches/normal_camera/review/blowjob_laying_back_view_3_4_angle_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "blowjob laying - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "blowjob laying - back view - 3-4 angle",
+ "canonical_folder": "blowjob laying - back view - 3-4 angle",
+ "canonical_key": "blowjob_laying_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "blowjob",
+ "source_camera_view": "back_three_quarter",
+ "source_catalog_status": "thin_sample",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "blowjob laying - back view - 3-4 angle/14.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one rear-offset laying oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "blowjob laying - back view - 3-4 angle/14.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one rear-offset laying oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "blowjob laying - back view - 3-4 angle/14.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one rear-offset laying oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/blowjob_laying_front_view_contact_sheet.html b/ab_batches/normal_camera/review/blowjob_laying_front_view_contact_sheet.html
new file mode 100644
index 0000000..7c55673
--- /dev/null
+++ b/ab_batches/normal_camera/review/blowjob_laying_front_view_contact_sheet.html
@@ -0,0 +1,141 @@
+
+
+
+
+Normal Camera Review Contact Sheet: blowjob - laying - front view
+
+
+
+Normal Camera Review Contact Sheet: blowjob - laying - front view
+No-generation contact sheet. 26 JPGs from blowjob - laying - front view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: blowjob - laying - front view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-26
+
+
+
+001 blowjob - laying - front view/0001.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+002 blowjob - laying - front view/0003.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+003 blowjob - laying - front view/0004.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+004 blowjob - laying - front view/0010.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+005 blowjob - laying - front view/0010_2.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+006 blowjob - laying - front view/0018.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+007 blowjob - laying - front view/48.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+008 blowjob - laying - front view/64.jpgbucket: unassigned
+
+
+
+009 blowjob - laying - front view/69.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+010 blowjob - laying - front view/90.jpgbucket: unassigned
+
+
+
+011 blowjob - laying - front view/91.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+012 blowjob - laying - front view/94.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+013 blowjob - laying - front view/122.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+014 blowjob - laying - front view/124.jpgbucket: unassigned
+
+
+
+015 blowjob - laying - front view/133.jpgbucket: unassigned
+
+
+
+016 blowjob - laying - front view/165.jpgbucket: unassigned
+
+
+
+017 blowjob - laying - front view/171.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+018 blowjob - laying - front view/184.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+019 blowjob - laying - front view/226.jpgbucket: unassigned
+
+
+
+020 blowjob - laying - front view/274.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+021 blowjob - laying - front view/283.jpgbucket: unassigned
+
+
+
+022 blowjob - laying - front view/319.jpgbucket: unassigned
+
+
+
+023 blowjob - laying - front view/507.jpgbucket: unassigned
+
+
+
+024 blowjob - laying - front view/512.jpgbucket: front_view / normal_blowjob_laying_front_view
+
+
+
+025 blowjob - laying - front view/615.jpgbucket: unassigned
+
+
+
+026 blowjob - laying - front view/618.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/blowjob_laying_front_view_review_manifest.json b/ab_batches/normal_camera/review/blowjob_laying_front_view_review_manifest.json
new file mode 100644
index 0000000..1243894
--- /dev/null
+++ b/ab_batches/normal_camera/review/blowjob_laying_front_view_review_manifest.json
@@ -0,0 +1,525 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "blowjob - laying - front view",
+ "folder_alias": {
+ "exact_source_folder": "blowjob - laying - front view",
+ "canonical_folder": "blowjob - laying - front view",
+ "canonical_key": "blowjob_laying_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 26,
+ "action_family": "blowjob",
+ "source_camera_view": "front_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_blowjob_laying_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "blowjob - laying - front view/0001.jpg",
+ "blowjob - laying - front view/0003.jpg",
+ "blowjob - laying - front view/0004.jpg",
+ "blowjob - laying - front view/0010.jpg",
+ "blowjob - laying - front view/0010_2.jpg",
+ "blowjob - laying - front view/0018.jpg",
+ "blowjob - laying - front view/48.jpg",
+ "blowjob - laying - front view/69.jpg",
+ "blowjob - laying - front view/91.jpg",
+ "blowjob - laying - front view/94.jpg",
+ "blowjob - laying - front view/122.jpg",
+ "blowjob - laying - front view/171.jpg",
+ "blowjob - laying - front view/184.jpg",
+ "blowjob - laying - front view/274.jpg",
+ "blowjob - laying - front view/512.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "blowjob - laying - front view/0001.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "blowjob - laying - front view/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 2
+ },
+ {
+ "reference_image": "blowjob - laying - front view/0004.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "blowjob - laying - front view/0010.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "blowjob - laying - front view/0010_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "blowjob - laying - front view/0018.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 6
+ },
+ {
+ "reference_image": "blowjob - laying - front view/48.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "blowjob - laying - front view/64.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "blowjob - laying - front view/69.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 9
+ },
+ {
+ "index": 10,
+ "reference_image": "blowjob - laying - front view/90.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "blowjob - laying - front view/91.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 11
+ },
+ {
+ "reference_image": "blowjob - laying - front view/94.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 12
+ },
+ {
+ "reference_image": "blowjob - laying - front view/122.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 13
+ },
+ {
+ "index": 14,
+ "reference_image": "blowjob - laying - front view/124.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "blowjob - laying - front view/133.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "blowjob - laying - front view/165.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "blowjob - laying - front view/171.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 17
+ },
+ {
+ "reference_image": "blowjob - laying - front view/184.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 18
+ },
+ {
+ "index": 19,
+ "reference_image": "blowjob - laying - front view/226.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "blowjob - laying - front view/274.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 20
+ },
+ {
+ "index": 21,
+ "reference_image": "blowjob - laying - front view/283.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "blowjob - laying - front view/319.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "blowjob - laying - front view/507.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "blowjob - laying - front view/512.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset.",
+ "index": 24
+ },
+ {
+ "index": 25,
+ "reference_image": "blowjob - laying - front view/615.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "blowjob - laying - front view/618.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 26,
+ "image_count": 26,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "blowjob - laying - front view/0001.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "blowjob - laying - front view/0003.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "blowjob - laying - front view/0004.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "blowjob - laying - front view/0010.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "blowjob - laying - front view/0010_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "blowjob - laying - front view/0018.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "blowjob - laying - front view/48.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "blowjob - laying - front view/64.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "blowjob - laying - front view/69.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 10,
+ "reference_image": "blowjob - laying - front view/90.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "blowjob - laying - front view/91.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 12,
+ "reference_image": "blowjob - laying - front view/94.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 13,
+ "reference_image": "blowjob - laying - front view/122.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 14,
+ "reference_image": "blowjob - laying - front view/124.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "blowjob - laying - front view/133.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "blowjob - laying - front view/165.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "blowjob - laying - front view/171.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "blowjob - laying - front view/184.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 19,
+ "reference_image": "blowjob - laying - front view/226.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "blowjob - laying - front view/274.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 21,
+ "reference_image": "blowjob - laying - front view/283.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "blowjob - laying - front view/319.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "blowjob - laying - front view/507.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "blowjob - laying - front view/512.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_blowjob_laying_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing laying oral-contact route as a broad but coherent third-person camera family. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 25,
+ "reference_image": "blowjob - laying - front view/615.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "blowjob - laying - front view/618.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/boobjob_contact_sheet.html b/ab_batches/normal_camera/review/boobjob_contact_sheet.html
new file mode 100644
index 0000000..3dac3ae
--- /dev/null
+++ b/ab_batches/normal_camera/review/boobjob_contact_sheet.html
@@ -0,0 +1,113 @@
+
+
+
+
+Normal Camera Review Contact Sheet: boobjob
+
+
+
+Normal Camera Review Contact Sheet: boobjob
+No-generation contact sheet. 19 JPGs from boobjob. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: boobjob.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-19
+
+
+
+001 boobjob/0017.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+002 boobjob/0018.jpgbucket: unassigned
+
+
+
+003 boobjob/0018_2.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+004 boobjob/91.jpgbucket: reject_or_unclear / normal_boobjob_front_close_mixed_camera_folder_pool
+
+
+
+005 boobjob/141.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+006 boobjob/182.jpgbucket: unassigned
+
+
+
+007 boobjob/186.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+008 boobjob/186_2.jpgbucket: unassigned
+
+
+
+009 boobjob/218.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+010 boobjob/225.jpgbucket: unassigned
+
+
+
+011 boobjob/259.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+012 boobjob/297.jpgbucket: unassigned
+
+
+
+013 boobjob/327.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+014 boobjob/588.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+015 boobjob/592.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+016 boobjob/598.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+017 boobjob/601.jpgbucket: unassigned
+
+
+
+018 boobjob/615.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+019 boobjob/618.jpgbucket: front_view / normal_boobjob_front_close_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/boobjob_review_manifest.json b/ab_batches/normal_camera/review/boobjob_review_manifest.json
new file mode 100644
index 0000000..ace19f7
--- /dev/null
+++ b/ab_batches/normal_camera/review/boobjob_review_manifest.json
@@ -0,0 +1,410 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "boobjob",
+ "folder_alias": {
+ "exact_source_folder": "boobjob",
+ "canonical_folder": "boobjob",
+ "canonical_key": "boobjob",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 19,
+ "action_family": "boobjob",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_boobjob_front_close_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/259.jpg",
+ "boobjob/91.jpg"
+ ],
+ "evidence_notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder includes useful front-close material, but side, standing, foreground-heavy, and downward/crop-drifting examples keep it from being one locked prompt-ready camera route."
+ },
+ {
+ "variant_key": "normal_boobjob_front_close_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/0018_2.jpg",
+ "boobjob/141.jpg",
+ "boobjob/186.jpg",
+ "boobjob/218.jpg",
+ "boobjob/259.jpg",
+ "boobjob/327.jpg",
+ "boobjob/588.jpg",
+ "boobjob/592.jpg",
+ "boobjob/598.jpg",
+ "boobjob/615.jpg",
+ "boobjob/618.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "boobjob/0017.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "boobjob/0018.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "boobjob/0018_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "boobjob/91.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_boobjob_front_close_mixed_camera_folder_pool",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder includes useful front-close material, but side, standing, foreground-heavy, and downward/crop-drifting examples keep it from being one locked prompt-ready camera route.",
+ "index": 4
+ },
+ {
+ "reference_image": "boobjob/141.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "boobjob/182.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "boobjob/186.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "boobjob/186_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "boobjob/218.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 9
+ },
+ {
+ "index": 10,
+ "reference_image": "boobjob/225.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "boobjob/259.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 11
+ },
+ {
+ "index": 12,
+ "reference_image": "boobjob/297.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "boobjob/327.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 13
+ },
+ {
+ "reference_image": "boobjob/588.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 14
+ },
+ {
+ "reference_image": "boobjob/592.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 15
+ },
+ {
+ "reference_image": "boobjob/598.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 16
+ },
+ {
+ "index": 17,
+ "reference_image": "boobjob/601.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "boobjob/615.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 18
+ },
+ {
+ "reference_image": "boobjob/618.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_boobjob_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset.",
+ "index": 19
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 19,
+ "image_count": 19,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "boobjob/0017.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "boobjob/0018.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "boobjob/0018_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "boobjob/91.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_mixed_camera_folder_pool",
+ "notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder includes useful front-close material, but side, standing, foreground-heavy, and downward/crop-drifting examples keep it from being one locked prompt-ready camera route."
+ },
+ {
+ "index": 5,
+ "reference_image": "boobjob/141.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "boobjob/182.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "boobjob/186.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "boobjob/186_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "boobjob/218.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 10,
+ "reference_image": "boobjob/225.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "boobjob/259.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 12,
+ "reference_image": "boobjob/297.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "boobjob/327.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 14,
+ "reference_image": "boobjob/588.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 15,
+ "reference_image": "boobjob/592.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 16,
+ "reference_image": "boobjob/598.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 17,
+ "reference_image": "boobjob/601.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "boobjob/615.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ },
+ {
+ "index": 19,
+ "reference_image": "boobjob/618.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_boobjob_front_close_view",
+ "notes": "Residual-pool review found a repeated front-close third-person family where face or upper body remains readable and the contact action stays centered. Side, standing, foreground-heavy, and downward/crop-drifting outliers remain outside this selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/breast_sucking_side_view_contact_sheet.html b/ab_batches/normal_camera/review/breast_sucking_side_view_contact_sheet.html
new file mode 100644
index 0000000..ea8e77c
--- /dev/null
+++ b/ab_batches/normal_camera/review/breast_sucking_side_view_contact_sheet.html
@@ -0,0 +1,212 @@
+
+
+
+
+Normal Camera Review Contact Sheet: breast sucking - side view
+
+
+
+Normal Camera Review Contact Sheet: breast sucking - side view
+No-generation contact sheet. 43 JPGs from breast sucking - side view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: breast sucking - side view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 breast sucking - side view/0003.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+002 breast sucking - side view/0005.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+003 breast sucking - side view/0007.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+004 breast sucking - side view/0008.jpgbucket: unassigned
+
+
+
+005 breast sucking - side view/0009.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+006 breast sucking - side view/0010.jpgbucket: unassigned
+
+
+
+007 breast sucking - side view/0010_2.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+008 breast sucking - side view/0012.jpgbucket: unassigned
+
+
+
+009 breast sucking - side view/0016.jpgbucket: unassigned
+
+
+
+010 breast sucking - side view/0017.jpgbucket: unassigned
+
+
+
+011 breast sucking - side view/56.jpgbucket: unassigned
+
+
+
+012 breast sucking - side view/65.jpgbucket: unassigned
+
+
+
+013 breast sucking - side view/79.jpgbucket: unassigned
+
+
+
+014 breast sucking - side view/91.jpgbucket: unassigned
+
+
+
+015 breast sucking - side view/91_2.jpgbucket: unassigned
+
+
+
+016 breast sucking - side view/99.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+017 breast sucking - side view/182.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+018 breast sucking - side view/186.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+019 breast sucking - side view/188.jpgbucket: unassigned
+
+
+
+020 breast sucking - side view/191.jpgbucket: unassigned
+
+
+
+021 breast sucking - side view/218.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+022 breast sucking - side view/234.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+023 breast sucking - side view/237.jpgbucket: unassigned
+
+
+
+024 breast sucking - side view/239.jpgbucket: unassigned
+
+
+
+025 breast sucking - side view/244.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+026 breast sucking - side view/248.jpgbucket: unassigned
+
+
+
+027 breast sucking - side view/251.jpgbucket: unassigned
+
+
+
+028 breast sucking - side view/257.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+029 breast sucking - side view/267.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+030 breast sucking - side view/269.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+031 breast sucking - side view/278.jpgbucket: unassigned
+
+
+
+032 breast sucking - side view/307.jpgbucket: unassigned
+
+
+
+033 breast sucking - side view/353.jpgbucket: unassigned
+
+
+
+034 breast sucking - side view/356.jpgbucket: side_view / normal_breast_sucking_side_view
+
+
+
+035 breast sucking - side view/357.jpgbucket: unassigned
+
+
+
+036 breast sucking - side view/370.jpgbucket: unassigned
+
+
+
+037 breast sucking - side view/501.jpgbucket: unassigned
+
+
+
+038 breast sucking - side view/503.jpgbucket: unassigned
+
+
+
+039 breast sucking - side view/511.jpgbucket: unassigned
+
+
+
+040 breast sucking - side view/539.jpgbucket: unassigned
+
+
+Page 2: 41-43
+
+
+
+041 breast sucking - side view/567.jpgbucket: unassigned
+
+
+
+042 breast sucking - side view/568.jpgbucket: unassigned
+
+
+
+043 breast sucking - side view/610.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/breast_sucking_side_view_review_manifest.json b/ab_batches/normal_camera/review/breast_sucking_side_view_review_manifest.json
new file mode 100644
index 0000000..fae2ab5
--- /dev/null
+++ b/ab_batches/normal_camera/review/breast_sucking_side_view_review_manifest.json
@@ -0,0 +1,840 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "breast sucking - side view",
+ "folder_alias": {
+ "exact_source_folder": "breast sucking - side view",
+ "canonical_folder": "breast sucking - side view",
+ "canonical_key": "breast_sucking_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 43,
+ "action_family": "breast_contact",
+ "source_camera_view": "side_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_breast_sucking_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breast sucking - side view/0003.jpg",
+ "breast sucking - side view/0005.jpg",
+ "breast sucking - side view/0007.jpg",
+ "breast sucking - side view/0009.jpg",
+ "breast sucking - side view/0010_2.jpg",
+ "breast sucking - side view/182.jpg",
+ "breast sucking - side view/186.jpg",
+ "breast sucking - side view/218.jpg",
+ "breast sucking - side view/234.jpg",
+ "breast sucking - side view/244.jpg",
+ "breast sucking - side view/257.jpg",
+ "breast sucking - side view/267.jpg",
+ "breast sucking - side view/269.jpg",
+ "breast sucking - side view/356.jpg",
+ "breast sucking - side view/99.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "breast sucking - side view/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "breast sucking - side view/0005.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 2
+ },
+ {
+ "reference_image": "breast sucking - side view/0007.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 3
+ },
+ {
+ "index": 4,
+ "reference_image": "breast sucking - side view/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast sucking - side view/0009.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "breast sucking - side view/0010.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast sucking - side view/0010_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "breast sucking - side view/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "breast sucking - side view/0016.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "breast sucking - side view/0017.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "breast sucking - side view/56.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "breast sucking - side view/65.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "breast sucking - side view/79.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "breast sucking - side view/91.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "breast sucking - side view/91_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast sucking - side view/99.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 16
+ },
+ {
+ "reference_image": "breast sucking - side view/182.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 17
+ },
+ {
+ "reference_image": "breast sucking - side view/186.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 18
+ },
+ {
+ "index": 19,
+ "reference_image": "breast sucking - side view/188.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "breast sucking - side view/191.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast sucking - side view/218.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 21
+ },
+ {
+ "reference_image": "breast sucking - side view/234.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 22
+ },
+ {
+ "index": 23,
+ "reference_image": "breast sucking - side view/237.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "breast sucking - side view/239.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast sucking - side view/244.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 25
+ },
+ {
+ "index": 26,
+ "reference_image": "breast sucking - side view/248.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "breast sucking - side view/251.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast sucking - side view/257.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 28
+ },
+ {
+ "reference_image": "breast sucking - side view/267.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 29
+ },
+ {
+ "reference_image": "breast sucking - side view/269.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 30
+ },
+ {
+ "index": 31,
+ "reference_image": "breast sucking - side view/278.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "breast sucking - side view/307.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "breast sucking - side view/353.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast sucking - side view/356.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_breast_sucking_side_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset.",
+ "index": 34
+ },
+ {
+ "index": 35,
+ "reference_image": "breast sucking - side view/357.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "breast sucking - side view/370.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "breast sucking - side view/501.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "breast sucking - side view/503.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "breast sucking - side view/511.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "breast sucking - side view/539.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "breast sucking - side view/567.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "breast sucking - side view/568.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 43,
+ "reference_image": "breast sucking - side view/610.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "breast sucking - side view/0003.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "breast sucking - side view/0005.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "breast sucking - side view/0007.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "breast sucking - side view/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "breast sucking - side view/0009.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "breast sucking - side view/0010.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "breast sucking - side view/0010_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "breast sucking - side view/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "breast sucking - side view/0016.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "breast sucking - side view/0017.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "breast sucking - side view/56.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "breast sucking - side view/65.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "breast sucking - side view/79.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "breast sucking - side view/91.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "breast sucking - side view/91_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "breast sucking - side view/99.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 17,
+ "reference_image": "breast sucking - side view/182.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "breast sucking - side view/186.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 19,
+ "reference_image": "breast sucking - side view/188.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "breast sucking - side view/191.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "breast sucking - side view/218.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 22,
+ "reference_image": "breast sucking - side view/234.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 23,
+ "reference_image": "breast sucking - side view/237.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "breast sucking - side view/239.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "breast sucking - side view/244.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 26,
+ "reference_image": "breast sucking - side view/248.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "breast sucking - side view/251.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "breast sucking - side view/257.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 29,
+ "reference_image": "breast sucking - side view/267.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 30,
+ "reference_image": "breast sucking - side view/269.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 31,
+ "reference_image": "breast sucking - side view/278.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "breast sucking - side view/307.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "breast sucking - side view/353.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "breast sucking - side view/356.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_sucking_side_view",
+ "notes": "Residual-pool review confirmed a repeated side/near-side mouth-contact family across standing and seated contexts. References were expanded while front-only, hand-touch-only, and weak-contact examples remain outside the selected subset."
+ },
+ {
+ "index": 35,
+ "reference_image": "breast sucking - side view/357.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "breast sucking - side view/370.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "breast sucking - side view/501.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "breast sucking - side view/503.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "breast sucking - side view/511.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "breast sucking - side view/539.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 43,
+ "image_count": 3,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "breast sucking - side view/567.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "breast sucking - side view/568.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "breast sucking - side view/610.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/breast_touching_front_view_contact_sheet.html b/ab_batches/normal_camera/review/breast_touching_front_view_contact_sheet.html
new file mode 100644
index 0000000..6f96638
--- /dev/null
+++ b/ab_batches/normal_camera/review/breast_touching_front_view_contact_sheet.html
@@ -0,0 +1,137 @@
+
+
+
+
+Normal Camera Review Contact Sheet: breast - touching - front view
+
+
+
+Normal Camera Review Contact Sheet: breast - touching - front view
+No-generation contact sheet. 25 JPGs from breast - touching - front view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: breast - touching - front view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-25
+
+
+
+001 breast - touching - front view/0006.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+002 breast - touching - front view/0006_2.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+003 breast - touching - front view/12.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+004 breast - touching - front view/0014.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+005 breast - touching - front view/0015.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+006 breast - touching - front view/16.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+007 breast - touching - front view/0017.jpgbucket: unassigned
+
+
+
+008 breast - touching - front view/29.jpgbucket: unassigned
+
+
+
+009 breast - touching - front view/56.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+010 breast - touching - front view/72.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+011 breast - touching - front view/179.jpgbucket: unassigned
+
+
+
+012 breast - touching - front view/183.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+013 breast - touching - front view/220.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+014 breast - touching - front view/244.jpgbucket: unassigned
+
+
+
+015 breast - touching - front view/246.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+016 breast - touching - front view/248.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+017 breast - touching - front view/281.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+018 breast - touching - front view/290.jpgbucket: unassigned
+
+
+
+019 breast - touching - front view/294.jpgbucket: unassigned
+
+
+
+020 breast - touching - front view/318.jpgbucket: unassigned
+
+
+
+021 breast - touching - front view/348.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+022 breast - touching - front view/361.jpgbucket: front_view / normal_breast_contact_front_view
+
+
+
+023 breast - touching - front view/497.jpgbucket: unassigned
+
+
+
+024 breast - touching - front view/539.jpgbucket: unassigned
+
+
+
+025 breast - touching - front view/598.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/breast_touching_front_view_review_manifest.json b/ab_batches/normal_camera/review/breast_touching_front_view_review_manifest.json
new file mode 100644
index 0000000..d795dcd
--- /dev/null
+++ b/ab_batches/normal_camera/review/breast_touching_front_view_review_manifest.json
@@ -0,0 +1,507 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "breast - touching - front view",
+ "folder_alias": {
+ "exact_source_folder": "breast - touching - front view",
+ "canonical_folder": "breast - touching - front view",
+ "canonical_key": "breast_touching_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 25,
+ "action_family": "breast_contact",
+ "source_camera_view": "front_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_breast_contact_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breast - touching - front view/0006.jpg",
+ "breast - touching - front view/0006_2.jpg",
+ "breast - touching - front view/12.jpg",
+ "breast - touching - front view/0014.jpg",
+ "breast - touching - front view/0015.jpg",
+ "breast - touching - front view/16.jpg",
+ "breast - touching - front view/56.jpg",
+ "breast - touching - front view/72.jpg",
+ "breast - touching - front view/183.jpg",
+ "breast - touching - front view/220.jpg",
+ "breast - touching - front view/246.jpg",
+ "breast - touching - front view/248.jpg",
+ "breast - touching - front view/281.jpg",
+ "breast - touching - front view/348.jpg",
+ "breast - touching - front view/361.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "breast - touching - front view/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "breast - touching - front view/0006_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 2
+ },
+ {
+ "reference_image": "breast - touching - front view/12.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "breast - touching - front view/0014.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "breast - touching - front view/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "breast - touching - front view/16.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 6
+ },
+ {
+ "index": 7,
+ "reference_image": "breast - touching - front view/0017.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 8,
+ "reference_image": "breast - touching - front view/29.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast - touching - front view/56.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 9
+ },
+ {
+ "reference_image": "breast - touching - front view/72.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 10
+ },
+ {
+ "index": 11,
+ "reference_image": "breast - touching - front view/179.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast - touching - front view/183.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 12
+ },
+ {
+ "reference_image": "breast - touching - front view/220.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 13
+ },
+ {
+ "index": 14,
+ "reference_image": "breast - touching - front view/244.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast - touching - front view/246.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 15
+ },
+ {
+ "reference_image": "breast - touching - front view/248.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 16
+ },
+ {
+ "reference_image": "breast - touching - front view/281.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 17
+ },
+ {
+ "index": 18,
+ "reference_image": "breast - touching - front view/290.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "breast - touching - front view/294.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "breast - touching - front view/318.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breast - touching - front view/348.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 21
+ },
+ {
+ "reference_image": "breast - touching - front view/361.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_breast_contact_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset.",
+ "index": 22
+ },
+ {
+ "index": 23,
+ "reference_image": "breast - touching - front view/497.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "breast - touching - front view/539.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "breast - touching - front view/598.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 25,
+ "image_count": 25,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "breast - touching - front view/0006.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "breast - touching - front view/0006_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "breast - touching - front view/12.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "breast - touching - front view/0014.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "breast - touching - front view/0015.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "breast - touching - front view/16.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "breast - touching - front view/0017.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "breast - touching - front view/29.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "breast - touching - front view/56.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 10,
+ "reference_image": "breast - touching - front view/72.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 11,
+ "reference_image": "breast - touching - front view/179.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "breast - touching - front view/183.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 13,
+ "reference_image": "breast - touching - front view/220.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 14,
+ "reference_image": "breast - touching - front view/244.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "breast - touching - front view/246.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 16,
+ "reference_image": "breast - touching - front view/248.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 17,
+ "reference_image": "breast - touching - front view/281.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "breast - touching - front view/290.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "breast - touching - front view/294.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "breast - touching - front view/318.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "breast - touching - front view/348.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 22,
+ "reference_image": "breast - touching - front view/361.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_breast_contact_front_view",
+ "notes": "Residual-pool review confirmed the existing front breast-contact route as a coherent third-person camera family across standing, seated, and kneeling contexts. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
+ },
+ {
+ "index": 23,
+ "reference_image": "breast - touching - front view/497.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "breast - touching - front view/539.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "breast - touching - front view/598.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/breasts_exposed_contact_sheet.html b/ab_batches/normal_camera/review/breasts_exposed_contact_sheet.html
new file mode 100644
index 0000000..510e3c8
--- /dev/null
+++ b/ab_batches/normal_camera/review/breasts_exposed_contact_sheet.html
@@ -0,0 +1,721 @@
+
+
+
+
+Normal Camera Review Contact Sheet: breasts exposed
+
+
+
+Normal Camera Review Contact Sheet: breasts exposed
+No-generation contact sheet. 168 JPGs from breasts exposed. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: breasts exposed.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 breasts exposed/0001.jpgbucket: unassigned
+
+
+
+002 breasts exposed/0001_2.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+003 breasts exposed/0001_3.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+004 breasts exposed/0002.jpgbucket: unassigned
+
+
+
+005 breasts exposed/0002_2.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+006 breasts exposed/0002_3.jpgbucket: unassigned
+
+
+
+007 breasts exposed/0003.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+008 breasts exposed/0005.jpgbucket: unassigned
+
+
+
+009 breasts exposed/0006.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+010 breasts exposed/0007.jpgbucket: unassigned
+
+
+
+011 breasts exposed/0007_2.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+012 breasts exposed/0007_3.jpgbucket: unassigned
+
+
+
+013 breasts exposed/0008.jpgbucket: unassigned
+
+
+
+014 breasts exposed/0008_2.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+015 breasts exposed/0010.jpgbucket: unassigned
+
+
+
+016 breasts exposed/0011.jpgbucket: unassigned
+
+
+
+017 breasts exposed/0011_2.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+018 breasts exposed/0012.jpgbucket: unassigned
+
+
+
+019 breasts exposed/0012_2.jpgbucket: unassigned
+
+
+
+020 breasts exposed/0013.jpgbucket: unassigned
+
+
+
+021 breasts exposed/0013_2.jpgbucket: unassigned
+
+
+
+022 breasts exposed/0013_3.jpgbucket: unassigned
+
+
+
+023 breasts exposed/0013_4.jpgbucket: unassigned
+
+
+
+024 breasts exposed/0014.jpgbucket: unassigned
+
+
+
+025 breasts exposed/0019.jpgbucket: unassigned
+
+
+
+026 breasts exposed/0019_2.jpgbucket: unassigned
+
+
+
+027 breasts exposed/40.jpgbucket: unassigned
+
+
+
+028 breasts exposed/40_2.jpgbucket: unassigned
+
+
+
+029 breasts exposed/44.jpgbucket: unassigned
+
+
+
+030 breasts exposed/46.jpgbucket: unassigned
+
+
+
+031 breasts exposed/49.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+032 breasts exposed/52.jpgbucket: unassigned
+
+
+
+033 breasts exposed/56.jpgbucket: unassigned
+
+
+
+034 breasts exposed/76.jpgbucket: unassigned
+
+
+
+035 breasts exposed/80.jpgbucket: unassigned
+
+
+
+036 breasts exposed/83.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+037 breasts exposed/91.jpgbucket: unassigned
+
+
+
+038 breasts exposed/95.jpgbucket: unassigned
+
+
+
+039 breasts exposed/97.jpgbucket: unassigned
+
+
+
+040 breasts exposed/101.jpgbucket: unassigned
+
+
+Page 2: 41-80
+
+
+
+041 breasts exposed/101_2.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+042 breasts exposed/112.jpgbucket: unassigned
+
+
+
+043 breasts exposed/114.jpgbucket: unassigned
+
+
+
+044 breasts exposed/119.jpgbucket: unassigned
+
+
+
+045 breasts exposed/119_2.jpgbucket: unassigned
+
+
+
+046 breasts exposed/121.jpgbucket: unassigned
+
+
+
+047 breasts exposed/134.jpgbucket: unassigned
+
+
+
+048 breasts exposed/134_2.jpgbucket: unassigned
+
+
+
+049 breasts exposed/138.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+050 breasts exposed/138_2.jpgbucket: unassigned
+
+
+
+051 breasts exposed/141.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+052 breasts exposed/154.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+053 breasts exposed/155.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+054 breasts exposed/156.jpgbucket: unassigned
+
+
+
+055 breasts exposed/158.jpgbucket: unassigned
+
+
+
+056 breasts exposed/165.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+057 breasts exposed/168.jpgbucket: unassigned
+
+
+
+058 breasts exposed/169.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+059 breasts exposed/173.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+060 breasts exposed/174.jpgbucket: unassigned
+
+
+
+061 breasts exposed/175.jpgbucket: unassigned
+
+
+
+062 breasts exposed/181.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+063 breasts exposed/182.jpgbucket: unassigned
+
+
+
+064 breasts exposed/182_2.jpgbucket: unassigned
+
+
+
+065 breasts exposed/190.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+066 breasts exposed/196.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+067 breasts exposed/199.jpgbucket: unassigned
+
+
+
+068 breasts exposed/204.jpgbucket: unassigned
+
+
+
+069 breasts exposed/206.jpgbucket: unassigned
+
+
+
+070 breasts exposed/207.jpgbucket: unassigned
+
+
+
+071 breasts exposed/208.jpgbucket: unassigned
+
+
+
+072 breasts exposed/213.jpgbucket: unassigned
+
+
+
+073 breasts exposed/215.jpgbucket: unassigned
+
+
+
+074 breasts exposed/218.jpgbucket: unassigned
+
+
+
+075 breasts exposed/227.jpgbucket: unassigned
+
+
+
+076 breasts exposed/230.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+077 breasts exposed/232.jpgbucket: unassigned
+
+
+
+078 breasts exposed/234.jpgbucket: unassigned
+
+
+
+079 breasts exposed/234_2.jpgbucket: unassigned
+
+
+
+080 breasts exposed/234_3.jpgbucket: unassigned
+
+
+Page 3: 81-120
+
+
+
+081 breasts exposed/235.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+082 breasts exposed/237.jpgbucket: unassigned
+
+
+
+083 breasts exposed/242.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+084 breasts exposed/244.jpgbucket: unassigned
+
+
+
+085 breasts exposed/248.jpgbucket: unassigned
+
+
+
+086 breasts exposed/249.jpgbucket: unassigned
+
+
+
+087 breasts exposed/250.jpgbucket: unassigned
+
+
+
+088 breasts exposed/255.jpgbucket: unassigned
+
+
+
+089 breasts exposed/259.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+090 breasts exposed/263.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+091 breasts exposed/263_2.jpgbucket: unassigned
+
+
+
+092 breasts exposed/267.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+093 breasts exposed/270.jpgbucket: unassigned
+
+
+
+094 breasts exposed/271.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+095 breasts exposed/273.jpgbucket: unassigned
+
+
+
+096 breasts exposed/275.jpgbucket: unassigned
+
+
+
+097 breasts exposed/275_2.jpgbucket: unassigned
+
+
+
+098 breasts exposed/280.jpgbucket: unassigned
+
+
+
+099 breasts exposed/280_2.jpgbucket: unassigned
+
+
+
+100 breasts exposed/284.jpgbucket: unassigned
+
+
+
+101 breasts exposed/285.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+102 breasts exposed/292.jpgbucket: unassigned
+
+
+
+103 breasts exposed/293.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+104 breasts exposed/296.jpgbucket: unassigned
+
+
+
+105 breasts exposed/296_2.jpgbucket: unassigned
+
+
+
+106 breasts exposed/297.jpgbucket: unassigned
+
+
+
+107 breasts exposed/297_2.jpgbucket: unassigned
+
+
+
+108 breasts exposed/299.jpgbucket: unassigned
+
+
+
+109 breasts exposed/300.jpgbucket: unassigned
+
+
+
+110 breasts exposed/302.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+111 breasts exposed/302_2.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+112 breasts exposed/302_3.jpgbucket: unassigned
+
+
+
+113 breasts exposed/304.jpgbucket: unassigned
+
+
+
+114 breasts exposed/305.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+115 breasts exposed/311.jpgbucket: unassigned
+
+
+
+116 breasts exposed/311_2.jpgbucket: unassigned
+
+
+
+117 breasts exposed/313.jpgbucket: unassigned
+
+
+
+118 breasts exposed/320.jpgbucket: unassigned
+
+
+
+119 breasts exposed/321.jpgbucket: unassigned
+
+
+
+120 breasts exposed/322.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+Page 4: 121-160
+
+
+
+121 breasts exposed/327.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+122 breasts exposed/328.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+123 breasts exposed/331.jpgbucket: unassigned
+
+
+
+124 breasts exposed/331_2.jpgbucket: unassigned
+
+
+
+125 breasts exposed/332.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+126 breasts exposed/346.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+127 breasts exposed/348.jpgbucket: unassigned
+
+
+
+128 breasts exposed/353.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+129 breasts exposed/353_2.jpgbucket: unassigned
+
+
+
+130 breasts exposed/359.jpgbucket: unassigned
+
+
+
+131 breasts exposed/368.jpgbucket: front_view / normal_display_breasts_exposed_standing_front_view
+
+
+
+132 breasts exposed/369.jpgbucket: unassigned
+
+
+
+133 breasts exposed/369_2.jpgbucket: unassigned
+
+
+
+134 breasts exposed/373.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+135 breasts exposed/380.jpgbucket: unassigned
+
+
+
+136 breasts exposed/493.jpgbucket: unassigned
+
+
+
+137 breasts exposed/493_2.jpgbucket: unassigned
+
+
+
+138 breasts exposed/498.jpgbucket: unassigned
+
+
+
+139 breasts exposed/498_2.jpgbucket: unassigned
+
+
+
+140 breasts exposed/500.jpgbucket: unassigned
+
+
+
+141 breasts exposed/505.jpgbucket: unassigned
+
+
+
+142 breasts exposed/508.jpgbucket: unassigned
+
+
+
+143 breasts exposed/513.jpgbucket: unassigned
+
+
+
+144 breasts exposed/518.jpgbucket: unassigned
+
+
+
+145 breasts exposed/523.jpgbucket: front_view / normal_display_breasts_exposed_seated_kneeling_front_view
+
+
+
+146 breasts exposed/524.jpgbucket: unassigned
+
+
+
+147 breasts exposed/526.jpgbucket: unassigned
+
+
+
+148 breasts exposed/526_2.jpgbucket: unassigned
+
+
+
+149 breasts exposed/529.jpgbucket: unassigned
+
+
+
+150 breasts exposed/534.jpgbucket: unassigned
+
+
+
+151 breasts exposed/545.jpgbucket: unassigned
+
+
+
+152 breasts exposed/556.jpgbucket: unassigned
+
+
+
+153 breasts exposed/569.jpgbucket: unassigned
+
+
+
+154 breasts exposed/590.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+155 breasts exposed/590_2.jpgbucket: side_view / normal_display_breasts_exposed_side_offset_view
+
+
+
+156 breasts exposed/594.jpgbucket: unassigned
+
+
+
+157 breasts exposed/594_2.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+158 breasts exposed/594_3.jpgbucket: unassigned
+
+
+
+159 breasts exposed/607.jpgbucket: unassigned
+
+
+
+160 breasts exposed/607_2.jpgbucket: unassigned
+
+
+Page 5: 161-168
+
+
+
+161 breasts exposed/608.jpgbucket: unassigned
+
+
+
+162 breasts exposed/608_2.jpgbucket: unassigned
+
+
+
+163 breasts exposed/608_3.jpgbucket: unassigned
+
+
+
+164 breasts exposed/610.jpgbucket: unassigned
+
+
+
+165 breasts exposed/610_2.jpgbucket: unassigned
+
+
+
+166 breasts exposed/612.jpgbucket: unassigned
+
+
+
+167 breasts exposed/612_2.jpgbucket: unassigned
+
+
+
+168 breasts exposed/624.jpgbucket: front_view / normal_display_breasts_exposed_front_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/breasts_exposed_review_manifest.json b/ab_batches/normal_camera/review/breasts_exposed_review_manifest.json
new file mode 100644
index 0000000..23bbaa1
--- /dev/null
+++ b/ab_batches/normal_camera/review/breasts_exposed_review_manifest.json
@@ -0,0 +1,3144 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "breasts exposed",
+ "folder_alias": {
+ "exact_source_folder": "breasts exposed",
+ "canonical_folder": "breasts exposed",
+ "canonical_key": "breasts_exposed",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 168,
+ "action_family": "display",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/0001_3.jpg",
+ "breasts exposed/0006.jpg",
+ "breasts exposed/0008_2.jpg",
+ "breasts exposed/0011_2.jpg",
+ "breasts exposed/141.jpg",
+ "breasts exposed/181.jpg",
+ "breasts exposed/263.jpg",
+ "breasts exposed/302.jpg",
+ "breasts exposed/327.jpg",
+ "breasts exposed/346.jpg",
+ "breasts exposed/594_2.jpg",
+ "breasts exposed/624.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/83.jpg",
+ "breasts exposed/196.jpg",
+ "breasts exposed/235.jpg",
+ "breasts exposed/267.jpg",
+ "breasts exposed/271.jpg",
+ "breasts exposed/305.jpg",
+ "breasts exposed/353.jpg",
+ "breasts exposed/373.jpg",
+ "breasts exposed/590.jpg",
+ "breasts exposed/590_2.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/0002_2.jpg",
+ "breasts exposed/0003.jpg",
+ "breasts exposed/49.jpg",
+ "breasts exposed/138.jpg",
+ "breasts exposed/155.jpg",
+ "breasts exposed/169.jpg",
+ "breasts exposed/190.jpg",
+ "breasts exposed/230.jpg",
+ "breasts exposed/242.jpg",
+ "breasts exposed/302_2.jpg",
+ "breasts exposed/332.jpg",
+ "breasts exposed/368.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/0001_2.jpg",
+ "breasts exposed/0007_2.jpg",
+ "breasts exposed/101_2.jpg",
+ "breasts exposed/154.jpg",
+ "breasts exposed/165.jpg",
+ "breasts exposed/173.jpg",
+ "breasts exposed/259.jpg",
+ "breasts exposed/285.jpg",
+ "breasts exposed/293.jpg",
+ "breasts exposed/322.jpg",
+ "breasts exposed/328.jpg",
+ "breasts exposed/523.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "index": 1,
+ "reference_image": "breasts exposed/0001.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/0001_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 2
+ },
+ {
+ "reference_image": "breasts exposed/0001_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 3
+ },
+ {
+ "index": 4,
+ "reference_image": "breasts exposed/0002.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/0002_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "breasts exposed/0002_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "breasts exposed/0005.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 9
+ },
+ {
+ "index": 10,
+ "reference_image": "breasts exposed/0007.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/0007_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 11
+ },
+ {
+ "index": 12,
+ "reference_image": "breasts exposed/0007_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "breasts exposed/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/0008_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 14
+ },
+ {
+ "index": 15,
+ "reference_image": "breasts exposed/0010.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "breasts exposed/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/0011_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 17
+ },
+ {
+ "index": 18,
+ "reference_image": "breasts exposed/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "breasts exposed/0012_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "breasts exposed/0013.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "breasts exposed/0013_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "breasts exposed/0013_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "breasts exposed/0013_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "breasts exposed/0014.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "breasts exposed/0019.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "breasts exposed/0019_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "breasts exposed/40.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "breasts exposed/40_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "breasts exposed/44.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "breasts exposed/46.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/49.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 31
+ },
+ {
+ "index": 32,
+ "reference_image": "breasts exposed/52.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "breasts exposed/56.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "breasts exposed/76.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "breasts exposed/80.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/83.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 36
+ },
+ {
+ "index": 37,
+ "reference_image": "breasts exposed/91.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "breasts exposed/95.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "breasts exposed/97.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "breasts exposed/101.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/101_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 41
+ },
+ {
+ "index": 42,
+ "reference_image": "breasts exposed/112.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 43,
+ "reference_image": "breasts exposed/114.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 44,
+ "reference_image": "breasts exposed/119.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 45,
+ "reference_image": "breasts exposed/119_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "breasts exposed/121.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 47,
+ "reference_image": "breasts exposed/134.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 48,
+ "reference_image": "breasts exposed/134_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/138.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 49
+ },
+ {
+ "index": 50,
+ "reference_image": "breasts exposed/138_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/141.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 51
+ },
+ {
+ "reference_image": "breasts exposed/154.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 52
+ },
+ {
+ "reference_image": "breasts exposed/155.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 53
+ },
+ {
+ "index": 54,
+ "reference_image": "breasts exposed/156.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 55,
+ "reference_image": "breasts exposed/158.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/165.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 56
+ },
+ {
+ "index": 57,
+ "reference_image": "breasts exposed/168.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/169.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 58
+ },
+ {
+ "reference_image": "breasts exposed/173.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 59
+ },
+ {
+ "index": 60,
+ "reference_image": "breasts exposed/174.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "breasts exposed/175.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/181.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 62
+ },
+ {
+ "index": 63,
+ "reference_image": "breasts exposed/182.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 64,
+ "reference_image": "breasts exposed/182_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/190.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 65
+ },
+ {
+ "reference_image": "breasts exposed/196.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 66
+ },
+ {
+ "index": 67,
+ "reference_image": "breasts exposed/199.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 68,
+ "reference_image": "breasts exposed/204.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 69,
+ "reference_image": "breasts exposed/206.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 70,
+ "reference_image": "breasts exposed/207.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 71,
+ "reference_image": "breasts exposed/208.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 72,
+ "reference_image": "breasts exposed/213.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 73,
+ "reference_image": "breasts exposed/215.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 74,
+ "reference_image": "breasts exposed/218.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 75,
+ "reference_image": "breasts exposed/227.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/230.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 76
+ },
+ {
+ "index": 77,
+ "reference_image": "breasts exposed/232.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 78,
+ "reference_image": "breasts exposed/234.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 79,
+ "reference_image": "breasts exposed/234_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 80,
+ "reference_image": "breasts exposed/234_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/235.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 81
+ },
+ {
+ "index": 82,
+ "reference_image": "breasts exposed/237.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/242.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 83
+ },
+ {
+ "index": 84,
+ "reference_image": "breasts exposed/244.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 85,
+ "reference_image": "breasts exposed/248.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 86,
+ "reference_image": "breasts exposed/249.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 87,
+ "reference_image": "breasts exposed/250.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 88,
+ "reference_image": "breasts exposed/255.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/259.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 89
+ },
+ {
+ "reference_image": "breasts exposed/263.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 90
+ },
+ {
+ "index": 91,
+ "reference_image": "breasts exposed/263_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/267.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 92
+ },
+ {
+ "index": 93,
+ "reference_image": "breasts exposed/270.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/271.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 94
+ },
+ {
+ "index": 95,
+ "reference_image": "breasts exposed/273.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 96,
+ "reference_image": "breasts exposed/275.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 97,
+ "reference_image": "breasts exposed/275_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 98,
+ "reference_image": "breasts exposed/280.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 99,
+ "reference_image": "breasts exposed/280_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 100,
+ "reference_image": "breasts exposed/284.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/285.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 101
+ },
+ {
+ "index": 102,
+ "reference_image": "breasts exposed/292.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/293.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 103
+ },
+ {
+ "index": 104,
+ "reference_image": "breasts exposed/296.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 105,
+ "reference_image": "breasts exposed/296_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 106,
+ "reference_image": "breasts exposed/297.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 107,
+ "reference_image": "breasts exposed/297_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 108,
+ "reference_image": "breasts exposed/299.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 109,
+ "reference_image": "breasts exposed/300.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/302.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 110
+ },
+ {
+ "reference_image": "breasts exposed/302_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 111
+ },
+ {
+ "index": 112,
+ "reference_image": "breasts exposed/302_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 113,
+ "reference_image": "breasts exposed/304.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/305.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 114
+ },
+ {
+ "index": 115,
+ "reference_image": "breasts exposed/311.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 116,
+ "reference_image": "breasts exposed/311_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 117,
+ "reference_image": "breasts exposed/313.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 118,
+ "reference_image": "breasts exposed/320.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 119,
+ "reference_image": "breasts exposed/321.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/322.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 120
+ },
+ {
+ "reference_image": "breasts exposed/327.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 121
+ },
+ {
+ "reference_image": "breasts exposed/328.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 122
+ },
+ {
+ "index": 123,
+ "reference_image": "breasts exposed/331.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 124,
+ "reference_image": "breasts exposed/331_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/332.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 125
+ },
+ {
+ "reference_image": "breasts exposed/346.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 126
+ },
+ {
+ "index": 127,
+ "reference_image": "breasts exposed/348.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/353.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 128
+ },
+ {
+ "index": 129,
+ "reference_image": "breasts exposed/353_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 130,
+ "reference_image": "breasts exposed/359.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/368.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool.",
+ "index": 131
+ },
+ {
+ "index": 132,
+ "reference_image": "breasts exposed/369.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 133,
+ "reference_image": "breasts exposed/369_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/373.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 134
+ },
+ {
+ "index": 135,
+ "reference_image": "breasts exposed/380.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 136,
+ "reference_image": "breasts exposed/493.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 137,
+ "reference_image": "breasts exposed/493_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 138,
+ "reference_image": "breasts exposed/498.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 139,
+ "reference_image": "breasts exposed/498_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 140,
+ "reference_image": "breasts exposed/500.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 141,
+ "reference_image": "breasts exposed/505.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 142,
+ "reference_image": "breasts exposed/508.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 143,
+ "reference_image": "breasts exposed/513.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 144,
+ "reference_image": "breasts exposed/518.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/523.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset.",
+ "index": 145
+ },
+ {
+ "index": 146,
+ "reference_image": "breasts exposed/524.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 147,
+ "reference_image": "breasts exposed/526.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 148,
+ "reference_image": "breasts exposed/526_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 149,
+ "reference_image": "breasts exposed/529.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 150,
+ "reference_image": "breasts exposed/534.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 151,
+ "reference_image": "breasts exposed/545.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 152,
+ "reference_image": "breasts exposed/556.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 153,
+ "reference_image": "breasts exposed/569.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/590.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 154
+ },
+ {
+ "reference_image": "breasts exposed/590_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing.",
+ "index": 155
+ },
+ {
+ "index": 156,
+ "reference_image": "breasts exposed/594.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/594_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 157
+ },
+ {
+ "index": 158,
+ "reference_image": "breasts exposed/594_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 159,
+ "reference_image": "breasts exposed/607.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 160,
+ "reference_image": "breasts exposed/607_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 161,
+ "reference_image": "breasts exposed/608.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 162,
+ "reference_image": "breasts exposed/608_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 163,
+ "reference_image": "breasts exposed/608_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 164,
+ "reference_image": "breasts exposed/610.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 165,
+ "reference_image": "breasts exposed/610_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 166,
+ "reference_image": "breasts exposed/612.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 167,
+ "reference_image": "breasts exposed/612_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "breasts exposed/624.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset.",
+ "index": 168
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "breasts exposed/0001.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 2,
+ "reference_image": "breasts exposed/0001_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "breasts exposed/0001_3.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "breasts exposed/0002.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "breasts exposed/0002_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 6,
+ "reference_image": "breasts exposed/0002_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "breasts exposed/0003.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 8,
+ "reference_image": "breasts exposed/0005.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "breasts exposed/0006.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 10,
+ "reference_image": "breasts exposed/0007.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "breasts exposed/0007_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 12,
+ "reference_image": "breasts exposed/0007_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "breasts exposed/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "breasts exposed/0008_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 15,
+ "reference_image": "breasts exposed/0010.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "breasts exposed/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "breasts exposed/0011_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "breasts exposed/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "breasts exposed/0012_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "breasts exposed/0013.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "breasts exposed/0013_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "breasts exposed/0013_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "breasts exposed/0013_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "breasts exposed/0014.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "breasts exposed/0019.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "breasts exposed/0019_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "breasts exposed/40.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "breasts exposed/40_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "breasts exposed/44.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "breasts exposed/46.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "breasts exposed/49.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 32,
+ "reference_image": "breasts exposed/52.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "breasts exposed/56.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "breasts exposed/76.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "breasts exposed/80.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "breasts exposed/83.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 37,
+ "reference_image": "breasts exposed/91.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "breasts exposed/95.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "breasts exposed/97.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "breasts exposed/101.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 80,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "breasts exposed/101_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 42,
+ "reference_image": "breasts exposed/112.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "breasts exposed/114.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 44,
+ "reference_image": "breasts exposed/119.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 45,
+ "reference_image": "breasts exposed/119_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "breasts exposed/121.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "breasts exposed/134.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 48,
+ "reference_image": "breasts exposed/134_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "breasts exposed/138.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 50,
+ "reference_image": "breasts exposed/138_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 51,
+ "reference_image": "breasts exposed/141.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 52,
+ "reference_image": "breasts exposed/154.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 53,
+ "reference_image": "breasts exposed/155.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 54,
+ "reference_image": "breasts exposed/156.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "breasts exposed/158.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "breasts exposed/165.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 57,
+ "reference_image": "breasts exposed/168.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "breasts exposed/169.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 59,
+ "reference_image": "breasts exposed/173.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 60,
+ "reference_image": "breasts exposed/174.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "breasts exposed/175.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "breasts exposed/181.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 63,
+ "reference_image": "breasts exposed/182.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "breasts exposed/182_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "breasts exposed/190.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 66,
+ "reference_image": "breasts exposed/196.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 67,
+ "reference_image": "breasts exposed/199.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 68,
+ "reference_image": "breasts exposed/204.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 69,
+ "reference_image": "breasts exposed/206.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 70,
+ "reference_image": "breasts exposed/207.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 71,
+ "reference_image": "breasts exposed/208.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 72,
+ "reference_image": "breasts exposed/213.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 73,
+ "reference_image": "breasts exposed/215.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 74,
+ "reference_image": "breasts exposed/218.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 75,
+ "reference_image": "breasts exposed/227.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 76,
+ "reference_image": "breasts exposed/230.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 77,
+ "reference_image": "breasts exposed/232.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 78,
+ "reference_image": "breasts exposed/234.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 79,
+ "reference_image": "breasts exposed/234_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 80,
+ "reference_image": "breasts exposed/234_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 3,
+ "html_anchor": "page-03",
+ "start_index": 81,
+ "end_index": 120,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 81,
+ "reference_image": "breasts exposed/235.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 82,
+ "reference_image": "breasts exposed/237.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 83,
+ "reference_image": "breasts exposed/242.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 84,
+ "reference_image": "breasts exposed/244.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 85,
+ "reference_image": "breasts exposed/248.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 86,
+ "reference_image": "breasts exposed/249.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 87,
+ "reference_image": "breasts exposed/250.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 88,
+ "reference_image": "breasts exposed/255.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 89,
+ "reference_image": "breasts exposed/259.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 90,
+ "reference_image": "breasts exposed/263.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 91,
+ "reference_image": "breasts exposed/263_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 92,
+ "reference_image": "breasts exposed/267.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 93,
+ "reference_image": "breasts exposed/270.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 94,
+ "reference_image": "breasts exposed/271.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 95,
+ "reference_image": "breasts exposed/273.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 96,
+ "reference_image": "breasts exposed/275.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 97,
+ "reference_image": "breasts exposed/275_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 98,
+ "reference_image": "breasts exposed/280.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 99,
+ "reference_image": "breasts exposed/280_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 100,
+ "reference_image": "breasts exposed/284.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 101,
+ "reference_image": "breasts exposed/285.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 102,
+ "reference_image": "breasts exposed/292.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 103,
+ "reference_image": "breasts exposed/293.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 104,
+ "reference_image": "breasts exposed/296.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 105,
+ "reference_image": "breasts exposed/296_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 106,
+ "reference_image": "breasts exposed/297.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 107,
+ "reference_image": "breasts exposed/297_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 108,
+ "reference_image": "breasts exposed/299.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 109,
+ "reference_image": "breasts exposed/300.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 110,
+ "reference_image": "breasts exposed/302.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 111,
+ "reference_image": "breasts exposed/302_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 112,
+ "reference_image": "breasts exposed/302_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 113,
+ "reference_image": "breasts exposed/304.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 114,
+ "reference_image": "breasts exposed/305.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 115,
+ "reference_image": "breasts exposed/311.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 116,
+ "reference_image": "breasts exposed/311_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 117,
+ "reference_image": "breasts exposed/313.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 118,
+ "reference_image": "breasts exposed/320.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 119,
+ "reference_image": "breasts exposed/321.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 120,
+ "reference_image": "breasts exposed/322.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ }
+ ]
+ },
+ {
+ "page": 4,
+ "html_anchor": "page-04",
+ "start_index": 121,
+ "end_index": 160,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 121,
+ "reference_image": "breasts exposed/327.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 122,
+ "reference_image": "breasts exposed/328.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 123,
+ "reference_image": "breasts exposed/331.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 124,
+ "reference_image": "breasts exposed/331_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 125,
+ "reference_image": "breasts exposed/332.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 126,
+ "reference_image": "breasts exposed/346.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 127,
+ "reference_image": "breasts exposed/348.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 128,
+ "reference_image": "breasts exposed/353.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 129,
+ "reference_image": "breasts exposed/353_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 130,
+ "reference_image": "breasts exposed/359.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 131,
+ "reference_image": "breasts exposed/368.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "notes": "Residual-pool review found a repeated upright standing front-view display family. Seated, kneeling, side-offset, and tight crop examples remain in the mixed source pool."
+ },
+ {
+ "index": 132,
+ "reference_image": "breasts exposed/369.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 133,
+ "reference_image": "breasts exposed/369_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 134,
+ "reference_image": "breasts exposed/373.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 135,
+ "reference_image": "breasts exposed/380.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 136,
+ "reference_image": "breasts exposed/493.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 137,
+ "reference_image": "breasts exposed/493_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 138,
+ "reference_image": "breasts exposed/498.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 139,
+ "reference_image": "breasts exposed/498_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 140,
+ "reference_image": "breasts exposed/500.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 141,
+ "reference_image": "breasts exposed/505.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 142,
+ "reference_image": "breasts exposed/508.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 143,
+ "reference_image": "breasts exposed/513.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 144,
+ "reference_image": "breasts exposed/518.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 145,
+ "reference_image": "breasts exposed/523.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "notes": "Residual-pool review found a repeated seated or kneeling front-view display family. Standing, side-offset, couple/action, and tight crop examples remain outside this selected subset."
+ },
+ {
+ "index": 146,
+ "reference_image": "breasts exposed/524.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 147,
+ "reference_image": "breasts exposed/526.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 148,
+ "reference_image": "breasts exposed/526_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 149,
+ "reference_image": "breasts exposed/529.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 150,
+ "reference_image": "breasts exposed/534.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 151,
+ "reference_image": "breasts exposed/545.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 152,
+ "reference_image": "breasts exposed/556.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 153,
+ "reference_image": "breasts exposed/569.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 154,
+ "reference_image": "breasts exposed/590.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 155,
+ "reference_image": "breasts exposed/590_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "notes": "Paged review found a repeated side-offset display family with lateral torso orientation and normal third-person framing."
+ },
+ {
+ "index": 156,
+ "reference_image": "breasts exposed/594.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 157,
+ "reference_image": "breasts exposed/594_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ },
+ {
+ "index": 158,
+ "reference_image": "breasts exposed/594_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 159,
+ "reference_image": "breasts exposed/607.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 160,
+ "reference_image": "breasts exposed/607_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 5,
+ "html_anchor": "page-05",
+ "start_index": 161,
+ "end_index": 168,
+ "image_count": 8,
+ "images": [
+ {
+ "index": 161,
+ "reference_image": "breasts exposed/608.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 162,
+ "reference_image": "breasts exposed/608_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 163,
+ "reference_image": "breasts exposed/608_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 164,
+ "reference_image": "breasts exposed/610.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 165,
+ "reference_image": "breasts exposed/610_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 166,
+ "reference_image": "breasts exposed/612.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 167,
+ "reference_image": "breasts exposed/612_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 168,
+ "reference_image": "breasts exposed/624.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "notes": "Paged review found a repeated camera-facing full-body display family inside the broad mixed source folder. Seated, side-offset, and tight upper-body crops stay separate from this selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/couple_kissing_contact_sheet.html b/ab_batches/normal_camera/review/couple_kissing_contact_sheet.html
new file mode 100644
index 0000000..3593384
--- /dev/null
+++ b/ab_batches/normal_camera/review/couple_kissing_contact_sheet.html
@@ -0,0 +1,395 @@
+
+
+
+
+Normal Camera Review Contact Sheet: couple kissing
+
+
+
+Normal Camera Review Contact Sheet: couple kissing
+No-generation contact sheet. 88 JPGs from couple kissing. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: couple kissing.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 couple kissing/0001.jpgbucket: unassigned
+
+
+
+002 couple kissing/0001_2.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+003 couple kissing/0002.jpgbucket: unassigned
+
+
+
+004 couple kissing/0003.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+005 couple kissing/0005.jpgbucket: unassigned
+
+
+
+006 couple kissing/0005_2.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+007 couple kissing/0006.jpgbucket: unassigned
+
+
+
+008 couple kissing/0009.jpgbucket: unassigned
+
+
+
+009 couple kissing/0010.jpgbucket: unassigned
+
+
+
+010 couple kissing/0012.jpgbucket: unassigned
+
+
+
+011 couple kissing/0012_2.jpgbucket: unassigned
+
+
+
+012 couple kissing/0012_3.jpgbucket: unassigned
+
+
+
+013 couple kissing/0013.jpgbucket: unassigned
+
+
+
+014 couple kissing/14.jpgbucket: unassigned
+
+
+
+015 couple kissing/15.jpgbucket: unassigned
+
+
+
+016 couple kissing/16.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+017 couple kissing/0016.jpgbucket: unassigned
+
+
+
+018 couple kissing/17.jpgbucket: unassigned
+
+
+
+019 couple kissing/0018.jpgbucket: unassigned
+
+
+
+020 couple kissing/22.jpgbucket: unassigned
+
+
+
+021 couple kissing/23.jpgbucket: unassigned
+
+
+
+022 couple kissing/26.jpgbucket: unassigned
+
+
+
+023 couple kissing/29.jpgbucket: unassigned
+
+
+
+024 couple kissing/37.jpgbucket: unassigned
+
+
+
+025 couple kissing/44.jpgbucket: unassigned
+
+
+
+026 couple kissing/50.jpgbucket: unassigned
+
+
+
+027 couple kissing/56.jpgbucket: unassigned
+
+
+
+028 couple kissing/56_2.jpgbucket: unassigned
+
+
+
+029 couple kissing/63.jpgbucket: unassigned
+
+
+
+030 couple kissing/70.jpgbucket: unassigned
+
+
+
+031 couple kissing/81.jpgbucket: unassigned
+
+
+
+032 couple kissing/91.jpgbucket: unassigned
+
+
+
+033 couple kissing/91_2.jpgbucket: unassigned
+
+
+
+034 couple kissing/96.jpgbucket: unassigned
+
+
+
+035 couple kissing/122.jpgbucket: unassigned
+
+
+
+036 couple kissing/137.jpgbucket: unassigned
+
+
+
+037 couple kissing/159.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+038 couple kissing/179.jpgbucket: unassigned
+
+
+
+039 couple kissing/183.jpgbucket: unassigned
+
+
+
+040 couple kissing/195.jpgbucket: unassigned
+
+
+Page 2: 41-80
+
+
+
+041 couple kissing/204.jpgbucket: unassigned
+
+
+
+042 couple kissing/209.jpgbucket: unassigned
+
+
+
+043 couple kissing/209_2.jpgbucket: unassigned
+
+
+
+044 couple kissing/209_3.jpgbucket: unassigned
+
+
+
+045 couple kissing/233.jpgbucket: unassigned
+
+
+
+046 couple kissing/237.jpgbucket: unassigned
+
+
+
+047 couple kissing/240.jpgbucket: unassigned
+
+
+
+048 couple kissing/240_2.jpgbucket: unassigned
+
+
+
+049 couple kissing/243.jpgbucket: unassigned
+
+
+
+050 couple kissing/247.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+051 couple kissing/247_2.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+052 couple kissing/249.jpgbucket: unassigned
+
+
+
+053 couple kissing/251.jpgbucket: unassigned
+
+
+
+054 couple kissing/252.jpgbucket: unassigned
+
+
+
+055 couple kissing/253.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+056 couple kissing/253_2.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+057 couple kissing/257.jpgbucket: unassigned
+
+
+
+058 couple kissing/258.jpgbucket: unassigned
+
+
+
+059 couple kissing/269.jpgbucket: unassigned
+
+
+
+060 couple kissing/276.jpgbucket: unassigned
+
+
+
+061 couple kissing/283.jpgbucket: unassigned
+
+
+
+062 couple kissing/308.jpgbucket: unassigned
+
+
+
+063 couple kissing/308_2.jpgbucket: unassigned
+
+
+
+064 couple kissing/322.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+065 couple kissing/323.jpgbucket: unassigned
+
+
+
+066 couple kissing/340.jpgbucket: unassigned
+
+
+
+067 couple kissing/350.jpgbucket: unassigned
+
+
+
+068 couple kissing/352.jpgbucket: unassigned
+
+
+
+069 couple kissing/353.jpgbucket: unassigned
+
+
+
+070 couple kissing/354.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+071 couple kissing/354_2.jpgbucket: unassigned
+
+
+
+072 couple kissing/354_3.jpgbucket: unassigned
+
+
+
+073 couple kissing/354_4.jpgbucket: unassigned
+
+
+
+074 couple kissing/355.jpgbucket: unassigned
+
+
+
+075 couple kissing/360.jpgbucket: unassigned
+
+
+
+076 couple kissing/364.jpgbucket: unassigned
+
+
+
+077 couple kissing/366.jpgbucket: unassigned
+
+
+
+078 couple kissing/368.jpgbucket: unassigned
+
+
+
+079 couple kissing/369.jpgbucket: unassigned
+
+
+
+080 couple kissing/371.jpgbucket: unassigned
+
+
+Page 3: 81-88
+
+
+
+081 couple kissing/375.jpgbucket: unassigned
+
+
+
+082 couple kissing/379.jpgbucket: side_view / normal_couple_kissing_upright_side_profile
+
+
+
+083 couple kissing/379_2.jpgbucket: unassigned
+
+
+
+084 couple kissing/379_3.jpgbucket: unassigned
+
+
+
+085 couple kissing/503.jpgbucket: unassigned
+
+
+
+086 couple kissing/511.jpgbucket: unassigned
+
+
+
+087 couple kissing/511_2.jpgbucket: unassigned
+
+
+
+088 couple kissing/591.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/couple_kissing_review_manifest.json b/ab_batches/normal_camera/review/couple_kissing_review_manifest.json
new file mode 100644
index 0000000..9bbd96f
--- /dev/null
+++ b/ab_batches/normal_camera/review/couple_kissing_review_manifest.json
@@ -0,0 +1,1659 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "couple kissing",
+ "folder_alias": {
+ "exact_source_folder": "couple kissing",
+ "canonical_folder": "couple kissing",
+ "canonical_key": "couple_kissing",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 88,
+ "action_family": "couple",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "couple kissing/0001_2.jpg",
+ "couple kissing/0003.jpg",
+ "couple kissing/0005_2.jpg",
+ "couple kissing/16.jpg",
+ "couple kissing/159.jpg",
+ "couple kissing/247.jpg",
+ "couple kissing/247_2.jpg",
+ "couple kissing/253.jpg",
+ "couple kissing/253_2.jpg",
+ "couple kissing/322.jpg",
+ "couple kissing/354.jpg",
+ "couple kissing/379.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ }
+ ],
+ "review_items": [
+ {
+ "index": 1,
+ "reference_image": "couple kissing/0001.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/0001_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 2
+ },
+ {
+ "index": 3,
+ "reference_image": "couple kissing/0002.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 4
+ },
+ {
+ "index": 5,
+ "reference_image": "couple kissing/0005.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/0005_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 6
+ },
+ {
+ "index": 7,
+ "reference_image": "couple kissing/0006.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 8,
+ "reference_image": "couple kissing/0009.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "couple kissing/0010.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "couple kissing/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "couple kissing/0012_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "couple kissing/0012_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "couple kissing/0013.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "couple kissing/14.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "couple kissing/15.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/16.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 16
+ },
+ {
+ "index": 17,
+ "reference_image": "couple kissing/0016.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 18,
+ "reference_image": "couple kissing/17.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "couple kissing/0018.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "couple kissing/22.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "couple kissing/23.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "couple kissing/26.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "couple kissing/29.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "couple kissing/37.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "couple kissing/44.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "couple kissing/50.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "couple kissing/56.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "couple kissing/56_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "couple kissing/63.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "couple kissing/70.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "couple kissing/81.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "couple kissing/91.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "couple kissing/91_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "couple kissing/96.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "couple kissing/122.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "couple kissing/137.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/159.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 37
+ },
+ {
+ "index": 38,
+ "reference_image": "couple kissing/179.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "couple kissing/183.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "couple kissing/195.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "couple kissing/204.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "couple kissing/209.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 43,
+ "reference_image": "couple kissing/209_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 44,
+ "reference_image": "couple kissing/209_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 45,
+ "reference_image": "couple kissing/233.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "couple kissing/237.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 47,
+ "reference_image": "couple kissing/240.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 48,
+ "reference_image": "couple kissing/240_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 49,
+ "reference_image": "couple kissing/243.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/247.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 50
+ },
+ {
+ "reference_image": "couple kissing/247_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 51
+ },
+ {
+ "index": 52,
+ "reference_image": "couple kissing/249.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 53,
+ "reference_image": "couple kissing/251.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 54,
+ "reference_image": "couple kissing/252.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/253.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 55
+ },
+ {
+ "reference_image": "couple kissing/253_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 56
+ },
+ {
+ "index": 57,
+ "reference_image": "couple kissing/257.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 58,
+ "reference_image": "couple kissing/258.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 59,
+ "reference_image": "couple kissing/269.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 60,
+ "reference_image": "couple kissing/276.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "couple kissing/283.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "couple kissing/308.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 63,
+ "reference_image": "couple kissing/308_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/322.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 64
+ },
+ {
+ "index": 65,
+ "reference_image": "couple kissing/323.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 66,
+ "reference_image": "couple kissing/340.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 67,
+ "reference_image": "couple kissing/350.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 68,
+ "reference_image": "couple kissing/352.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 69,
+ "reference_image": "couple kissing/353.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/354.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 70
+ },
+ {
+ "index": 71,
+ "reference_image": "couple kissing/354_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 72,
+ "reference_image": "couple kissing/354_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 73,
+ "reference_image": "couple kissing/354_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 74,
+ "reference_image": "couple kissing/355.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 75,
+ "reference_image": "couple kissing/360.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 76,
+ "reference_image": "couple kissing/364.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 77,
+ "reference_image": "couple kissing/366.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 78,
+ "reference_image": "couple kissing/368.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 79,
+ "reference_image": "couple kissing/369.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 80,
+ "reference_image": "couple kissing/371.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 81,
+ "reference_image": "couple kissing/375.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "couple kissing/379.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool.",
+ "index": 82
+ },
+ {
+ "index": 83,
+ "reference_image": "couple kissing/379_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 84,
+ "reference_image": "couple kissing/379_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 85,
+ "reference_image": "couple kissing/503.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 86,
+ "reference_image": "couple kissing/511.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 87,
+ "reference_image": "couple kissing/511_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 88,
+ "reference_image": "couple kissing/591.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "couple kissing/0001.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 2,
+ "reference_image": "couple kissing/0001_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 3,
+ "reference_image": "couple kissing/0002.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "couple kissing/0003.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 5,
+ "reference_image": "couple kissing/0005.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "couple kissing/0005_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 7,
+ "reference_image": "couple kissing/0006.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "couple kissing/0009.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "couple kissing/0010.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "couple kissing/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "couple kissing/0012_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "couple kissing/0012_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "couple kissing/0013.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "couple kissing/14.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "couple kissing/15.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "couple kissing/16.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 17,
+ "reference_image": "couple kissing/0016.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "couple kissing/17.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "couple kissing/0018.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "couple kissing/22.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "couple kissing/23.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "couple kissing/26.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "couple kissing/29.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "couple kissing/37.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "couple kissing/44.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "couple kissing/50.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "couple kissing/56.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "couple kissing/56_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "couple kissing/63.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "couple kissing/70.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "couple kissing/81.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "couple kissing/91.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "couple kissing/91_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "couple kissing/96.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "couple kissing/122.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "couple kissing/137.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "couple kissing/159.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 38,
+ "reference_image": "couple kissing/179.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "couple kissing/183.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "couple kissing/195.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 80,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "couple kissing/204.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "couple kissing/209.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "couple kissing/209_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 44,
+ "reference_image": "couple kissing/209_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 45,
+ "reference_image": "couple kissing/233.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "couple kissing/237.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "couple kissing/240.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 48,
+ "reference_image": "couple kissing/240_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "couple kissing/243.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 50,
+ "reference_image": "couple kissing/247.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 51,
+ "reference_image": "couple kissing/247_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 52,
+ "reference_image": "couple kissing/249.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "couple kissing/251.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "couple kissing/252.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "couple kissing/253.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 56,
+ "reference_image": "couple kissing/253_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 57,
+ "reference_image": "couple kissing/257.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "couple kissing/258.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 59,
+ "reference_image": "couple kissing/269.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 60,
+ "reference_image": "couple kissing/276.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "couple kissing/283.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "couple kissing/308.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "couple kissing/308_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "couple kissing/322.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 65,
+ "reference_image": "couple kissing/323.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "couple kissing/340.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 67,
+ "reference_image": "couple kissing/350.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 68,
+ "reference_image": "couple kissing/352.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 69,
+ "reference_image": "couple kissing/353.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 70,
+ "reference_image": "couple kissing/354.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 71,
+ "reference_image": "couple kissing/354_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 72,
+ "reference_image": "couple kissing/354_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 73,
+ "reference_image": "couple kissing/354_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 74,
+ "reference_image": "couple kissing/355.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 75,
+ "reference_image": "couple kissing/360.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 76,
+ "reference_image": "couple kissing/364.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 77,
+ "reference_image": "couple kissing/366.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 78,
+ "reference_image": "couple kissing/368.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 79,
+ "reference_image": "couple kissing/369.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 80,
+ "reference_image": "couple kissing/371.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 3,
+ "html_anchor": "page-03",
+ "start_index": 81,
+ "end_index": 88,
+ "image_count": 8,
+ "images": [
+ {
+ "index": 81,
+ "reference_image": "couple kissing/375.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 82,
+ "reference_image": "couple kissing/379.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "notes": "Paged review found a repeated upright side-profile kissing family. Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ },
+ {
+ "index": 83,
+ "reference_image": "couple kissing/379_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 84,
+ "reference_image": "couple kissing/379_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 85,
+ "reference_image": "couple kissing/503.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 86,
+ "reference_image": "couple kissing/511.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 87,
+ "reference_image": "couple kissing/511_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 88,
+ "reference_image": "couple kissing/591.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/cowgirl_back_view_3_4_angle_contact_sheet.html b/ab_batches/normal_camera/review/cowgirl_back_view_3_4_angle_contact_sheet.html
new file mode 100644
index 0000000..6b4dc68
--- /dev/null
+++ b/ab_batches/normal_camera/review/cowgirl_back_view_3_4_angle_contact_sheet.html
@@ -0,0 +1,562 @@
+
+
+
+
+Normal Camera Review Contact Sheet: cowgirl - back view - 3-4 angle
+
+
+
+Normal Camera Review Contact Sheet: cowgirl - back view - 3-4 angle
+No-generation contact sheet. 129 JPGs from cowgirl - back view - 3-4 angle. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: cowgirl - back view - 3-4 angle.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 cowgirl - back view - 3-4 angle/0002.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+002 cowgirl - back view - 3-4 angle/0003.jpgbucket: unassigned
+
+
+
+003 cowgirl - back view - 3-4 angle/0003_2.jpgbucket: unassigned
+
+
+
+004 cowgirl - back view - 3-4 angle/0003_3.jpgbucket: unassigned
+
+
+
+005 cowgirl - back view - 3-4 angle/0003_4.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+006 cowgirl - back view - 3-4 angle/0003_5.jpgbucket: unassigned
+
+
+
+007 cowgirl - back view - 3-4 angle/0004.jpgbucket: unassigned
+
+
+
+008 cowgirl - back view - 3-4 angle/0004_2.jpgbucket: unassigned
+
+
+
+009 cowgirl - back view - 3-4 angle/5.jpgbucket: unassigned
+
+
+
+010 cowgirl - back view - 3-4 angle/0005.jpgbucket: unassigned
+
+
+
+011 cowgirl - back view - 3-4 angle/0006.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+012 cowgirl - back view - 3-4 angle/0006_2.jpgbucket: unassigned
+
+
+
+013 cowgirl - back view - 3-4 angle/0007.jpgbucket: unassigned
+
+
+
+014 cowgirl - back view - 3-4 angle/0007_2.jpgbucket: unassigned
+
+
+
+015 cowgirl - back view - 3-4 angle/0007_3.jpgbucket: unassigned
+
+
+
+016 cowgirl - back view - 3-4 angle/0008.jpgbucket: unassigned
+
+
+
+017 cowgirl - back view - 3-4 angle/0008_2.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+018 cowgirl - back view - 3-4 angle/0010.jpgbucket: unassigned
+
+
+
+019 cowgirl - back view - 3-4 angle/0010_2.jpgbucket: unassigned
+
+
+
+020 cowgirl - back view - 3-4 angle/0010_3.jpgbucket: unassigned
+
+
+
+021 cowgirl - back view - 3-4 angle/0011.jpgbucket: unassigned
+
+
+
+022 cowgirl - back view - 3-4 angle/0011_2.jpgbucket: unassigned
+
+
+
+023 cowgirl - back view - 3-4 angle/0011_3.jpgbucket: unassigned
+
+
+
+024 cowgirl - back view - 3-4 angle/0011_4.jpgbucket: unassigned
+
+
+
+025 cowgirl - back view - 3-4 angle/0012.jpgbucket: unassigned
+
+
+
+026 cowgirl - back view - 3-4 angle/0014.jpgbucket: unassigned
+
+
+
+027 cowgirl - back view - 3-4 angle/0015.jpgbucket: unassigned
+
+
+
+028 cowgirl - back view - 3-4 angle/16.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+029 cowgirl - back view - 3-4 angle/0017.jpgbucket: unassigned
+
+
+
+030 cowgirl - back view - 3-4 angle/18.jpgbucket: unassigned
+
+
+
+031 cowgirl - back view - 3-4 angle/0019.jpgbucket: unassigned
+
+
+
+032 cowgirl - back view - 3-4 angle/0020.jpgbucket: unassigned
+
+
+
+033 cowgirl - back view - 3-4 angle/0021.jpgbucket: unassigned
+
+
+
+034 cowgirl - back view - 3-4 angle/22.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+035 cowgirl - back view - 3-4 angle/22_2.jpgbucket: unassigned
+
+
+
+036 cowgirl - back view - 3-4 angle/28.jpgbucket: unassigned
+
+
+
+037 cowgirl - back view - 3-4 angle/29.jpgbucket: unassigned
+
+
+
+038 cowgirl - back view - 3-4 angle/40.jpgbucket: unassigned
+
+
+
+039 cowgirl - back view - 3-4 angle/41.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+040 cowgirl - back view - 3-4 angle/41_2.jpgbucket: unassigned
+
+
+Page 2: 41-80
+
+
+
+041 cowgirl - back view - 3-4 angle/61.jpgbucket: unassigned
+
+
+
+042 cowgirl - back view - 3-4 angle/62.jpgbucket: unassigned
+
+
+
+043 cowgirl - back view - 3-4 angle/64.jpgbucket: unassigned
+
+
+
+044 cowgirl - back view - 3-4 angle/74.jpgbucket: unassigned
+
+
+
+045 cowgirl - back view - 3-4 angle/74_2.jpgbucket: unassigned
+
+
+
+046 cowgirl - back view - 3-4 angle/81.jpgbucket: unassigned
+
+
+
+047 cowgirl - back view - 3-4 angle/82.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+048 cowgirl - back view - 3-4 angle/85.jpgbucket: unassigned
+
+
+
+049 cowgirl - back view - 3-4 angle/90.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+050 cowgirl - back view - 3-4 angle/109.jpgbucket: unassigned
+
+
+
+051 cowgirl - back view - 3-4 angle/119.jpgbucket: unassigned
+
+
+
+052 cowgirl - back view - 3-4 angle/122.jpgbucket: unassigned
+
+
+
+053 cowgirl - back view - 3-4 angle/133.jpgbucket: unassigned
+
+
+
+054 cowgirl - back view - 3-4 angle/137.jpgbucket: unassigned
+
+
+
+055 cowgirl - back view - 3-4 angle/145.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+056 cowgirl - back view - 3-4 angle/153.jpgbucket: unassigned
+
+
+
+057 cowgirl - back view - 3-4 angle/159.jpgbucket: unassigned
+
+
+
+058 cowgirl - back view - 3-4 angle/159_2.jpgbucket: unassigned
+
+
+
+059 cowgirl - back view - 3-4 angle/160.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+060 cowgirl - back view - 3-4 angle/161.jpgbucket: unassigned
+
+
+
+061 cowgirl - back view - 3-4 angle/168.jpgbucket: unassigned
+
+
+
+062 cowgirl - back view - 3-4 angle/171.jpgbucket: unassigned
+
+
+
+063 cowgirl - back view - 3-4 angle/172.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+064 cowgirl - back view - 3-4 angle/172_2.jpgbucket: unassigned
+
+
+
+065 cowgirl - back view - 3-4 angle/184.jpgbucket: unassigned
+
+
+
+066 cowgirl - back view - 3-4 angle/185.jpgbucket: unassigned
+
+
+
+067 cowgirl - back view - 3-4 angle/188.jpgbucket: unassigned
+
+
+
+068 cowgirl - back view - 3-4 angle/206.jpgbucket: unassigned
+
+
+
+069 cowgirl - back view - 3-4 angle/218.jpgbucket: unassigned
+
+
+
+070 cowgirl - back view - 3-4 angle/221.jpgbucket: unassigned
+
+
+
+071 cowgirl - back view - 3-4 angle/225.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+072 cowgirl - back view - 3-4 angle/226.jpgbucket: unassigned
+
+
+
+073 cowgirl - back view - 3-4 angle/227.jpgbucket: unassigned
+
+
+
+074 cowgirl - back view - 3-4 angle/232.jpgbucket: unassigned
+
+
+
+075 cowgirl - back view - 3-4 angle/233.jpgbucket: unassigned
+
+
+
+076 cowgirl - back view - 3-4 angle/237.jpgbucket: unassigned
+
+
+
+077 cowgirl - back view - 3-4 angle/241.jpgbucket: unassigned
+
+
+
+078 cowgirl - back view - 3-4 angle/241_2.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+
+079 cowgirl - back view - 3-4 angle/243.jpgbucket: unassigned
+
+
+
+080 cowgirl - back view - 3-4 angle/248.jpgbucket: back_three_quarter / normal_cowgirl_back_three_quarter
+
+
+Page 3: 81-120
+
+
+
+081 cowgirl - back view - 3-4 angle/249.jpgbucket: unassigned
+
+
+
+082 cowgirl - back view - 3-4 angle/257.jpgbucket: unassigned
+
+
+
+083 cowgirl - back view - 3-4 angle/258.jpgbucket: unassigned
+
+
+
+084 cowgirl - back view - 3-4 angle/265.jpgbucket: unassigned
+
+
+
+085 cowgirl - back view - 3-4 angle/266.jpgbucket: unassigned
+
+
+
+086 cowgirl - back view - 3-4 angle/270.jpgbucket: unassigned
+
+
+
+087 cowgirl - back view - 3-4 angle/275.jpgbucket: unassigned
+
+
+
+088 cowgirl - back view - 3-4 angle/287.jpgbucket: unassigned
+
+
+
+089 cowgirl - back view - 3-4 angle/288.jpgbucket: unassigned
+
+
+
+090 cowgirl - back view - 3-4 angle/290.jpgbucket: unassigned
+
+
+
+091 cowgirl - back view - 3-4 angle/291.jpgbucket: unassigned
+
+
+
+092 cowgirl - back view - 3-4 angle/291_2.jpgbucket: unassigned
+
+
+
+093 cowgirl - back view - 3-4 angle/292.jpgbucket: unassigned
+
+
+
+094 cowgirl - back view - 3-4 angle/298.jpgbucket: unassigned
+
+
+
+095 cowgirl - back view - 3-4 angle/302.jpgbucket: unassigned
+
+
+
+096 cowgirl - back view - 3-4 angle/305.jpgbucket: unassigned
+
+
+
+097 cowgirl - back view - 3-4 angle/307.jpgbucket: unassigned
+
+
+
+098 cowgirl - back view - 3-4 angle/319.jpgbucket: unassigned
+
+
+
+099 cowgirl - back view - 3-4 angle/319_2.jpgbucket: unassigned
+
+
+
+100 cowgirl - back view - 3-4 angle/323.jpgbucket: unassigned
+
+
+
+101 cowgirl - back view - 3-4 angle/324.jpgbucket: unassigned
+
+
+
+102 cowgirl - back view - 3-4 angle/328.jpgbucket: unassigned
+
+
+
+103 cowgirl - back view - 3-4 angle/329.jpgbucket: unassigned
+
+
+
+104 cowgirl - back view - 3-4 angle/331.jpgbucket: unassigned
+
+
+
+105 cowgirl - back view - 3-4 angle/338.jpgbucket: unassigned
+
+
+
+106 cowgirl - back view - 3-4 angle/343.jpgbucket: unassigned
+
+
+
+107 cowgirl - back view - 3-4 angle/356.jpgbucket: unassigned
+
+
+
+108 cowgirl - back view - 3-4 angle/356_2.jpgbucket: unassigned
+
+
+
+109 cowgirl - back view - 3-4 angle/369.jpgbucket: unassigned
+
+
+
+110 cowgirl - back view - 3-4 angle/371.jpgbucket: unassigned
+
+
+
+111 cowgirl - back view - 3-4 angle/499.jpgbucket: unassigned
+
+
+
+112 cowgirl - back view - 3-4 angle/533.jpgbucket: unassigned
+
+
+
+113 cowgirl - back view - 3-4 angle/537.jpgbucket: unassigned
+
+
+
+114 cowgirl - back view - 3-4 angle/547.jpgbucket: unassigned
+
+
+
+115 cowgirl - back view - 3-4 angle/549.jpgbucket: unassigned
+
+
+
+116 cowgirl - back view - 3-4 angle/549_2.jpgbucket: unassigned
+
+
+
+117 cowgirl - back view - 3-4 angle/549_3.jpgbucket: unassigned
+
+
+
+118 cowgirl - back view - 3-4 angle/591.jpgbucket: unassigned
+
+
+
+119 cowgirl - back view - 3-4 angle/596.jpgbucket: unassigned
+
+
+
+120 cowgirl - back view - 3-4 angle/597.jpgbucket: unassigned
+
+
+Page 4: 121-129
+
+
+
+121 cowgirl - back view - 3-4 angle/601.jpgbucket: unassigned
+
+
+
+122 cowgirl - back view - 3-4 angle/606.jpgbucket: unassigned
+
+
+
+123 cowgirl - back view - 3-4 angle/608.jpgbucket: unassigned
+
+
+
+124 cowgirl - back view - 3-4 angle/608_2.jpgbucket: unassigned
+
+
+
+125 cowgirl - back view - 3-4 angle/613.jpgbucket: unassigned
+
+
+
+126 cowgirl - back view - 3-4 angle/613_2.jpgbucket: unassigned
+
+
+
+127 cowgirl - back view - 3-4 angle/614.jpgbucket: unassigned
+
+
+
+128 cowgirl - back view - 3-4 angle/615.jpgbucket: unassigned
+
+
+
+129 cowgirl - back view - 3-4 angle/615_2.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/cowgirl_back_view_3_4_angle_review_manifest.json b/ab_batches/normal_camera/review/cowgirl_back_view_3_4_angle_review_manifest.json
new file mode 100644
index 0000000..f5eba9e
--- /dev/null
+++ b/ab_batches/normal_camera/review/cowgirl_back_view_3_4_angle_review_manifest.json
@@ -0,0 +1,2406 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "cowgirl - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "cowgirl - back view - 3-4 angle",
+ "canonical_folder": "cowgirl - back view - 3-4 angle",
+ "canonical_key": "cowgirl_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 129,
+ "action_family": "cowgirl",
+ "source_camera_view": "back_three_quarter",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "cowgirl - back view - 3-4 angle/0002.jpg",
+ "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "cowgirl - back view - 3-4 angle/0006.jpg",
+ "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "cowgirl - back view - 3-4 angle/16.jpg",
+ "cowgirl - back view - 3-4 angle/22.jpg",
+ "cowgirl - back view - 3-4 angle/41.jpg",
+ "cowgirl - back view - 3-4 angle/82.jpg",
+ "cowgirl - back view - 3-4 angle/90.jpg",
+ "cowgirl - back view - 3-4 angle/145.jpg",
+ "cowgirl - back view - 3-4 angle/160.jpg",
+ "cowgirl - back view - 3-4 angle/172.jpg",
+ "cowgirl - back view - 3-4 angle/225.jpg",
+ "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "cowgirl - back view - 3-4 angle/248.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/0002.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 3,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 7,
+ "reference_image": "cowgirl - back view - 3-4 angle/0004.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 8,
+ "reference_image": "cowgirl - back view - 3-4 angle/0004_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "cowgirl - back view - 3-4 angle/5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "cowgirl - back view - 3-4 angle/0005.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 11
+ },
+ {
+ "index": 12,
+ "reference_image": "cowgirl - back view - 3-4 angle/0006_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "cowgirl - back view - 3-4 angle/0007.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "cowgirl - back view - 3-4 angle/0007_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "cowgirl - back view - 3-4 angle/0007_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "cowgirl - back view - 3-4 angle/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 17
+ },
+ {
+ "index": 18,
+ "reference_image": "cowgirl - back view - 3-4 angle/0010.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "cowgirl - back view - 3-4 angle/0010_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "cowgirl - back view - 3-4 angle/0010_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "cowgirl - back view - 3-4 angle/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "cowgirl - back view - 3-4 angle/0014.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "cowgirl - back view - 3-4 angle/0015.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/16.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 28
+ },
+ {
+ "index": 29,
+ "reference_image": "cowgirl - back view - 3-4 angle/0017.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "cowgirl - back view - 3-4 angle/18.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "cowgirl - back view - 3-4 angle/0019.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "cowgirl - back view - 3-4 angle/0020.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "cowgirl - back view - 3-4 angle/0021.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/22.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 34
+ },
+ {
+ "index": 35,
+ "reference_image": "cowgirl - back view - 3-4 angle/22_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "cowgirl - back view - 3-4 angle/28.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "cowgirl - back view - 3-4 angle/29.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "cowgirl - back view - 3-4 angle/40.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/41.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 39
+ },
+ {
+ "index": 40,
+ "reference_image": "cowgirl - back view - 3-4 angle/41_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "cowgirl - back view - 3-4 angle/61.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "cowgirl - back view - 3-4 angle/62.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 43,
+ "reference_image": "cowgirl - back view - 3-4 angle/64.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 44,
+ "reference_image": "cowgirl - back view - 3-4 angle/74.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 45,
+ "reference_image": "cowgirl - back view - 3-4 angle/74_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "cowgirl - back view - 3-4 angle/81.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/82.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 47
+ },
+ {
+ "index": 48,
+ "reference_image": "cowgirl - back view - 3-4 angle/85.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/90.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 49
+ },
+ {
+ "index": 50,
+ "reference_image": "cowgirl - back view - 3-4 angle/109.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 51,
+ "reference_image": "cowgirl - back view - 3-4 angle/119.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 52,
+ "reference_image": "cowgirl - back view - 3-4 angle/122.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 53,
+ "reference_image": "cowgirl - back view - 3-4 angle/133.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 54,
+ "reference_image": "cowgirl - back view - 3-4 angle/137.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/145.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 55
+ },
+ {
+ "index": 56,
+ "reference_image": "cowgirl - back view - 3-4 angle/153.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 57,
+ "reference_image": "cowgirl - back view - 3-4 angle/159.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 58,
+ "reference_image": "cowgirl - back view - 3-4 angle/159_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/160.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 59
+ },
+ {
+ "index": 60,
+ "reference_image": "cowgirl - back view - 3-4 angle/161.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "cowgirl - back view - 3-4 angle/168.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "cowgirl - back view - 3-4 angle/171.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/172.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 63
+ },
+ {
+ "index": 64,
+ "reference_image": "cowgirl - back view - 3-4 angle/172_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 65,
+ "reference_image": "cowgirl - back view - 3-4 angle/184.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 66,
+ "reference_image": "cowgirl - back view - 3-4 angle/185.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 67,
+ "reference_image": "cowgirl - back view - 3-4 angle/188.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 68,
+ "reference_image": "cowgirl - back view - 3-4 angle/206.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 69,
+ "reference_image": "cowgirl - back view - 3-4 angle/218.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 70,
+ "reference_image": "cowgirl - back view - 3-4 angle/221.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/225.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 71
+ },
+ {
+ "index": 72,
+ "reference_image": "cowgirl - back view - 3-4 angle/226.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 73,
+ "reference_image": "cowgirl - back view - 3-4 angle/227.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 74,
+ "reference_image": "cowgirl - back view - 3-4 angle/232.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 75,
+ "reference_image": "cowgirl - back view - 3-4 angle/233.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 76,
+ "reference_image": "cowgirl - back view - 3-4 angle/237.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 77,
+ "reference_image": "cowgirl - back view - 3-4 angle/241.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 78
+ },
+ {
+ "index": 79,
+ "reference_image": "cowgirl - back view - 3-4 angle/243.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - back view - 3-4 angle/248.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route.",
+ "index": 80
+ },
+ {
+ "index": 81,
+ "reference_image": "cowgirl - back view - 3-4 angle/249.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 82,
+ "reference_image": "cowgirl - back view - 3-4 angle/257.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 83,
+ "reference_image": "cowgirl - back view - 3-4 angle/258.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 84,
+ "reference_image": "cowgirl - back view - 3-4 angle/265.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 85,
+ "reference_image": "cowgirl - back view - 3-4 angle/266.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 86,
+ "reference_image": "cowgirl - back view - 3-4 angle/270.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 87,
+ "reference_image": "cowgirl - back view - 3-4 angle/275.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 88,
+ "reference_image": "cowgirl - back view - 3-4 angle/287.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 89,
+ "reference_image": "cowgirl - back view - 3-4 angle/288.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 90,
+ "reference_image": "cowgirl - back view - 3-4 angle/290.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 91,
+ "reference_image": "cowgirl - back view - 3-4 angle/291.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 92,
+ "reference_image": "cowgirl - back view - 3-4 angle/291_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 93,
+ "reference_image": "cowgirl - back view - 3-4 angle/292.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 94,
+ "reference_image": "cowgirl - back view - 3-4 angle/298.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 95,
+ "reference_image": "cowgirl - back view - 3-4 angle/302.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 96,
+ "reference_image": "cowgirl - back view - 3-4 angle/305.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 97,
+ "reference_image": "cowgirl - back view - 3-4 angle/307.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 98,
+ "reference_image": "cowgirl - back view - 3-4 angle/319.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 99,
+ "reference_image": "cowgirl - back view - 3-4 angle/319_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 100,
+ "reference_image": "cowgirl - back view - 3-4 angle/323.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 101,
+ "reference_image": "cowgirl - back view - 3-4 angle/324.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 102,
+ "reference_image": "cowgirl - back view - 3-4 angle/328.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 103,
+ "reference_image": "cowgirl - back view - 3-4 angle/329.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 104,
+ "reference_image": "cowgirl - back view - 3-4 angle/331.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 105,
+ "reference_image": "cowgirl - back view - 3-4 angle/338.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 106,
+ "reference_image": "cowgirl - back view - 3-4 angle/343.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 107,
+ "reference_image": "cowgirl - back view - 3-4 angle/356.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 108,
+ "reference_image": "cowgirl - back view - 3-4 angle/356_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 109,
+ "reference_image": "cowgirl - back view - 3-4 angle/369.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 110,
+ "reference_image": "cowgirl - back view - 3-4 angle/371.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 111,
+ "reference_image": "cowgirl - back view - 3-4 angle/499.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 112,
+ "reference_image": "cowgirl - back view - 3-4 angle/533.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 113,
+ "reference_image": "cowgirl - back view - 3-4 angle/537.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 114,
+ "reference_image": "cowgirl - back view - 3-4 angle/547.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 115,
+ "reference_image": "cowgirl - back view - 3-4 angle/549.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 116,
+ "reference_image": "cowgirl - back view - 3-4 angle/549_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 117,
+ "reference_image": "cowgirl - back view - 3-4 angle/549_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 118,
+ "reference_image": "cowgirl - back view - 3-4 angle/591.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 119,
+ "reference_image": "cowgirl - back view - 3-4 angle/596.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 120,
+ "reference_image": "cowgirl - back view - 3-4 angle/597.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 121,
+ "reference_image": "cowgirl - back view - 3-4 angle/601.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 122,
+ "reference_image": "cowgirl - back view - 3-4 angle/606.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 123,
+ "reference_image": "cowgirl - back view - 3-4 angle/608.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 124,
+ "reference_image": "cowgirl - back view - 3-4 angle/608_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 125,
+ "reference_image": "cowgirl - back view - 3-4 angle/613.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 126,
+ "reference_image": "cowgirl - back view - 3-4 angle/613_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 127,
+ "reference_image": "cowgirl - back view - 3-4 angle/614.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 128,
+ "reference_image": "cowgirl - back view - 3-4 angle/615.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 129,
+ "reference_image": "cowgirl - back view - 3-4 angle/615_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "cowgirl - back view - 3-4 angle/0002.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 2,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 6,
+ "reference_image": "cowgirl - back view - 3-4 angle/0003_5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "cowgirl - back view - 3-4 angle/0004.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "cowgirl - back view - 3-4 angle/0004_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "cowgirl - back view - 3-4 angle/5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "cowgirl - back view - 3-4 angle/0005.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "cowgirl - back view - 3-4 angle/0006.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 12,
+ "reference_image": "cowgirl - back view - 3-4 angle/0006_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "cowgirl - back view - 3-4 angle/0007.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "cowgirl - back view - 3-4 angle/0007_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "cowgirl - back view - 3-4 angle/0007_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "cowgirl - back view - 3-4 angle/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 18,
+ "reference_image": "cowgirl - back view - 3-4 angle/0010.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "cowgirl - back view - 3-4 angle/0010_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "cowgirl - back view - 3-4 angle/0010_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "cowgirl - back view - 3-4 angle/0011_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "cowgirl - back view - 3-4 angle/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "cowgirl - back view - 3-4 angle/0014.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "cowgirl - back view - 3-4 angle/0015.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "cowgirl - back view - 3-4 angle/16.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 29,
+ "reference_image": "cowgirl - back view - 3-4 angle/0017.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "cowgirl - back view - 3-4 angle/18.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "cowgirl - back view - 3-4 angle/0019.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "cowgirl - back view - 3-4 angle/0020.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "cowgirl - back view - 3-4 angle/0021.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "cowgirl - back view - 3-4 angle/22.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 35,
+ "reference_image": "cowgirl - back view - 3-4 angle/22_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "cowgirl - back view - 3-4 angle/28.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "cowgirl - back view - 3-4 angle/29.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "cowgirl - back view - 3-4 angle/40.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "cowgirl - back view - 3-4 angle/41.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 40,
+ "reference_image": "cowgirl - back view - 3-4 angle/41_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 80,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "cowgirl - back view - 3-4 angle/61.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "cowgirl - back view - 3-4 angle/62.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "cowgirl - back view - 3-4 angle/64.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 44,
+ "reference_image": "cowgirl - back view - 3-4 angle/74.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 45,
+ "reference_image": "cowgirl - back view - 3-4 angle/74_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "cowgirl - back view - 3-4 angle/81.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "cowgirl - back view - 3-4 angle/82.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 48,
+ "reference_image": "cowgirl - back view - 3-4 angle/85.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "cowgirl - back view - 3-4 angle/90.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 50,
+ "reference_image": "cowgirl - back view - 3-4 angle/109.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 51,
+ "reference_image": "cowgirl - back view - 3-4 angle/119.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 52,
+ "reference_image": "cowgirl - back view - 3-4 angle/122.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "cowgirl - back view - 3-4 angle/133.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "cowgirl - back view - 3-4 angle/137.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "cowgirl - back view - 3-4 angle/145.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 56,
+ "reference_image": "cowgirl - back view - 3-4 angle/153.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 57,
+ "reference_image": "cowgirl - back view - 3-4 angle/159.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "cowgirl - back view - 3-4 angle/159_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 59,
+ "reference_image": "cowgirl - back view - 3-4 angle/160.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 60,
+ "reference_image": "cowgirl - back view - 3-4 angle/161.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "cowgirl - back view - 3-4 angle/168.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "cowgirl - back view - 3-4 angle/171.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "cowgirl - back view - 3-4 angle/172.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 64,
+ "reference_image": "cowgirl - back view - 3-4 angle/172_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "cowgirl - back view - 3-4 angle/184.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "cowgirl - back view - 3-4 angle/185.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 67,
+ "reference_image": "cowgirl - back view - 3-4 angle/188.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 68,
+ "reference_image": "cowgirl - back view - 3-4 angle/206.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 69,
+ "reference_image": "cowgirl - back view - 3-4 angle/218.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 70,
+ "reference_image": "cowgirl - back view - 3-4 angle/221.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 71,
+ "reference_image": "cowgirl - back view - 3-4 angle/225.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 72,
+ "reference_image": "cowgirl - back view - 3-4 angle/226.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 73,
+ "reference_image": "cowgirl - back view - 3-4 angle/227.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 74,
+ "reference_image": "cowgirl - back view - 3-4 angle/232.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 75,
+ "reference_image": "cowgirl - back view - 3-4 angle/233.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 76,
+ "reference_image": "cowgirl - back view - 3-4 angle/237.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 77,
+ "reference_image": "cowgirl - back view - 3-4 angle/241.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 78,
+ "reference_image": "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ },
+ {
+ "index": 79,
+ "reference_image": "cowgirl - back view - 3-4 angle/243.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 80,
+ "reference_image": "cowgirl - back view - 3-4 angle/248.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing route as a broad but coherent rear three-quarter cowgirl family. References were expanded rather than splitting a near-duplicate route."
+ }
+ ]
+ },
+ {
+ "page": 3,
+ "html_anchor": "page-03",
+ "start_index": 81,
+ "end_index": 120,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 81,
+ "reference_image": "cowgirl - back view - 3-4 angle/249.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 82,
+ "reference_image": "cowgirl - back view - 3-4 angle/257.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 83,
+ "reference_image": "cowgirl - back view - 3-4 angle/258.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 84,
+ "reference_image": "cowgirl - back view - 3-4 angle/265.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 85,
+ "reference_image": "cowgirl - back view - 3-4 angle/266.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 86,
+ "reference_image": "cowgirl - back view - 3-4 angle/270.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 87,
+ "reference_image": "cowgirl - back view - 3-4 angle/275.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 88,
+ "reference_image": "cowgirl - back view - 3-4 angle/287.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 89,
+ "reference_image": "cowgirl - back view - 3-4 angle/288.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 90,
+ "reference_image": "cowgirl - back view - 3-4 angle/290.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 91,
+ "reference_image": "cowgirl - back view - 3-4 angle/291.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 92,
+ "reference_image": "cowgirl - back view - 3-4 angle/291_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 93,
+ "reference_image": "cowgirl - back view - 3-4 angle/292.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 94,
+ "reference_image": "cowgirl - back view - 3-4 angle/298.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 95,
+ "reference_image": "cowgirl - back view - 3-4 angle/302.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 96,
+ "reference_image": "cowgirl - back view - 3-4 angle/305.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 97,
+ "reference_image": "cowgirl - back view - 3-4 angle/307.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 98,
+ "reference_image": "cowgirl - back view - 3-4 angle/319.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 99,
+ "reference_image": "cowgirl - back view - 3-4 angle/319_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 100,
+ "reference_image": "cowgirl - back view - 3-4 angle/323.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 101,
+ "reference_image": "cowgirl - back view - 3-4 angle/324.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 102,
+ "reference_image": "cowgirl - back view - 3-4 angle/328.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 103,
+ "reference_image": "cowgirl - back view - 3-4 angle/329.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 104,
+ "reference_image": "cowgirl - back view - 3-4 angle/331.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 105,
+ "reference_image": "cowgirl - back view - 3-4 angle/338.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 106,
+ "reference_image": "cowgirl - back view - 3-4 angle/343.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 107,
+ "reference_image": "cowgirl - back view - 3-4 angle/356.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 108,
+ "reference_image": "cowgirl - back view - 3-4 angle/356_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 109,
+ "reference_image": "cowgirl - back view - 3-4 angle/369.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 110,
+ "reference_image": "cowgirl - back view - 3-4 angle/371.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 111,
+ "reference_image": "cowgirl - back view - 3-4 angle/499.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 112,
+ "reference_image": "cowgirl - back view - 3-4 angle/533.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 113,
+ "reference_image": "cowgirl - back view - 3-4 angle/537.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 114,
+ "reference_image": "cowgirl - back view - 3-4 angle/547.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 115,
+ "reference_image": "cowgirl - back view - 3-4 angle/549.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 116,
+ "reference_image": "cowgirl - back view - 3-4 angle/549_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 117,
+ "reference_image": "cowgirl - back view - 3-4 angle/549_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 118,
+ "reference_image": "cowgirl - back view - 3-4 angle/591.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 119,
+ "reference_image": "cowgirl - back view - 3-4 angle/596.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 120,
+ "reference_image": "cowgirl - back view - 3-4 angle/597.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 4,
+ "html_anchor": "page-04",
+ "start_index": 121,
+ "end_index": 129,
+ "image_count": 9,
+ "images": [
+ {
+ "index": 121,
+ "reference_image": "cowgirl - back view - 3-4 angle/601.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 122,
+ "reference_image": "cowgirl - back view - 3-4 angle/606.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 123,
+ "reference_image": "cowgirl - back view - 3-4 angle/608.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 124,
+ "reference_image": "cowgirl - back view - 3-4 angle/608_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 125,
+ "reference_image": "cowgirl - back view - 3-4 angle/613.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 126,
+ "reference_image": "cowgirl - back view - 3-4 angle/613_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 127,
+ "reference_image": "cowgirl - back view - 3-4 angle/614.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 128,
+ "reference_image": "cowgirl - back view - 3-4 angle/615.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 129,
+ "reference_image": "cowgirl - back view - 3-4 angle/615_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/cowgirl_side_view_contact_sheet.html b/ab_batches/normal_camera/review/cowgirl_side_view_contact_sheet.html
new file mode 100644
index 0000000..791fa4d
--- /dev/null
+++ b/ab_batches/normal_camera/review/cowgirl_side_view_contact_sheet.html
@@ -0,0 +1,173 @@
+
+
+
+
+Normal Camera Review Contact Sheet: cowgirl - side view
+
+
+
+Normal Camera Review Contact Sheet: cowgirl - side view
+No-generation contact sheet. 34 JPGs from cowgirl - side view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: cowgirl - side view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-34
+
+
+
+001 cowgirl - side view/2.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+002 cowgirl - side view/2_2.jpgbucket: unassigned
+
+
+
+003 cowgirl - side view/0003.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+004 cowgirl - side view/0004.jpgbucket: unassigned
+
+
+
+005 cowgirl - side view/0004_2.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+006 cowgirl - side view/0005.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+007 cowgirl - side view/0006.jpgbucket: unassigned
+
+
+
+008 cowgirl - side view/0007.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+009 cowgirl - side view/0009.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+010 cowgirl - side view/0011.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+011 cowgirl - side view/0014.jpgbucket: unassigned
+
+
+
+012 cowgirl - side view/0015.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+013 cowgirl - side view/29.jpgbucket: unassigned
+
+
+
+014 cowgirl - side view/40.jpgbucket: unassigned
+
+
+
+015 cowgirl - side view/55.jpgbucket: unassigned
+
+
+
+016 cowgirl - side view/86.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+017 cowgirl - side view/86_2.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+018 cowgirl - side view/118.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+019 cowgirl - side view/195.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+020 cowgirl - side view/200.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+021 cowgirl - side view/255.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+022 cowgirl - side view/265.jpgbucket: unassigned
+
+
+
+023 cowgirl - side view/271.jpgbucket: unassigned
+
+
+
+024 cowgirl - side view/280.jpgbucket: side_view / normal_cowgirl_side_profile
+
+
+
+025 cowgirl - side view/303.jpgbucket: unassigned
+
+
+
+026 cowgirl - side view/315.jpgbucket: unassigned
+
+
+
+027 cowgirl - side view/319.jpgbucket: unassigned
+
+
+
+028 cowgirl - side view/338.jpgbucket: unassigned
+
+
+
+029 cowgirl - side view/353.jpgbucket: unassigned
+
+
+
+030 cowgirl - side view/364.jpgbucket: unassigned
+
+
+
+031 cowgirl - side view/364_2.jpgbucket: unassigned
+
+
+
+032 cowgirl - side view/375.jpgbucket: unassigned
+
+
+
+033 cowgirl - side view/593.jpgbucket: unassigned
+
+
+
+034 cowgirl - side view/606.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/cowgirl_side_view_review_manifest.json b/ab_batches/normal_camera/review/cowgirl_side_view_review_manifest.json
new file mode 100644
index 0000000..86dba03
--- /dev/null
+++ b/ab_batches/normal_camera/review/cowgirl_side_view_review_manifest.json
@@ -0,0 +1,669 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "cowgirl - side view",
+ "folder_alias": {
+ "exact_source_folder": "cowgirl - side view",
+ "canonical_folder": "cowgirl - side view",
+ "canonical_key": "cowgirl_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 34,
+ "action_family": "cowgirl",
+ "source_camera_view": "side_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_cowgirl_side_profile",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "cowgirl - side view/0003.jpg",
+ "cowgirl - side view/0004_2.jpg",
+ "cowgirl - side view/0005.jpg",
+ "cowgirl - side view/0007.jpg",
+ "cowgirl - side view/0009.jpg",
+ "cowgirl - side view/0011.jpg",
+ "cowgirl - side view/0015.jpg",
+ "cowgirl - side view/118.jpg",
+ "cowgirl - side view/195.jpg",
+ "cowgirl - side view/2.jpg",
+ "cowgirl - side view/200.jpg",
+ "cowgirl - side view/255.jpg",
+ "cowgirl - side view/280.jpg",
+ "cowgirl - side view/86.jpg",
+ "cowgirl - side view/86_2.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "cowgirl - side view/2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "cowgirl - side view/2_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - side view/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 3
+ },
+ {
+ "index": 4,
+ "reference_image": "cowgirl - side view/0004.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - side view/0004_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "cowgirl - side view/0005.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 6
+ },
+ {
+ "index": 7,
+ "reference_image": "cowgirl - side view/0006.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - side view/0007.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 8
+ },
+ {
+ "reference_image": "cowgirl - side view/0009.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 9
+ },
+ {
+ "reference_image": "cowgirl - side view/0011.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 10
+ },
+ {
+ "index": 11,
+ "reference_image": "cowgirl - side view/0014.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - side view/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 12
+ },
+ {
+ "index": 13,
+ "reference_image": "cowgirl - side view/29.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "cowgirl - side view/40.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "cowgirl - side view/55.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - side view/86.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 16
+ },
+ {
+ "reference_image": "cowgirl - side view/86_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 17
+ },
+ {
+ "reference_image": "cowgirl - side view/118.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 18
+ },
+ {
+ "reference_image": "cowgirl - side view/195.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 19
+ },
+ {
+ "reference_image": "cowgirl - side view/200.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 20
+ },
+ {
+ "reference_image": "cowgirl - side view/255.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 21
+ },
+ {
+ "index": 22,
+ "reference_image": "cowgirl - side view/265.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "cowgirl - side view/271.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "cowgirl - side view/280.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_cowgirl_side_profile",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset.",
+ "index": 24
+ },
+ {
+ "index": 25,
+ "reference_image": "cowgirl - side view/303.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "cowgirl - side view/315.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "cowgirl - side view/319.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "cowgirl - side view/338.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "cowgirl - side view/353.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "cowgirl - side view/364.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "cowgirl - side view/364_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "cowgirl - side view/375.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "cowgirl - side view/593.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "cowgirl - side view/606.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 34,
+ "image_count": 34,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "cowgirl - side view/2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "cowgirl - side view/2_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "cowgirl - side view/0003.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "cowgirl - side view/0004.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "cowgirl - side view/0004_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "cowgirl - side view/0005.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "cowgirl - side view/0006.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "cowgirl - side view/0007.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 9,
+ "reference_image": "cowgirl - side view/0009.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 10,
+ "reference_image": "cowgirl - side view/0011.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 11,
+ "reference_image": "cowgirl - side view/0014.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "cowgirl - side view/0015.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 13,
+ "reference_image": "cowgirl - side view/29.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "cowgirl - side view/40.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "cowgirl - side view/55.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "cowgirl - side view/86.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 17,
+ "reference_image": "cowgirl - side view/86_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "cowgirl - side view/118.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 19,
+ "reference_image": "cowgirl - side view/195.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 20,
+ "reference_image": "cowgirl - side view/200.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 21,
+ "reference_image": "cowgirl - side view/255.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 22,
+ "reference_image": "cowgirl - side view/265.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "cowgirl - side view/271.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "cowgirl - side view/280.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_cowgirl_side_profile",
+ "notes": "Residual-pool review confirmed the existing side-profile cowgirl route as a coherent lateral camera family. References were expanded while front-drifting, rear-drifting, and tight-crop examples remain outside the selected subset."
+ },
+ {
+ "index": 25,
+ "reference_image": "cowgirl - side view/303.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "cowgirl - side view/315.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "cowgirl - side view/319.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "cowgirl - side view/338.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "cowgirl - side view/353.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "cowgirl - side view/364.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "cowgirl - side view/364_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "cowgirl - side view/375.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "cowgirl - side view/593.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "cowgirl - side view/606.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/doggy_all_four_front_view_contact_sheet.html b/ab_batches/normal_camera/review/doggy_all_four_front_view_contact_sheet.html
new file mode 100644
index 0000000..5bc33d2
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_all_four_front_view_contact_sheet.html
@@ -0,0 +1,149 @@
+
+
+
+
+Normal Camera Review Contact Sheet: doggy all four - front view
+
+
+
+Normal Camera Review Contact Sheet: doggy all four - front view
+No-generation contact sheet. 28 JPGs from doggy all four - front view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: doggy all four - front view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-28
+
+
+
+001 doggy all four - front view/0016.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+002 doggy all four - front view/48.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+003 doggy all four - front view/58.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+004 doggy all four - front view/64.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+005 doggy all four - front view/69.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+006 doggy all four - front view/77.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+007 doggy all four - front view/83.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+008 doggy all four - front view/85.jpgbucket: unassigned
+
+
+
+009 doggy all four - front view/91.jpgbucket: unassigned
+
+
+
+010 doggy all four - front view/96.jpgbucket: unassigned
+
+
+
+011 doggy all four - front view/97.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+012 doggy all four - front view/164.jpgbucket: unassigned
+
+
+
+013 doggy all four - front view/171.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+014 doggy all four - front view/175.jpgbucket: unassigned
+
+
+
+015 doggy all four - front view/184.jpgbucket: unassigned
+
+
+
+016 doggy all four - front view/194.jpgbucket: unassigned
+
+
+
+017 doggy all four - front view/197.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+018 doggy all four - front view/200.jpgbucket: unassigned
+
+
+
+019 doggy all four - front view/204.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+020 doggy all four - front view/213.jpgbucket: unassigned
+
+
+
+021 doggy all four - front view/221.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+022 doggy all four - front view/243.jpgbucket: unassigned
+
+
+
+023 doggy all four - front view/269.jpgbucket: unassigned
+
+
+
+024 doggy all four - front view/273.jpgbucket: unassigned
+
+
+
+025 doggy all four - front view/290.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+026 doggy all four - front view/305.jpgbucket: unassigned
+
+
+
+027 doggy all four - front view/596.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+028 doggy all four - front view/598.jpgbucket: front_view / normal_doggy_all_fours_front_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/doggy_all_four_front_view_review_manifest.json b/ab_batches/normal_camera/review/doggy_all_four_front_view_review_manifest.json
new file mode 100644
index 0000000..9e0302d
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_all_four_front_view_review_manifest.json
@@ -0,0 +1,561 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "doggy all four - front view",
+ "folder_alias": {
+ "exact_source_folder": "doggy all four - front view",
+ "canonical_folder": "doggy all four - front view",
+ "canonical_key": "doggy_all_four_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 28,
+ "action_family": "doggy",
+ "source_camera_view": "front_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy all four - front view/0016.jpg",
+ "doggy all four - front view/48.jpg",
+ "doggy all four - front view/58.jpg",
+ "doggy all four - front view/64.jpg",
+ "doggy all four - front view/69.jpg",
+ "doggy all four - front view/77.jpg",
+ "doggy all four - front view/83.jpg",
+ "doggy all four - front view/97.jpg",
+ "doggy all four - front view/171.jpg",
+ "doggy all four - front view/197.jpg",
+ "doggy all four - front view/204.jpg",
+ "doggy all four - front view/221.jpg",
+ "doggy all four - front view/290.jpg",
+ "doggy all four - front view/596.jpg",
+ "doggy all four - front view/598.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "doggy all four - front view/0016.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "doggy all four - front view/48.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 2
+ },
+ {
+ "reference_image": "doggy all four - front view/58.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "doggy all four - front view/64.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "doggy all four - front view/69.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "doggy all four - front view/77.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 6
+ },
+ {
+ "reference_image": "doggy all four - front view/83.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy all four - front view/85.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy all four - front view/91.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy all four - front view/96.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy all four - front view/97.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 11
+ },
+ {
+ "index": 12,
+ "reference_image": "doggy all four - front view/164.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy all four - front view/171.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 13
+ },
+ {
+ "index": 14,
+ "reference_image": "doggy all four - front view/175.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "doggy all four - front view/184.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "doggy all four - front view/194.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy all four - front view/197.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 17
+ },
+ {
+ "index": 18,
+ "reference_image": "doggy all four - front view/200.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy all four - front view/204.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 19
+ },
+ {
+ "index": 20,
+ "reference_image": "doggy all four - front view/213.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy all four - front view/221.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 21
+ },
+ {
+ "index": 22,
+ "reference_image": "doggy all four - front view/243.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "doggy all four - front view/269.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "doggy all four - front view/273.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy all four - front view/290.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 25
+ },
+ {
+ "index": 26,
+ "reference_image": "doggy all four - front view/305.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy all four - front view/596.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 27
+ },
+ {
+ "reference_image": "doggy all four - front view/598.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset.",
+ "index": 28
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 28,
+ "image_count": 28,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "doggy all four - front view/0016.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "doggy all four - front view/48.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy all four - front view/58.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy all four - front view/64.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy all four - front view/69.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "doggy all four - front view/77.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy all four - front view/83.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy all four - front view/85.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy all four - front view/91.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy all four - front view/96.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "doggy all four - front view/97.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 12,
+ "reference_image": "doggy all four - front view/164.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "doggy all four - front view/171.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 14,
+ "reference_image": "doggy all four - front view/175.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "doggy all four - front view/184.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "doggy all four - front view/194.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "doggy all four - front view/197.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "doggy all four - front view/200.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "doggy all four - front view/204.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 20,
+ "reference_image": "doggy all four - front view/213.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "doggy all four - front view/221.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 22,
+ "reference_image": "doggy all four - front view/243.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "doggy all four - front view/269.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "doggy all four - front view/273.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "doggy all four - front view/290.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 26,
+ "reference_image": "doggy all four - front view/305.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "doggy all four - front view/596.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 28,
+ "reference_image": "doggy all four - front view/598.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "notes": "Residual-pool review confirmed a repeated front all-fours normal-camera family with face and forearms readable in front while the partner remains behind. Side-drifting, seated, tight-close, and vertical-crop outliers remain outside the selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/doggy_back_view_3_4_angle_contact_sheet.html b/ab_batches/normal_camera/review/doggy_back_view_3_4_angle_contact_sheet.html
new file mode 100644
index 0000000..e9bbb3a
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_back_view_3_4_angle_contact_sheet.html
@@ -0,0 +1,177 @@
+
+
+
+
+Normal Camera Review Contact Sheet: doggy - back view - 3-4 angle
+
+
+
+Normal Camera Review Contact Sheet: doggy - back view - 3-4 angle
+No-generation contact sheet. 35 JPGs from doggy - back view - 3-4 angle. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: doggy - back view - 3-4 angle.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-35
+
+
+
+001 doggy - back view - 3-4 angle/0002.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+002 doggy - back view - 3-4 angle/0002_2.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+003 doggy - back view - 3-4 angle/5.jpgbucket: unassigned
+
+
+
+004 doggy - back view - 3-4 angle/0005.jpgbucket: unassigned
+
+
+
+005 doggy - back view - 3-4 angle/0008.jpgbucket: unassigned
+
+
+
+006 doggy - back view - 3-4 angle/0008_2.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+007 doggy - back view - 3-4 angle/0012.jpgbucket: unassigned
+
+
+
+008 doggy - back view - 3-4 angle/0013.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+009 doggy - back view - 3-4 angle/14.jpgbucket: unassigned
+
+
+
+010 doggy - back view - 3-4 angle/0014.jpgbucket: unassigned
+
+
+
+011 doggy - back view - 3-4 angle/0015.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+012 doggy - back view - 3-4 angle/0017.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+013 doggy - back view - 3-4 angle/0021.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+014 doggy - back view - 3-4 angle/27.jpgbucket: unassigned
+
+
+
+015 doggy - back view - 3-4 angle/39.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+016 doggy - back view - 3-4 angle/41.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+017 doggy - back view - 3-4 angle/77.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+018 doggy - back view - 3-4 angle/132.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+019 doggy - back view - 3-4 angle/137.jpgbucket: unassigned
+
+
+
+020 doggy - back view - 3-4 angle/145.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+021 doggy - back view - 3-4 angle/161.jpgbucket: unassigned
+
+
+
+022 doggy - back view - 3-4 angle/183.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+023 doggy - back view - 3-4 angle/185.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+024 doggy - back view - 3-4 angle/227.jpgbucket: back_three_quarter / normal_doggy_generic_back_three_quarter
+
+
+
+025 doggy - back view - 3-4 angle/324.jpgbucket: unassigned
+
+
+
+026 doggy - back view - 3-4 angle/499.jpgbucket: unassigned
+
+
+
+027 doggy - back view - 3-4 angle/503.jpgbucket: unassigned
+
+
+
+028 doggy - back view - 3-4 angle/516.jpgbucket: unassigned
+
+
+
+029 doggy - back view - 3-4 angle/532.jpgbucket: unassigned
+
+
+
+030 doggy - back view - 3-4 angle/547.jpgbucket: unassigned
+
+
+
+031 doggy - back view - 3-4 angle/552.jpgbucket: unassigned
+
+
+
+032 doggy - back view - 3-4 angle/566.jpgbucket: unassigned
+
+
+
+033 doggy - back view - 3-4 angle/566_2.jpgbucket: unassigned
+
+
+
+034 doggy - back view - 3-4 angle/597.jpgbucket: unassigned
+
+
+
+035 doggy - back view - 3-4 angle/617.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/doggy_back_view_3_4_angle_review_manifest.json b/ab_batches/normal_camera/review/doggy_back_view_3_4_angle_review_manifest.json
new file mode 100644
index 0000000..6db8ef4
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_back_view_3_4_angle_review_manifest.json
@@ -0,0 +1,687 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "doggy - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "doggy - back view - 3-4 angle",
+ "canonical_folder": "doggy - back view - 3-4 angle",
+ "canonical_key": "doggy_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 35,
+ "action_family": "doggy",
+ "source_camera_view": "back_three_quarter",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy - back view - 3-4 angle/0002.jpg",
+ "doggy - back view - 3-4 angle/0002_2.jpg",
+ "doggy - back view - 3-4 angle/0008_2.jpg",
+ "doggy - back view - 3-4 angle/0013.jpg",
+ "doggy - back view - 3-4 angle/0015.jpg",
+ "doggy - back view - 3-4 angle/0017.jpg",
+ "doggy - back view - 3-4 angle/0021.jpg",
+ "doggy - back view - 3-4 angle/132.jpg",
+ "doggy - back view - 3-4 angle/145.jpg",
+ "doggy - back view - 3-4 angle/183.jpg",
+ "doggy - back view - 3-4 angle/185.jpg",
+ "doggy - back view - 3-4 angle/227.jpg",
+ "doggy - back view - 3-4 angle/39.jpg",
+ "doggy - back view - 3-4 angle/41.jpg",
+ "doggy - back view - 3-4 angle/77.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "doggy - back view - 3-4 angle/0002.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/0002_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 2
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy - back view - 3-4 angle/5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy - back view - 3-4 angle/0005.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy - back view - 3-4 angle/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/0008_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 6
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy - back view - 3-4 angle/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/0013.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 8
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy - back view - 3-4 angle/14.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy - back view - 3-4 angle/0014.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 11
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/0017.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 12
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/0021.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 13
+ },
+ {
+ "index": 14,
+ "reference_image": "doggy - back view - 3-4 angle/27.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/39.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 15
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/41.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 16
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/77.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 17
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/132.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 18
+ },
+ {
+ "index": 19,
+ "reference_image": "doggy - back view - 3-4 angle/137.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/145.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 20
+ },
+ {
+ "index": 21,
+ "reference_image": "doggy - back view - 3-4 angle/161.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/183.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 22
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/185.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 23
+ },
+ {
+ "reference_image": "doggy - back view - 3-4 angle/227.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset.",
+ "index": 24
+ },
+ {
+ "index": 25,
+ "reference_image": "doggy - back view - 3-4 angle/324.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "doggy - back view - 3-4 angle/499.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "doggy - back view - 3-4 angle/503.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "doggy - back view - 3-4 angle/516.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "doggy - back view - 3-4 angle/532.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "doggy - back view - 3-4 angle/547.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "doggy - back view - 3-4 angle/552.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "doggy - back view - 3-4 angle/566.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "doggy - back view - 3-4 angle/566_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "doggy - back view - 3-4 angle/597.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "doggy - back view - 3-4 angle/617.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 35,
+ "image_count": 35,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "doggy - back view - 3-4 angle/0002.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "doggy - back view - 3-4 angle/0002_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy - back view - 3-4 angle/5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy - back view - 3-4 angle/0005.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy - back view - 3-4 angle/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "doggy - back view - 3-4 angle/0008_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy - back view - 3-4 angle/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy - back view - 3-4 angle/0013.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy - back view - 3-4 angle/14.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy - back view - 3-4 angle/0014.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "doggy - back view - 3-4 angle/0015.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 12,
+ "reference_image": "doggy - back view - 3-4 angle/0017.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 13,
+ "reference_image": "doggy - back view - 3-4 angle/0021.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 14,
+ "reference_image": "doggy - back view - 3-4 angle/27.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "doggy - back view - 3-4 angle/39.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 16,
+ "reference_image": "doggy - back view - 3-4 angle/41.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 17,
+ "reference_image": "doggy - back view - 3-4 angle/77.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "doggy - back view - 3-4 angle/132.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 19,
+ "reference_image": "doggy - back view - 3-4 angle/137.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "doggy - back view - 3-4 angle/145.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 21,
+ "reference_image": "doggy - back view - 3-4 angle/161.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "doggy - back view - 3-4 angle/183.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 23,
+ "reference_image": "doggy - back view - 3-4 angle/185.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 24,
+ "reference_image": "doggy - back view - 3-4 angle/227.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing generic rear three-quarter route as a coherent back-offset camera family. References were expanded while low/close and laying-drift examples remain outside the selected subset."
+ },
+ {
+ "index": 25,
+ "reference_image": "doggy - back view - 3-4 angle/324.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "doggy - back view - 3-4 angle/499.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "doggy - back view - 3-4 angle/503.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "doggy - back view - 3-4 angle/516.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "doggy - back view - 3-4 angle/532.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "doggy - back view - 3-4 angle/547.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "doggy - back view - 3-4 angle/552.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "doggy - back view - 3-4 angle/566.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "doggy - back view - 3-4 angle/566_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "doggy - back view - 3-4 angle/597.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "doggy - back view - 3-4 angle/617.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/doggy_front_view_contact_sheet.html b/ab_batches/normal_camera/review/doggy_front_view_contact_sheet.html
new file mode 100644
index 0000000..442be29
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_front_view_contact_sheet.html
@@ -0,0 +1,89 @@
+
+
+
+
+Normal Camera Review Contact Sheet: doggy - front view
+
+
+
+Normal Camera Review Contact Sheet: doggy - front view
+No-generation contact sheet. 13 JPGs from doggy - front view . Review buckets are placeholders until visual review assigns them.
+Canonical folder label: doggy - front view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-13
+
+
+
+001 doggy - front view /0003.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+002 doggy - front view /41.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+003 doggy - front view /49.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+004 doggy - front view /188.jpgbucket: unassigned
+
+
+
+005 doggy - front view /253.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+006 doggy - front view /262.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+007 doggy - front view /349.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+008 doggy - front view /354.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+009 doggy - front view /505.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+010 doggy - front view /537.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+011 doggy - front view /541.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+012 doggy - front view /567.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+013 doggy - front view /627.jpgbucket: front_view / normal_doggy_generic_front_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/doggy_front_view_review_manifest.json b/ab_batches/normal_camera/review/doggy_front_view_review_manifest.json
new file mode 100644
index 0000000..21e1a40
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_front_view_review_manifest.json
@@ -0,0 +1,294 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "doggy - front view ",
+ "folder_alias": {
+ "exact_source_folder": "doggy - front view ",
+ "canonical_folder": "doggy - front view",
+ "canonical_key": "doggy_front_view",
+ "alias_applied": true,
+ "alias_reason": "Trailing-space source folder preserved exactly for path stability."
+ },
+ "image_count": 13,
+ "action_family": "doggy",
+ "source_camera_view": "front_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_doggy_generic_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy - front view/11.jpg",
+ "doggy - front view/5.jpg",
+ "doggy - front view/6.jpg",
+ "doggy - front view /0003.jpg",
+ "doggy - front view /253.jpg",
+ "doggy - front view /262.jpg",
+ "doggy - front view /349.jpg",
+ "doggy - front view /354.jpg",
+ "doggy - front view /41.jpg",
+ "doggy - front view /49.jpg",
+ "doggy - front view /505.jpg",
+ "doggy - front view /537.jpg",
+ "doggy - front view /541.jpg",
+ "doggy - front view /567.jpg",
+ "doggy - front view /627.jpg"
+ ],
+ "evidence_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "doggy - front view /0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 1
+ },
+ {
+ "reference_image": "doggy - front view /41.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 2
+ },
+ {
+ "reference_image": "doggy - front view /49.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 3
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy - front view /188.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy - front view /253.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 5
+ },
+ {
+ "reference_image": "doggy - front view /262.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 6
+ },
+ {
+ "reference_image": "doggy - front view /349.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 7
+ },
+ {
+ "reference_image": "doggy - front view /354.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 8
+ },
+ {
+ "reference_image": "doggy - front view /505.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 9
+ },
+ {
+ "reference_image": "doggy - front view /537.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 10
+ },
+ {
+ "reference_image": "doggy - front view /541.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 11
+ },
+ {
+ "reference_image": "doggy - front view /567.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 12
+ },
+ {
+ "reference_image": "doggy - front view /627.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_doggy_generic_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route.",
+ "index": 13
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 13,
+ "image_count": 13,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "doggy - front view /0003.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 2,
+ "reference_image": "doggy - front view /41.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy - front view /49.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy - front view /188.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy - front view /253.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 6,
+ "reference_image": "doggy - front view /262.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy - front view /349.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy - front view /354.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy - front view /505.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy - front view /537.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 11,
+ "reference_image": "doggy - front view /541.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 12,
+ "reference_image": "doggy - front view /567.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ },
+ {
+ "index": 13,
+ "reference_image": "doggy - front view /627.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_generic_front_view",
+ "notes": "Residual-pool review expanded the existing grouped generic front-view route for the duplicate trailing-space source folder. The selected references repeat a front-facing third-person doggy camera while one weak top/down close crop remains outside the route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/doggy_on_all_four_back_view_3_4_angle_contact_sheet.html b/ab_batches/normal_camera/review/doggy_on_all_four_back_view_3_4_angle_contact_sheet.html
new file mode 100644
index 0000000..02df0ef
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_on_all_four_back_view_3_4_angle_contact_sheet.html
@@ -0,0 +1,316 @@
+
+
+
+
+Normal Camera Review Contact Sheet: doggy on all four - back view - 3-4 angle
+
+
+
+Normal Camera Review Contact Sheet: doggy on all four - back view - 3-4 angle
+No-generation contact sheet. 69 JPGs from doggy on all four - back view - 3-4 angle. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: doggy on all four - back view - 3-4 angle.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 doggy on all four - back view - 3-4 angle/0002.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+002 doggy on all four - back view - 3-4 angle/0003.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+003 doggy on all four - back view - 3-4 angle/0004.jpgbucket: unassigned
+
+
+
+004 doggy on all four - back view - 3-4 angle/0004_2.jpgbucket: unassigned
+
+
+
+005 doggy on all four - back view - 3-4 angle/0008.jpgbucket: unassigned
+
+
+
+006 doggy on all four - back view - 3-4 angle/0008_2.jpgbucket: unassigned
+
+
+
+007 doggy on all four - back view - 3-4 angle/0008_3.jpgbucket: unassigned
+
+
+
+008 doggy on all four - back view - 3-4 angle/0008_4.jpgbucket: unassigned
+
+
+
+009 doggy on all four - back view - 3-4 angle/11.jpgbucket: unassigned
+
+
+
+010 doggy on all four - back view - 3-4 angle/0011.jpgbucket: unassigned
+
+
+
+011 doggy on all four - back view - 3-4 angle/0012.jpgbucket: unassigned
+
+
+
+012 doggy on all four - back view - 3-4 angle/0013.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+013 doggy on all four - back view - 3-4 angle/0013_2.jpgbucket: unassigned
+
+
+
+014 doggy on all four - back view - 3-4 angle/0014.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+015 doggy on all four - back view - 3-4 angle/0016.jpgbucket: unassigned
+
+
+
+016 doggy on all four - back view - 3-4 angle/0018.jpgbucket: unassigned
+
+
+
+017 doggy on all four - back view - 3-4 angle/0019.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+018 doggy on all four - back view - 3-4 angle/0020.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+019 doggy on all four - back view - 3-4 angle/0021.jpgbucket: unassigned
+
+
+
+020 doggy on all four - back view - 3-4 angle/22.jpgbucket: unassigned
+
+
+
+021 doggy on all four - back view - 3-4 angle/26.jpgbucket: unassigned
+
+
+
+022 doggy on all four - back view - 3-4 angle/42.jpgbucket: unassigned
+
+
+
+023 doggy on all four - back view - 3-4 angle/64.jpgbucket: unassigned
+
+
+
+024 doggy on all four - back view - 3-4 angle/64_2.jpgbucket: unassigned
+
+
+
+025 doggy on all four - back view - 3-4 angle/69.jpgbucket: unassigned
+
+
+
+026 doggy on all four - back view - 3-4 angle/70.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+027 doggy on all four - back view - 3-4 angle/77.jpgbucket: unassigned
+
+
+
+028 doggy on all four - back view - 3-4 angle/97.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+029 doggy on all four - back view - 3-4 angle/119.jpgbucket: unassigned
+
+
+
+030 doggy on all four - back view - 3-4 angle/119_2.jpgbucket: unassigned
+
+
+
+031 doggy on all four - back view - 3-4 angle/122.jpgbucket: unassigned
+
+
+
+032 doggy on all four - back view - 3-4 angle/137.jpgbucket: unassigned
+
+
+
+033 doggy on all four - back view - 3-4 angle/138.jpgbucket: unassigned
+
+
+
+034 doggy on all four - back view - 3-4 angle/153.jpgbucket: unassigned
+
+
+
+035 doggy on all four - back view - 3-4 angle/175.jpgbucket: unassigned
+
+
+
+036 doggy on all four - back view - 3-4 angle/206.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+037 doggy on all four - back view - 3-4 angle/206_2.jpgbucket: unassigned
+
+
+
+038 doggy on all four - back view - 3-4 angle/218.jpgbucket: unassigned
+
+
+
+039 doggy on all four - back view - 3-4 angle/226.jpgbucket: unassigned
+
+
+
+040 doggy on all four - back view - 3-4 angle/230.jpgbucket: unassigned
+
+
+Page 2: 41-69
+
+
+
+041 doggy on all four - back view - 3-4 angle/248.jpgbucket: unassigned
+
+
+
+042 doggy on all four - back view - 3-4 angle/267.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+043 doggy on all four - back view - 3-4 angle/268.jpgbucket: unassigned
+
+
+
+044 doggy on all four - back view - 3-4 angle/273.jpgbucket: unassigned
+
+
+
+045 doggy on all four - back view - 3-4 angle/280.jpgbucket: unassigned
+
+
+
+046 doggy on all four - back view - 3-4 angle/285.jpgbucket: unassigned
+
+
+
+047 doggy on all four - back view - 3-4 angle/302.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+048 doggy on all four - back view - 3-4 angle/302_2.jpgbucket: unassigned
+
+
+
+049 doggy on all four - back view - 3-4 angle/311.jpgbucket: unassigned
+
+
+
+050 doggy on all four - back view - 3-4 angle/315.jpgbucket: unassigned
+
+
+
+051 doggy on all four - back view - 3-4 angle/315_2.jpgbucket: unassigned
+
+
+
+052 doggy on all four - back view - 3-4 angle/323.jpgbucket: unassigned
+
+
+
+053 doggy on all four - back view - 3-4 angle/327.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+054 doggy on all four - back view - 3-4 angle/353.jpgbucket: unassigned
+
+
+
+055 doggy on all four - back view - 3-4 angle/499.jpgbucket: unassigned
+
+
+
+056 doggy on all four - back view - 3-4 angle/536.jpgbucket: unassigned
+
+
+
+057 doggy on all four - back view - 3-4 angle/536_2.jpgbucket: unassigned
+
+
+
+058 doggy on all four - back view - 3-4 angle/550.jpgbucket: unassigned
+
+
+
+059 doggy on all four - back view - 3-4 angle/550_2.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+060 doggy on all four - back view - 3-4 angle/568.jpgbucket: unassigned
+
+
+
+061 doggy on all four - back view - 3-4 angle/569.jpgbucket: unassigned
+
+
+
+062 doggy on all four - back view - 3-4 angle/588.jpgbucket: unassigned
+
+
+
+063 doggy on all four - back view - 3-4 angle/600.jpgbucket: unassigned
+
+
+
+064 doggy on all four - back view - 3-4 angle/606.jpgbucket: unassigned
+
+
+
+065 doggy on all four - back view - 3-4 angle/606_2.jpgbucket: unassigned
+
+
+
+066 doggy on all four - back view - 3-4 angle/608.jpgbucket: unassigned
+
+
+
+067 doggy on all four - back view - 3-4 angle/608_2.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+068 doggy on all four - back view - 3-4 angle/611.jpgbucket: back_three_quarter / normal_doggy_all_fours_back_three_quarter
+
+
+
+069 doggy on all four - back view - 3-4 angle/615.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/doggy_on_all_four_back_view_3_4_angle_review_manifest.json b/ab_batches/normal_camera/review/doggy_on_all_four_back_view_3_4_angle_review_manifest.json
new file mode 100644
index 0000000..a5acf6a
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_on_all_four_back_view_3_4_angle_review_manifest.json
@@ -0,0 +1,1308 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "doggy on all four - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "doggy on all four - back view - 3-4 angle",
+ "canonical_folder": "doggy on all four - back view - 3-4 angle",
+ "canonical_key": "doggy_on_all_four_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 69,
+ "action_family": "doggy",
+ "source_camera_view": "back_three_quarter",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy on all four - back view - 3-4 angle/0002.jpg",
+ "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "doggy on all four - back view - 3-4 angle/206.jpg",
+ "doggy on all four - back view - 3-4 angle/267.jpg",
+ "doggy on all four - back view - 3-4 angle/302.jpg",
+ "doggy on all four - back view - 3-4 angle/327.jpg",
+ "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "doggy on all four - back view - 3-4 angle/611.jpg",
+ "doggy on all four - back view - 3-4 angle/70.jpg",
+ "doggy on all four - back view - 3-4 angle/97.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/0002.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 2
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0004.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0004_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 6,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy on all four - back view - 3-4 angle/11.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 12
+ },
+ {
+ "index": 13,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0013_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 14
+ },
+ {
+ "index": 15,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0016.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0018.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 17
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 18
+ },
+ {
+ "index": 19,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0021.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "doggy on all four - back view - 3-4 angle/22.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "doggy on all four - back view - 3-4 angle/26.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "doggy on all four - back view - 3-4 angle/42.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "doggy on all four - back view - 3-4 angle/64.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "doggy on all four - back view - 3-4 angle/64_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "doggy on all four - back view - 3-4 angle/69.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/70.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 26
+ },
+ {
+ "index": 27,
+ "reference_image": "doggy on all four - back view - 3-4 angle/77.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/97.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 28
+ },
+ {
+ "index": 29,
+ "reference_image": "doggy on all four - back view - 3-4 angle/119.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "doggy on all four - back view - 3-4 angle/119_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "doggy on all four - back view - 3-4 angle/122.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "doggy on all four - back view - 3-4 angle/137.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "doggy on all four - back view - 3-4 angle/138.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "doggy on all four - back view - 3-4 angle/153.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "doggy on all four - back view - 3-4 angle/175.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/206.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 36
+ },
+ {
+ "index": 37,
+ "reference_image": "doggy on all four - back view - 3-4 angle/206_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "doggy on all four - back view - 3-4 angle/218.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "doggy on all four - back view - 3-4 angle/226.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "doggy on all four - back view - 3-4 angle/230.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "doggy on all four - back view - 3-4 angle/248.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/267.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 42
+ },
+ {
+ "index": 43,
+ "reference_image": "doggy on all four - back view - 3-4 angle/268.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 44,
+ "reference_image": "doggy on all four - back view - 3-4 angle/273.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 45,
+ "reference_image": "doggy on all four - back view - 3-4 angle/280.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "doggy on all four - back view - 3-4 angle/285.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/302.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 47
+ },
+ {
+ "index": 48,
+ "reference_image": "doggy on all four - back view - 3-4 angle/302_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 49,
+ "reference_image": "doggy on all four - back view - 3-4 angle/311.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 50,
+ "reference_image": "doggy on all four - back view - 3-4 angle/315.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 51,
+ "reference_image": "doggy on all four - back view - 3-4 angle/315_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 52,
+ "reference_image": "doggy on all four - back view - 3-4 angle/323.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/327.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 53
+ },
+ {
+ "index": 54,
+ "reference_image": "doggy on all four - back view - 3-4 angle/353.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 55,
+ "reference_image": "doggy on all four - back view - 3-4 angle/499.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 56,
+ "reference_image": "doggy on all four - back view - 3-4 angle/536.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 57,
+ "reference_image": "doggy on all four - back view - 3-4 angle/536_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 58,
+ "reference_image": "doggy on all four - back view - 3-4 angle/550.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 59
+ },
+ {
+ "index": 60,
+ "reference_image": "doggy on all four - back view - 3-4 angle/568.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "doggy on all four - back view - 3-4 angle/569.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "doggy on all four - back view - 3-4 angle/588.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 63,
+ "reference_image": "doggy on all four - back view - 3-4 angle/600.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 64,
+ "reference_image": "doggy on all four - back view - 3-4 angle/606.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 65,
+ "reference_image": "doggy on all four - back view - 3-4 angle/606_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 66,
+ "reference_image": "doggy on all four - back view - 3-4 angle/608.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 67
+ },
+ {
+ "reference_image": "doggy on all four - back view - 3-4 angle/611.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_three_quarter",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset.",
+ "index": 68
+ },
+ {
+ "index": 69,
+ "reference_image": "doggy on all four - back view - 3-4 angle/615.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0002.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0004.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0004_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0008_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy on all four - back view - 3-4 angle/11.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 13,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0013_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 15,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0016.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0018.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 18,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 19,
+ "reference_image": "doggy on all four - back view - 3-4 angle/0021.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "doggy on all four - back view - 3-4 angle/22.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "doggy on all four - back view - 3-4 angle/26.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "doggy on all four - back view - 3-4 angle/42.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "doggy on all four - back view - 3-4 angle/64.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "doggy on all four - back view - 3-4 angle/64_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "doggy on all four - back view - 3-4 angle/69.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "doggy on all four - back view - 3-4 angle/70.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 27,
+ "reference_image": "doggy on all four - back view - 3-4 angle/77.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "doggy on all four - back view - 3-4 angle/97.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 29,
+ "reference_image": "doggy on all four - back view - 3-4 angle/119.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "doggy on all four - back view - 3-4 angle/119_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "doggy on all four - back view - 3-4 angle/122.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "doggy on all four - back view - 3-4 angle/137.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "doggy on all four - back view - 3-4 angle/138.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "doggy on all four - back view - 3-4 angle/153.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "doggy on all four - back view - 3-4 angle/175.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "doggy on all four - back view - 3-4 angle/206.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 37,
+ "reference_image": "doggy on all four - back view - 3-4 angle/206_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "doggy on all four - back view - 3-4 angle/218.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "doggy on all four - back view - 3-4 angle/226.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "doggy on all four - back view - 3-4 angle/230.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 69,
+ "image_count": 29,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "doggy on all four - back view - 3-4 angle/248.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "doggy on all four - back view - 3-4 angle/267.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 43,
+ "reference_image": "doggy on all four - back view - 3-4 angle/268.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 44,
+ "reference_image": "doggy on all four - back view - 3-4 angle/273.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 45,
+ "reference_image": "doggy on all four - back view - 3-4 angle/280.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "doggy on all four - back view - 3-4 angle/285.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "doggy on all four - back view - 3-4 angle/302.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 48,
+ "reference_image": "doggy on all four - back view - 3-4 angle/302_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "doggy on all four - back view - 3-4 angle/311.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 50,
+ "reference_image": "doggy on all four - back view - 3-4 angle/315.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 51,
+ "reference_image": "doggy on all four - back view - 3-4 angle/315_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 52,
+ "reference_image": "doggy on all four - back view - 3-4 angle/323.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "doggy on all four - back view - 3-4 angle/327.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 54,
+ "reference_image": "doggy on all four - back view - 3-4 angle/353.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "doggy on all four - back view - 3-4 angle/499.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "doggy on all four - back view - 3-4 angle/536.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 57,
+ "reference_image": "doggy on all four - back view - 3-4 angle/536_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "doggy on all four - back view - 3-4 angle/550.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 59,
+ "reference_image": "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 60,
+ "reference_image": "doggy on all four - back view - 3-4 angle/568.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "doggy on all four - back view - 3-4 angle/569.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "doggy on all four - back view - 3-4 angle/588.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "doggy on all four - back view - 3-4 angle/600.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "doggy on all four - back view - 3-4 angle/606.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "doggy on all four - back view - 3-4 angle/606_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "doggy on all four - back view - 3-4 angle/608.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 67,
+ "reference_image": "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 68,
+ "reference_image": "doggy on all four - back view - 3-4 angle/611.jpg",
+ "review_bucket": "back_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "notes": "Residual-pool review confirmed the existing all-fours rear three-quarter route as a coherent camera family. References were expanded while low, front-drifting, and tight-crop outliers remain outside the selected subset."
+ },
+ {
+ "index": 69,
+ "reference_image": "doggy on all four - back view - 3-4 angle/615.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/doggy_on_all_four_side_view_contact_sheet.html b/ab_batches/normal_camera/review/doggy_on_all_four_side_view_contact_sheet.html
new file mode 100644
index 0000000..d4a024f
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_on_all_four_side_view_contact_sheet.html
@@ -0,0 +1,320 @@
+
+
+
+
+Normal Camera Review Contact Sheet: doggy on all four - side view
+
+
+
+Normal Camera Review Contact Sheet: doggy on all four - side view
+No-generation contact sheet. 70 JPGs from doggy on all four - side view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: doggy on all four - side view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 doggy on all four - side view/2.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+002 doggy on all four - side view/0004.jpgbucket: unassigned
+
+
+
+003 doggy on all four - side view/0004_2.jpgbucket: unassigned
+
+
+
+004 doggy on all four - side view/0006.jpgbucket: unassigned
+
+
+
+005 doggy on all four - side view/0008.jpgbucket: unassigned
+
+
+
+006 doggy on all four - side view/0011.jpgbucket: unassigned
+
+
+
+007 doggy on all four - side view/12.jpgbucket: unassigned
+
+
+
+008 doggy on all four - side view/12_2.jpgbucket: unassigned
+
+
+
+009 doggy on all four - side view/0015.jpgbucket: unassigned
+
+
+
+010 doggy on all four - side view/17.jpgbucket: unassigned
+
+
+
+011 doggy on all four - side view/0017.jpgbucket: unassigned
+
+
+
+012 doggy on all four - side view/0020.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+013 doggy on all four - side view/26.jpgbucket: unassigned
+
+
+
+014 doggy on all four - side view/35.jpgbucket: unassigned
+
+
+
+015 doggy on all four - side view/48.jpgbucket: unassigned
+
+
+
+016 doggy on all four - side view/50.jpgbucket: unassigned
+
+
+
+017 doggy on all four - side view/55.jpgbucket: unassigned
+
+
+
+018 doggy on all four - side view/56.jpgbucket: unassigned
+
+
+
+019 doggy on all four - side view/61.jpgbucket: unassigned
+
+
+
+020 doggy on all four - side view/65.jpgbucket: unassigned
+
+
+
+021 doggy on all four - side view/85.jpgbucket: unassigned
+
+
+
+022 doggy on all four - side view/85_2.jpgbucket: unassigned
+
+
+
+023 doggy on all four - side view/86.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+024 doggy on all four - side view/90.jpgbucket: unassigned
+
+
+
+025 doggy on all four - side view/91.jpgbucket: unassigned
+
+
+
+026 doggy on all four - side view/99.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+027 doggy on all four - side view/122.jpgbucket: unassigned
+
+
+
+028 doggy on all four - side view/161.jpgbucket: unassigned
+
+
+
+029 doggy on all four - side view/162.jpgbucket: unassigned
+
+
+
+030 doggy on all four - side view/165.jpgbucket: unassigned
+
+
+
+031 doggy on all four - side view/189.jpgbucket: unassigned
+
+
+
+032 doggy on all four - side view/189_2.jpgbucket: unassigned
+
+
+
+033 doggy on all four - side view/192.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+034 doggy on all four - side view/204.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+035 doggy on all four - side view/232.jpgbucket: unassigned
+
+
+
+036 doggy on all four - side view/233.jpgbucket: unassigned
+
+
+
+037 doggy on all four - side view/234.jpgbucket: unassigned
+
+
+
+038 doggy on all four - side view/235.jpgbucket: unassigned
+
+
+
+039 doggy on all four - side view/243.jpgbucket: unassigned
+
+
+
+040 doggy on all four - side view/245.jpgbucket: unassigned
+
+
+Page 2: 41-70
+
+
+
+041 doggy on all four - side view/251.jpgbucket: unassigned
+
+
+
+042 doggy on all four - side view/254.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+043 doggy on all four - side view/254_2.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+044 doggy on all four - side view/254_3.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+045 doggy on all four - side view/255.jpgbucket: unassigned
+
+
+
+046 doggy on all four - side view/261.jpgbucket: unassigned
+
+
+
+047 doggy on all four - side view/261_2.jpgbucket: unassigned
+
+
+
+048 doggy on all four - side view/269.jpgbucket: unassigned
+
+
+
+049 doggy on all four - side view/270.jpgbucket: unassigned
+
+
+
+050 doggy on all four - side view/271.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+051 doggy on all four - side view/271_2.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+052 doggy on all four - side view/285.jpgbucket: unassigned
+
+
+
+053 doggy on all four - side view/290.jpgbucket: unassigned
+
+
+
+054 doggy on all four - side view/333.jpgbucket: unassigned
+
+
+
+055 doggy on all four - side view/341.jpgbucket: unassigned
+
+
+
+056 doggy on all four - side view/354.jpgbucket: unassigned
+
+
+
+057 doggy on all four - side view/362.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+058 doggy on all four - side view/377.jpgbucket: unassigned
+
+
+
+059 doggy on all four - side view/480.jpgbucket: unassigned
+
+
+
+060 doggy on all four - side view/495.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+061 doggy on all four - side view/505.jpgbucket: unassigned
+
+
+
+062 doggy on all four - side view/537.jpgbucket: unassigned
+
+
+
+063 doggy on all four - side view/537_2.jpgbucket: unassigned
+
+
+
+064 doggy on all four - side view/547.jpgbucket: unassigned
+
+
+
+065 doggy on all four - side view/547_2.jpgbucket: unassigned
+
+
+
+066 doggy on all four - side view/556.jpgbucket: side_view / normal_doggy_all_fours_side_view
+
+
+
+067 doggy on all four - side view/604.jpgbucket: unassigned
+
+
+
+068 doggy on all four - side view/613.jpgbucket: unassigned
+
+
+
+069 doggy on all four - side view/613_2.jpgbucket: unassigned
+
+
+
+070 doggy on all four - side view/615.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/doggy_on_all_four_side_view_review_manifest.json b/ab_batches/normal_camera/review/doggy_on_all_four_side_view_review_manifest.json
new file mode 100644
index 0000000..2b3bd28
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_on_all_four_side_view_review_manifest.json
@@ -0,0 +1,1326 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "doggy on all four - side view",
+ "folder_alias": {
+ "exact_source_folder": "doggy on all four - side view",
+ "canonical_folder": "doggy on all four - side view",
+ "canonical_key": "doggy_on_all_four_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 70,
+ "action_family": "doggy",
+ "source_camera_view": "side_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "doggy on all four - side view/0020.jpg",
+ "doggy on all four - side view/192.jpg",
+ "doggy on all four - side view/2.jpg",
+ "doggy on all four - side view/204.jpg",
+ "doggy on all four - side view/254.jpg",
+ "doggy on all four - side view/254_2.jpg",
+ "doggy on all four - side view/254_3.jpg",
+ "doggy on all four - side view/271.jpg",
+ "doggy on all four - side view/271_2.jpg",
+ "doggy on all four - side view/362.jpg",
+ "doggy on all four - side view/495.jpg",
+ "doggy on all four - side view/556.jpg",
+ "doggy on all four - side view/86.jpg",
+ "doggy on all four - side view/99.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "doggy on all four - side view/2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "doggy on all four - side view/0004.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy on all four - side view/0004_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy on all four - side view/0006.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy on all four - side view/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 6,
+ "reference_image": "doggy on all four - side view/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy on all four - side view/12.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy on all four - side view/12_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy on all four - side view/0015.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy on all four - side view/17.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "doggy on all four - side view/0017.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/0020.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 12
+ },
+ {
+ "index": 13,
+ "reference_image": "doggy on all four - side view/26.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "doggy on all four - side view/35.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "doggy on all four - side view/48.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "doggy on all four - side view/50.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 17,
+ "reference_image": "doggy on all four - side view/55.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 18,
+ "reference_image": "doggy on all four - side view/56.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "doggy on all four - side view/61.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "doggy on all four - side view/65.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "doggy on all four - side view/85.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "doggy on all four - side view/85_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/86.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 23
+ },
+ {
+ "index": 24,
+ "reference_image": "doggy on all four - side view/90.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "doggy on all four - side view/91.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/99.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 26
+ },
+ {
+ "index": 27,
+ "reference_image": "doggy on all four - side view/122.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "doggy on all four - side view/161.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "doggy on all four - side view/162.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "doggy on all four - side view/165.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "doggy on all four - side view/189.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "doggy on all four - side view/189_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/192.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 33
+ },
+ {
+ "reference_image": "doggy on all four - side view/204.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 34
+ },
+ {
+ "index": 35,
+ "reference_image": "doggy on all four - side view/232.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "doggy on all four - side view/233.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "doggy on all four - side view/234.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "doggy on all four - side view/235.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "doggy on all four - side view/243.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "doggy on all four - side view/245.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "doggy on all four - side view/251.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/254.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 42
+ },
+ {
+ "reference_image": "doggy on all four - side view/254_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 43
+ },
+ {
+ "reference_image": "doggy on all four - side view/254_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 44
+ },
+ {
+ "index": 45,
+ "reference_image": "doggy on all four - side view/255.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "doggy on all four - side view/261.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 47,
+ "reference_image": "doggy on all four - side view/261_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 48,
+ "reference_image": "doggy on all four - side view/269.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 49,
+ "reference_image": "doggy on all four - side view/270.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/271.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 50
+ },
+ {
+ "reference_image": "doggy on all four - side view/271_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 51
+ },
+ {
+ "index": 52,
+ "reference_image": "doggy on all four - side view/285.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 53,
+ "reference_image": "doggy on all four - side view/290.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 54,
+ "reference_image": "doggy on all four - side view/333.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 55,
+ "reference_image": "doggy on all four - side view/341.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 56,
+ "reference_image": "doggy on all four - side view/354.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/362.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 57
+ },
+ {
+ "index": 58,
+ "reference_image": "doggy on all four - side view/377.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 59,
+ "reference_image": "doggy on all four - side view/480.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/495.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 60
+ },
+ {
+ "index": 61,
+ "reference_image": "doggy on all four - side view/505.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "doggy on all four - side view/537.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 63,
+ "reference_image": "doggy on all four - side view/537_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 64,
+ "reference_image": "doggy on all four - side view/547.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 65,
+ "reference_image": "doggy on all four - side view/547_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "doggy on all four - side view/556.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass.",
+ "index": 66
+ },
+ {
+ "index": 67,
+ "reference_image": "doggy on all four - side view/604.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 68,
+ "reference_image": "doggy on all four - side view/613.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 69,
+ "reference_image": "doggy on all four - side view/613_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 70,
+ "reference_image": "doggy on all four - side view/615.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "doggy on all four - side view/2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 2,
+ "reference_image": "doggy on all four - side view/0004.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "doggy on all four - side view/0004_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "doggy on all four - side view/0006.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "doggy on all four - side view/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "doggy on all four - side view/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "doggy on all four - side view/12.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "doggy on all four - side view/12_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "doggy on all four - side view/0015.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "doggy on all four - side view/17.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "doggy on all four - side view/0017.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "doggy on all four - side view/0020.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 13,
+ "reference_image": "doggy on all four - side view/26.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "doggy on all four - side view/35.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "doggy on all four - side view/48.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "doggy on all four - side view/50.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "doggy on all four - side view/55.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "doggy on all four - side view/56.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "doggy on all four - side view/61.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "doggy on all four - side view/65.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "doggy on all four - side view/85.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "doggy on all four - side view/85_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "doggy on all four - side view/86.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 24,
+ "reference_image": "doggy on all four - side view/90.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "doggy on all four - side view/91.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "doggy on all four - side view/99.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 27,
+ "reference_image": "doggy on all four - side view/122.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "doggy on all four - side view/161.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "doggy on all four - side view/162.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "doggy on all four - side view/165.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "doggy on all four - side view/189.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "doggy on all four - side view/189_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "doggy on all four - side view/192.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 34,
+ "reference_image": "doggy on all four - side view/204.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 35,
+ "reference_image": "doggy on all four - side view/232.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "doggy on all four - side view/233.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "doggy on all four - side view/234.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "doggy on all four - side view/235.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "doggy on all four - side view/243.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "doggy on all four - side view/245.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 70,
+ "image_count": 30,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "doggy on all four - side view/251.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "doggy on all four - side view/254.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 43,
+ "reference_image": "doggy on all four - side view/254_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 44,
+ "reference_image": "doggy on all four - side view/254_3.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 45,
+ "reference_image": "doggy on all four - side view/255.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "doggy on all four - side view/261.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "doggy on all four - side view/261_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 48,
+ "reference_image": "doggy on all four - side view/269.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "doggy on all four - side view/270.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 50,
+ "reference_image": "doggy on all four - side view/271.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 51,
+ "reference_image": "doggy on all four - side view/271_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 52,
+ "reference_image": "doggy on all four - side view/285.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "doggy on all four - side view/290.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "doggy on all four - side view/333.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "doggy on all four - side view/341.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "doggy on all four - side view/354.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 57,
+ "reference_image": "doggy on all four - side view/362.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 58,
+ "reference_image": "doggy on all four - side view/377.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 59,
+ "reference_image": "doggy on all four - side view/480.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 60,
+ "reference_image": "doggy on all four - side view/495.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 61,
+ "reference_image": "doggy on all four - side view/505.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "doggy on all four - side view/537.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "doggy on all four - side view/537_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "doggy on all four - side view/547.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "doggy on all four - side view/547_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "doggy on all four - side view/556.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "notes": "Residual-pool review kept the existing selected side-view subset unchanged. The remaining source images mix standing, bed, chair, close, and front-drifting frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 67,
+ "reference_image": "doggy on all four - side view/604.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 68,
+ "reference_image": "doggy on all four - side view/613.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 69,
+ "reference_image": "doggy on all four - side view/613_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 70,
+ "reference_image": "doggy on all four - side view/615.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/doggy_press_back_side_contact_sheet.html b/ab_batches/normal_camera/review/doggy_press_back_side_contact_sheet.html
new file mode 100644
index 0000000..abb4713
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_press_back_side_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: doggy press - back side
+
+
+
+Normal Camera Review Contact Sheet: doggy press - back side
+No-generation contact sheet. 1 JPGs from doggy press - back side. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: doggy press - back side.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 doggy press - back side/0011.jpgbucket: reject_or_unclear / normal_doggy_press_back_side_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/doggy_press_back_side_review_manifest.json b/ab_batches/normal_camera/review/doggy_press_back_side_review_manifest.json
new file mode 100644
index 0000000..c56be50
--- /dev/null
+++ b/ab_batches/normal_camera/review/doggy_press_back_side_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "doggy press - back side",
+ "folder_alias": {
+ "exact_source_folder": "doggy press - back side",
+ "canonical_folder": "doggy press - back side",
+ "canonical_key": "doggy_press_back_side",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "doggy",
+ "source_camera_view": "back_view",
+ "source_catalog_status": "thin_sample",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_doggy_press_back_side_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy press - back side/0011.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one back-side doggy-press sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "doggy press - back side/0011.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_doggy_press_back_side_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one back-side doggy-press sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "doggy press - back side/0011.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_press_back_side_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one back-side doggy-press sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/face_sitting_contact_sheet.html b/ab_batches/normal_camera/review/face_sitting_contact_sheet.html
new file mode 100644
index 0000000..7350e4a
--- /dev/null
+++ b/ab_batches/normal_camera/review/face_sitting_contact_sheet.html
@@ -0,0 +1,53 @@
+
+
+
+
+Normal Camera Review Contact Sheet: face sitting
+
+
+
+Normal Camera Review Contact Sheet: face sitting
+No-generation contact sheet. 4 JPGs from face sitting. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: face sitting.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-4
+
+
+
+001 face sitting/0005.jpgbucket: reject_or_unclear / normal_face_sitting_mixed_camera_folder_pool
+
+
+
+002 face sitting/0021.jpgbucket: reject_or_unclear / normal_face_sitting_mixed_camera_folder_pool
+
+
+
+003 face sitting/354.jpgbucket: reject_or_unclear / normal_face_sitting_mixed_camera_folder_pool
+
+
+
+004 face sitting/533.jpgbucket: reject_or_unclear / normal_face_sitting_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/face_sitting_front_view_contact_sheet.html b/ab_batches/normal_camera/review/face_sitting_front_view_contact_sheet.html
new file mode 100644
index 0000000..c5a3ff7
--- /dev/null
+++ b/ab_batches/normal_camera/review/face_sitting_front_view_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: face sitting - front view
+
+
+
+Normal Camera Review Contact Sheet: face sitting - front view
+No-generation contact sheet. 1 JPGs from face sitting - front view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: face sitting - front view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 face sitting - front view/56.jpgbucket: reject_or_unclear / normal_face_sitting_front_view_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/face_sitting_front_view_review_manifest.json b/ab_batches/normal_camera/review/face_sitting_front_view_review_manifest.json
new file mode 100644
index 0000000..b7bf27a
--- /dev/null
+++ b/ab_batches/normal_camera/review/face_sitting_front_view_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "face sitting - front view",
+ "folder_alias": {
+ "exact_source_folder": "face sitting - front view",
+ "canonical_folder": "face sitting - front view",
+ "canonical_key": "face_sitting_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "face_sitting",
+ "source_camera_view": "front_view",
+ "source_catalog_status": "thin_sample",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_face_sitting_front_view_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "face sitting - front view/56.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one front-view face-sitting sample as coverage evidence only. A single image is too thin for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "face sitting - front view/56.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_face_sitting_front_view_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one front-view face-sitting sample as coverage evidence only. A single image is too thin for a selected pre-A/B route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "face sitting - front view/56.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_face_sitting_front_view_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one front-view face-sitting sample as coverage evidence only. A single image is too thin for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/face_sitting_review_manifest.json b/ab_batches/normal_camera/review/face_sitting_review_manifest.json
new file mode 100644
index 0000000..95e2308
--- /dev/null
+++ b/ab_batches/normal_camera/review/face_sitting_review_manifest.json
@@ -0,0 +1,129 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "face sitting",
+ "folder_alias": {
+ "exact_source_folder": "face sitting",
+ "canonical_folder": "face sitting",
+ "canonical_key": "face_sitting",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 4,
+ "action_family": "face_sitting",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "face sitting/0005.jpg",
+ "face sitting/0021.jpg",
+ "face sitting/354.jpg",
+ "face sitting/533.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "face sitting/0005.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route.",
+ "index": 1
+ },
+ {
+ "reference_image": "face sitting/0021.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route.",
+ "index": 2
+ },
+ {
+ "reference_image": "face sitting/354.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route.",
+ "index": 3
+ },
+ {
+ "reference_image": "face sitting/533.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route.",
+ "index": 4
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 4,
+ "image_count": 4,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "face sitting/0005.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route."
+ },
+ {
+ "index": 2,
+ "reference_image": "face sitting/0021.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route."
+ },
+ {
+ "index": 3,
+ "reference_image": "face sitting/354.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route."
+ },
+ {
+ "index": 4,
+ "reference_image": "face sitting/533.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. Three samples are front or near-front face-sitting references, while one rear/back-view outlier makes the folder too mixed and thin for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/fingering_contact_sheet.html b/ab_batches/normal_camera/review/fingering_contact_sheet.html
new file mode 100644
index 0000000..2ec1204
--- /dev/null
+++ b/ab_batches/normal_camera/review/fingering_contact_sheet.html
@@ -0,0 +1,97 @@
+
+
+
+
+Normal Camera Review Contact Sheet: fingering
+
+
+
+Normal Camera Review Contact Sheet: fingering
+No-generation contact sheet. 15 JPGs from fingering. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: fingering.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-15
+
+
+
+001 fingering/0001.jpgbucket: reject_or_unclear / normal_fingering_mixed_camera_folder_pool
+
+
+
+002 fingering/0004.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+003 fingering/0006.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+004 fingering/0013.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+005 fingering/0015.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+006 fingering/39.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+007 fingering/50.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+008 fingering/132.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+009 fingering/133.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+010 fingering/195.jpgbucket: reject_or_unclear / normal_fingering_mixed_camera_folder_pool
+
+
+
+011 fingering/227.jpgbucket: unassigned
+
+
+
+012 fingering/241.jpgbucket: unassigned
+
+
+
+013 fingering/279.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+014 fingering/352.jpgbucket: unassigned
+
+
+
+015 fingering/603.jpgbucket: front_view / normal_fingering_reclined_front_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/fingering_review_manifest.json b/ab_batches/normal_camera/review/fingering_review_manifest.json
new file mode 100644
index 0000000..b89cc22
--- /dev/null
+++ b/ab_batches/normal_camera/review/fingering_review_manifest.json
@@ -0,0 +1,337 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "fingering",
+ "folder_alias": {
+ "exact_source_folder": "fingering",
+ "canonical_folder": "fingering",
+ "canonical_key": "fingering",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 15,
+ "action_family": "manual_or_toy",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_fingering_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "fingering/0001.jpg",
+ "fingering/195.jpg",
+ "fingering/603.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The images include useful manual-contact examples, but upright, standing, side, and oral-adjacent frames keep the full folder from being one locked prompt-ready route."
+ },
+ {
+ "variant_key": "normal_fingering_reclined_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "fingering/0004.jpg",
+ "fingering/0006.jpg",
+ "fingering/0013.jpg",
+ "fingering/0015.jpg",
+ "fingering/39.jpg",
+ "fingering/50.jpg",
+ "fingering/132.jpg",
+ "fingering/133.jpg",
+ "fingering/279.jpg",
+ "fingering/603.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "fingering/0001.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_fingering_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The images include useful manual-contact examples, but upright, standing, side, and oral-adjacent frames keep the full folder from being one locked prompt-ready route.",
+ "index": 1
+ },
+ {
+ "reference_image": "fingering/0004.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 2
+ },
+ {
+ "reference_image": "fingering/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "fingering/0013.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "fingering/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "fingering/39.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 6
+ },
+ {
+ "reference_image": "fingering/50.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 7
+ },
+ {
+ "reference_image": "fingering/132.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 8
+ },
+ {
+ "reference_image": "fingering/133.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 9
+ },
+ {
+ "reference_image": "fingering/195.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_fingering_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The images include useful manual-contact examples, but upright, standing, side, and oral-adjacent frames keep the full folder from being one locked prompt-ready route.",
+ "index": 10
+ },
+ {
+ "index": 11,
+ "reference_image": "fingering/227.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "fingering/241.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fingering/279.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 13
+ },
+ {
+ "index": 14,
+ "reference_image": "fingering/352.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fingering/603.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset.",
+ "index": 15
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 15,
+ "image_count": 15,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "fingering/0001.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The images include useful manual-contact examples, but upright, standing, side, and oral-adjacent frames keep the full folder from being one locked prompt-ready route."
+ },
+ {
+ "index": 2,
+ "reference_image": "fingering/0004.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "fingering/0006.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "fingering/0013.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "fingering/0015.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "fingering/39.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "fingering/50.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "fingering/132.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 9,
+ "reference_image": "fingering/133.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 10,
+ "reference_image": "fingering/195.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The images include useful manual-contact examples, but upright, standing, side, and oral-adjacent frames keep the full folder from being one locked prompt-ready route."
+ },
+ {
+ "index": 11,
+ "reference_image": "fingering/227.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "fingering/241.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "fingering/279.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ },
+ {
+ "index": 14,
+ "reference_image": "fingering/352.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "fingering/603.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fingering_reclined_front_view",
+ "notes": "Contact-sheet review found a repeated reclined front-view manual-contact family where the camera faces the open-thigh contact plane and face or upper body remains readable. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/fist_contact_sheet.html b/ab_batches/normal_camera/review/fist_contact_sheet.html
new file mode 100644
index 0000000..734145d
--- /dev/null
+++ b/ab_batches/normal_camera/review/fist_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: fist
+
+
+
+Normal Camera Review Contact Sheet: fist
+No-generation contact sheet. 1 JPGs from fist. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: fist.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 fist/337.jpgbucket: reject_or_unclear / normal_fist_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/fist_review_manifest.json b/ab_batches/normal_camera/review/fist_review_manifest.json
new file mode 100644
index 0000000..ca86d6c
--- /dev/null
+++ b/ab_batches/normal_camera/review/fist_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "fist",
+ "folder_alias": {
+ "exact_source_folder": "fist",
+ "canonical_folder": "fist",
+ "canonical_key": "fist",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "manual_or_toy",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_fist_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "fist/337.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one available manual-contact reference as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "fist/337.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_fist_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one available manual-contact reference as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "fist/337.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_fist_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the one available manual-contact reference as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/footjob_contact_sheet.html b/ab_batches/normal_camera/review/footjob_contact_sheet.html
new file mode 100644
index 0000000..71511c4
--- /dev/null
+++ b/ab_batches/normal_camera/review/footjob_contact_sheet.html
@@ -0,0 +1,45 @@
+
+
+
+
+Normal Camera Review Contact Sheet: footjob
+
+
+
+Normal Camera Review Contact Sheet: footjob
+No-generation contact sheet. 2 JPGs from footjob. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: footjob.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-2
+
+
+
+001 footjob/265.jpgbucket: reject_or_unclear / normal_footjob_mixed_camera_folder_pool
+
+
+
+002 footjob/265_2.jpgbucket: reject_or_unclear / normal_footjob_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/footjob_review_manifest.json b/ab_batches/normal_camera/review/footjob_review_manifest.json
new file mode 100644
index 0000000..fae4e3f
--- /dev/null
+++ b/ab_batches/normal_camera/review/footjob_review_manifest.json
@@ -0,0 +1,93 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "footjob",
+ "folder_alias": {
+ "exact_source_folder": "footjob",
+ "canonical_folder": "footjob",
+ "canonical_key": "footjob",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 2,
+ "action_family": "manual_or_toy",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_footjob_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "footjob/265.jpg",
+ "footjob/265_2.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The two samples share the foot-contact action but vary between seated front context and tighter crop, so more matched samples are needed."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "footjob/265.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_footjob_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The two samples share the foot-contact action but vary between seated front context and tighter crop, so more matched samples are needed.",
+ "index": 1
+ },
+ {
+ "reference_image": "footjob/265_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_footjob_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The two samples share the foot-contact action but vary between seated front context and tighter crop, so more matched samples are needed.",
+ "index": 2
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 2,
+ "image_count": 2,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "footjob/265.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_footjob_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The two samples share the foot-contact action but vary between seated front context and tighter crop, so more matched samples are needed."
+ },
+ {
+ "index": 2,
+ "reference_image": "footjob/265_2.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_footjob_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The two samples share the foot-contact action but vary between seated front context and tighter crop, so more matched samples are needed."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/fuck_from_behind_standing_woman_backside_side_view_contact_sheet.html b/ab_batches/normal_camera/review/fuck_from_behind_standing_woman_backside_side_view_contact_sheet.html
new file mode 100644
index 0000000..d1f315e
--- /dev/null
+++ b/ab_batches/normal_camera/review/fuck_from_behind_standing_woman_backside_side_view_contact_sheet.html
@@ -0,0 +1,228 @@
+
+
+
+
+Normal Camera Review Contact Sheet: fuck from behind standing - woman backside - side view
+
+
+
+Normal Camera Review Contact Sheet: fuck from behind standing - woman backside - side view
+No-generation contact sheet. 47 JPGs from fuck from behind standing - woman backside - side view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: fuck from behind standing - woman backside - side view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 fuck from behind standing - woman backside - side view/0008.jpgbucket: side_view / normal_doggy_standing_backside_side_view_folder_pool
+
+
+
+002 fuck from behind standing - woman backside - side view/0010.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+003 fuck from behind standing - woman backside - side view/0012.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+004 fuck from behind standing - woman backside - side view/0020.jpgbucket: unassigned
+
+
+
+005 fuck from behind standing - woman backside - side view/44.jpgbucket: unassigned
+
+
+
+006 fuck from behind standing - woman backside - side view/68.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+007 fuck from behind standing - woman backside - side view/68_2.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+008 fuck from behind standing - woman backside - side view/112.jpgbucket: unassigned
+
+
+
+009 fuck from behind standing - woman backside - side view/159.jpgbucket: unassigned
+
+
+
+010 fuck from behind standing - woman backside - side view/170.jpgbucket: unassigned
+
+
+
+011 fuck from behind standing - woman backside - side view/172.jpgbucket: unassigned
+
+
+
+012 fuck from behind standing - woman backside - side view/172_2.jpgbucket: unassigned
+
+
+
+013 fuck from behind standing - woman backside - side view/182.jpgbucket: unassigned
+
+
+
+014 fuck from behind standing - woman backside - side view/186.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+015 fuck from behind standing - woman backside - side view/186_2.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+016 fuck from behind standing - woman backside - side view/196.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+017 fuck from behind standing - woman backside - side view/218.jpgbucket: unassigned
+
+
+
+018 fuck from behind standing - woman backside - side view/222.jpgbucket: unassigned
+
+
+
+019 fuck from behind standing - woman backside - side view/235.jpgbucket: unassigned
+
+
+
+020 fuck from behind standing - woman backside - side view/257.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+021 fuck from behind standing - woman backside - side view/258.jpgbucket: unassigned
+
+
+
+022 fuck from behind standing - woman backside - side view/258_2.jpgbucket: unassigned
+
+
+
+023 fuck from behind standing - woman backside - side view/268.jpgbucket: unassigned
+
+
+
+024 fuck from behind standing - woman backside - side view/268_2.jpgbucket: unassigned
+
+
+
+025 fuck from behind standing - woman backside - side view/278.jpgbucket: unassigned
+
+
+
+026 fuck from behind standing - woman backside - side view/286.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+027 fuck from behind standing - woman backside - side view/288.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+028 fuck from behind standing - woman backside - side view/289.jpgbucket: unassigned
+
+
+
+029 fuck from behind standing - woman backside - side view/289_2.jpgbucket: unassigned
+
+
+
+030 fuck from behind standing - woman backside - side view/298.jpgbucket: unassigned
+
+
+
+031 fuck from behind standing - woman backside - side view/299.jpgbucket: unassigned
+
+
+
+032 fuck from behind standing - woman backside - side view/305.jpgbucket: unassigned
+
+
+
+033 fuck from behind standing - woman backside - side view/307.jpgbucket: unassigned
+
+
+
+034 fuck from behind standing - woman backside - side view/331.jpgbucket: unassigned
+
+
+
+035 fuck from behind standing - woman backside - side view/340.jpgbucket: unassigned
+
+
+
+036 fuck from behind standing - woman backside - side view/341.jpgbucket: unassigned
+
+
+
+037 fuck from behind standing - woman backside - side view/343.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+038 fuck from behind standing - woman backside - side view/343_2.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+039 fuck from behind standing - woman backside - side view/343_3.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+040 fuck from behind standing - woman backside - side view/343_4.jpgbucket: unassigned
+
+
+Page 2: 41-47
+
+
+
+041 fuck from behind standing - woman backside - side view/343_5.jpgbucket: unassigned
+
+
+
+042 fuck from behind standing - woman backside - side view/343_6.jpgbucket: unassigned
+
+
+
+043 fuck from behind standing - woman backside - side view/345.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+044 fuck from behind standing - woman backside - side view/345_2.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+045 fuck from behind standing - woman backside - side view/370.jpgbucket: unassigned
+
+
+
+046 fuck from behind standing - woman backside - side view/370_2.jpgbucket: unassigned
+
+
+
+047 fuck from behind standing - woman backside - side view/542.jpgbucket: side_view / normal_doggy_standing_backside_side_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/fuck_from_behind_standing_woman_backside_side_view_review_manifest.json b/ab_batches/normal_camera/review/fuck_from_behind_standing_woman_backside_side_view_review_manifest.json
new file mode 100644
index 0000000..7cbc194
--- /dev/null
+++ b/ab_batches/normal_camera/review/fuck_from_behind_standing_woman_backside_side_view_review_manifest.json
@@ -0,0 +1,923 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "fuck from behind standing - woman backside - side view",
+ "folder_alias": {
+ "exact_source_folder": "fuck from behind standing - woman backside - side view",
+ "canonical_folder": "fuck from behind standing - woman backside - side view",
+ "canonical_key": "fuck_from_behind_standing_woman_backside_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 47,
+ "action_family": "doggy",
+ "source_camera_view": "side_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_doggy_standing_backside_side_view_folder_pool",
+ "review_bucket": "side_view",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "fuck from behind standing - woman backside - side view/0008.jpg",
+ "fuck from behind standing - woman backside - side view/288.jpg",
+ "fuck from behind standing - woman backside - side view/68_2.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing folder-pool anchor unchanged. The folder has standing side/rear-lateral material, but the unselected images mix lifted, seated, bed/couch, front-drifting, and portrait-like frames rather than a cleaner prompt-ready split."
+ },
+ {
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "fuck from behind standing - woman backside - side view/0010.jpg",
+ "fuck from behind standing - woman backside - side view/0012.jpg",
+ "fuck from behind standing - woman backside - side view/186.jpg",
+ "fuck from behind standing - woman backside - side view/186_2.jpg",
+ "fuck from behind standing - woman backside - side view/196.jpg",
+ "fuck from behind standing - woman backside - side view/257.jpg",
+ "fuck from behind standing - woman backside - side view/286.jpg",
+ "fuck from behind standing - woman backside - side view/288.jpg",
+ "fuck from behind standing - woman backside - side view/343.jpg",
+ "fuck from behind standing - woman backside - side view/343_2.jpg",
+ "fuck from behind standing - woman backside - side view/343_3.jpg",
+ "fuck from behind standing - woman backside - side view/345.jpg",
+ "fuck from behind standing - woman backside - side view/345_2.jpg",
+ "fuck from behind standing - woman backside - side view/542.jpg",
+ "fuck from behind standing - woman backside - side view/68.jpg",
+ "fuck from behind standing - woman backside - side view/68_2.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/0008.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view_folder_pool",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing folder-pool anchor unchanged. The folder has standing side/rear-lateral material, but the unselected images mix lifted, seated, bed/couch, front-drifting, and portrait-like frames rather than a cleaner prompt-ready split.",
+ "index": 1
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/0010.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 2
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/0012.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 3
+ },
+ {
+ "index": 4,
+ "reference_image": "fuck from behind standing - woman backside - side view/0020.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "fuck from behind standing - woman backside - side view/44.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/68.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 6
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/68_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "fuck from behind standing - woman backside - side view/112.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "fuck from behind standing - woman backside - side view/159.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "fuck from behind standing - woman backside - side view/170.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "fuck from behind standing - woman backside - side view/172.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "fuck from behind standing - woman backside - side view/172_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "fuck from behind standing - woman backside - side view/182.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/186.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 14
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/186_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 15
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/196.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 16
+ },
+ {
+ "index": 17,
+ "reference_image": "fuck from behind standing - woman backside - side view/218.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 18,
+ "reference_image": "fuck from behind standing - woman backside - side view/222.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "fuck from behind standing - woman backside - side view/235.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/257.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 20
+ },
+ {
+ "index": 21,
+ "reference_image": "fuck from behind standing - woman backside - side view/258.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "fuck from behind standing - woman backside - side view/258_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "fuck from behind standing - woman backside - side view/268.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "fuck from behind standing - woman backside - side view/268_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "fuck from behind standing - woman backside - side view/278.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/286.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 26
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/288.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 27
+ },
+ {
+ "index": 28,
+ "reference_image": "fuck from behind standing - woman backside - side view/289.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "fuck from behind standing - woman backside - side view/289_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "fuck from behind standing - woman backside - side view/298.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "fuck from behind standing - woman backside - side view/299.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "fuck from behind standing - woman backside - side view/305.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "fuck from behind standing - woman backside - side view/307.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "fuck from behind standing - woman backside - side view/331.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "fuck from behind standing - woman backside - side view/340.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "fuck from behind standing - woman backside - side view/341.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/343.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 37
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/343_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 38
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/343_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 39
+ },
+ {
+ "index": 40,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_6.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/345.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 43
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/345_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 44
+ },
+ {
+ "index": 45,
+ "reference_image": "fuck from behind standing - woman backside - side view/370.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "fuck from behind standing - woman backside - side view/370_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from behind standing - woman backside - side view/542.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass.",
+ "index": 47
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "fuck from behind standing - woman backside - side view/0008.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view_folder_pool",
+ "notes": "Residual-pool review kept the existing folder-pool anchor unchanged. The folder has standing side/rear-lateral material, but the unselected images mix lifted, seated, bed/couch, front-drifting, and portrait-like frames rather than a cleaner prompt-ready split."
+ },
+ {
+ "index": 2,
+ "reference_image": "fuck from behind standing - woman backside - side view/0010.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 3,
+ "reference_image": "fuck from behind standing - woman backside - side view/0012.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 4,
+ "reference_image": "fuck from behind standing - woman backside - side view/0020.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "fuck from behind standing - woman backside - side view/44.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "fuck from behind standing - woman backside - side view/68.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 7,
+ "reference_image": "fuck from behind standing - woman backside - side view/68_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 8,
+ "reference_image": "fuck from behind standing - woman backside - side view/112.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "fuck from behind standing - woman backside - side view/159.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "fuck from behind standing - woman backside - side view/170.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "fuck from behind standing - woman backside - side view/172.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "fuck from behind standing - woman backside - side view/172_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "fuck from behind standing - woman backside - side view/182.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "fuck from behind standing - woman backside - side view/186.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 15,
+ "reference_image": "fuck from behind standing - woman backside - side view/186_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 16,
+ "reference_image": "fuck from behind standing - woman backside - side view/196.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 17,
+ "reference_image": "fuck from behind standing - woman backside - side view/218.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "fuck from behind standing - woman backside - side view/222.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "fuck from behind standing - woman backside - side view/235.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "fuck from behind standing - woman backside - side view/257.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 21,
+ "reference_image": "fuck from behind standing - woman backside - side view/258.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "fuck from behind standing - woman backside - side view/258_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "fuck from behind standing - woman backside - side view/268.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "fuck from behind standing - woman backside - side view/268_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "fuck from behind standing - woman backside - side view/278.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "fuck from behind standing - woman backside - side view/286.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 27,
+ "reference_image": "fuck from behind standing - woman backside - side view/288.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 28,
+ "reference_image": "fuck from behind standing - woman backside - side view/289.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "fuck from behind standing - woman backside - side view/289_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "fuck from behind standing - woman backside - side view/298.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "fuck from behind standing - woman backside - side view/299.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "fuck from behind standing - woman backside - side view/305.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "fuck from behind standing - woman backside - side view/307.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "fuck from behind standing - woman backside - side view/331.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "fuck from behind standing - woman backside - side view/340.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "fuck from behind standing - woman backside - side view/341.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "fuck from behind standing - woman backside - side view/343.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 38,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 39,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_3.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 40,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 47,
+ "image_count": 7,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "fuck from behind standing - woman backside - side view/343_6.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "fuck from behind standing - woman backside - side view/345.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 44,
+ "reference_image": "fuck from behind standing - woman backside - side view/345_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ },
+ {
+ "index": 45,
+ "reference_image": "fuck from behind standing - woman backside - side view/370.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "fuck from behind standing - woman backside - side view/370_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "fuck from behind standing - woman backside - side view/542.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "notes": "Residual-pool review kept the existing standing backside side-view route unchanged. It already has a coherent reviewed subset; remaining images do not add a distinct repeated camera family in this pass."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/fuck_from_front_standing_side_view_contact_sheet.html b/ab_batches/normal_camera/review/fuck_from_front_standing_side_view_contact_sheet.html
new file mode 100644
index 0000000..4b96c14
--- /dev/null
+++ b/ab_batches/normal_camera/review/fuck_from_front_standing_side_view_contact_sheet.html
@@ -0,0 +1,181 @@
+
+
+
+
+Normal Camera Review Contact Sheet: fuck from front standing - side view
+
+
+
+Normal Camera Review Contact Sheet: fuck from front standing - side view
+No-generation contact sheet. 36 JPGs from fuck from front standing - side view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: fuck from front standing - side view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-36
+
+
+
+001 fuck from front standing - side view/0001.jpgbucket: side_view / normal_standing_from_front_side_view
+
+
+
+002 fuck from front standing - side view/0008.jpgbucket: unassigned
+
+
+
+003 fuck from front standing - side view/0009.jpgbucket: unassigned
+
+
+
+004 fuck from front standing - side view/16.jpgbucket: unassigned
+
+
+
+005 fuck from front standing - side view/19.jpgbucket: unassigned
+
+
+
+006 fuck from front standing - side view/23.jpgbucket: unassigned
+
+
+
+007 fuck from front standing - side view/23_2.jpgbucket: unassigned
+
+
+
+008 fuck from front standing - side view/73.jpgbucket: side_view / normal_standing_from_front_side_view
+
+
+
+009 fuck from front standing - side view/163.jpgbucket: unassigned
+
+
+
+010 fuck from front standing - side view/163_2.jpgbucket: unassigned
+
+
+
+011 fuck from front standing - side view/170.jpgbucket: unassigned
+
+
+
+012 fuck from front standing - side view/172.jpgbucket: unassigned
+
+
+
+013 fuck from front standing - side view/174.jpgbucket: unassigned
+
+
+
+014 fuck from front standing - side view/180.jpgbucket: unassigned
+
+
+
+015 fuck from front standing - side view/183.jpgbucket: unassigned
+
+
+
+016 fuck from front standing - side view/186.jpgbucket: unassigned
+
+
+
+017 fuck from front standing - side view/192.jpgbucket: unassigned
+
+
+
+018 fuck from front standing - side view/207.jpgbucket: unassigned
+
+
+
+019 fuck from front standing - side view/230.jpgbucket: unassigned
+
+
+
+020 fuck from front standing - side view/252.jpgbucket: side_view / normal_standing_from_front_side_view
+
+
+
+021 fuck from front standing - side view/267.jpgbucket: unassigned
+
+
+
+022 fuck from front standing - side view/295.jpgbucket: unassigned
+
+
+
+023 fuck from front standing - side view/295_2.jpgbucket: unassigned
+
+
+
+024 fuck from front standing - side view/296.jpgbucket: unassigned
+
+
+
+025 fuck from front standing - side view/296_2.jpgbucket: unassigned
+
+
+
+026 fuck from front standing - side view/298.jpgbucket: unassigned
+
+
+
+027 fuck from front standing - side view/307.jpgbucket: unassigned
+
+
+
+028 fuck from front standing - side view/320.jpgbucket: unassigned
+
+
+
+029 fuck from front standing - side view/340.jpgbucket: unassigned
+
+
+
+030 fuck from front standing - side view/343.jpgbucket: unassigned
+
+
+
+031 fuck from front standing - side view/343_2.jpgbucket: unassigned
+
+
+
+032 fuck from front standing - side view/345.jpgbucket: unassigned
+
+
+
+033 fuck from front standing - side view/345_2.jpgbucket: unassigned
+
+
+
+034 fuck from front standing - side view/549.jpgbucket: unassigned
+
+
+
+035 fuck from front standing - side view/549_2.jpgbucket: unassigned
+
+
+
+036 fuck from front standing - side view/561.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/fuck_from_front_standing_side_view_review_manifest.json b/ab_batches/normal_camera/review/fuck_from_front_standing_side_view_review_manifest.json
new file mode 100644
index 0000000..52f8803
--- /dev/null
+++ b/ab_batches/normal_camera/review/fuck_from_front_standing_side_view_review_manifest.json
@@ -0,0 +1,705 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "fuck from front standing - side view",
+ "folder_alias": {
+ "exact_source_folder": "fuck from front standing - side view",
+ "canonical_folder": "fuck from front standing - side view",
+ "canonical_key": "fuck_from_front_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 36,
+ "action_family": "standing_penetration",
+ "source_camera_view": "side_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_standing_from_front_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "fuck from front standing - side view/0001.jpg",
+ "fuck from front standing - side view/252.jpg",
+ "fuck from front standing - side view/73.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing selected standing from-front side-view subset unchanged. The remaining source images include usable side/near-side frames, but too many drift into suspended/lifted, close-crop, couch, or front-heavy framing for a safe reference expansion."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "fuck from front standing - side view/0001.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_standing_from_front_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected standing from-front side-view subset unchanged. The remaining source images include usable side/near-side frames, but too many drift into suspended/lifted, close-crop, couch, or front-heavy framing for a safe reference expansion.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "fuck from front standing - side view/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 3,
+ "reference_image": "fuck from front standing - side view/0009.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "fuck from front standing - side view/16.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "fuck from front standing - side view/19.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 6,
+ "reference_image": "fuck from front standing - side view/23.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 7,
+ "reference_image": "fuck from front standing - side view/23_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from front standing - side view/73.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_standing_from_front_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected standing from-front side-view subset unchanged. The remaining source images include usable side/near-side frames, but too many drift into suspended/lifted, close-crop, couch, or front-heavy framing for a safe reference expansion.",
+ "index": 8
+ },
+ {
+ "index": 9,
+ "reference_image": "fuck from front standing - side view/163.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "fuck from front standing - side view/163_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "fuck from front standing - side view/170.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "fuck from front standing - side view/172.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "fuck from front standing - side view/174.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "fuck from front standing - side view/180.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "fuck from front standing - side view/183.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "fuck from front standing - side view/186.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 17,
+ "reference_image": "fuck from front standing - side view/192.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 18,
+ "reference_image": "fuck from front standing - side view/207.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "fuck from front standing - side view/230.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "fuck from front standing - side view/252.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_standing_from_front_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing selected standing from-front side-view subset unchanged. The remaining source images include usable side/near-side frames, but too many drift into suspended/lifted, close-crop, couch, or front-heavy framing for a safe reference expansion.",
+ "index": 20
+ },
+ {
+ "index": 21,
+ "reference_image": "fuck from front standing - side view/267.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "fuck from front standing - side view/295.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "fuck from front standing - side view/295_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "fuck from front standing - side view/296.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "fuck from front standing - side view/296_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "fuck from front standing - side view/298.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "fuck from front standing - side view/307.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "fuck from front standing - side view/320.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "fuck from front standing - side view/340.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "fuck from front standing - side view/343.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "fuck from front standing - side view/343_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "fuck from front standing - side view/345.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "fuck from front standing - side view/345_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "fuck from front standing - side view/549.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "fuck from front standing - side view/549_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "fuck from front standing - side view/561.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 36,
+ "image_count": 36,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "fuck from front standing - side view/0001.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_standing_from_front_side_view",
+ "notes": "Residual-pool review kept the existing selected standing from-front side-view subset unchanged. The remaining source images include usable side/near-side frames, but too many drift into suspended/lifted, close-crop, couch, or front-heavy framing for a safe reference expansion."
+ },
+ {
+ "index": 2,
+ "reference_image": "fuck from front standing - side view/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "fuck from front standing - side view/0009.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "fuck from front standing - side view/16.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "fuck from front standing - side view/19.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "fuck from front standing - side view/23.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "fuck from front standing - side view/23_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "fuck from front standing - side view/73.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_standing_from_front_side_view",
+ "notes": "Residual-pool review kept the existing selected standing from-front side-view subset unchanged. The remaining source images include usable side/near-side frames, but too many drift into suspended/lifted, close-crop, couch, or front-heavy framing for a safe reference expansion."
+ },
+ {
+ "index": 9,
+ "reference_image": "fuck from front standing - side view/163.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "fuck from front standing - side view/163_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "fuck from front standing - side view/170.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "fuck from front standing - side view/172.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "fuck from front standing - side view/174.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "fuck from front standing - side view/180.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "fuck from front standing - side view/183.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "fuck from front standing - side view/186.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "fuck from front standing - side view/192.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "fuck from front standing - side view/207.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "fuck from front standing - side view/230.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "fuck from front standing - side view/252.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_standing_from_front_side_view",
+ "notes": "Residual-pool review kept the existing selected standing from-front side-view subset unchanged. The remaining source images include usable side/near-side frames, but too many drift into suspended/lifted, close-crop, couch, or front-heavy framing for a safe reference expansion."
+ },
+ {
+ "index": 21,
+ "reference_image": "fuck from front standing - side view/267.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "fuck from front standing - side view/295.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "fuck from front standing - side view/295_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "fuck from front standing - side view/296.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "fuck from front standing - side view/296_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "fuck from front standing - side view/298.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "fuck from front standing - side view/307.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "fuck from front standing - side view/320.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "fuck from front standing - side view/340.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "fuck from front standing - side view/343.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "fuck from front standing - side view/343_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "fuck from front standing - side view/345.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "fuck from front standing - side view/345_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "fuck from front standing - side view/549.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "fuck from front standing - side view/549_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "fuck from front standing - side view/561.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/handjob_standing_low_angle_contact_sheet.html b/ab_batches/normal_camera/review/handjob_standing_low_angle_contact_sheet.html
new file mode 100644
index 0000000..4b66f5a
--- /dev/null
+++ b/ab_batches/normal_camera/review/handjob_standing_low_angle_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: handjob - standing -low angle
+
+
+
+Normal Camera Review Contact Sheet: handjob - standing -low angle
+No-generation contact sheet. 1 JPGs from handjob - standing -low angle. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: handjob - standing - low angle.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 handjob - standing -low angle/552.jpgbucket: reject_or_unclear / normal_handjob_standing_low_angle_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/handjob_standing_low_angle_review_manifest.json b/ab_batches/normal_camera/review/handjob_standing_low_angle_review_manifest.json
new file mode 100644
index 0000000..4730f84
--- /dev/null
+++ b/ab_batches/normal_camera/review/handjob_standing_low_angle_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "handjob - standing -low angle",
+ "folder_alias": {
+ "exact_source_folder": "handjob - standing -low angle",
+ "canonical_folder": "handjob - standing - low angle",
+ "canonical_key": "handjob_standing_low_angle",
+ "alias_applied": true,
+ "alias_reason": "Spacing typo normalized for review metadata while preserving exact source path."
+ },
+ "image_count": 1,
+ "action_family": "manual_or_toy",
+ "source_camera_view": "low_angle",
+ "source_catalog_status": "thin_sample",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_handjob_standing_low_angle_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "handjob - standing -low angle/552.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one standing low-angle manual-contact sample as coverage evidence only. A single image is too thin for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "handjob - standing -low angle/552.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_handjob_standing_low_angle_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one standing low-angle manual-contact sample as coverage evidence only. A single image is too thin for a selected pre-A/B route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "handjob - standing -low angle/552.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_low_angle_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one standing low-angle manual-contact sample as coverage evidence only. A single image is too thin for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/handjob_standing_side_view_contact_sheet.html b/ab_batches/normal_camera/review/handjob_standing_side_view_contact_sheet.html
new file mode 100644
index 0000000..1d7eb03
--- /dev/null
+++ b/ab_batches/normal_camera/review/handjob_standing_side_view_contact_sheet.html
@@ -0,0 +1,292 @@
+
+
+
+
+Normal Camera Review Contact Sheet: handjob standing - side view
+
+
+
+Normal Camera Review Contact Sheet: handjob standing - side view
+No-generation contact sheet. 63 JPGs from handjob standing - side view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: handjob standing - side view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 handjob standing - side view/0001.jpgbucket: unassigned
+
+
+
+002 handjob standing - side view/0001_2.jpgbucket: unassigned
+
+
+
+003 handjob standing - side view/0002.jpgbucket: unassigned
+
+
+
+004 handjob standing - side view/0003.jpgbucket: unassigned
+
+
+
+005 handjob standing - side view/0003_2.jpgbucket: unassigned
+
+
+
+006 handjob standing - side view/0003_3.jpgbucket: unassigned
+
+
+
+007 handjob standing - side view/0005.jpgbucket: unassigned
+
+
+
+008 handjob standing - side view/0005_2.jpgbucket: unassigned
+
+
+
+009 handjob standing - side view/0008.jpgbucket: unassigned
+
+
+
+010 handjob standing - side view/0010.jpgbucket: unassigned
+
+
+
+011 handjob standing - side view/0010_2.jpgbucket: unassigned
+
+
+
+012 handjob standing - side view/0010_3.jpgbucket: unassigned
+
+
+
+013 handjob standing - side view/0011.jpgbucket: unassigned
+
+
+
+014 handjob standing - side view/0013.jpgbucket: unassigned
+
+
+
+015 handjob standing - side view/0015.jpgbucket: unassigned
+
+
+
+016 handjob standing - side view/0015_2.jpgbucket: unassigned
+
+
+
+017 handjob standing - side view/16.jpgbucket: side_view / normal_handjob_standing_side_profile
+
+
+
+018 handjob standing - side view/17.jpgbucket: unassigned
+
+
+
+019 handjob standing - side view/0017.jpgbucket: unassigned
+
+
+
+020 handjob standing - side view/0020.jpgbucket: unassigned
+
+
+
+021 handjob standing - side view/46.jpgbucket: unassigned
+
+
+
+022 handjob standing - side view/48.jpgbucket: unassigned
+
+
+
+023 handjob standing - side view/54.jpgbucket: unassigned
+
+
+
+024 handjob standing - side view/105.jpgbucket: side_view / normal_handjob_standing_side_profile
+
+
+
+025 handjob standing - side view/109.jpgbucket: unassigned
+
+
+
+026 handjob standing - side view/113.jpgbucket: unassigned
+
+
+
+027 handjob standing - side view/114.jpgbucket: unassigned
+
+
+
+028 handjob standing - side view/137.jpgbucket: unassigned
+
+
+
+029 handjob standing - side view/145.jpgbucket: unassigned
+
+
+
+030 handjob standing - side view/171.jpgbucket: side_view / normal_handjob_standing_side_profile
+
+
+
+031 handjob standing - side view/174.jpgbucket: side_view / normal_handjob_standing_side_profile
+
+
+
+032 handjob standing - side view/175.jpgbucket: side_view / normal_handjob_standing_side_profile
+
+
+
+033 handjob standing - side view/188.jpgbucket: unassigned
+
+
+
+034 handjob standing - side view/251.jpgbucket: unassigned
+
+
+
+035 handjob standing - side view/260.jpgbucket: unassigned
+
+
+
+036 handjob standing - side view/263.jpgbucket: unassigned
+
+
+
+037 handjob standing - side view/273.jpgbucket: unassigned
+
+
+
+038 handjob standing - side view/274.jpgbucket: unassigned
+
+
+
+039 handjob standing - side view/278.jpgbucket: unassigned
+
+
+
+040 handjob standing - side view/279.jpgbucket: unassigned
+
+
+Page 2: 41-63
+
+
+
+041 handjob standing - side view/288.jpgbucket: unassigned
+
+
+
+042 handjob standing - side view/295.jpgbucket: unassigned
+
+
+
+043 handjob standing - side view/296.jpgbucket: unassigned
+
+
+
+044 handjob standing - side view/305.jpgbucket: side_view / normal_handjob_standing_side_profile
+
+
+
+045 handjob standing - side view/325.jpgbucket: unassigned
+
+
+
+046 handjob standing - side view/327.jpgbucket: unassigned
+
+
+
+047 handjob standing - side view/336.jpgbucket: unassigned
+
+
+
+048 handjob standing - side view/348.jpgbucket: unassigned
+
+
+
+049 handjob standing - side view/359.jpgbucket: unassigned
+
+
+
+050 handjob standing - side view/369.jpgbucket: unassigned
+
+
+
+051 handjob standing - side view/372.jpgbucket: unassigned
+
+
+
+052 handjob standing - side view/372_2.jpgbucket: unassigned
+
+
+
+053 handjob standing - side view/499.jpgbucket: unassigned
+
+
+
+054 handjob standing - side view/505.jpgbucket: unassigned
+
+
+
+055 handjob standing - side view/509.jpgbucket: unassigned
+
+
+
+056 handjob standing - side view/529.jpgbucket: unassigned
+
+
+
+057 handjob standing - side view/536.jpgbucket: unassigned
+
+
+
+058 handjob standing - side view/549.jpgbucket: side_view / normal_handjob_standing_side_profile
+
+
+
+059 handjob standing - side view/601.jpgbucket: unassigned
+
+
+
+060 handjob standing - side view/601_2.jpgbucket: unassigned
+
+
+
+061 handjob standing - side view/602.jpgbucket: unassigned
+
+
+
+062 handjob standing - side view/608.jpgbucket: unassigned
+
+
+
+063 handjob standing - side view/614.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/handjob_standing_side_view_review_manifest.json b/ab_batches/normal_camera/review/handjob_standing_side_view_review_manifest.json
new file mode 100644
index 0000000..1f0973b
--- /dev/null
+++ b/ab_batches/normal_camera/review/handjob_standing_side_view_review_manifest.json
@@ -0,0 +1,1200 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "handjob standing - side view",
+ "folder_alias": {
+ "exact_source_folder": "handjob standing - side view",
+ "canonical_folder": "handjob standing - side view",
+ "canonical_key": "handjob_standing_side_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 63,
+ "action_family": "manual_or_toy",
+ "source_camera_view": "side_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_handjob_standing_side_profile",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "handjob standing - side view/16.jpg",
+ "handjob standing - side view/105.jpg",
+ "handjob standing - side view/171.jpg",
+ "handjob standing - side view/174.jpg",
+ "handjob standing - side view/175.jpg",
+ "handjob standing - side view/305.jpg",
+ "handjob standing - side view/549.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ }
+ ],
+ "review_items": [
+ {
+ "index": 1,
+ "reference_image": "handjob standing - side view/0001.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 2,
+ "reference_image": "handjob standing - side view/0001_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 3,
+ "reference_image": "handjob standing - side view/0002.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "handjob standing - side view/0003.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "handjob standing - side view/0003_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 6,
+ "reference_image": "handjob standing - side view/0003_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 7,
+ "reference_image": "handjob standing - side view/0005.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 8,
+ "reference_image": "handjob standing - side view/0005_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "handjob standing - side view/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "handjob standing - side view/0010.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "handjob standing - side view/0010_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "handjob standing - side view/0010_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "handjob standing - side view/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "handjob standing - side view/0013.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "handjob standing - side view/0015.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "handjob standing - side view/0015_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "handjob standing - side view/16.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass.",
+ "index": 17
+ },
+ {
+ "index": 18,
+ "reference_image": "handjob standing - side view/17.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "handjob standing - side view/0017.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "handjob standing - side view/0020.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "handjob standing - side view/46.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "handjob standing - side view/48.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "handjob standing - side view/54.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "handjob standing - side view/105.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass.",
+ "index": 24
+ },
+ {
+ "index": 25,
+ "reference_image": "handjob standing - side view/109.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "handjob standing - side view/113.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "handjob standing - side view/114.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "handjob standing - side view/137.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "handjob standing - side view/145.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "handjob standing - side view/171.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass.",
+ "index": 30
+ },
+ {
+ "reference_image": "handjob standing - side view/174.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass.",
+ "index": 31
+ },
+ {
+ "reference_image": "handjob standing - side view/175.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass.",
+ "index": 32
+ },
+ {
+ "index": 33,
+ "reference_image": "handjob standing - side view/188.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "handjob standing - side view/251.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "handjob standing - side view/260.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "handjob standing - side view/263.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "handjob standing - side view/273.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "handjob standing - side view/274.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "handjob standing - side view/278.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "handjob standing - side view/279.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "handjob standing - side view/288.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "handjob standing - side view/295.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 43,
+ "reference_image": "handjob standing - side view/296.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "handjob standing - side view/305.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass.",
+ "index": 44
+ },
+ {
+ "index": 45,
+ "reference_image": "handjob standing - side view/325.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "handjob standing - side view/327.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 47,
+ "reference_image": "handjob standing - side view/336.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 48,
+ "reference_image": "handjob standing - side view/348.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 49,
+ "reference_image": "handjob standing - side view/359.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 50,
+ "reference_image": "handjob standing - side view/369.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 51,
+ "reference_image": "handjob standing - side view/372.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 52,
+ "reference_image": "handjob standing - side view/372_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 53,
+ "reference_image": "handjob standing - side view/499.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 54,
+ "reference_image": "handjob standing - side view/505.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 55,
+ "reference_image": "handjob standing - side view/509.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 56,
+ "reference_image": "handjob standing - side view/529.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 57,
+ "reference_image": "handjob standing - side view/536.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "handjob standing - side view/549.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass.",
+ "index": 58
+ },
+ {
+ "index": 59,
+ "reference_image": "handjob standing - side view/601.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 60,
+ "reference_image": "handjob standing - side view/601_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "handjob standing - side view/602.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "handjob standing - side view/608.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 63,
+ "reference_image": "handjob standing - side view/614.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "handjob standing - side view/0001.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 2,
+ "reference_image": "handjob standing - side view/0001_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "handjob standing - side view/0002.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "handjob standing - side view/0003.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "handjob standing - side view/0003_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "handjob standing - side view/0003_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "handjob standing - side view/0005.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "handjob standing - side view/0005_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "handjob standing - side view/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "handjob standing - side view/0010.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "handjob standing - side view/0010_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "handjob standing - side view/0010_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "handjob standing - side view/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "handjob standing - side view/0013.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "handjob standing - side view/0015.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "handjob standing - side view/0015_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "handjob standing - side view/16.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 18,
+ "reference_image": "handjob standing - side view/17.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "handjob standing - side view/0017.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "handjob standing - side view/0020.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "handjob standing - side view/46.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "handjob standing - side view/48.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "handjob standing - side view/54.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "handjob standing - side view/105.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 25,
+ "reference_image": "handjob standing - side view/109.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "handjob standing - side view/113.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "handjob standing - side view/114.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "handjob standing - side view/137.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "handjob standing - side view/145.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "handjob standing - side view/171.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 31,
+ "reference_image": "handjob standing - side view/174.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 32,
+ "reference_image": "handjob standing - side view/175.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 33,
+ "reference_image": "handjob standing - side view/188.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "handjob standing - side view/251.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "handjob standing - side view/260.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "handjob standing - side view/263.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "handjob standing - side view/273.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "handjob standing - side view/274.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "handjob standing - side view/278.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "handjob standing - side view/279.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 63,
+ "image_count": 23,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "handjob standing - side view/288.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "handjob standing - side view/295.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "handjob standing - side view/296.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 44,
+ "reference_image": "handjob standing - side view/305.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 45,
+ "reference_image": "handjob standing - side view/325.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "handjob standing - side view/327.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "handjob standing - side view/336.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 48,
+ "reference_image": "handjob standing - side view/348.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "handjob standing - side view/359.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 50,
+ "reference_image": "handjob standing - side view/369.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 51,
+ "reference_image": "handjob standing - side view/372.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 52,
+ "reference_image": "handjob standing - side view/372_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "handjob standing - side view/499.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "handjob standing - side view/505.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "handjob standing - side view/509.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "handjob standing - side view/529.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 57,
+ "reference_image": "handjob standing - side view/536.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "handjob standing - side view/549.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_handjob_standing_side_profile",
+ "notes": "Residual-pool review kept the existing standing side-profile subset unchanged. The remaining source images mix kneeling, seated, close portrait, near-front, and oral-adjacent frames, so no additional references were promoted in this pass."
+ },
+ {
+ "index": 59,
+ "reference_image": "handjob standing - side view/601.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 60,
+ "reference_image": "handjob standing - side view/601_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "handjob standing - side view/602.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "handjob standing - side view/608.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "handjob standing - side view/614.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/index.html b/ab_batches/normal_camera/review/index.html
new file mode 100644
index 0000000..c7e3046
--- /dev/null
+++ b/ab_batches/normal_camera/review/index.html
@@ -0,0 +1,76 @@
+
+
+
+
+Normal Camera Review Index
+
+
+
+Normal Camera Review Index
+No-generation index for local review manifests and contact sheets.
+
+
+
diff --git a/ab_batches/normal_camera/review/index.md b/ab_batches/normal_camera/review/index.md
new file mode 100644
index 0000000..09cbfad
--- /dev/null
+++ b/ab_batches/normal_camera/review/index.md
@@ -0,0 +1,56 @@
+# Normal Camera Review Index
+
+No-generation index for local review manifests and contact sheets.
+
+| Source folder | Canonical label | Images | Selected refs | Residual | Manifest | Contact sheet |
+| --- | --- | ---: | ---: | ---: | --- | --- |
+| reverse cowgirl | reverse cowgirl | 240 | 36 | 204 | [manifest](reverse_cowgirl_review_manifest.json) | [contact sheet](reverse_cowgirl_contact_sheet.html) |
+| breasts exposed | breasts exposed | 168 | 46 | 122 | [manifest](breasts_exposed_review_manifest.json) | [contact sheet](breasts_exposed_contact_sheet.html) |
+| pussy spread | pussy spread | 100 | 36 | 64 | [manifest](pussy_spread_review_manifest.json) | [contact sheet](pussy_spread_contact_sheet.html) |
+| anal random | anal random | 99 | 23 | 76 | [manifest](anal_random_review_manifest.json) | [contact sheet](anal_random_contact_sheet.html) |
+| couple kissing | couple kissing | 88 | 12 | 76 | [manifest](couple_kissing_review_manifest.json) | [contact sheet](couple_kissing_contact_sheet.html) |
+| cowgirl - back view - 3-4 angle | cowgirl - back view - 3-4 angle | 129 | 15 | 114 | [manifest](cowgirl_back_view_3_4_angle_review_manifest.json) | [contact sheet](cowgirl_back_view_3_4_angle_contact_sheet.html) |
+| cowgirl - side view | cowgirl - side view | 34 | 15 | 19 | [manifest](cowgirl_side_view_review_manifest.json) | [contact sheet](cowgirl_side_view_contact_sheet.html) |
+| woman solo showing her hass - back view | woman solo showing her ass - back view | 99 | 11 | 88 | [manifest](woman_solo_showing_her_hass_back_view_review_manifest.json) | [contact sheet](woman_solo_showing_her_hass_back_view_contact_sheet.html) |
+| doggy on all four - back view - 3-4 angle | doggy on all four - back view - 3-4 angle | 69 | 15 | 54 | [manifest](doggy_on_all_four_back_view_3_4_angle_review_manifest.json) | [contact sheet](doggy_on_all_four_back_view_3_4_angle_contact_sheet.html) |
+| doggy on all four - side view | doggy on all four - side view | 70 | 14 | 56 | [manifest](doggy_on_all_four_side_view_review_manifest.json) | [contact sheet](doggy_on_all_four_side_view_contact_sheet.html) |
+| doggy all four - front view | doggy all four - front view | 28 | 15 | 13 | [manifest](doggy_all_four_front_view_review_manifest.json) | [contact sheet](doggy_all_four_front_view_contact_sheet.html) |
+| doggy - front view | doggy - front view | 13 | 12 | 1 | [manifest](doggy_front_view_review_manifest.json) | [contact sheet](doggy_front_view_contact_sheet.html) |
+| handjob standing - side view | handjob standing - side view | 63 | 7 | 56 | [manifest](handjob_standing_side_view_review_manifest.json) | [contact sheet](handjob_standing_side_view_contact_sheet.html) |
+| wand | wand | 9 | 8 | 1 | [manifest](wand_review_manifest.json) | [contact sheet](wand_contact_sheet.html) |
+| breast sucking - side view | breast sucking - side view | 43 | 15 | 28 | [manifest](breast_sucking_side_view_review_manifest.json) | [contact sheet](breast_sucking_side_view_contact_sheet.html) |
+| fuck from front standing - side view | fuck from front standing - side view | 36 | 3 | 33 | [manifest](fuck_from_front_standing_side_view_review_manifest.json) | [contact sheet](fuck_from_front_standing_side_view_contact_sheet.html) |
+| doggy - back view - 3-4 angle | doggy - back view - 3-4 angle | 35 | 15 | 20 | [manifest](doggy_back_view_3_4_angle_review_manifest.json) | [contact sheet](doggy_back_view_3_4_angle_contact_sheet.html) |
+| penis worship | penis worship | 49 | 20 | 29 | [manifest](penis_worship_review_manifest.json) | [contact sheet](penis_worship_contact_sheet.html) |
+| fuck from behind standing - woman backside - side view | fuck from behind standing - woman backside - side view | 47 | 17 | 30 | [manifest](fuck_from_behind_standing_woman_backside_side_view_review_manifest.json) | [contact sheet](fuck_from_behind_standing_woman_backside_side_view_contact_sheet.html) |
+| piledriver | piledriver | 27 | 18 | 9 | [manifest](piledriver_review_manifest.json) | [contact sheet](piledriver_contact_sheet.html) |
+| blowjob - laying - front view | blowjob - laying - front view | 26 | 15 | 11 | [manifest](blowjob_laying_front_view_review_manifest.json) | [contact sheet](blowjob_laying_front_view_contact_sheet.html) |
+| breast - touching - front view | breast - touching - front view | 25 | 15 | 10 | [manifest](breast_touching_front_view_review_manifest.json) | [contact sheet](breast_touching_front_view_contact_sheet.html) |
+| ballsucking - laying | ballsucking - laying | 2 | 2 | 0 | [manifest](ballsucking_laying_review_manifest.json) | [contact sheet](ballsucking_laying_contact_sheet.html) |
+| ballsucking - standing | ballsucking - standing | 12 | 12 | 0 | [manifest](ballsucking_standing_review_manifest.json) | [contact sheet](ballsucking_standing_contact_sheet.html) |
+| face sitting | face sitting | 4 | 4 | 0 | [manifest](face_sitting_review_manifest.json) | [contact sheet](face_sitting_contact_sheet.html) |
+| pussy licking - backv iew | pussy licking - back view | 3 | 3 | 0 | [manifest](pussy_licking_backv_iew_review_manifest.json) | [contact sheet](pussy_licking_backv_iew_contact_sheet.html) |
+| removing pants | removing pants | 3 | 3 | 0 | [manifest](removing_pants_review_manifest.json) | [contact sheet](removing_pants_contact_sheet.html) |
+| rimjob | rimjob | 3 | 3 | 0 | [manifest](rimjob_review_manifest.json) | [contact sheet](rimjob_contact_sheet.html) |
+| footjob | footjob | 2 | 2 | 0 | [manifest](footjob_review_manifest.json) | [contact sheet](footjob_contact_sheet.html) |
+| reverse cowgirl - leg up | reverse cowgirl - leg up | 2 | 2 | 0 | [manifest](reverse_cowgirl_leg_up_review_manifest.json) | [contact sheet](reverse_cowgirl_leg_up_contact_sheet.html) |
+| reverse cowgirl -pretzel | reverse cowgirl - pretzel | 2 | 2 | 0 | [manifest](reverse_cowgirl_pretzel_review_manifest.json) | [contact sheet](reverse_cowgirl_pretzel_contact_sheet.html) |
+| fist | fist | 1 | 1 | 0 | [manifest](fist_review_manifest.json) | [contact sheet](fist_contact_sheet.html) |
+| anal cowgirl | anal cowgirl | 1 | 1 | 0 | [manifest](anal_cowgirl_review_manifest.json) | [contact sheet](anal_cowgirl_contact_sheet.html) |
+| anal doggy - side view | anal doggy - side view | 1 | 1 | 0 | [manifest](anal_doggy_side_view_review_manifest.json) | [contact sheet](anal_doggy_side_view_contact_sheet.html) |
+| anal fuck from behind laying - back view - 3-4 angle | anal fuck from behind laying - back view - 3-4 angle | 1 | 1 | 0 | [manifest](anal_fuck_from_behind_laying_back_view_3_4_angle_review_manifest.json) | [contact sheet](anal_fuck_from_behind_laying_back_view_3_4_angle_contact_sheet.html) |
+| anal reverse congress | anal reverse congress | 1 | 1 | 0 | [manifest](anal_reverse_congress_review_manifest.json) | [contact sheet](anal_reverse_congress_contact_sheet.html) |
+| anus lickiing | anus licking | 1 | 1 | 0 | [manifest](anus_lickiing_review_manifest.json) | [contact sheet](anus_lickiing_contact_sheet.html) |
+| blowjob laying - back view - 3-4 angle | blowjob laying - back view - 3-4 angle | 1 | 1 | 0 | [manifest](blowjob_laying_back_view_3_4_angle_review_manifest.json) | [contact sheet](blowjob_laying_back_view_3_4_angle_contact_sheet.html) |
+| doggy press - back side | doggy press - back side | 1 | 1 | 0 | [manifest](doggy_press_back_side_review_manifest.json) | [contact sheet](doggy_press_back_side_contact_sheet.html) |
+| face sitting - front view | face sitting - front view | 1 | 1 | 0 | [manifest](face_sitting_front_view_review_manifest.json) | [contact sheet](face_sitting_front_view_contact_sheet.html) |
+| handjob - standing -low angle | handjob - standing - low angle | 1 | 1 | 0 | [manifest](handjob_standing_low_angle_review_manifest.json) | [contact sheet](handjob_standing_low_angle_contact_sheet.html) |
+| pussy licking leg up - back view - 3-4 angle | pussy licking leg up - back view - 3-4 angle | 1 | 1 | 0 | [manifest](pussy_licking_leg_up_back_view_3_4_angle_review_manifest.json) | [contact sheet](pussy_licking_leg_up_back_view_3_4_angle_contact_sheet.html) |
+| pussy licking standing woman | pussy licking standing woman | 1 | 1 | 0 | [manifest](pussy_licking_standing_woman_review_manifest.json) | [contact sheet](pussy_licking_standing_woman_contact_sheet.html) |
+| under desk | under desk | 1 | 1 | 0 | [manifest](under_desk_review_manifest.json) | [contact sheet](under_desk_contact_sheet.html) |
+| pretzel | pretzel | 2 | 2 | 0 | [manifest](pretzel_review_manifest.json) | [contact sheet](pretzel_contact_sheet.html) |
+| woman ass exposed | woman ass exposed | 4 | 4 | 0 | [manifest](woman_ass_exposed_review_manifest.json) | [contact sheet](woman_ass_exposed_contact_sheet.html) |
+| reverse congress - front view | reverse congress - front view | 21 | 15 | 6 | [manifest](reverse_congress_front_view_review_manifest.json) | [contact sheet](reverse_congress_front_view_contact_sheet.html) |
+| boobjob | boobjob | 19 | 13 | 6 | [manifest](boobjob_review_manifest.json) | [contact sheet](boobjob_contact_sheet.html) |
+| fingering | fingering | 15 | 12 | 3 | [manifest](fingering_review_manifest.json) | [contact sheet](fingering_contact_sheet.html) |
+| 69 | 69 | 10 | 8 | 2 | [manifest](69_review_manifest.json) | [contact sheet](69_contact_sheet.html) |
diff --git a/ab_batches/normal_camera/review/penis_worship_contact_sheet.html b/ab_batches/normal_camera/review/penis_worship_contact_sheet.html
new file mode 100644
index 0000000..02bd274
--- /dev/null
+++ b/ab_batches/normal_camera/review/penis_worship_contact_sheet.html
@@ -0,0 +1,236 @@
+
+
+
+
+Normal Camera Review Contact Sheet: penis worship
+
+
+
+Normal Camera Review Contact Sheet: penis worship
+No-generation contact sheet. 49 JPGs from penis worship. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: penis worship.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 penis worship/0001.jpgbucket: reject_or_unclear / normal_penis_worship_foreground_close_reference_folder_pool
+
+
+
+002 penis worship/0001_2.jpgbucket: unassigned
+
+
+
+003 penis worship/0002.jpgbucket: unassigned
+
+
+
+004 penis worship/0002_2.jpgbucket: side_view / normal_penis_worship_laying_partner_vertical_side_view
+
+
+
+005 penis worship/0003.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+006 penis worship/0003_2.jpgbucket: unassigned
+
+
+
+007 penis worship/0004.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+008 penis worship/0004_2.jpgbucket: unassigned
+
+
+
+009 penis worship/0004_3.jpgbucket: unassigned
+
+
+
+010 penis worship/0006.jpgbucket: side_view / normal_penis_worship_laying_partner_vertical_side_view
+
+
+
+011 penis worship/0007.jpgbucket: unassigned
+
+
+
+012 penis worship/0008.jpgbucket: unassigned
+
+
+
+013 penis worship/0008_2.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+014 penis worship/0010.jpgbucket: unassigned
+
+
+
+015 penis worship/0011.jpgbucket: side_view / normal_penis_worship_laying_partner_vertical_side_view
+
+
+
+016 penis worship/0012.jpgbucket: unassigned
+
+
+
+017 penis worship/0015.jpgbucket: unassigned
+
+
+
+018 penis worship/0016.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+019 penis worship/0017.jpgbucket: unassigned
+
+
+
+020 penis worship/0018.jpgbucket: unassigned
+
+
+
+021 penis worship/0018_2.jpgbucket: unassigned
+
+
+
+022 penis worship/0020.jpgbucket: unassigned
+
+
+
+023 penis worship/499.jpgbucket: unassigned
+
+
+
+024 penis worship/505.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+025 penis worship/510.jpgbucket: top_or_low_special / normal_penis_worship_top_view
+
+
+
+026 penis worship/517.jpgbucket: top_or_low_special / normal_penis_worship_top_view
+
+
+
+027 penis worship/517_2.jpgbucket: unassigned
+
+
+
+028 penis worship/519.jpgbucket: top_or_low_special / normal_penis_worship_top_view
+
+
+
+029 penis worship/519_2.jpgbucket: unassigned
+
+
+
+030 penis worship/520.jpgbucket: top_or_low_special / normal_penis_worship_top_view
+
+
+
+031 penis worship/522.jpgbucket: unassigned
+
+
+
+032 penis worship/565.jpgbucket: unassigned
+
+
+
+033 penis worship/566.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+034 penis worship/566_2.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+035 penis worship/590.jpgbucket: unassigned
+
+
+
+036 penis worship/590_2.jpgbucket: unassigned
+
+
+
+037 penis worship/592.jpgbucket: unassigned
+
+
+
+038 penis worship/592_2.jpgbucket: unassigned
+
+
+
+039 penis worship/598.jpgbucket: unassigned
+
+
+
+040 penis worship/603.jpgbucket: unassigned
+
+
+Page 2: 41-49
+
+
+
+041 penis worship/603_2.jpgbucket: unassigned
+
+
+
+042 penis worship/603_3.jpgbucket: unassigned
+
+
+
+043 penis worship/603_4.jpgbucket: top_or_low_special / normal_penis_worship_top_view
+
+
+
+044 penis worship/604.jpgbucket: unassigned
+
+
+
+045 penis worship/607.jpgbucket: unassigned
+
+
+
+046 penis worship/607_2.jpgbucket: top_or_low_special / normal_penis_worship_top_view
+
+
+
+047 penis worship/608.jpgbucket: side_view / normal_penis_worship_laying_partner_vertical_side_view
+
+
+
+048 penis worship/609.jpgbucket: side_view / normal_penis_worship_laying_partner_vertical_side_view
+
+
+
+049 penis worship/618.jpgbucket: side_view / normal_penis_worship_side_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/penis_worship_review_manifest.json b/ab_batches/normal_camera/review/penis_worship_review_manifest.json
new file mode 100644
index 0000000..595da99
--- /dev/null
+++ b/ab_batches/normal_camera/review/penis_worship_review_manifest.json
@@ -0,0 +1,975 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "penis worship",
+ "folder_alias": {
+ "exact_source_folder": "penis worship",
+ "canonical_folder": "penis worship",
+ "canonical_key": "penis_worship",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 49,
+ "action_family": "oral_other",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_penis_worship_foreground_close_reference_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/0001.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing foreground-close source-pool anchor unchanged. The remaining images are foreground-heavy and drift through front or near-POV framing, so no prompt-ready expansion was promoted in this pass."
+ },
+ {
+ "variant_key": "normal_penis_worship_top_view",
+ "review_bucket": "top_or_low_special",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/510.jpg",
+ "penis worship/517.jpg",
+ "penis worship/519.jpg",
+ "penis worship/520.jpg",
+ "penis worship/603_4.jpg",
+ "penis worship/607_2.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route."
+ },
+ {
+ "variant_key": "normal_penis_worship_side_view",
+ "review_bucket": "side_view",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/0003.jpg",
+ "penis worship/0004.jpg",
+ "penis worship/0008_2.jpg",
+ "penis worship/0016.jpg",
+ "penis worship/505.jpg",
+ "penis worship/566.jpg",
+ "penis worship/566_2.jpg",
+ "penis worship/618.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "review_bucket": "side_view",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/0002_2.jpg",
+ "penis worship/0006.jpg",
+ "penis worship/0011.jpg",
+ "penis worship/608.jpg",
+ "penis worship/609.jpg"
+ ],
+ "evidence_notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "penis worship/0001.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_penis_worship_foreground_close_reference_folder_pool",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing foreground-close source-pool anchor unchanged. The remaining images are foreground-heavy and drift through front or near-POV framing, so no prompt-ready expansion was promoted in this pass.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "penis worship/0001_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 3,
+ "reference_image": "penis worship/0002.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/0002_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion.",
+ "index": 4
+ },
+ {
+ "reference_image": "penis worship/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "penis worship/0003_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/0004.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "penis worship/0004_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "penis worship/0004_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion.",
+ "index": 10
+ },
+ {
+ "index": 11,
+ "reference_image": "penis worship/0007.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "penis worship/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/0008_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 13
+ },
+ {
+ "index": 14,
+ "reference_image": "penis worship/0010.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/0011.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion.",
+ "index": 15
+ },
+ {
+ "index": 16,
+ "reference_image": "penis worship/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 17,
+ "reference_image": "penis worship/0015.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/0016.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 18
+ },
+ {
+ "index": 19,
+ "reference_image": "penis worship/0017.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "penis worship/0018.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "penis worship/0018_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "penis worship/0020.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "penis worship/499.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/505.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 24
+ },
+ {
+ "reference_image": "penis worship/510.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_penis_worship_top_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route.",
+ "index": 25
+ },
+ {
+ "reference_image": "penis worship/517.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_penis_worship_top_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route.",
+ "index": 26
+ },
+ {
+ "index": 27,
+ "reference_image": "penis worship/517_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/519.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_penis_worship_top_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route.",
+ "index": 28
+ },
+ {
+ "index": 29,
+ "reference_image": "penis worship/519_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/520.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_penis_worship_top_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route.",
+ "index": 30
+ },
+ {
+ "index": 31,
+ "reference_image": "penis worship/522.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "penis worship/565.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/566.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 33
+ },
+ {
+ "reference_image": "penis worship/566_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 34
+ },
+ {
+ "index": 35,
+ "reference_image": "penis worship/590.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "penis worship/590_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "penis worship/592.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "penis worship/592_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "penis worship/598.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "penis worship/603.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "penis worship/603_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "penis worship/603_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/603_4.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_penis_worship_top_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route.",
+ "index": 43
+ },
+ {
+ "index": 44,
+ "reference_image": "penis worship/604.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 45,
+ "reference_image": "penis worship/607.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "penis worship/607_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_penis_worship_top_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route.",
+ "index": 46
+ },
+ {
+ "reference_image": "penis worship/608.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion.",
+ "index": 47
+ },
+ {
+ "reference_image": "penis worship/609.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion.",
+ "index": 48
+ },
+ {
+ "reference_image": "penis worship/618.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_penis_worship_side_view",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass.",
+ "index": 49
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "penis worship/0001.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_foreground_close_reference_folder_pool",
+ "notes": "Residual-pool review kept the existing foreground-close source-pool anchor unchanged. The remaining images are foreground-heavy and drift through front or near-POV framing, so no prompt-ready expansion was promoted in this pass."
+ },
+ {
+ "index": 2,
+ "reference_image": "penis worship/0001_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "penis worship/0002.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "penis worship/0002_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion."
+ },
+ {
+ "index": 5,
+ "reference_image": "penis worship/0003.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "index": 6,
+ "reference_image": "penis worship/0003_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "penis worship/0004.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "index": 8,
+ "reference_image": "penis worship/0004_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "penis worship/0004_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "penis worship/0006.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion."
+ },
+ {
+ "index": 11,
+ "reference_image": "penis worship/0007.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "penis worship/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "penis worship/0008_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "index": 14,
+ "reference_image": "penis worship/0010.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "penis worship/0011.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion."
+ },
+ {
+ "index": 16,
+ "reference_image": "penis worship/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "penis worship/0015.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "penis worship/0016.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "index": 19,
+ "reference_image": "penis worship/0017.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "penis worship/0018.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "penis worship/0018_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "penis worship/0020.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "penis worship/499.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "penis worship/505.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "index": 25,
+ "reference_image": "penis worship/510.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_top_view",
+ "notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route."
+ },
+ {
+ "index": 26,
+ "reference_image": "penis worship/517.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_top_view",
+ "notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route."
+ },
+ {
+ "index": 27,
+ "reference_image": "penis worship/517_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "penis worship/519.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_top_view",
+ "notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route."
+ },
+ {
+ "index": 29,
+ "reference_image": "penis worship/519_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "penis worship/520.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_top_view",
+ "notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route."
+ },
+ {
+ "index": 31,
+ "reference_image": "penis worship/522.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "penis worship/565.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "penis worship/566.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "index": 34,
+ "reference_image": "penis worship/566_2.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ },
+ {
+ "index": 35,
+ "reference_image": "penis worship/590.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "penis worship/590_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "penis worship/592.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "penis worship/592_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "penis worship/598.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "penis worship/603.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 49,
+ "image_count": 9,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "penis worship/603_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "penis worship/603_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "penis worship/603_4.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_top_view",
+ "notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route."
+ },
+ {
+ "index": 44,
+ "reference_image": "penis worship/604.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 45,
+ "reference_image": "penis worship/607.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "penis worship/607_2.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_top_view",
+ "notes": "Residual-pool review kept the existing user-selected top-view anchors unchanged. The folder still needs cleaner repeated samples before this orientation can become a pre-A/B route."
+ },
+ {
+ "index": 47,
+ "reference_image": "penis worship/608.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion."
+ },
+ {
+ "index": 48,
+ "reference_image": "penis worship/609.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "notes": "Residual-pool review kept the existing laying-partner vertical side-view anchors unchanged. The remaining frames stay too mixed for promotion."
+ },
+ {
+ "index": 49,
+ "reference_image": "penis worship/618.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_penis_worship_side_view",
+ "notes": "Residual-pool review kept the existing user-selected side-view anchors unchanged. The residual folder does not add a cleaner repeated lateral camera subset in this pass."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/piledriver_contact_sheet.html b/ab_batches/normal_camera/review/piledriver_contact_sheet.html
new file mode 100644
index 0000000..75a1385
--- /dev/null
+++ b/ab_batches/normal_camera/review/piledriver_contact_sheet.html
@@ -0,0 +1,145 @@
+
+
+
+
+Normal Camera Review Contact Sheet: piledriver
+
+
+
+Normal Camera Review Contact Sheet: piledriver
+No-generation contact sheet. 27 JPGs from piledriver. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: piledriver.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-27
+
+
+
+001 piledriver/0001.jpgbucket: reject_or_unclear / normal_piledriver_mixed_camera_folder_pool
+
+
+
+002 piledriver/0002.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+003 piledriver/0004.jpgbucket: unassigned
+
+
+
+004 piledriver/0004_2.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+005 piledriver/0005.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+006 piledriver/0006.jpgbucket: unassigned
+
+
+
+007 piledriver/0006_2.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+008 piledriver/0007.jpgbucket: unassigned
+
+
+
+009 piledriver/0007_2.jpgbucket: unassigned
+
+
+
+010 piledriver/0009.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+011 piledriver/0009_2.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+012 piledriver/0011.jpgbucket: unassigned
+
+
+
+013 piledriver/0012.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+014 piledriver/0012_2.jpgbucket: reject_or_unclear / normal_piledriver_mixed_camera_folder_pool
+
+
+
+015 piledriver/0013.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+016 piledriver/0021.jpgbucket: unassigned
+
+
+
+017 piledriver/267.jpgbucket: unassigned
+
+
+
+018 piledriver/282.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+019 piledriver/317.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+020 piledriver/317_2.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+021 piledriver/317_3.jpgbucket: unassigned
+
+
+
+022 piledriver/318.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+023 piledriver/319.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+024 piledriver/494.jpgbucket: unassigned
+
+
+
+025 piledriver/494_2.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+026 piledriver/538.jpgbucket: top_or_low_special / normal_piledriver_high_front_down_view
+
+
+
+027 piledriver/617.jpgbucket: reject_or_unclear / normal_piledriver_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/piledriver_review_manifest.json b/ab_batches/normal_camera/review/piledriver_review_manifest.json
new file mode 100644
index 0000000..448d26f
--- /dev/null
+++ b/ab_batches/normal_camera/review/piledriver_review_manifest.json
@@ -0,0 +1,552 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "piledriver",
+ "folder_alias": {
+ "exact_source_folder": "piledriver",
+ "canonical_folder": "piledriver",
+ "canonical_key": "piledriver",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 27,
+ "action_family": "piledriver_or_pretzel",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "piledriver/0001.jpg",
+ "piledriver/0012_2.jpg",
+ "piledriver/617.jpg"
+ ],
+ "evidence_notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder remains too broad for one camera route because it mixes tight top crops, side drifts, and selected high/front-down examples."
+ },
+ {
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "review_bucket": "top_or_low_special",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "piledriver/0002.jpg",
+ "piledriver/0004_2.jpg",
+ "piledriver/0005.jpg",
+ "piledriver/0006_2.jpg",
+ "piledriver/0009.jpg",
+ "piledriver/0009_2.jpg",
+ "piledriver/0012.jpg",
+ "piledriver/0013.jpg",
+ "piledriver/282.jpg",
+ "piledriver/317.jpg",
+ "piledriver/317_2.jpg",
+ "piledriver/318.jpg",
+ "piledriver/319.jpg",
+ "piledriver/494_2.jpg",
+ "piledriver/538.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "piledriver/0001.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder remains too broad for one camera route because it mixes tight top crops, side drifts, and selected high/front-down examples.",
+ "index": 1
+ },
+ {
+ "reference_image": "piledriver/0002.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 2
+ },
+ {
+ "index": 3,
+ "reference_image": "piledriver/0004.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "piledriver/0004_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 4
+ },
+ {
+ "reference_image": "piledriver/0005.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "piledriver/0006.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "piledriver/0006_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "piledriver/0007.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 9,
+ "reference_image": "piledriver/0007_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "piledriver/0009.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 10
+ },
+ {
+ "reference_image": "piledriver/0009_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 11
+ },
+ {
+ "index": 12,
+ "reference_image": "piledriver/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "piledriver/0012.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 13
+ },
+ {
+ "reference_image": "piledriver/0012_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder remains too broad for one camera route because it mixes tight top crops, side drifts, and selected high/front-down examples.",
+ "index": 14
+ },
+ {
+ "reference_image": "piledriver/0013.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 15
+ },
+ {
+ "index": 16,
+ "reference_image": "piledriver/0021.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 17,
+ "reference_image": "piledriver/267.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "piledriver/282.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 18
+ },
+ {
+ "reference_image": "piledriver/317.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 19
+ },
+ {
+ "reference_image": "piledriver/317_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 20
+ },
+ {
+ "index": 21,
+ "reference_image": "piledriver/317_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "piledriver/318.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 22
+ },
+ {
+ "reference_image": "piledriver/319.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 23
+ },
+ {
+ "index": 24,
+ "reference_image": "piledriver/494.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "piledriver/494_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 25
+ },
+ {
+ "reference_image": "piledriver/538.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "top_or_low_special",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route.",
+ "index": 26
+ },
+ {
+ "reference_image": "piledriver/617.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "selection_date": "2026-06-29",
+ "review_notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder remains too broad for one camera route because it mixes tight top crops, side drifts, and selected high/front-down examples.",
+ "index": 27
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 27,
+ "image_count": 27,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "piledriver/0001.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder remains too broad for one camera route because it mixes tight top crops, side drifts, and selected high/front-down examples."
+ },
+ {
+ "index": 2,
+ "reference_image": "piledriver/0002.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 3,
+ "reference_image": "piledriver/0004.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "piledriver/0004_2.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 5,
+ "reference_image": "piledriver/0005.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 6,
+ "reference_image": "piledriver/0006.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "piledriver/0006_2.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 8,
+ "reference_image": "piledriver/0007.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "piledriver/0007_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "piledriver/0009.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 11,
+ "reference_image": "piledriver/0009_2.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 12,
+ "reference_image": "piledriver/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "piledriver/0012.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 14,
+ "reference_image": "piledriver/0012_2.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder remains too broad for one camera route because it mixes tight top crops, side drifts, and selected high/front-down examples."
+ },
+ {
+ "index": 15,
+ "reference_image": "piledriver/0013.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 16,
+ "reference_image": "piledriver/0021.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "piledriver/267.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "piledriver/282.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 19,
+ "reference_image": "piledriver/317.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 20,
+ "reference_image": "piledriver/317_2.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 21,
+ "reference_image": "piledriver/317_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "piledriver/318.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 23,
+ "reference_image": "piledriver/319.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 24,
+ "reference_image": "piledriver/494.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "piledriver/494_2.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 26,
+ "reference_image": "piledriver/538.jpg",
+ "review_bucket": "top_or_low_special",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "notes": "Residual-pool review found a repeated high/front-down piledriver camera family where the folded body remains readable below the partner. Tight top crops, side drifts, and mixed examples remain outside this route."
+ },
+ {
+ "index": 27,
+ "reference_image": "piledriver/617.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "notes": "Residual-pool review preserved the existing mixed source-pool anchor. The full folder remains too broad for one camera route because it mixes tight top crops, side drifts, and selected high/front-down examples."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/pretzel_contact_sheet.html b/ab_batches/normal_camera/review/pretzel_contact_sheet.html
new file mode 100644
index 0000000..1cc3fbc
--- /dev/null
+++ b/ab_batches/normal_camera/review/pretzel_contact_sheet.html
@@ -0,0 +1,45 @@
+
+
+
+
+Normal Camera Review Contact Sheet: pretzel
+
+
+
+Normal Camera Review Contact Sheet: pretzel
+No-generation contact sheet. 2 JPGs from pretzel. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: pretzel.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-2
+
+
+
+001 pretzel/0001.jpgbucket: reject_or_unclear / normal_pretzel_mixed_camera_folder_pool
+
+
+
+002 pretzel/0006.jpgbucket: reject_or_unclear / normal_pretzel_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/pretzel_review_manifest.json b/ab_batches/normal_camera/review/pretzel_review_manifest.json
new file mode 100644
index 0000000..99833ec
--- /dev/null
+++ b/ab_batches/normal_camera/review/pretzel_review_manifest.json
@@ -0,0 +1,93 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "pretzel",
+ "folder_alias": {
+ "exact_source_folder": "pretzel",
+ "canonical_folder": "pretzel",
+ "canonical_key": "pretzel",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 2,
+ "action_family": "piledriver_or_pretzel",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_pretzel_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pretzel/0001.jpg",
+ "pretzel/0006.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review records the existing two-sample pretzel mixed-camera source pool as needs_samples. The folder is fully represented but too thin for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "pretzel/0001.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_pretzel_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing two-sample pretzel mixed-camera source pool as needs_samples. The folder is fully represented but too thin for a selected pre-A/B route.",
+ "index": 1
+ },
+ {
+ "reference_image": "pretzel/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_pretzel_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing two-sample pretzel mixed-camera source pool as needs_samples. The folder is fully represented but too thin for a selected pre-A/B route.",
+ "index": 2
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 2,
+ "image_count": 2,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "pretzel/0001.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_pretzel_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review records the existing two-sample pretzel mixed-camera source pool as needs_samples. The folder is fully represented but too thin for a selected pre-A/B route."
+ },
+ {
+ "index": 2,
+ "reference_image": "pretzel/0006.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_pretzel_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review records the existing two-sample pretzel mixed-camera source pool as needs_samples. The folder is fully represented but too thin for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/pussy_licking_backv_iew_contact_sheet.html b/ab_batches/normal_camera/review/pussy_licking_backv_iew_contact_sheet.html
new file mode 100644
index 0000000..be22225
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_licking_backv_iew_contact_sheet.html
@@ -0,0 +1,49 @@
+
+
+
+
+Normal Camera Review Contact Sheet: pussy licking - backv iew
+
+
+
+Normal Camera Review Contact Sheet: pussy licking - backv iew
+No-generation contact sheet. 3 JPGs from pussy licking - backv iew. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: pussy licking - back view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-3
+
+
+
+001 pussy licking - backv iew/220.jpgbucket: reject_or_unclear / normal_pussy_licking_backview_mixed_camera_folder_pool
+
+
+
+002 pussy licking - backv iew/567.jpgbucket: reject_or_unclear / normal_pussy_licking_backview_mixed_camera_folder_pool
+
+
+
+003 pussy licking - backv iew/614.jpgbucket: reject_or_unclear / normal_pussy_licking_backview_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/pussy_licking_backv_iew_review_manifest.json b/ab_batches/normal_camera/review/pussy_licking_backv_iew_review_manifest.json
new file mode 100644
index 0000000..dbe1e50
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_licking_backv_iew_review_manifest.json
@@ -0,0 +1,111 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "pussy licking - backv iew",
+ "folder_alias": {
+ "exact_source_folder": "pussy licking - backv iew",
+ "canonical_folder": "pussy licking - back view",
+ "canonical_key": "pussy_licking_back_view",
+ "alias_applied": true,
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path."
+ },
+ "image_count": 3,
+ "action_family": "oral_other",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy licking - backv iew/220.jpg",
+ "pussy licking - backv iew/567.jpg",
+ "pussy licking - backv iew/614.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person oral-contact references; the three-image set is too thin for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "pussy licking - backv iew/220.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person oral-contact references; the three-image set is too thin for a selected pre-A/B route.",
+ "index": 1
+ },
+ {
+ "reference_image": "pussy licking - backv iew/567.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person oral-contact references; the three-image set is too thin for a selected pre-A/B route.",
+ "index": 2
+ },
+ {
+ "reference_image": "pussy licking - backv iew/614.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person oral-contact references; the three-image set is too thin for a selected pre-A/B route.",
+ "index": 3
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 3,
+ "image_count": 3,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "pussy licking - backv iew/220.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person oral-contact references; the three-image set is too thin for a selected pre-A/B route."
+ },
+ {
+ "index": 2,
+ "reference_image": "pussy licking - backv iew/567.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person oral-contact references; the three-image set is too thin for a selected pre-A/B route."
+ },
+ {
+ "index": 3,
+ "reference_image": "pussy licking - backv iew/614.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person oral-contact references; the three-image set is too thin for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/pussy_licking_leg_up_back_view_3_4_angle_contact_sheet.html b/ab_batches/normal_camera/review/pussy_licking_leg_up_back_view_3_4_angle_contact_sheet.html
new file mode 100644
index 0000000..adac796
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_licking_leg_up_back_view_3_4_angle_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: pussy licking leg up - back view - 3-4 angle
+
+
+
+Normal Camera Review Contact Sheet: pussy licking leg up - back view - 3-4 angle
+No-generation contact sheet. 1 JPGs from pussy licking leg up - back view - 3-4 angle. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: pussy licking leg up - back view - 3-4 angle.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 pussy licking leg up - back view - 3-4 angle/0009.jpgbucket: reject_or_unclear / normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/pussy_licking_leg_up_back_view_3_4_angle_review_manifest.json b/ab_batches/normal_camera/review/pussy_licking_leg_up_back_view_3_4_angle_review_manifest.json
new file mode 100644
index 0000000..35f0801
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_licking_leg_up_back_view_3_4_angle_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "pussy licking leg up - back view - 3-4 angle",
+ "folder_alias": {
+ "exact_source_folder": "pussy licking leg up - back view - 3-4 angle",
+ "canonical_folder": "pussy licking leg up - back view - 3-4 angle",
+ "canonical_key": "pussy_licking_leg_up_back_view_3_4_angle",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "oral_other",
+ "source_camera_view": "back_three_quarter",
+ "source_catalog_status": "thin_sample",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy licking leg up - back view - 3-4 angle/0009.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one leg-up rear-offset oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "pussy licking leg up - back view - 3-4 angle/0009.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one leg-up rear-offset oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "pussy licking leg up - back view - 3-4 angle/0009.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one leg-up rear-offset oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/pussy_licking_standing_woman_contact_sheet.html b/ab_batches/normal_camera/review/pussy_licking_standing_woman_contact_sheet.html
new file mode 100644
index 0000000..77d32a4
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_licking_standing_woman_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: pussy licking standing woman
+
+
+
+Normal Camera Review Contact Sheet: pussy licking standing woman
+No-generation contact sheet. 1 JPGs from pussy licking standing woman. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: pussy licking standing woman.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 pussy licking standing woman/13.jpgbucket: reject_or_unclear / normal_pussy_licking_standing_woman_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/pussy_licking_standing_woman_review_manifest.json b/ab_batches/normal_camera/review/pussy_licking_standing_woman_review_manifest.json
new file mode 100644
index 0000000..59f1f05
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_licking_standing_woman_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "pussy licking standing woman",
+ "folder_alias": {
+ "exact_source_folder": "pussy licking standing woman",
+ "canonical_folder": "pussy licking standing woman",
+ "canonical_key": "pussy_licking_standing_woman",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "oral_other",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_pussy_licking_standing_woman_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy licking standing woman/13.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one standing-woman oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "pussy licking standing woman/13.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_pussy_licking_standing_woman_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one standing-woman oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "pussy licking standing woman/13.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_pussy_licking_standing_woman_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one standing-woman oral-contact sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/pussy_spread_contact_sheet.html b/ab_batches/normal_camera/review/pussy_spread_contact_sheet.html
new file mode 100644
index 0000000..a3f3580
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_spread_contact_sheet.html
@@ -0,0 +1,443 @@
+
+
+
+
+Normal Camera Review Contact Sheet: pussy spread
+
+
+
+Normal Camera Review Contact Sheet: pussy spread
+No-generation contact sheet. 100 JPGs from pussy spread. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: pussy spread.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 pussy spread/1.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+002 pussy spread/0001.jpgbucket: unassigned
+
+
+
+003 pussy spread/1_2.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+004 pussy spread/0002.jpgbucket: unassigned
+
+
+
+005 pussy spread/0002_2.jpgbucket: unassigned
+
+
+
+006 pussy spread/0002_3.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+007 pussy spread/0003.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+008 pussy spread/0003_2.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+009 pussy spread/0003_3.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+010 pussy spread/0003_4.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+011 pussy spread/0003_5.jpgbucket: unassigned
+
+
+
+012 pussy spread/0004.jpgbucket: unassigned
+
+
+
+013 pussy spread/0005.jpgbucket: unassigned
+
+
+
+014 pussy spread/7.jpgbucket: unassigned
+
+
+
+015 pussy spread/0007.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+016 pussy spread/0008.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+017 pussy spread/0009.jpgbucket: unassigned
+
+
+
+018 pussy spread/0010.jpgbucket: unassigned
+
+
+
+019 pussy spread/0010_2.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+020 pussy spread/0012.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+021 pussy spread/0015.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+022 pussy spread/0015_2.jpgbucket: unassigned
+
+
+
+023 pussy spread/0016.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+024 pussy spread/0016_2.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+025 pussy spread/0016_3.jpgbucket: unassigned
+
+
+
+026 pussy spread/0016_4.jpgbucket: unassigned
+
+
+
+027 pussy spread/0017.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+028 pussy spread/0020.jpgbucket: unassigned
+
+
+
+029 pussy spread/0020_2.jpgbucket: unassigned
+
+
+
+030 pussy spread/39.jpgbucket: unassigned
+
+
+
+031 pussy spread/41.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+032 pussy spread/41_2.jpgbucket: unassigned
+
+
+
+033 pussy spread/46.jpgbucket: unassigned
+
+
+
+034 pussy spread/61.jpgbucket: unassigned
+
+
+
+035 pussy spread/73.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+036 pussy spread/75.jpgbucket: unassigned
+
+
+
+037 pussy spread/80.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+038 pussy spread/82.jpgbucket: unassigned
+
+
+
+039 pussy spread/95.jpgbucket: unassigned
+
+
+
+040 pussy spread/97.jpgbucket: unassigned
+
+
+Page 2: 41-80
+
+
+
+041 pussy spread/105.jpgbucket: unassigned
+
+
+
+042 pussy spread/121.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+043 pussy spread/130.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+044 pussy spread/134.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+045 pussy spread/145.jpgbucket: unassigned
+
+
+
+046 pussy spread/153.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+047 pussy spread/154.jpgbucket: unassigned
+
+
+
+048 pussy spread/154_2.jpgbucket: unassigned
+
+
+
+049 pussy spread/154_3.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+050 pussy spread/163.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+051 pussy spread/165.jpgbucket: unassigned
+
+
+
+052 pussy spread/175.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+053 pussy spread/199.jpgbucket: unassigned
+
+
+
+054 pussy spread/201.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+055 pussy spread/217.jpgbucket: unassigned
+
+
+
+056 pussy spread/217_2.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+057 pussy spread/223.jpgbucket: front_view / normal_display_front_open_leg_low_close
+
+
+
+058 pussy spread/226.jpgbucket: unassigned
+
+
+
+059 pussy spread/250.jpgbucket: unassigned
+
+
+
+060 pussy spread/250_2.jpgbucket: unassigned
+
+
+
+061 pussy spread/251.jpgbucket: unassigned
+
+
+
+062 pussy spread/256.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+063 pussy spread/270.jpgbucket: unassigned
+
+
+
+064 pussy spread/293.jpgbucket: unassigned
+
+
+
+065 pussy spread/293_2.jpgbucket: unassigned
+
+
+
+066 pussy spread/296.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+067 pussy spread/297.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+068 pussy spread/302.jpgbucket: unassigned
+
+
+
+069 pussy spread/308.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+070 pussy spread/311.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+071 pussy spread/312.jpgbucket: unassigned
+
+
+
+072 pussy spread/312_2.jpgbucket: unassigned
+
+
+
+073 pussy spread/312_3.jpgbucket: unassigned
+
+
+
+074 pussy spread/313.jpgbucket: unassigned
+
+
+
+075 pussy spread/313_2.jpgbucket: unassigned
+
+
+
+076 pussy spread/316.jpgbucket: unassigned
+
+
+
+077 pussy spread/328.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+
+078 pussy spread/332.jpgbucket: unassigned
+
+
+
+079 pussy spread/349.jpgbucket: unassigned
+
+
+
+080 pussy spread/367.jpgbucket: front_view / normal_display_front_open_leg_front_view
+
+
+Page 3: 81-100
+
+
+
+081 pussy spread/368.jpgbucket: side_view / normal_display_front_open_leg_side_offset_view
+
+
+
+082 pussy spread/493.jpgbucket: unassigned
+
+
+
+083 pussy spread/497.jpgbucket: unassigned
+
+
+
+084 pussy spread/500.jpgbucket: unassigned
+
+
+
+085 pussy spread/500_2.jpgbucket: unassigned
+
+
+
+086 pussy spread/502.jpgbucket: unassigned
+
+
+
+087 pussy spread/504.jpgbucket: unassigned
+
+
+
+088 pussy spread/523.jpgbucket: unassigned
+
+
+
+089 pussy spread/524.jpgbucket: unassigned
+
+
+
+090 pussy spread/529.jpgbucket: unassigned
+
+
+
+091 pussy spread/531.jpgbucket: unassigned
+
+
+
+092 pussy spread/538.jpgbucket: unassigned
+
+
+
+093 pussy spread/551.jpgbucket: unassigned
+
+
+
+094 pussy spread/552.jpgbucket: unassigned
+
+
+
+095 pussy spread/608.jpgbucket: unassigned
+
+
+
+096 pussy spread/611.jpgbucket: unassigned
+
+
+
+097 pussy spread/612.jpgbucket: unassigned
+
+
+
+098 pussy spread/612_2.jpgbucket: unassigned
+
+
+
+099 pussy spread/612_3.jpgbucket: unassigned
+
+
+
+100 pussy spread/612_4.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/pussy_spread_review_manifest.json b/ab_batches/normal_camera/review/pussy_spread_review_manifest.json
new file mode 100644
index 0000000..f5f9856
--- /dev/null
+++ b/ab_batches/normal_camera/review/pussy_spread_review_manifest.json
@@ -0,0 +1,1893 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "pussy spread",
+ "folder_alias": {
+ "exact_source_folder": "pussy spread",
+ "canonical_folder": "pussy spread",
+ "canonical_key": "pussy_spread",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 100,
+ "action_family": "display",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy spread/0002_3.jpg",
+ "pussy spread/0003_4.jpg",
+ "pussy spread/0012.jpg",
+ "pussy spread/0015.jpg",
+ "pussy spread/0017.jpg",
+ "pussy spread/80.jpg",
+ "pussy spread/130.jpg",
+ "pussy spread/153.jpg",
+ "pussy spread/296.jpg",
+ "pussy spread/297.jpg",
+ "pussy spread/328.jpg",
+ "pussy spread/367.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy spread/1.jpg",
+ "pussy spread/1_2.jpg",
+ "pussy spread/0003.jpg",
+ "pussy spread/0003_2.jpg",
+ "pussy spread/0003_3.jpg",
+ "pussy spread/0010_2.jpg",
+ "pussy spread/0016.jpg",
+ "pussy spread/0016_2.jpg",
+ "pussy spread/41.jpg",
+ "pussy spread/201.jpg",
+ "pussy spread/217_2.jpg",
+ "pussy spread/223.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy spread/0007.jpg",
+ "pussy spread/0008.jpg",
+ "pussy spread/73.jpg",
+ "pussy spread/121.jpg",
+ "pussy spread/134.jpg",
+ "pussy spread/154_3.jpg",
+ "pussy spread/163.jpg",
+ "pussy spread/175.jpg",
+ "pussy spread/256.jpg",
+ "pussy spread/308.jpg",
+ "pussy spread/311.jpg",
+ "pussy spread/368.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "pussy spread/1.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 1
+ },
+ {
+ "index": 2,
+ "reference_image": "pussy spread/0001.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/1_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 3
+ },
+ {
+ "index": 4,
+ "reference_image": "pussy spread/0002.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "pussy spread/0002_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/0002_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 6
+ },
+ {
+ "reference_image": "pussy spread/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 7
+ },
+ {
+ "reference_image": "pussy spread/0003_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 8
+ },
+ {
+ "reference_image": "pussy spread/0003_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 9
+ },
+ {
+ "reference_image": "pussy spread/0003_4.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 10
+ },
+ {
+ "index": 11,
+ "reference_image": "pussy spread/0003_5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "pussy spread/0004.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "pussy spread/0005.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "pussy spread/7.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/0007.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 15
+ },
+ {
+ "reference_image": "pussy spread/0008.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 16
+ },
+ {
+ "index": 17,
+ "reference_image": "pussy spread/0009.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 18,
+ "reference_image": "pussy spread/0010.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/0010_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 19
+ },
+ {
+ "reference_image": "pussy spread/0012.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 20
+ },
+ {
+ "reference_image": "pussy spread/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 21
+ },
+ {
+ "index": 22,
+ "reference_image": "pussy spread/0015_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/0016.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 23
+ },
+ {
+ "reference_image": "pussy spread/0016_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 24
+ },
+ {
+ "index": 25,
+ "reference_image": "pussy spread/0016_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "pussy spread/0016_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/0017.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 27
+ },
+ {
+ "index": 28,
+ "reference_image": "pussy spread/0020.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "pussy spread/0020_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "pussy spread/39.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/41.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 31
+ },
+ {
+ "index": 32,
+ "reference_image": "pussy spread/41_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "pussy spread/46.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "pussy spread/61.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/73.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 35
+ },
+ {
+ "index": 36,
+ "reference_image": "pussy spread/75.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/80.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 37
+ },
+ {
+ "index": 38,
+ "reference_image": "pussy spread/82.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "pussy spread/95.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "pussy spread/97.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "pussy spread/105.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/121.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 42
+ },
+ {
+ "reference_image": "pussy spread/130.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 43
+ },
+ {
+ "reference_image": "pussy spread/134.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 44
+ },
+ {
+ "index": 45,
+ "reference_image": "pussy spread/145.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/153.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 46
+ },
+ {
+ "index": 47,
+ "reference_image": "pussy spread/154.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 48,
+ "reference_image": "pussy spread/154_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/154_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 49
+ },
+ {
+ "reference_image": "pussy spread/163.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 50
+ },
+ {
+ "index": 51,
+ "reference_image": "pussy spread/165.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/175.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 52
+ },
+ {
+ "index": 53,
+ "reference_image": "pussy spread/199.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/201.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 54
+ },
+ {
+ "index": 55,
+ "reference_image": "pussy spread/217.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/217_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 56
+ },
+ {
+ "reference_image": "pussy spread/223.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition.",
+ "index": 57
+ },
+ {
+ "index": 58,
+ "reference_image": "pussy spread/226.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 59,
+ "reference_image": "pussy spread/250.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 60,
+ "reference_image": "pussy spread/250_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "pussy spread/251.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/256.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 62
+ },
+ {
+ "index": 63,
+ "reference_image": "pussy spread/270.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 64,
+ "reference_image": "pussy spread/293.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 65,
+ "reference_image": "pussy spread/293_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/296.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 66
+ },
+ {
+ "reference_image": "pussy spread/297.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 67
+ },
+ {
+ "index": 68,
+ "reference_image": "pussy spread/302.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/308.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 69
+ },
+ {
+ "reference_image": "pussy spread/311.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 70
+ },
+ {
+ "index": 71,
+ "reference_image": "pussy spread/312.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 72,
+ "reference_image": "pussy spread/312_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 73,
+ "reference_image": "pussy spread/312_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 74,
+ "reference_image": "pussy spread/313.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 75,
+ "reference_image": "pussy spread/313_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 76,
+ "reference_image": "pussy spread/316.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/328.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 77
+ },
+ {
+ "index": 78,
+ "reference_image": "pussy spread/332.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 79,
+ "reference_image": "pussy spread/349.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "pussy spread/367.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops.",
+ "index": 80
+ },
+ {
+ "reference_image": "pussy spread/368.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "side_view",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool.",
+ "index": 81
+ },
+ {
+ "index": 82,
+ "reference_image": "pussy spread/493.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 83,
+ "reference_image": "pussy spread/497.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 84,
+ "reference_image": "pussy spread/500.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 85,
+ "reference_image": "pussy spread/500_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 86,
+ "reference_image": "pussy spread/502.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 87,
+ "reference_image": "pussy spread/504.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 88,
+ "reference_image": "pussy spread/523.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 89,
+ "reference_image": "pussy spread/524.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 90,
+ "reference_image": "pussy spread/529.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 91,
+ "reference_image": "pussy spread/531.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 92,
+ "reference_image": "pussy spread/538.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 93,
+ "reference_image": "pussy spread/551.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 94,
+ "reference_image": "pussy spread/552.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 95,
+ "reference_image": "pussy spread/608.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 96,
+ "reference_image": "pussy spread/611.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 97,
+ "reference_image": "pussy spread/612.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 98,
+ "reference_image": "pussy spread/612_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 99,
+ "reference_image": "pussy spread/612_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 100,
+ "reference_image": "pussy spread/612_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "pussy spread/1.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 2,
+ "reference_image": "pussy spread/0001.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "pussy spread/1_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 4,
+ "reference_image": "pussy spread/0002.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "pussy spread/0002_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "pussy spread/0002_3.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 7,
+ "reference_image": "pussy spread/0003.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 8,
+ "reference_image": "pussy spread/0003_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 9,
+ "reference_image": "pussy spread/0003_3.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 10,
+ "reference_image": "pussy spread/0003_4.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 11,
+ "reference_image": "pussy spread/0003_5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "pussy spread/0004.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "pussy spread/0005.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "pussy spread/7.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "pussy spread/0007.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 16,
+ "reference_image": "pussy spread/0008.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 17,
+ "reference_image": "pussy spread/0009.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "pussy spread/0010.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "pussy spread/0010_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 20,
+ "reference_image": "pussy spread/0012.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 21,
+ "reference_image": "pussy spread/0015.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 22,
+ "reference_image": "pussy spread/0015_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "pussy spread/0016.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 24,
+ "reference_image": "pussy spread/0016_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 25,
+ "reference_image": "pussy spread/0016_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "pussy spread/0016_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "pussy spread/0017.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 28,
+ "reference_image": "pussy spread/0020.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "pussy spread/0020_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "pussy spread/39.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "pussy spread/41.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 32,
+ "reference_image": "pussy spread/41_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "pussy spread/46.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "pussy spread/61.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "pussy spread/73.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 36,
+ "reference_image": "pussy spread/75.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "pussy spread/80.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 38,
+ "reference_image": "pussy spread/82.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "pussy spread/95.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "pussy spread/97.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 80,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "pussy spread/105.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "pussy spread/121.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 43,
+ "reference_image": "pussy spread/130.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 44,
+ "reference_image": "pussy spread/134.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 45,
+ "reference_image": "pussy spread/145.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "pussy spread/153.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 47,
+ "reference_image": "pussy spread/154.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 48,
+ "reference_image": "pussy spread/154_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "pussy spread/154_3.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 50,
+ "reference_image": "pussy spread/163.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 51,
+ "reference_image": "pussy spread/165.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 52,
+ "reference_image": "pussy spread/175.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 53,
+ "reference_image": "pussy spread/199.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "pussy spread/201.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 55,
+ "reference_image": "pussy spread/217.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "pussy spread/217_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 57,
+ "reference_image": "pussy spread/223.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "notes": "Paged review found a repeated low-close front-view display family where the foreground body plane dominates the composition."
+ },
+ {
+ "index": 58,
+ "reference_image": "pussy spread/226.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 59,
+ "reference_image": "pussy spread/250.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 60,
+ "reference_image": "pussy spread/250_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "pussy spread/251.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "pussy spread/256.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 63,
+ "reference_image": "pussy spread/270.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "pussy spread/293.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "pussy spread/293_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "pussy spread/296.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 67,
+ "reference_image": "pussy spread/297.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 68,
+ "reference_image": "pussy spread/302.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 69,
+ "reference_image": "pussy spread/308.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 70,
+ "reference_image": "pussy spread/311.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 71,
+ "reference_image": "pussy spread/312.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 72,
+ "reference_image": "pussy spread/312_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 73,
+ "reference_image": "pussy spread/312_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 74,
+ "reference_image": "pussy spread/313.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 75,
+ "reference_image": "pussy spread/313_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 76,
+ "reference_image": "pussy spread/316.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 77,
+ "reference_image": "pussy spread/328.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ },
+ {
+ "index": 78,
+ "reference_image": "pussy spread/332.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 79,
+ "reference_image": "pussy spread/349.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 80,
+ "reference_image": "pussy spread/367.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "notes": "Paged review found a repeated camera-facing front-view display family with enough body and room context to stay separate from tight low-close crops."
+ }
+ ]
+ },
+ {
+ "page": 3,
+ "html_anchor": "page-03",
+ "start_index": 81,
+ "end_index": 100,
+ "image_count": 20,
+ "images": [
+ {
+ "index": 81,
+ "reference_image": "pussy spread/368.jpg",
+ "review_bucket": "side_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "notes": "Residual-pool review found a repeated side-offset seated or reclined open-leg display family. Straight front, low-close, and one-off crop variants remain in the mixed source pool."
+ },
+ {
+ "index": 82,
+ "reference_image": "pussy spread/493.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 83,
+ "reference_image": "pussy spread/497.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 84,
+ "reference_image": "pussy spread/500.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 85,
+ "reference_image": "pussy spread/500_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 86,
+ "reference_image": "pussy spread/502.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 87,
+ "reference_image": "pussy spread/504.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 88,
+ "reference_image": "pussy spread/523.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 89,
+ "reference_image": "pussy spread/524.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 90,
+ "reference_image": "pussy spread/529.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 91,
+ "reference_image": "pussy spread/531.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 92,
+ "reference_image": "pussy spread/538.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 93,
+ "reference_image": "pussy spread/551.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 94,
+ "reference_image": "pussy spread/552.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 95,
+ "reference_image": "pussy spread/608.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 96,
+ "reference_image": "pussy spread/611.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 97,
+ "reference_image": "pussy spread/612.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 98,
+ "reference_image": "pussy spread/612_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 99,
+ "reference_image": "pussy spread/612_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 100,
+ "reference_image": "pussy spread/612_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/removing_pants_contact_sheet.html b/ab_batches/normal_camera/review/removing_pants_contact_sheet.html
new file mode 100644
index 0000000..40a2b3d
--- /dev/null
+++ b/ab_batches/normal_camera/review/removing_pants_contact_sheet.html
@@ -0,0 +1,49 @@
+
+
+
+
+Normal Camera Review Contact Sheet: removing pants
+
+
+
+Normal Camera Review Contact Sheet: removing pants
+No-generation contact sheet. 3 JPGs from removing pants. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: removing pants.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-3
+
+
+
+001 removing pants/0005.jpgbucket: reject_or_unclear / normal_removing_pants_mixed_camera_folder_pool
+
+
+
+002 removing pants/0006.jpgbucket: reject_or_unclear / normal_removing_pants_mixed_camera_folder_pool
+
+
+
+003 removing pants/0016.jpgbucket: reject_or_unclear / normal_removing_pants_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/removing_pants_review_manifest.json b/ab_batches/normal_camera/review/removing_pants_review_manifest.json
new file mode 100644
index 0000000..12a506e
--- /dev/null
+++ b/ab_batches/normal_camera/review/removing_pants_review_manifest.json
@@ -0,0 +1,111 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "removing pants",
+ "folder_alias": {
+ "exact_source_folder": "removing pants",
+ "canonical_folder": "removing pants",
+ "canonical_key": "removing_pants",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 3,
+ "action_family": "display",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "removing pants/0005.jpg",
+ "removing pants/0006.jpg",
+ "removing pants/0016.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples are near-duplicate close action references with strong foreground crop, so they should not become a locked normal-camera route without more matched, wider non-POV samples."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "removing pants/0005.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples are near-duplicate close action references with strong foreground crop, so they should not become a locked normal-camera route without more matched, wider non-POV samples.",
+ "index": 1
+ },
+ {
+ "reference_image": "removing pants/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples are near-duplicate close action references with strong foreground crop, so they should not become a locked normal-camera route without more matched, wider non-POV samples.",
+ "index": 2
+ },
+ {
+ "reference_image": "removing pants/0016.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples are near-duplicate close action references with strong foreground crop, so they should not become a locked normal-camera route without more matched, wider non-POV samples.",
+ "index": 3
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 3,
+ "image_count": 3,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "removing pants/0005.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples are near-duplicate close action references with strong foreground crop, so they should not become a locked normal-camera route without more matched, wider non-POV samples."
+ },
+ {
+ "index": 2,
+ "reference_image": "removing pants/0006.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples are near-duplicate close action references with strong foreground crop, so they should not become a locked normal-camera route without more matched, wider non-POV samples."
+ },
+ {
+ "index": 3,
+ "reference_image": "removing pants/0016.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples are near-duplicate close action references with strong foreground crop, so they should not become a locked normal-camera route without more matched, wider non-POV samples."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/reverse_congress_front_view_contact_sheet.html b/ab_batches/normal_camera/review/reverse_congress_front_view_contact_sheet.html
new file mode 100644
index 0000000..7aac132
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_congress_front_view_contact_sheet.html
@@ -0,0 +1,121 @@
+
+
+
+
+Normal Camera Review Contact Sheet: reverse congress - front view
+
+
+
+Normal Camera Review Contact Sheet: reverse congress - front view
+No-generation contact sheet. 21 JPGs from reverse congress - front view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: reverse congress - front view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-21
+
+
+
+001 reverse congress - front view/0012.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+002 reverse congress - front view/0012_2.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+003 reverse congress - front view/0013.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+004 reverse congress - front view/61.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+005 reverse congress - front view/105.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+006 reverse congress - front view/105_2.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+007 reverse congress - front view/122.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+008 reverse congress - front view/183.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+009 reverse congress - front view/183_2.jpgbucket: unassigned
+
+
+
+010 reverse congress - front view/185.jpgbucket: unassigned
+
+
+
+011 reverse congress - front view/189.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+012 reverse congress - front view/289.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+013 reverse congress - front view/289_2.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+014 reverse congress - front view/291.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+015 reverse congress - front view/291_2.jpgbucket: unassigned
+
+
+
+016 reverse congress - front view/294.jpgbucket: unassigned
+
+
+
+017 reverse congress - front view/294_2.jpgbucket: unassigned
+
+
+
+018 reverse congress - front view/542.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+019 reverse congress - front view/542_2.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+020 reverse congress - front view/563.jpgbucket: unassigned
+
+
+
+021 reverse congress - front view/563_2.jpgbucket: front_view / normal_reverse_congress_front_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/reverse_congress_front_view_review_manifest.json b/ab_batches/normal_camera/review/reverse_congress_front_view_review_manifest.json
new file mode 100644
index 0000000..f5d13da
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_congress_front_view_review_manifest.json
@@ -0,0 +1,435 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "reverse congress - front view",
+ "folder_alias": {
+ "exact_source_folder": "reverse congress - front view",
+ "canonical_folder": "reverse congress - front view",
+ "canonical_key": "reverse_congress_front_view",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 21,
+ "action_family": "reverse_congress",
+ "source_camera_view": "front_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_reverse_congress_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse congress - front view/0012.jpg",
+ "reverse congress - front view/0012_2.jpg",
+ "reverse congress - front view/0013.jpg",
+ "reverse congress - front view/61.jpg",
+ "reverse congress - front view/105.jpg",
+ "reverse congress - front view/105_2.jpg",
+ "reverse congress - front view/122.jpg",
+ "reverse congress - front view/183.jpg",
+ "reverse congress - front view/189.jpg",
+ "reverse congress - front view/289.jpg",
+ "reverse congress - front view/289_2.jpg",
+ "reverse congress - front view/291.jpg",
+ "reverse congress - front view/542.jpg",
+ "reverse congress - front view/542_2.jpg",
+ "reverse congress - front view/563_2.jpg"
+ ],
+ "evidence_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "reverse congress - front view/0012.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "reverse congress - front view/0012_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 2
+ },
+ {
+ "reference_image": "reverse congress - front view/0013.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 3
+ },
+ {
+ "reference_image": "reverse congress - front view/61.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "reverse congress - front view/105.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "reverse congress - front view/105_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 6
+ },
+ {
+ "reference_image": "reverse congress - front view/122.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 7
+ },
+ {
+ "reference_image": "reverse congress - front view/183.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 8
+ },
+ {
+ "index": 9,
+ "reference_image": "reverse congress - front view/183_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 10,
+ "reference_image": "reverse congress - front view/185.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse congress - front view/189.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 11
+ },
+ {
+ "reference_image": "reverse congress - front view/289.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 12
+ },
+ {
+ "reference_image": "reverse congress - front view/289_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 13
+ },
+ {
+ "reference_image": "reverse congress - front view/291.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 14
+ },
+ {
+ "index": 15,
+ "reference_image": "reverse congress - front view/291_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "reverse congress - front view/294.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 17,
+ "reference_image": "reverse congress - front view/294_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse congress - front view/542.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 18
+ },
+ {
+ "reference_image": "reverse congress - front view/542_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 19
+ },
+ {
+ "index": 20,
+ "reference_image": "reverse congress - front view/563.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse congress - front view/563_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_congress_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset.",
+ "index": 21
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 21,
+ "image_count": 21,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "reverse congress - front view/0012.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "reverse congress - front view/0012_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "reverse congress - front view/0013.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 4,
+ "reference_image": "reverse congress - front view/61.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "reverse congress - front view/105.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "reverse congress - front view/105_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 7,
+ "reference_image": "reverse congress - front view/122.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "reverse congress - front view/183.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 9,
+ "reference_image": "reverse congress - front view/183_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 10,
+ "reference_image": "reverse congress - front view/185.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "reverse congress - front view/189.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 12,
+ "reference_image": "reverse congress - front view/289.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 13,
+ "reference_image": "reverse congress - front view/289_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 14,
+ "reference_image": "reverse congress - front view/291.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 15,
+ "reference_image": "reverse congress - front view/291_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "reverse congress - front view/294.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "reverse congress - front view/294_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "reverse congress - front view/542.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 19,
+ "reference_image": "reverse congress - front view/542_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ },
+ {
+ "index": 20,
+ "reference_image": "reverse congress - front view/563.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "reverse congress - front view/563_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_congress_front_view",
+ "notes": "Residual-pool review confirmed the existing front-facing reverse-congress route as a coherent lifted/front camera family. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/reverse_cowgirl_contact_sheet.html b/ab_batches/normal_camera/review/reverse_cowgirl_contact_sheet.html
new file mode 100644
index 0000000..f1c3ea1
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_cowgirl_contact_sheet.html
@@ -0,0 +1,1012 @@
+
+
+
+
+Normal Camera Review Contact Sheet: reverse cowgirl
+
+
+
+Normal Camera Review Contact Sheet: reverse cowgirl
+No-generation contact sheet. 240 JPGs from reverse cowgirl. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: reverse cowgirl.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 reverse cowgirl/1.jpgbucket: unassigned
+
+
+
+002 reverse cowgirl/0001.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+003 reverse cowgirl/0002.jpgbucket: unassigned
+
+
+
+004 reverse cowgirl/0002_2.jpgbucket: unassigned
+
+
+
+005 reverse cowgirl/0002_3.jpgbucket: unassigned
+
+
+
+006 reverse cowgirl/0003.jpgbucket: unassigned
+
+
+
+007 reverse cowgirl/0003_2.jpgbucket: unassigned
+
+
+
+008 reverse cowgirl/4.jpgbucket: unassigned
+
+
+
+009 reverse cowgirl/0004.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+010 reverse cowgirl/0005.jpgbucket: unassigned
+
+
+
+011 reverse cowgirl/0005_2.jpgbucket: unassigned
+
+
+
+012 reverse cowgirl/0005_3.jpgbucket: unassigned
+
+
+
+013 reverse cowgirl/0005_4.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+014 reverse cowgirl/0005_5.jpgbucket: unassigned
+
+
+
+015 reverse cowgirl/6.jpgbucket: unassigned
+
+
+
+016 reverse cowgirl/0006.jpgbucket: unassigned
+
+
+
+017 reverse cowgirl/0006_2.jpgbucket: unassigned
+
+
+
+018 reverse cowgirl/0006_3.jpgbucket: unassigned
+
+
+
+019 reverse cowgirl/7.jpgbucket: unassigned
+
+
+
+020 reverse cowgirl/0007.jpgbucket: unassigned
+
+
+
+021 reverse cowgirl/7_2.jpgbucket: unassigned
+
+
+
+022 reverse cowgirl/0007_2.jpgbucket: unassigned
+
+
+
+023 reverse cowgirl/0007_3.jpgbucket: unassigned
+
+
+
+024 reverse cowgirl/0007_4.jpgbucket: unassigned
+
+
+
+025 reverse cowgirl/0008.jpgbucket: unassigned
+
+
+
+026 reverse cowgirl/0008_2.jpgbucket: unassigned
+
+
+
+027 reverse cowgirl/0008_3.jpgbucket: unassigned
+
+
+
+028 reverse cowgirl/0008_4.jpgbucket: unassigned
+
+
+
+029 reverse cowgirl/0009.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+030 reverse cowgirl/0009_2.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+031 reverse cowgirl/0009_3.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+032 reverse cowgirl/0011.jpgbucket: unassigned
+
+
+
+033 reverse cowgirl/0012.jpgbucket: unassigned
+
+
+
+034 reverse cowgirl/0012_2.jpgbucket: unassigned
+
+
+
+035 reverse cowgirl/0012_3.jpgbucket: unassigned
+
+
+
+036 reverse cowgirl/13.jpgbucket: unassigned
+
+
+
+037 reverse cowgirl/0013.jpgbucket: unassigned
+
+
+
+038 reverse cowgirl/14.jpgbucket: unassigned
+
+
+
+039 reverse cowgirl/0014.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+040 reverse cowgirl/0014_2.jpgbucket: unassigned
+
+
+Page 2: 41-80
+
+
+
+041 reverse cowgirl/0014_3.jpgbucket: unassigned
+
+
+
+042 reverse cowgirl/0014_4.jpgbucket: unassigned
+
+
+
+043 reverse cowgirl/0015.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+044 reverse cowgirl/0015_2.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+045 reverse cowgirl/0015_3.jpgbucket: unassigned
+
+
+
+046 reverse cowgirl/0016.jpgbucket: unassigned
+
+
+
+047 reverse cowgirl/0016_2.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+048 reverse cowgirl/0016_3.jpgbucket: unassigned
+
+
+
+049 reverse cowgirl/0016_4.jpgbucket: unassigned
+
+
+
+050 reverse cowgirl/0018.jpgbucket: unassigned
+
+
+
+051 reverse cowgirl/0018_2.jpgbucket: unassigned
+
+
+
+052 reverse cowgirl/0018_3.jpgbucket: unassigned
+
+
+
+053 reverse cowgirl/0018_4.jpgbucket: unassigned
+
+
+
+054 reverse cowgirl/19.jpgbucket: unassigned
+
+
+
+055 reverse cowgirl/0019.jpgbucket: unassigned
+
+
+
+056 reverse cowgirl/19_2.jpgbucket: unassigned
+
+
+
+057 reverse cowgirl/0019_2.jpgbucket: unassigned
+
+
+
+058 reverse cowgirl/0021.jpgbucket: unassigned
+
+
+
+059 reverse cowgirl/22.jpgbucket: unassigned
+
+
+
+060 reverse cowgirl/27.jpgbucket: unassigned
+
+
+
+061 reverse cowgirl/29.jpgbucket: unassigned
+
+
+
+062 reverse cowgirl/29_2.jpgbucket: unassigned
+
+
+
+063 reverse cowgirl/35.jpgbucket: unassigned
+
+
+
+064 reverse cowgirl/36.jpgbucket: unassigned
+
+
+
+065 reverse cowgirl/42.jpgbucket: unassigned
+
+
+
+066 reverse cowgirl/48.jpgbucket: unassigned
+
+
+
+067 reverse cowgirl/48_2.jpgbucket: unassigned
+
+
+
+068 reverse cowgirl/52.jpgbucket: unassigned
+
+
+
+069 reverse cowgirl/52_2.jpgbucket: unassigned
+
+
+
+070 reverse cowgirl/58.jpgbucket: unassigned
+
+
+
+071 reverse cowgirl/58_2.jpgbucket: unassigned
+
+
+
+072 reverse cowgirl/61.jpgbucket: unassigned
+
+
+
+073 reverse cowgirl/62.jpgbucket: unassigned
+
+
+
+074 reverse cowgirl/63.jpgbucket: unassigned
+
+
+
+075 reverse cowgirl/64.jpgbucket: unassigned
+
+
+
+076 reverse cowgirl/64_2.jpgbucket: unassigned
+
+
+
+077 reverse cowgirl/65.jpgbucket: unassigned
+
+
+
+078 reverse cowgirl/72.jpgbucket: unassigned
+
+
+
+079 reverse cowgirl/73.jpgbucket: unassigned
+
+
+
+080 reverse cowgirl/73_2.jpgbucket: unassigned
+
+
+Page 3: 81-120
+
+
+
+081 reverse cowgirl/77.jpgbucket: unassigned
+
+
+
+082 reverse cowgirl/77_2.jpgbucket: unassigned
+
+
+
+083 reverse cowgirl/79.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+084 reverse cowgirl/79_2.jpgbucket: unassigned
+
+
+
+085 reverse cowgirl/80.jpgbucket: unassigned
+
+
+
+086 reverse cowgirl/80_2.jpgbucket: unassigned
+
+
+
+087 reverse cowgirl/81.jpgbucket: unassigned
+
+
+
+088 reverse cowgirl/82.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+089 reverse cowgirl/109.jpgbucket: unassigned
+
+
+
+090 reverse cowgirl/112.jpgbucket: unassigned
+
+
+
+091 reverse cowgirl/113.jpgbucket: unassigned
+
+
+
+092 reverse cowgirl/122.jpgbucket: unassigned
+
+
+
+093 reverse cowgirl/122_2.jpgbucket: unassigned
+
+
+
+094 reverse cowgirl/137.jpgbucket: unassigned
+
+
+
+095 reverse cowgirl/145.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+096 reverse cowgirl/145_2.jpgbucket: unassigned
+
+
+
+097 reverse cowgirl/153.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+098 reverse cowgirl/153_2.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+099 reverse cowgirl/159.jpgbucket: unassigned
+
+
+
+100 reverse cowgirl/159_2.jpgbucket: unassigned
+
+
+
+101 reverse cowgirl/170.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+102 reverse cowgirl/171.jpgbucket: unassigned
+
+
+
+103 reverse cowgirl/172.jpgbucket: unassigned
+
+
+
+104 reverse cowgirl/174.jpgbucket: unassigned
+
+
+
+105 reverse cowgirl/179.jpgbucket: unassigned
+
+
+
+106 reverse cowgirl/182.jpgbucket: unassigned
+
+
+
+107 reverse cowgirl/183.jpgbucket: unassigned
+
+
+
+108 reverse cowgirl/184.jpgbucket: unassigned
+
+
+
+109 reverse cowgirl/206.jpgbucket: unassigned
+
+
+
+110 reverse cowgirl/210.jpgbucket: unassigned
+
+
+
+111 reverse cowgirl/217.jpgbucket: unassigned
+
+
+
+112 reverse cowgirl/218.jpgbucket: unassigned
+
+
+
+113 reverse cowgirl/221.jpgbucket: unassigned
+
+
+
+114 reverse cowgirl/226.jpgbucket: unassigned
+
+
+
+115 reverse cowgirl/226_2.jpgbucket: unassigned
+
+
+
+116 reverse cowgirl/227.jpgbucket: unassigned
+
+
+
+117 reverse cowgirl/232.jpgbucket: unassigned
+
+
+
+118 reverse cowgirl/233.jpgbucket: unassigned
+
+
+
+119 reverse cowgirl/234.jpgbucket: unassigned
+
+
+
+120 reverse cowgirl/239.jpgbucket: unassigned
+
+
+Page 4: 121-160
+
+
+
+121 reverse cowgirl/239_2.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+122 reverse cowgirl/239_3.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+123 reverse cowgirl/241.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+124 reverse cowgirl/241_2.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+125 reverse cowgirl/241_3.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+126 reverse cowgirl/245.jpgbucket: unassigned
+
+
+
+127 reverse cowgirl/249.jpgbucket: unassigned
+
+
+
+128 reverse cowgirl/251.jpgbucket: unassigned
+
+
+
+129 reverse cowgirl/256.jpgbucket: unassigned
+
+
+
+130 reverse cowgirl/257.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+131 reverse cowgirl/258.jpgbucket: unassigned
+
+
+
+132 reverse cowgirl/258_2.jpgbucket: unassigned
+
+
+
+133 reverse cowgirl/259.jpgbucket: unassigned
+
+
+
+134 reverse cowgirl/259_2.jpgbucket: unassigned
+
+
+
+135 reverse cowgirl/260.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+136 reverse cowgirl/260_2.jpgbucket: unassigned
+
+
+
+137 reverse cowgirl/261.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+138 reverse cowgirl/262.jpgbucket: unassigned
+
+
+
+139 reverse cowgirl/263.jpgbucket: unassigned
+
+
+
+140 reverse cowgirl/266.jpgbucket: unassigned
+
+
+
+141 reverse cowgirl/267.jpgbucket: unassigned
+
+
+
+142 reverse cowgirl/268.jpgbucket: unassigned
+
+
+
+143 reverse cowgirl/268_2.jpgbucket: unassigned
+
+
+
+144 reverse cowgirl/270.jpgbucket: unassigned
+
+
+
+145 reverse cowgirl/273.jpgbucket: unassigned
+
+
+
+146 reverse cowgirl/276.jpgbucket: unassigned
+
+
+
+147 reverse cowgirl/276_2.jpgbucket: unassigned
+
+
+
+148 reverse cowgirl/278.jpgbucket: unassigned
+
+
+
+149 reverse cowgirl/280.jpgbucket: unassigned
+
+
+
+150 reverse cowgirl/281.jpgbucket: unassigned
+
+
+
+151 reverse cowgirl/285.jpgbucket: unassigned
+
+
+
+152 reverse cowgirl/287.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+153 reverse cowgirl/288.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+154 reverse cowgirl/288_2.jpgbucket: unassigned
+
+
+
+155 reverse cowgirl/290.jpgbucket: unassigned
+
+
+
+156 reverse cowgirl/290_2.jpgbucket: unassigned
+
+
+
+157 reverse cowgirl/292.jpgbucket: unassigned
+
+
+
+158 reverse cowgirl/294.jpgbucket: unassigned
+
+
+
+159 reverse cowgirl/296.jpgbucket: unassigned
+
+
+
+160 reverse cowgirl/296_2.jpgbucket: unassigned
+
+
+Page 5: 161-200
+
+
+
+161 reverse cowgirl/296_3.jpgbucket: unassigned
+
+
+
+162 reverse cowgirl/297.jpgbucket: unassigned
+
+
+
+163 reverse cowgirl/298.jpgbucket: unassigned
+
+
+
+164 reverse cowgirl/298_2.jpgbucket: unassigned
+
+
+
+165 reverse cowgirl/298_3.jpgbucket: unassigned
+
+
+
+166 reverse cowgirl/302.jpgbucket: unassigned
+
+
+
+167 reverse cowgirl/304.jpgbucket: unassigned
+
+
+
+168 reverse cowgirl/305.jpgbucket: unassigned
+
+
+
+169 reverse cowgirl/305_2.jpgbucket: unassigned
+
+
+
+170 reverse cowgirl/309.jpgbucket: unassigned
+
+
+
+171 reverse cowgirl/311.jpgbucket: unassigned
+
+
+
+172 reverse cowgirl/314.jpgbucket: unassigned
+
+
+
+173 reverse cowgirl/317.jpgbucket: unassigned
+
+
+
+174 reverse cowgirl/319.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+175 reverse cowgirl/319_2.jpgbucket: unassigned
+
+
+
+176 reverse cowgirl/320.jpgbucket: unassigned
+
+
+
+177 reverse cowgirl/322.jpgbucket: unassigned
+
+
+
+178 reverse cowgirl/323.jpgbucket: unassigned
+
+
+
+179 reverse cowgirl/323_2.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+180 reverse cowgirl/327.jpgbucket: unassigned
+
+
+
+181 reverse cowgirl/331.jpgbucket: unassigned
+
+
+
+182 reverse cowgirl/332.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+183 reverse cowgirl/332_2.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+184 reverse cowgirl/333.jpgbucket: unassigned
+
+
+
+185 reverse cowgirl/338.jpgbucket: unassigned
+
+
+
+186 reverse cowgirl/338_2.jpgbucket: unassigned
+
+
+
+187 reverse cowgirl/342.jpgbucket: unassigned
+
+
+
+188 reverse cowgirl/345.jpgbucket: unassigned
+
+
+
+189 reverse cowgirl/345_2.jpgbucket: unassigned
+
+
+
+190 reverse cowgirl/346.jpgbucket: unassigned
+
+
+
+191 reverse cowgirl/349.jpgbucket: unassigned
+
+
+
+192 reverse cowgirl/362.jpgbucket: unassigned
+
+
+
+193 reverse cowgirl/370.jpgbucket: unassigned
+
+
+
+194 reverse cowgirl/371.jpgbucket: unassigned
+
+
+
+195 reverse cowgirl/372.jpgbucket: unassigned
+
+
+
+196 reverse cowgirl/373.jpgbucket: unassigned
+
+
+
+197 reverse cowgirl/377.jpgbucket: unassigned
+
+
+
+198 reverse cowgirl/377_2.jpgbucket: unassigned
+
+
+
+199 reverse cowgirl/377_3.jpgbucket: unassigned
+
+
+
+200 reverse cowgirl/378.jpgbucket: unassigned
+
+
+Page 6: 201-240
+
+
+
+201 reverse cowgirl/379.jpgbucket: unassigned
+
+
+
+202 reverse cowgirl/497.jpgbucket: unassigned
+
+
+
+203 reverse cowgirl/497_2.jpgbucket: unassigned
+
+
+
+204 reverse cowgirl/499.jpgbucket: unassigned
+
+
+
+205 reverse cowgirl/509.jpgbucket: unassigned
+
+
+
+206 reverse cowgirl/521.jpgbucket: unassigned
+
+
+
+207 reverse cowgirl/521_2.jpgbucket: unassigned
+
+
+
+208 reverse cowgirl/527.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+209 reverse cowgirl/527_2.jpgbucket: unassigned
+
+
+
+210 reverse cowgirl/532.jpgbucket: unassigned
+
+
+
+211 reverse cowgirl/535.jpgbucket: unassigned
+
+
+
+212 reverse cowgirl/536.jpgbucket: unassigned
+
+
+
+213 reverse cowgirl/538.jpgbucket: unassigned
+
+
+
+214 reverse cowgirl/542.jpgbucket: unassigned
+
+
+
+215 reverse cowgirl/547.jpgbucket: unassigned
+
+
+
+216 reverse cowgirl/548.jpgbucket: unassigned
+
+
+
+217 reverse cowgirl/549.jpgbucket: unassigned
+
+
+
+218 reverse cowgirl/549_2.jpgbucket: unassigned
+
+
+
+219 reverse cowgirl/551.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+220 reverse cowgirl/552.jpgbucket: unassigned
+
+
+
+221 reverse cowgirl/568.jpgbucket: unassigned
+
+
+
+222 reverse cowgirl/588.jpgbucket: unassigned
+
+
+
+223 reverse cowgirl/590.jpgbucket: unassigned
+
+
+
+224 reverse cowgirl/595.jpgbucket: unassigned
+
+
+
+225 reverse cowgirl/597.jpgbucket: unassigned
+
+
+
+226 reverse cowgirl/597_2.jpgbucket: unassigned
+
+
+
+227 reverse cowgirl/598.jpgbucket: unassigned
+
+
+
+228 reverse cowgirl/601.jpgbucket: unassigned
+
+
+
+229 reverse cowgirl/607.jpgbucket: unassigned
+
+
+
+230 reverse cowgirl/608.jpgbucket: front_view / normal_reverse_cowgirl_front_view
+
+
+
+231 reverse cowgirl/608_2.jpgbucket: unassigned
+
+
+
+232 reverse cowgirl/609.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+233 reverse cowgirl/609_2.jpgbucket: front_three_quarter / normal_reverse_cowgirl_front_three_quarter
+
+
+
+234 reverse cowgirl/611.jpgbucket: unassigned
+
+
+
+235 reverse cowgirl/613.jpgbucket: unassigned
+
+
+
+236 reverse cowgirl/614.jpgbucket: unassigned
+
+
+
+237 reverse cowgirl/614_2.jpgbucket: unassigned
+
+
+
+238 reverse cowgirl/615.jpgbucket: unassigned
+
+
+
+239 reverse cowgirl/617.jpgbucket: unassigned
+
+
+
+240 reverse cowgirl/618.jpgbucket: front_view / normal_reverse_cowgirl_low_close_front_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/reverse_cowgirl_leg_up_contact_sheet.html b/ab_batches/normal_camera/review/reverse_cowgirl_leg_up_contact_sheet.html
new file mode 100644
index 0000000..278dc5c
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_cowgirl_leg_up_contact_sheet.html
@@ -0,0 +1,45 @@
+
+
+
+
+Normal Camera Review Contact Sheet: reverse cowgirl - leg up
+
+
+
+Normal Camera Review Contact Sheet: reverse cowgirl - leg up
+No-generation contact sheet. 2 JPGs from reverse cowgirl - leg up. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: reverse cowgirl - leg up.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-2
+
+
+
+001 reverse cowgirl - leg up/266.jpgbucket: reject_or_unclear / normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool
+
+
+
+002 reverse cowgirl - leg up/267.jpgbucket: reject_or_unclear / normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/reverse_cowgirl_leg_up_review_manifest.json b/ab_batches/normal_camera/review/reverse_cowgirl_leg_up_review_manifest.json
new file mode 100644
index 0000000..af023d0
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_cowgirl_leg_up_review_manifest.json
@@ -0,0 +1,93 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "reverse cowgirl - leg up",
+ "folder_alias": {
+ "exact_source_folder": "reverse cowgirl - leg up",
+ "canonical_folder": "reverse cowgirl - leg up",
+ "canonical_key": "reverse_cowgirl_leg_up",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 2,
+ "action_family": "reverse_cowgirl",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl - leg up/266.jpg",
+ "reverse cowgirl - leg up/267.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved this as a two-sample leg-up posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "reverse cowgirl - leg up/266.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved this as a two-sample leg-up posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route.",
+ "index": 1
+ },
+ {
+ "reference_image": "reverse cowgirl - leg up/267.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved this as a two-sample leg-up posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route.",
+ "index": 2
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 2,
+ "image_count": 2,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "reverse cowgirl - leg up/266.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved this as a two-sample leg-up posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route."
+ },
+ {
+ "index": 2,
+ "reference_image": "reverse cowgirl - leg up/267.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved this as a two-sample leg-up posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/reverse_cowgirl_pretzel_contact_sheet.html b/ab_batches/normal_camera/review/reverse_cowgirl_pretzel_contact_sheet.html
new file mode 100644
index 0000000..efae1c3
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_cowgirl_pretzel_contact_sheet.html
@@ -0,0 +1,45 @@
+
+
+
+
+Normal Camera Review Contact Sheet: reverse cowgirl -pretzel
+
+
+
+Normal Camera Review Contact Sheet: reverse cowgirl -pretzel
+No-generation contact sheet. 2 JPGs from reverse cowgirl -pretzel. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: reverse cowgirl - pretzel.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-2
+
+
+
+001 reverse cowgirl -pretzel/0007.jpgbucket: reject_or_unclear / normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool
+
+
+
+002 reverse cowgirl -pretzel/617.jpgbucket: reject_or_unclear / normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/reverse_cowgirl_pretzel_review_manifest.json b/ab_batches/normal_camera/review/reverse_cowgirl_pretzel_review_manifest.json
new file mode 100644
index 0000000..21fedb1
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_cowgirl_pretzel_review_manifest.json
@@ -0,0 +1,93 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "reverse cowgirl -pretzel",
+ "folder_alias": {
+ "exact_source_folder": "reverse cowgirl -pretzel",
+ "canonical_folder": "reverse cowgirl - pretzel",
+ "canonical_key": "reverse_cowgirl_pretzel",
+ "alias_applied": true,
+ "alias_reason": "Missing-space folder label normalized for review metadata while preserving exact source path."
+ },
+ "image_count": 2,
+ "action_family": "reverse_cowgirl",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl -pretzel/0007.jpg",
+ "reverse cowgirl -pretzel/617.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved this as a two-sample pretzel-posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "reverse cowgirl -pretzel/0007.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved this as a two-sample pretzel-posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route.",
+ "index": 1
+ },
+ {
+ "reference_image": "reverse cowgirl -pretzel/617.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved this as a two-sample pretzel-posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route.",
+ "index": 2
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 2,
+ "image_count": 2,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "reverse cowgirl -pretzel/0007.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved this as a two-sample pretzel-posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route."
+ },
+ {
+ "index": 2,
+ "reference_image": "reverse cowgirl -pretzel/617.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved this as a two-sample pretzel-posture source pool. The folder is useful cue evidence but too thin for a selected normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/reverse_cowgirl_review_manifest.json b/ab_batches/normal_camera/review/reverse_cowgirl_review_manifest.json
new file mode 100644
index 0000000..f41dee7
--- /dev/null
+++ b/ab_batches/normal_camera/review/reverse_cowgirl_review_manifest.json
@@ -0,0 +1,4440 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "reverse cowgirl",
+ "folder_alias": {
+ "exact_source_folder": "reverse cowgirl",
+ "canonical_folder": "reverse cowgirl",
+ "canonical_key": "reverse_cowgirl",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 240,
+ "action_family": "reverse_cowgirl",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/0004.jpg",
+ "reverse cowgirl/0005_4.jpg",
+ "reverse cowgirl/0014.jpg",
+ "reverse cowgirl/79.jpg",
+ "reverse cowgirl/82.jpg",
+ "reverse cowgirl/145.jpg",
+ "reverse cowgirl/260.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/319.jpg",
+ "reverse cowgirl/527.jpg",
+ "reverse cowgirl/608.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "review_bucket": "front_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl/153.jpg",
+ "reverse cowgirl/153_2.jpg",
+ "reverse cowgirl/239_2.jpg",
+ "reverse cowgirl/239_3.jpg",
+ "reverse cowgirl/241.jpg",
+ "reverse cowgirl/241_2.jpg",
+ "reverse cowgirl/241_3.jpg",
+ "reverse cowgirl/257.jpg",
+ "reverse cowgirl/287.jpg",
+ "reverse cowgirl/323_2.jpg",
+ "reverse cowgirl/609.jpg",
+ "reverse cowgirl/609_2.jpg"
+ ],
+ "evidence_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl/0009.jpg",
+ "reverse cowgirl/0009_2.jpg",
+ "reverse cowgirl/0009_3.jpg",
+ "reverse cowgirl/0015.jpg",
+ "reverse cowgirl/0015_2.jpg",
+ "reverse cowgirl/0016_2.jpg",
+ "reverse cowgirl/170.jpg",
+ "reverse cowgirl/261.jpg",
+ "reverse cowgirl/332.jpg",
+ "reverse cowgirl/332_2.jpg",
+ "reverse cowgirl/551.jpg",
+ "reverse cowgirl/618.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ }
+ ],
+ "review_items": [
+ {
+ "index": 1,
+ "reference_image": "reverse cowgirl/1.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/0001.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 2
+ },
+ {
+ "index": 3,
+ "reference_image": "reverse cowgirl/0002.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 4,
+ "reference_image": "reverse cowgirl/0002_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 5,
+ "reference_image": "reverse cowgirl/0002_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 6,
+ "reference_image": "reverse cowgirl/0003.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 7,
+ "reference_image": "reverse cowgirl/0003_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 8,
+ "reference_image": "reverse cowgirl/4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/0004.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 9
+ },
+ {
+ "index": 10,
+ "reference_image": "reverse cowgirl/0005.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "reverse cowgirl/0005_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "reverse cowgirl/0005_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/0005_4.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 13
+ },
+ {
+ "index": 14,
+ "reference_image": "reverse cowgirl/0005_5.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "reverse cowgirl/6.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "reverse cowgirl/0006.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 17,
+ "reference_image": "reverse cowgirl/0006_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 18,
+ "reference_image": "reverse cowgirl/0006_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "reverse cowgirl/7.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "reverse cowgirl/0007.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "reverse cowgirl/7_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "reverse cowgirl/0007_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "reverse cowgirl/0007_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "reverse cowgirl/0007_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "reverse cowgirl/0008.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "reverse cowgirl/0008_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "reverse cowgirl/0008_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "reverse cowgirl/0008_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/0009.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 29
+ },
+ {
+ "reference_image": "reverse cowgirl/0009_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 30
+ },
+ {
+ "reference_image": "reverse cowgirl/0009_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 31
+ },
+ {
+ "index": 32,
+ "reference_image": "reverse cowgirl/0011.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "reverse cowgirl/0012.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "reverse cowgirl/0012_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "reverse cowgirl/0012_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "reverse cowgirl/13.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "reverse cowgirl/0013.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "reverse cowgirl/14.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/0014.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 39
+ },
+ {
+ "index": 40,
+ "reference_image": "reverse cowgirl/0014_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "reverse cowgirl/0014_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "reverse cowgirl/0014_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 43
+ },
+ {
+ "reference_image": "reverse cowgirl/0015_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 44
+ },
+ {
+ "index": 45,
+ "reference_image": "reverse cowgirl/0015_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 46,
+ "reference_image": "reverse cowgirl/0016.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/0016_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 47
+ },
+ {
+ "index": 48,
+ "reference_image": "reverse cowgirl/0016_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 49,
+ "reference_image": "reverse cowgirl/0016_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 50,
+ "reference_image": "reverse cowgirl/0018.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 51,
+ "reference_image": "reverse cowgirl/0018_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 52,
+ "reference_image": "reverse cowgirl/0018_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 53,
+ "reference_image": "reverse cowgirl/0018_4.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 54,
+ "reference_image": "reverse cowgirl/19.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 55,
+ "reference_image": "reverse cowgirl/0019.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 56,
+ "reference_image": "reverse cowgirl/19_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 57,
+ "reference_image": "reverse cowgirl/0019_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 58,
+ "reference_image": "reverse cowgirl/0021.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 59,
+ "reference_image": "reverse cowgirl/22.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 60,
+ "reference_image": "reverse cowgirl/27.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 61,
+ "reference_image": "reverse cowgirl/29.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "reverse cowgirl/29_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 63,
+ "reference_image": "reverse cowgirl/35.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 64,
+ "reference_image": "reverse cowgirl/36.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 65,
+ "reference_image": "reverse cowgirl/42.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 66,
+ "reference_image": "reverse cowgirl/48.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 67,
+ "reference_image": "reverse cowgirl/48_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 68,
+ "reference_image": "reverse cowgirl/52.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 69,
+ "reference_image": "reverse cowgirl/52_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 70,
+ "reference_image": "reverse cowgirl/58.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 71,
+ "reference_image": "reverse cowgirl/58_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 72,
+ "reference_image": "reverse cowgirl/61.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 73,
+ "reference_image": "reverse cowgirl/62.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 74,
+ "reference_image": "reverse cowgirl/63.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 75,
+ "reference_image": "reverse cowgirl/64.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 76,
+ "reference_image": "reverse cowgirl/64_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 77,
+ "reference_image": "reverse cowgirl/65.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 78,
+ "reference_image": "reverse cowgirl/72.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 79,
+ "reference_image": "reverse cowgirl/73.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 80,
+ "reference_image": "reverse cowgirl/73_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 81,
+ "reference_image": "reverse cowgirl/77.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 82,
+ "reference_image": "reverse cowgirl/77_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/79.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 83
+ },
+ {
+ "index": 84,
+ "reference_image": "reverse cowgirl/79_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 85,
+ "reference_image": "reverse cowgirl/80.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 86,
+ "reference_image": "reverse cowgirl/80_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 87,
+ "reference_image": "reverse cowgirl/81.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/82.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 88
+ },
+ {
+ "index": 89,
+ "reference_image": "reverse cowgirl/109.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 90,
+ "reference_image": "reverse cowgirl/112.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 91,
+ "reference_image": "reverse cowgirl/113.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 92,
+ "reference_image": "reverse cowgirl/122.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 93,
+ "reference_image": "reverse cowgirl/122_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 94,
+ "reference_image": "reverse cowgirl/137.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/145.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 95
+ },
+ {
+ "index": 96,
+ "reference_image": "reverse cowgirl/145_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/153.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 97
+ },
+ {
+ "reference_image": "reverse cowgirl/153_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 98
+ },
+ {
+ "index": 99,
+ "reference_image": "reverse cowgirl/159.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 100,
+ "reference_image": "reverse cowgirl/159_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/170.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 101
+ },
+ {
+ "index": 102,
+ "reference_image": "reverse cowgirl/171.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 103,
+ "reference_image": "reverse cowgirl/172.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 104,
+ "reference_image": "reverse cowgirl/174.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 105,
+ "reference_image": "reverse cowgirl/179.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 106,
+ "reference_image": "reverse cowgirl/182.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 107,
+ "reference_image": "reverse cowgirl/183.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 108,
+ "reference_image": "reverse cowgirl/184.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 109,
+ "reference_image": "reverse cowgirl/206.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 110,
+ "reference_image": "reverse cowgirl/210.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 111,
+ "reference_image": "reverse cowgirl/217.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 112,
+ "reference_image": "reverse cowgirl/218.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 113,
+ "reference_image": "reverse cowgirl/221.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 114,
+ "reference_image": "reverse cowgirl/226.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 115,
+ "reference_image": "reverse cowgirl/226_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 116,
+ "reference_image": "reverse cowgirl/227.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 117,
+ "reference_image": "reverse cowgirl/232.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 118,
+ "reference_image": "reverse cowgirl/233.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 119,
+ "reference_image": "reverse cowgirl/234.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 120,
+ "reference_image": "reverse cowgirl/239.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/239_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 121
+ },
+ {
+ "reference_image": "reverse cowgirl/239_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 122
+ },
+ {
+ "reference_image": "reverse cowgirl/241.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 123
+ },
+ {
+ "reference_image": "reverse cowgirl/241_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 124
+ },
+ {
+ "reference_image": "reverse cowgirl/241_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 125
+ },
+ {
+ "index": 126,
+ "reference_image": "reverse cowgirl/245.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 127,
+ "reference_image": "reverse cowgirl/249.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 128,
+ "reference_image": "reverse cowgirl/251.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 129,
+ "reference_image": "reverse cowgirl/256.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/257.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 130
+ },
+ {
+ "index": 131,
+ "reference_image": "reverse cowgirl/258.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 132,
+ "reference_image": "reverse cowgirl/258_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 133,
+ "reference_image": "reverse cowgirl/259.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 134,
+ "reference_image": "reverse cowgirl/259_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/260.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 135
+ },
+ {
+ "index": 136,
+ "reference_image": "reverse cowgirl/260_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/261.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 137
+ },
+ {
+ "index": 138,
+ "reference_image": "reverse cowgirl/262.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 139,
+ "reference_image": "reverse cowgirl/263.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 140,
+ "reference_image": "reverse cowgirl/266.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 141,
+ "reference_image": "reverse cowgirl/267.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 142,
+ "reference_image": "reverse cowgirl/268.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 143,
+ "reference_image": "reverse cowgirl/268_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 144,
+ "reference_image": "reverse cowgirl/270.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 145,
+ "reference_image": "reverse cowgirl/273.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 146,
+ "reference_image": "reverse cowgirl/276.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 147,
+ "reference_image": "reverse cowgirl/276_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 148,
+ "reference_image": "reverse cowgirl/278.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 149,
+ "reference_image": "reverse cowgirl/280.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 150,
+ "reference_image": "reverse cowgirl/281.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 151,
+ "reference_image": "reverse cowgirl/285.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/287.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 152
+ },
+ {
+ "reference_image": "reverse cowgirl/288.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 153
+ },
+ {
+ "index": 154,
+ "reference_image": "reverse cowgirl/288_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 155,
+ "reference_image": "reverse cowgirl/290.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 156,
+ "reference_image": "reverse cowgirl/290_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 157,
+ "reference_image": "reverse cowgirl/292.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 158,
+ "reference_image": "reverse cowgirl/294.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 159,
+ "reference_image": "reverse cowgirl/296.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 160,
+ "reference_image": "reverse cowgirl/296_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 161,
+ "reference_image": "reverse cowgirl/296_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 162,
+ "reference_image": "reverse cowgirl/297.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 163,
+ "reference_image": "reverse cowgirl/298.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 164,
+ "reference_image": "reverse cowgirl/298_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 165,
+ "reference_image": "reverse cowgirl/298_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 166,
+ "reference_image": "reverse cowgirl/302.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 167,
+ "reference_image": "reverse cowgirl/304.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 168,
+ "reference_image": "reverse cowgirl/305.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 169,
+ "reference_image": "reverse cowgirl/305_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 170,
+ "reference_image": "reverse cowgirl/309.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 171,
+ "reference_image": "reverse cowgirl/311.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 172,
+ "reference_image": "reverse cowgirl/314.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 173,
+ "reference_image": "reverse cowgirl/317.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/319.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 174
+ },
+ {
+ "index": 175,
+ "reference_image": "reverse cowgirl/319_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 176,
+ "reference_image": "reverse cowgirl/320.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 177,
+ "reference_image": "reverse cowgirl/322.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 178,
+ "reference_image": "reverse cowgirl/323.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/323_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 179
+ },
+ {
+ "index": 180,
+ "reference_image": "reverse cowgirl/327.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 181,
+ "reference_image": "reverse cowgirl/331.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/332.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 182
+ },
+ {
+ "reference_image": "reverse cowgirl/332_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 183
+ },
+ {
+ "index": 184,
+ "reference_image": "reverse cowgirl/333.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 185,
+ "reference_image": "reverse cowgirl/338.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 186,
+ "reference_image": "reverse cowgirl/338_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 187,
+ "reference_image": "reverse cowgirl/342.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 188,
+ "reference_image": "reverse cowgirl/345.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 189,
+ "reference_image": "reverse cowgirl/345_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 190,
+ "reference_image": "reverse cowgirl/346.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 191,
+ "reference_image": "reverse cowgirl/349.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 192,
+ "reference_image": "reverse cowgirl/362.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 193,
+ "reference_image": "reverse cowgirl/370.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 194,
+ "reference_image": "reverse cowgirl/371.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 195,
+ "reference_image": "reverse cowgirl/372.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 196,
+ "reference_image": "reverse cowgirl/373.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 197,
+ "reference_image": "reverse cowgirl/377.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 198,
+ "reference_image": "reverse cowgirl/377_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 199,
+ "reference_image": "reverse cowgirl/377_3.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 200,
+ "reference_image": "reverse cowgirl/378.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 201,
+ "reference_image": "reverse cowgirl/379.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 202,
+ "reference_image": "reverse cowgirl/497.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 203,
+ "reference_image": "reverse cowgirl/497_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 204,
+ "reference_image": "reverse cowgirl/499.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 205,
+ "reference_image": "reverse cowgirl/509.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 206,
+ "reference_image": "reverse cowgirl/521.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 207,
+ "reference_image": "reverse cowgirl/521_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/527.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 208
+ },
+ {
+ "index": 209,
+ "reference_image": "reverse cowgirl/527_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 210,
+ "reference_image": "reverse cowgirl/532.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 211,
+ "reference_image": "reverse cowgirl/535.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 212,
+ "reference_image": "reverse cowgirl/536.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 213,
+ "reference_image": "reverse cowgirl/538.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 214,
+ "reference_image": "reverse cowgirl/542.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 215,
+ "reference_image": "reverse cowgirl/547.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 216,
+ "reference_image": "reverse cowgirl/548.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 217,
+ "reference_image": "reverse cowgirl/549.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 218,
+ "reference_image": "reverse cowgirl/549_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/551.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 219
+ },
+ {
+ "index": 220,
+ "reference_image": "reverse cowgirl/552.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 221,
+ "reference_image": "reverse cowgirl/568.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 222,
+ "reference_image": "reverse cowgirl/588.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 223,
+ "reference_image": "reverse cowgirl/590.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 224,
+ "reference_image": "reverse cowgirl/595.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 225,
+ "reference_image": "reverse cowgirl/597.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 226,
+ "reference_image": "reverse cowgirl/597_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 227,
+ "reference_image": "reverse cowgirl/598.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 228,
+ "reference_image": "reverse cowgirl/601.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 229,
+ "reference_image": "reverse cowgirl/607.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/608.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen.",
+ "index": 230
+ },
+ {
+ "index": 231,
+ "reference_image": "reverse cowgirl/608_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/609.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 232
+ },
+ {
+ "reference_image": "reverse cowgirl/609_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_three_quarter",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "selection_date": "2026-07-02",
+ "review_notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person.",
+ "index": 233
+ },
+ {
+ "index": 234,
+ "reference_image": "reverse cowgirl/611.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 235,
+ "reference_image": "reverse cowgirl/613.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 236,
+ "reference_image": "reverse cowgirl/614.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 237,
+ "reference_image": "reverse cowgirl/614_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 238,
+ "reference_image": "reverse cowgirl/615.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 239,
+ "reference_image": "reverse cowgirl/617.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "reverse cowgirl/618.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset.",
+ "index": 240
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "reverse cowgirl/1.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 2,
+ "reference_image": "reverse cowgirl/0001.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 3,
+ "reference_image": "reverse cowgirl/0002.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "reverse cowgirl/0002_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "reverse cowgirl/0002_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 6,
+ "reference_image": "reverse cowgirl/0003.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "reverse cowgirl/0003_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 8,
+ "reference_image": "reverse cowgirl/4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "reverse cowgirl/0004.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 10,
+ "reference_image": "reverse cowgirl/0005.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "reverse cowgirl/0005_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "reverse cowgirl/0005_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "reverse cowgirl/0005_4.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 14,
+ "reference_image": "reverse cowgirl/0005_5.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "reverse cowgirl/6.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "reverse cowgirl/0006.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "reverse cowgirl/0006_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "reverse cowgirl/0006_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "reverse cowgirl/7.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "reverse cowgirl/0007.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "reverse cowgirl/7_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "reverse cowgirl/0007_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "reverse cowgirl/0007_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "reverse cowgirl/0007_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "reverse cowgirl/0008.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "reverse cowgirl/0008_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "reverse cowgirl/0008_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "reverse cowgirl/0008_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "reverse cowgirl/0009.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 30,
+ "reference_image": "reverse cowgirl/0009_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 31,
+ "reference_image": "reverse cowgirl/0009_3.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 32,
+ "reference_image": "reverse cowgirl/0011.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "reverse cowgirl/0012.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "reverse cowgirl/0012_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "reverse cowgirl/0012_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "reverse cowgirl/13.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "reverse cowgirl/0013.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "reverse cowgirl/14.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "reverse cowgirl/0014.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 40,
+ "reference_image": "reverse cowgirl/0014_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 80,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "reverse cowgirl/0014_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "reverse cowgirl/0014_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "reverse cowgirl/0015.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 44,
+ "reference_image": "reverse cowgirl/0015_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 45,
+ "reference_image": "reverse cowgirl/0015_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 46,
+ "reference_image": "reverse cowgirl/0016.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "reverse cowgirl/0016_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 48,
+ "reference_image": "reverse cowgirl/0016_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 49,
+ "reference_image": "reverse cowgirl/0016_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 50,
+ "reference_image": "reverse cowgirl/0018.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 51,
+ "reference_image": "reverse cowgirl/0018_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 52,
+ "reference_image": "reverse cowgirl/0018_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "reverse cowgirl/0018_4.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "reverse cowgirl/19.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "reverse cowgirl/0019.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "reverse cowgirl/19_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 57,
+ "reference_image": "reverse cowgirl/0019_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "reverse cowgirl/0021.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 59,
+ "reference_image": "reverse cowgirl/22.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 60,
+ "reference_image": "reverse cowgirl/27.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 61,
+ "reference_image": "reverse cowgirl/29.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "reverse cowgirl/29_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "reverse cowgirl/35.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "reverse cowgirl/36.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "reverse cowgirl/42.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "reverse cowgirl/48.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 67,
+ "reference_image": "reverse cowgirl/48_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 68,
+ "reference_image": "reverse cowgirl/52.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 69,
+ "reference_image": "reverse cowgirl/52_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 70,
+ "reference_image": "reverse cowgirl/58.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 71,
+ "reference_image": "reverse cowgirl/58_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 72,
+ "reference_image": "reverse cowgirl/61.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 73,
+ "reference_image": "reverse cowgirl/62.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 74,
+ "reference_image": "reverse cowgirl/63.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 75,
+ "reference_image": "reverse cowgirl/64.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 76,
+ "reference_image": "reverse cowgirl/64_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 77,
+ "reference_image": "reverse cowgirl/65.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 78,
+ "reference_image": "reverse cowgirl/72.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 79,
+ "reference_image": "reverse cowgirl/73.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 80,
+ "reference_image": "reverse cowgirl/73_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 3,
+ "html_anchor": "page-03",
+ "start_index": 81,
+ "end_index": 120,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 81,
+ "reference_image": "reverse cowgirl/77.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 82,
+ "reference_image": "reverse cowgirl/77_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 83,
+ "reference_image": "reverse cowgirl/79.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 84,
+ "reference_image": "reverse cowgirl/79_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 85,
+ "reference_image": "reverse cowgirl/80.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 86,
+ "reference_image": "reverse cowgirl/80_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 87,
+ "reference_image": "reverse cowgirl/81.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 88,
+ "reference_image": "reverse cowgirl/82.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 89,
+ "reference_image": "reverse cowgirl/109.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 90,
+ "reference_image": "reverse cowgirl/112.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 91,
+ "reference_image": "reverse cowgirl/113.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 92,
+ "reference_image": "reverse cowgirl/122.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 93,
+ "reference_image": "reverse cowgirl/122_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 94,
+ "reference_image": "reverse cowgirl/137.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 95,
+ "reference_image": "reverse cowgirl/145.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 96,
+ "reference_image": "reverse cowgirl/145_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 97,
+ "reference_image": "reverse cowgirl/153.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 98,
+ "reference_image": "reverse cowgirl/153_2.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 99,
+ "reference_image": "reverse cowgirl/159.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 100,
+ "reference_image": "reverse cowgirl/159_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 101,
+ "reference_image": "reverse cowgirl/170.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 102,
+ "reference_image": "reverse cowgirl/171.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 103,
+ "reference_image": "reverse cowgirl/172.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 104,
+ "reference_image": "reverse cowgirl/174.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 105,
+ "reference_image": "reverse cowgirl/179.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 106,
+ "reference_image": "reverse cowgirl/182.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 107,
+ "reference_image": "reverse cowgirl/183.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 108,
+ "reference_image": "reverse cowgirl/184.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 109,
+ "reference_image": "reverse cowgirl/206.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 110,
+ "reference_image": "reverse cowgirl/210.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 111,
+ "reference_image": "reverse cowgirl/217.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 112,
+ "reference_image": "reverse cowgirl/218.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 113,
+ "reference_image": "reverse cowgirl/221.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 114,
+ "reference_image": "reverse cowgirl/226.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 115,
+ "reference_image": "reverse cowgirl/226_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 116,
+ "reference_image": "reverse cowgirl/227.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 117,
+ "reference_image": "reverse cowgirl/232.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 118,
+ "reference_image": "reverse cowgirl/233.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 119,
+ "reference_image": "reverse cowgirl/234.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 120,
+ "reference_image": "reverse cowgirl/239.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 4,
+ "html_anchor": "page-04",
+ "start_index": 121,
+ "end_index": 160,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 121,
+ "reference_image": "reverse cowgirl/239_2.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 122,
+ "reference_image": "reverse cowgirl/239_3.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 123,
+ "reference_image": "reverse cowgirl/241.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 124,
+ "reference_image": "reverse cowgirl/241_2.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 125,
+ "reference_image": "reverse cowgirl/241_3.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 126,
+ "reference_image": "reverse cowgirl/245.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 127,
+ "reference_image": "reverse cowgirl/249.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 128,
+ "reference_image": "reverse cowgirl/251.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 129,
+ "reference_image": "reverse cowgirl/256.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 130,
+ "reference_image": "reverse cowgirl/257.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 131,
+ "reference_image": "reverse cowgirl/258.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 132,
+ "reference_image": "reverse cowgirl/258_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 133,
+ "reference_image": "reverse cowgirl/259.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 134,
+ "reference_image": "reverse cowgirl/259_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 135,
+ "reference_image": "reverse cowgirl/260.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 136,
+ "reference_image": "reverse cowgirl/260_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 137,
+ "reference_image": "reverse cowgirl/261.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 138,
+ "reference_image": "reverse cowgirl/262.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 139,
+ "reference_image": "reverse cowgirl/263.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 140,
+ "reference_image": "reverse cowgirl/266.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 141,
+ "reference_image": "reverse cowgirl/267.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 142,
+ "reference_image": "reverse cowgirl/268.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 143,
+ "reference_image": "reverse cowgirl/268_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 144,
+ "reference_image": "reverse cowgirl/270.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 145,
+ "reference_image": "reverse cowgirl/273.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 146,
+ "reference_image": "reverse cowgirl/276.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 147,
+ "reference_image": "reverse cowgirl/276_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 148,
+ "reference_image": "reverse cowgirl/278.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 149,
+ "reference_image": "reverse cowgirl/280.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 150,
+ "reference_image": "reverse cowgirl/281.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 151,
+ "reference_image": "reverse cowgirl/285.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 152,
+ "reference_image": "reverse cowgirl/287.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 153,
+ "reference_image": "reverse cowgirl/288.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 154,
+ "reference_image": "reverse cowgirl/288_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 155,
+ "reference_image": "reverse cowgirl/290.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 156,
+ "reference_image": "reverse cowgirl/290_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 157,
+ "reference_image": "reverse cowgirl/292.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 158,
+ "reference_image": "reverse cowgirl/294.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 159,
+ "reference_image": "reverse cowgirl/296.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 160,
+ "reference_image": "reverse cowgirl/296_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 5,
+ "html_anchor": "page-05",
+ "start_index": 161,
+ "end_index": 200,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 161,
+ "reference_image": "reverse cowgirl/296_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 162,
+ "reference_image": "reverse cowgirl/297.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 163,
+ "reference_image": "reverse cowgirl/298.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 164,
+ "reference_image": "reverse cowgirl/298_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 165,
+ "reference_image": "reverse cowgirl/298_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 166,
+ "reference_image": "reverse cowgirl/302.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 167,
+ "reference_image": "reverse cowgirl/304.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 168,
+ "reference_image": "reverse cowgirl/305.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 169,
+ "reference_image": "reverse cowgirl/305_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 170,
+ "reference_image": "reverse cowgirl/309.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 171,
+ "reference_image": "reverse cowgirl/311.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 172,
+ "reference_image": "reverse cowgirl/314.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 173,
+ "reference_image": "reverse cowgirl/317.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 174,
+ "reference_image": "reverse cowgirl/319.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 175,
+ "reference_image": "reverse cowgirl/319_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 176,
+ "reference_image": "reverse cowgirl/320.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 177,
+ "reference_image": "reverse cowgirl/322.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 178,
+ "reference_image": "reverse cowgirl/323.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 179,
+ "reference_image": "reverse cowgirl/323_2.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 180,
+ "reference_image": "reverse cowgirl/327.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 181,
+ "reference_image": "reverse cowgirl/331.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 182,
+ "reference_image": "reverse cowgirl/332.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 183,
+ "reference_image": "reverse cowgirl/332_2.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 184,
+ "reference_image": "reverse cowgirl/333.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 185,
+ "reference_image": "reverse cowgirl/338.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 186,
+ "reference_image": "reverse cowgirl/338_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 187,
+ "reference_image": "reverse cowgirl/342.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 188,
+ "reference_image": "reverse cowgirl/345.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 189,
+ "reference_image": "reverse cowgirl/345_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 190,
+ "reference_image": "reverse cowgirl/346.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 191,
+ "reference_image": "reverse cowgirl/349.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 192,
+ "reference_image": "reverse cowgirl/362.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 193,
+ "reference_image": "reverse cowgirl/370.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 194,
+ "reference_image": "reverse cowgirl/371.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 195,
+ "reference_image": "reverse cowgirl/372.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 196,
+ "reference_image": "reverse cowgirl/373.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 197,
+ "reference_image": "reverse cowgirl/377.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 198,
+ "reference_image": "reverse cowgirl/377_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 199,
+ "reference_image": "reverse cowgirl/377_3.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 200,
+ "reference_image": "reverse cowgirl/378.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 6,
+ "html_anchor": "page-06",
+ "start_index": 201,
+ "end_index": 240,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 201,
+ "reference_image": "reverse cowgirl/379.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 202,
+ "reference_image": "reverse cowgirl/497.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 203,
+ "reference_image": "reverse cowgirl/497_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 204,
+ "reference_image": "reverse cowgirl/499.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 205,
+ "reference_image": "reverse cowgirl/509.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 206,
+ "reference_image": "reverse cowgirl/521.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 207,
+ "reference_image": "reverse cowgirl/521_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 208,
+ "reference_image": "reverse cowgirl/527.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 209,
+ "reference_image": "reverse cowgirl/527_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 210,
+ "reference_image": "reverse cowgirl/532.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 211,
+ "reference_image": "reverse cowgirl/535.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 212,
+ "reference_image": "reverse cowgirl/536.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 213,
+ "reference_image": "reverse cowgirl/538.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 214,
+ "reference_image": "reverse cowgirl/542.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 215,
+ "reference_image": "reverse cowgirl/547.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 216,
+ "reference_image": "reverse cowgirl/548.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 217,
+ "reference_image": "reverse cowgirl/549.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 218,
+ "reference_image": "reverse cowgirl/549_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 219,
+ "reference_image": "reverse cowgirl/551.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ },
+ {
+ "index": 220,
+ "reference_image": "reverse cowgirl/552.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 221,
+ "reference_image": "reverse cowgirl/568.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 222,
+ "reference_image": "reverse cowgirl/588.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 223,
+ "reference_image": "reverse cowgirl/590.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 224,
+ "reference_image": "reverse cowgirl/595.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 225,
+ "reference_image": "reverse cowgirl/597.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 226,
+ "reference_image": "reverse cowgirl/597_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 227,
+ "reference_image": "reverse cowgirl/598.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 228,
+ "reference_image": "reverse cowgirl/601.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 229,
+ "reference_image": "reverse cowgirl/607.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 230,
+ "reference_image": "reverse cowgirl/608.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "notes": "Paged review found a repeated front-facing reverse-cowgirl camera family across the large mixed source folder. Rear and side labels remain covered by the existing dedicated source folders until cleaner selected subsets are chosen."
+ },
+ {
+ "index": 231,
+ "reference_image": "reverse cowgirl/608_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 232,
+ "reference_image": "reverse cowgirl/609.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 233,
+ "reference_image": "reverse cowgirl/609_2.jpg",
+ "review_bucket": "front_three_quarter",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "notes": "Paged review found a repeated front-offset reverse-cowgirl camera family where the woman's body turns partly toward camera while the partner remains visible below or behind her in third person."
+ },
+ {
+ "index": 234,
+ "reference_image": "reverse cowgirl/611.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 235,
+ "reference_image": "reverse cowgirl/613.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 236,
+ "reference_image": "reverse cowgirl/614.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 237,
+ "reference_image": "reverse cowgirl/614_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 238,
+ "reference_image": "reverse cowgirl/615.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 239,
+ "reference_image": "reverse cowgirl/617.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 240,
+ "reference_image": "reverse cowgirl/618.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "notes": "Residual-pool review found a repeated low-close front-view reverse-cowgirl family where the foreground contact plane dominates while the subject remains visible in third-person framing. Wider room-context front views stay in the existing front-view subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/rimjob_contact_sheet.html b/ab_batches/normal_camera/review/rimjob_contact_sheet.html
new file mode 100644
index 0000000..1494d78
--- /dev/null
+++ b/ab_batches/normal_camera/review/rimjob_contact_sheet.html
@@ -0,0 +1,49 @@
+
+
+
+
+Normal Camera Review Contact Sheet: rimjob
+
+
+
+Normal Camera Review Contact Sheet: rimjob
+No-generation contact sheet. 3 JPGs from rimjob. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: rimjob.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-3
+
+
+
+001 rimjob/0003.jpgbucket: reject_or_unclear / normal_rimjob_mixed_camera_folder_pool
+
+
+
+002 rimjob/0010.jpgbucket: reject_or_unclear / normal_rimjob_mixed_camera_folder_pool
+
+
+
+003 rimjob/0018.jpgbucket: reject_or_unclear / normal_rimjob_mixed_camera_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/rimjob_review_manifest.json b/ab_batches/normal_camera/review/rimjob_review_manifest.json
new file mode 100644
index 0000000..1cd75b4
--- /dev/null
+++ b/ab_batches/normal_camera/review/rimjob_review_manifest.json
@@ -0,0 +1,111 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "rimjob",
+ "folder_alias": {
+ "exact_source_folder": "rimjob",
+ "canonical_folder": "rimjob",
+ "canonical_key": "rimjob",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 3,
+ "action_family": "oral_other",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "rimjob/0003.jpg",
+ "rimjob/0010.jpg",
+ "rimjob/0018.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples mix close side/back oral-contact framing with wider kneeling context and are too thin for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "rimjob/0003.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples mix close side/back oral-contact framing with wider kneeling context and are too thin for a selected pre-A/B route.",
+ "index": 1
+ },
+ {
+ "reference_image": "rimjob/0010.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples mix close side/back oral-contact framing with wider kneeling context and are too thin for a selected pre-A/B route.",
+ "index": 2
+ },
+ {
+ "reference_image": "rimjob/0018.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples mix close side/back oral-contact framing with wider kneeling context and are too thin for a selected pre-A/B route.",
+ "index": 3
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 3,
+ "image_count": 3,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "rimjob/0003.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples mix close side/back oral-contact framing with wider kneeling context and are too thin for a selected pre-A/B route."
+ },
+ {
+ "index": 2,
+ "reference_image": "rimjob/0010.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples mix close side/back oral-contact framing with wider kneeling context and are too thin for a selected pre-A/B route."
+ },
+ {
+ "index": 3,
+ "reference_image": "rimjob/0018.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the full folder as a mixed source-pool anchor. The three samples mix close side/back oral-contact framing with wider kneeling context and are too thin for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/under_desk_contact_sheet.html b/ab_batches/normal_camera/review/under_desk_contact_sheet.html
new file mode 100644
index 0000000..878e359
--- /dev/null
+++ b/ab_batches/normal_camera/review/under_desk_contact_sheet.html
@@ -0,0 +1,41 @@
+
+
+
+
+Normal Camera Review Contact Sheet: under desk
+
+
+
+Normal Camera Review Contact Sheet: under desk
+No-generation contact sheet. 1 JPGs from under desk. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: under desk.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-1
+
+
+
+001 under desk/347.jpgbucket: reject_or_unclear / normal_under_desk_single_reference_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/under_desk_review_manifest.json b/ab_batches/normal_camera/review/under_desk_review_manifest.json
new file mode 100644
index 0000000..28a8892
--- /dev/null
+++ b/ab_batches/normal_camera/review/under_desk_review_manifest.json
@@ -0,0 +1,75 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "under desk",
+ "folder_alias": {
+ "exact_source_folder": "under desk",
+ "canonical_folder": "under desk",
+ "canonical_key": "under_desk",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 1,
+ "action_family": "oral_other",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_under_desk_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "under desk/347.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the one under-desk context sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "under desk/347.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_under_desk_single_reference_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the one under-desk context sample as coverage evidence only. A single image cannot define a stable normal-camera route.",
+ "index": 1
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 1,
+ "image_count": 1,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "under desk/347.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_under_desk_single_reference_pool",
+ "notes": "Contact-sheet review preserved the one under-desk context sample as coverage evidence only. A single image cannot define a stable normal-camera route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/wand_contact_sheet.html b/ab_batches/normal_camera/review/wand_contact_sheet.html
new file mode 100644
index 0000000..dfa32eb
--- /dev/null
+++ b/ab_batches/normal_camera/review/wand_contact_sheet.html
@@ -0,0 +1,73 @@
+
+
+
+
+Normal Camera Review Contact Sheet: wand
+
+
+
+Normal Camera Review Contact Sheet: wand
+No-generation contact sheet. 9 JPGs from wand. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: wand.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-9
+
+
+
+001 wand/0005.jpgbucket: front_view / normal_wand_front_close_view
+
+
+
+002 wand/0015.jpgbucket: front_view / normal_wand_front_close_view
+
+
+
+003 wand/0021.jpgbucket: unassigned
+
+
+
+004 wand/75.jpgbucket: front_view / normal_wand_front_close_view
+
+
+
+005 wand/217.jpgbucket: front_view / normal_wand_front_close_view
+
+
+
+006 wand/508.jpgbucket: reject_or_unclear / normal_wand_mixed_camera_folder_pool
+
+
+
+007 wand/532.jpgbucket: front_view / normal_wand_front_close_view
+
+
+
+008 wand/561.jpgbucket: front_view / normal_wand_front_close_view
+
+
+
+009 wand/611.jpgbucket: front_view / normal_wand_front_close_view
+
+
+
+
diff --git a/ab_batches/normal_camera/review/wand_review_manifest.json b/ab_batches/normal_camera/review/wand_review_manifest.json
new file mode 100644
index 0000000..0ae8107
--- /dev/null
+++ b/ab_batches/normal_camera/review/wand_review_manifest.json
@@ -0,0 +1,230 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "wand",
+ "folder_alias": {
+ "exact_source_folder": "wand",
+ "canonical_folder": "wand",
+ "canonical_key": "wand",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 9,
+ "action_family": "manual_or_toy",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_wand_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/508.jpg",
+ "wand/75.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The source images include useful front-close tool-contact material, but side, portrait-close, and wider posture variation keep the full folder from being one locked prompt-ready route."
+ },
+ {
+ "variant_key": "normal_wand_front_close_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/0015.jpg",
+ "wand/217.jpg",
+ "wand/532.jpg",
+ "wand/561.jpg",
+ "wand/611.jpg",
+ "wand/75.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "wand/0005.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_wand_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset.",
+ "index": 1
+ },
+ {
+ "reference_image": "wand/0015.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_wand_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset.",
+ "index": 2
+ },
+ {
+ "index": 3,
+ "reference_image": "wand/0021.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "wand/75.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_wand_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset.",
+ "index": 4
+ },
+ {
+ "reference_image": "wand/217.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_wand_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset.",
+ "index": 5
+ },
+ {
+ "reference_image": "wand/508.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_wand_mixed_camera_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The source images include useful front-close tool-contact material, but side, portrait-close, and wider posture variation keep the full folder from being one locked prompt-ready route.",
+ "index": 6
+ },
+ {
+ "reference_image": "wand/532.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_wand_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset.",
+ "index": 7
+ },
+ {
+ "reference_image": "wand/561.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_wand_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset.",
+ "index": 8
+ },
+ {
+ "reference_image": "wand/611.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "front_view",
+ "variant_key": "normal_wand_front_close_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset.",
+ "index": 9
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 9,
+ "image_count": 9,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "wand/0005.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ },
+ {
+ "index": 2,
+ "reference_image": "wand/0015.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ },
+ {
+ "index": 3,
+ "reference_image": "wand/0021.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 4,
+ "reference_image": "wand/75.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ },
+ {
+ "index": 5,
+ "reference_image": "wand/217.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ },
+ {
+ "index": 6,
+ "reference_image": "wand/508.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_mixed_camera_folder_pool",
+ "notes": "Contact-sheet review preserved the folder as a mixed source-pool anchor. The source images include useful front-close tool-contact material, but side, portrait-close, and wider posture variation keep the full folder from being one locked prompt-ready route."
+ },
+ {
+ "index": 7,
+ "reference_image": "wand/532.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ },
+ {
+ "index": 8,
+ "reference_image": "wand/561.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ },
+ {
+ "index": 9,
+ "reference_image": "wand/611.jpg",
+ "review_bucket": "front_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_wand_front_close_view",
+ "notes": "Contact-sheet review found a repeated front-close third-person family where the contact plane is centered and the wand remains readable as one continuous object. Side, portrait-close, and wider posture outliers remain outside this selected subset."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/woman_ass_exposed_contact_sheet.html b/ab_batches/normal_camera/review/woman_ass_exposed_contact_sheet.html
new file mode 100644
index 0000000..2aa044d
--- /dev/null
+++ b/ab_batches/normal_camera/review/woman_ass_exposed_contact_sheet.html
@@ -0,0 +1,53 @@
+
+
+
+
+Normal Camera Review Contact Sheet: woman ass exposed
+
+
+
+Normal Camera Review Contact Sheet: woman ass exposed
+No-generation contact sheet. 4 JPGs from woman ass exposed. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: woman ass exposed.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-4
+
+
+
+001 woman ass exposed/40.jpgbucket: reject_or_unclear / normal_display_rear_exposed_body_folder_pool
+
+
+
+002 woman ass exposed/49.jpgbucket: reject_or_unclear / normal_display_rear_exposed_body_folder_pool
+
+
+
+003 woman ass exposed/52.jpgbucket: reject_or_unclear / normal_display_rear_exposed_body_folder_pool
+
+
+
+004 woman ass exposed/58.jpgbucket: reject_or_unclear / normal_display_rear_exposed_body_folder_pool
+
+
+
+
diff --git a/ab_batches/normal_camera/review/woman_ass_exposed_review_manifest.json b/ab_batches/normal_camera/review/woman_ass_exposed_review_manifest.json
new file mode 100644
index 0000000..003f456
--- /dev/null
+++ b/ab_batches/normal_camera/review/woman_ass_exposed_review_manifest.json
@@ -0,0 +1,129 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "woman ass exposed",
+ "folder_alias": {
+ "exact_source_folder": "woman ass exposed",
+ "canonical_folder": "woman ass exposed",
+ "canonical_key": "woman_ass_exposed",
+ "alias_applied": false,
+ "alias_reason": ""
+ },
+ "image_count": 4,
+ "action_family": "display",
+ "source_camera_view": "mixed_or_unspecified",
+ "source_catalog_status": "action_reference_only",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "woman ass exposed/40.jpg",
+ "woman ass exposed/49.jpg",
+ "woman ass exposed/52.jpg",
+ "woman ass exposed/58.jpg"
+ ],
+ "evidence_notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route."
+ }
+ ],
+ "review_items": [
+ {
+ "reference_image": "woman ass exposed/40.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route.",
+ "index": 1
+ },
+ {
+ "reference_image": "woman ass exposed/49.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route.",
+ "index": 2
+ },
+ {
+ "reference_image": "woman ass exposed/52.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route.",
+ "index": 3
+ },
+ {
+ "reference_image": "woman ass exposed/58.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "reject_or_unclear",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "selection_date": "2026-07-02",
+ "review_notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route.",
+ "index": 4
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 4,
+ "image_count": 4,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "woman ass exposed/40.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route."
+ },
+ {
+ "index": 2,
+ "reference_image": "woman ass exposed/49.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route."
+ },
+ {
+ "index": 3,
+ "reference_image": "woman ass exposed/52.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route."
+ },
+ {
+ "index": 4,
+ "reference_image": "woman ass exposed/58.jpg",
+ "review_bucket": "reject_or_unclear",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "notes": "Contact-sheet review records the existing rear exposed-body source pool with all four folder images. The folder is fully represented but remains too thin and camera-variable for a selected pre-A/B route."
+ }
+ ]
+ }
+ ]
+}
diff --git a/ab_batches/normal_camera/review/woman_solo_showing_her_hass_back_view_contact_sheet.html b/ab_batches/normal_camera/review/woman_solo_showing_her_hass_back_view_contact_sheet.html
new file mode 100644
index 0000000..ab03925
--- /dev/null
+++ b/ab_batches/normal_camera/review/woman_solo_showing_her_hass_back_view_contact_sheet.html
@@ -0,0 +1,439 @@
+
+
+
+
+Normal Camera Review Contact Sheet: woman solo showing her hass - back view
+
+
+
+Normal Camera Review Contact Sheet: woman solo showing her hass - back view
+No-generation contact sheet. 99 JPGs from woman solo showing her hass - back view. Review buckets are placeholders until visual review assigns them.
+Canonical folder label: woman solo showing her ass - back view.
+
+
back_view Rear-facing normal-camera view where back/hips face camera.
+
back_three_quarter Rear-offset normal-camera view with enough side/torso context.
+
side_view Profile or near-profile lateral view with the body/action axis across frame.
+
front_view Front-facing normal-camera view where the contact plane faces camera.
+
front_three_quarter Front-offset normal-camera view.
+
top_or_low_special Overhead, high-downward, low-angle, or under-view special camera.
+
reject_or_unclear POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.
+
+Page 1: 1-40
+
+
+
+001 woman solo showing her hass - back view/0001.jpgbucket: unassigned
+
+
+
+002 woman solo showing her hass - back view/0001_2.jpgbucket: unassigned
+
+
+
+003 woman solo showing her hass - back view/0002.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+004 woman solo showing her hass - back view/0003.jpgbucket: unassigned
+
+
+
+005 woman solo showing her hass - back view/0006.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+006 woman solo showing her hass - back view/0006_2.jpgbucket: unassigned
+
+
+
+007 woman solo showing her hass - back view/0006_3.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+008 woman solo showing her hass - back view/0007.jpgbucket: unassigned
+
+
+
+009 woman solo showing her hass - back view/0007_2.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+010 woman solo showing her hass - back view/0009.jpgbucket: unassigned
+
+
+
+011 woman solo showing her hass - back view/0013.jpgbucket: unassigned
+
+
+
+012 woman solo showing her hass - back view/0015.jpgbucket: unassigned
+
+
+
+013 woman solo showing her hass - back view/0016.jpgbucket: unassigned
+
+
+
+014 woman solo showing her hass - back view/0016_2.jpgbucket: unassigned
+
+
+
+015 woman solo showing her hass - back view/17.jpgbucket: unassigned
+
+
+
+016 woman solo showing her hass - back view/0019.jpgbucket: unassigned
+
+
+
+017 woman solo showing her hass - back view/0021.jpgbucket: unassigned
+
+
+
+018 woman solo showing her hass - back view/73.jpgbucket: unassigned
+
+
+
+019 woman solo showing her hass - back view/76.jpgbucket: unassigned
+
+
+
+020 woman solo showing her hass - back view/80.jpgbucket: unassigned
+
+
+
+021 woman solo showing her hass - back view/112.jpgbucket: unassigned
+
+
+
+022 woman solo showing her hass - back view/114.jpgbucket: unassigned
+
+
+
+023 woman solo showing her hass - back view/118.jpgbucket: unassigned
+
+
+
+024 woman solo showing her hass - back view/121.jpgbucket: unassigned
+
+
+
+025 woman solo showing her hass - back view/124.jpgbucket: unassigned
+
+
+
+026 woman solo showing her hass - back view/138.jpgbucket: unassigned
+
+
+
+027 woman solo showing her hass - back view/153.jpgbucket: unassigned
+
+
+
+028 woman solo showing her hass - back view/153_2.jpgbucket: unassigned
+
+
+
+029 woman solo showing her hass - back view/155.jpgbucket: unassigned
+
+
+
+030 woman solo showing her hass - back view/155_2.jpgbucket: unassigned
+
+
+
+031 woman solo showing her hass - back view/157.jpgbucket: unassigned
+
+
+
+032 woman solo showing her hass - back view/160.jpgbucket: unassigned
+
+
+
+033 woman solo showing her hass - back view/161.jpgbucket: unassigned
+
+
+
+034 woman solo showing her hass - back view/162.jpgbucket: unassigned
+
+
+
+035 woman solo showing her hass - back view/162_2.jpgbucket: unassigned
+
+
+
+036 woman solo showing her hass - back view/169.jpgbucket: unassigned
+
+
+
+037 woman solo showing her hass - back view/169_2.jpgbucket: unassigned
+
+
+
+038 woman solo showing her hass - back view/171.jpgbucket: unassigned
+
+
+
+039 woman solo showing her hass - back view/174.jpgbucket: unassigned
+
+
+
+040 woman solo showing her hass - back view/175.jpgbucket: unassigned
+
+
+Page 2: 41-80
+
+
+
+041 woman solo showing her hass - back view/181.jpgbucket: unassigned
+
+
+
+042 woman solo showing her hass - back view/182.jpgbucket: unassigned
+
+
+
+043 woman solo showing her hass - back view/182_2.jpgbucket: unassigned
+
+
+
+044 woman solo showing her hass - back view/189.jpgbucket: unassigned
+
+
+
+045 woman solo showing her hass - back view/197.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+046 woman solo showing her hass - back view/207.jpgbucket: unassigned
+
+
+
+047 woman solo showing her hass - back view/215.jpgbucket: unassigned
+
+
+
+048 woman solo showing her hass - back view/230.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+049 woman solo showing her hass - back view/232.jpgbucket: unassigned
+
+
+
+050 woman solo showing her hass - back view/235.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+051 woman solo showing her hass - back view/241.jpgbucket: unassigned
+
+
+
+052 woman solo showing her hass - back view/242.jpgbucket: unassigned
+
+
+
+053 woman solo showing her hass - back view/248.jpgbucket: unassigned
+
+
+
+054 woman solo showing her hass - back view/256.jpgbucket: unassigned
+
+
+
+055 woman solo showing her hass - back view/269.jpgbucket: unassigned
+
+
+
+056 woman solo showing her hass - back view/270.jpgbucket: unassigned
+
+
+
+057 woman solo showing her hass - back view/280.jpgbucket: unassigned
+
+
+
+058 woman solo showing her hass - back view/287.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+059 woman solo showing her hass - back view/293.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+060 woman solo showing her hass - back view/300.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+061 woman solo showing her hass - back view/301.jpgbucket: unassigned
+
+
+
+062 woman solo showing her hass - back view/304.jpgbucket: unassigned
+
+
+
+063 woman solo showing her hass - back view/305.jpgbucket: unassigned
+
+
+
+064 woman solo showing her hass - back view/313.jpgbucket: unassigned
+
+
+
+065 woman solo showing her hass - back view/313_2.jpgbucket: unassigned
+
+
+
+066 woman solo showing her hass - back view/314.jpgbucket: unassigned
+
+
+
+067 woman solo showing her hass - back view/315.jpgbucket: unassigned
+
+
+
+068 woman solo showing her hass - back view/321.jpgbucket: back_view / normal_display_rear_body_standing_back_view
+
+
+
+069 woman solo showing her hass - back view/322.jpgbucket: unassigned
+
+
+
+070 woman solo showing her hass - back view/331.jpgbucket: unassigned
+
+
+
+071 woman solo showing her hass - back view/331_2.jpgbucket: unassigned
+
+
+
+072 woman solo showing her hass - back view/344.jpgbucket: unassigned
+
+
+
+073 woman solo showing her hass - back view/346.jpgbucket: unassigned
+
+
+
+074 woman solo showing her hass - back view/346_2.jpgbucket: unassigned
+
+
+
+075 woman solo showing her hass - back view/348.jpgbucket: unassigned
+
+
+
+076 woman solo showing her hass - back view/348_2.jpgbucket: unassigned
+
+
+
+077 woman solo showing her hass - back view/349.jpgbucket: unassigned
+
+
+
+078 woman solo showing her hass - back view/368.jpgbucket: unassigned
+
+
+
+079 woman solo showing her hass - back view/497.jpgbucket: unassigned
+
+
+
+080 woman solo showing her hass - back view/498.jpgbucket: unassigned
+
+
+Page 3: 81-99
+
+
+
+081 woman solo showing her hass - back view/499.jpgbucket: unassigned
+
+
+
+082 woman solo showing her hass - back view/505.jpgbucket: unassigned
+
+
+
+083 woman solo showing her hass - back view/505_2.jpgbucket: unassigned
+
+
+
+084 woman solo showing her hass - back view/521.jpgbucket: unassigned
+
+
+
+085 woman solo showing her hass - back view/521_2.jpgbucket: unassigned
+
+
+
+086 woman solo showing her hass - back view/529.jpgbucket: unassigned
+
+
+
+087 woman solo showing her hass - back view/534.jpgbucket: unassigned
+
+
+
+088 woman solo showing her hass - back view/534_2.jpgbucket: unassigned
+
+
+
+089 woman solo showing her hass - back view/540.jpgbucket: unassigned
+
+
+
+090 woman solo showing her hass - back view/545.jpgbucket: unassigned
+
+
+
+091 woman solo showing her hass - back view/556.jpgbucket: unassigned
+
+
+
+092 woman solo showing her hass - back view/556_2.jpgbucket: unassigned
+
+
+
+093 woman solo showing her hass - back view/594.jpgbucket: unassigned
+
+
+
+094 woman solo showing her hass - back view/604.jpgbucket: unassigned
+
+
+
+095 woman solo showing her hass - back view/608.jpgbucket: unassigned
+
+
+
+096 woman solo showing her hass - back view/610.jpgbucket: unassigned
+
+
+
+097 woman solo showing her hass - back view/612.jpgbucket: unassigned
+
+
+
+098 woman solo showing her hass - back view/617.jpgbucket: unassigned
+
+
+
+099 woman solo showing her hass - back view/624.jpgbucket: unassigned
+
+
+
+
diff --git a/ab_batches/normal_camera/review/woman_solo_showing_her_hass_back_view_review_manifest.json b/ab_batches/normal_camera/review/woman_solo_showing_her_hass_back_view_review_manifest.json
new file mode 100644
index 0000000..2f5280d
--- /dev/null
+++ b/ab_batches/normal_camera/review/woman_solo_showing_her_hass_back_view_review_manifest.json
@@ -0,0 +1,1858 @@
+{
+ "schema": "sxcp_normal_camera_review_manifest_v1",
+ "no_generation": true,
+ "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted",
+ "folder": "woman solo showing her hass - back view",
+ "folder_alias": {
+ "exact_source_folder": "woman solo showing her hass - back view",
+ "canonical_folder": "woman solo showing her ass - back view",
+ "canonical_key": "woman_solo_showing_her_ass_back_view",
+ "alias_applied": true,
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path."
+ },
+ "image_count": 99,
+ "action_family": "display",
+ "source_camera_view": "back_view",
+ "source_catalog_status": "camera_reference",
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples."
+ ],
+ "review_bucket_values": {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting."
+ },
+ "selected_subvariants": [
+ {
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "review_bucket": "back_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "woman solo showing her hass - back view/0002.jpg",
+ "woman solo showing her hass - back view/0006.jpg",
+ "woman solo showing her hass - back view/0006_3.jpg",
+ "woman solo showing her hass - back view/0007_2.jpg",
+ "woman solo showing her hass - back view/173.jpg",
+ "woman solo showing her hass - back view/197.jpg",
+ "woman solo showing her hass - back view/230.jpg",
+ "woman solo showing her hass - back view/235.jpg",
+ "woman solo showing her hass - back view/287.jpg",
+ "woman solo showing her hass - back view/293.jpg",
+ "woman solo showing her hass - back view/300.jpg",
+ "woman solo showing her hass - back view/321.jpg"
+ ],
+ "evidence_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ }
+ ],
+ "review_items": [
+ {
+ "index": 1,
+ "reference_image": "woman solo showing her hass - back view/0001.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 2,
+ "reference_image": "woman solo showing her hass - back view/0001_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/0002.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 3
+ },
+ {
+ "index": 4,
+ "reference_image": "woman solo showing her hass - back view/0003.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/0006.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 5
+ },
+ {
+ "index": 6,
+ "reference_image": "woman solo showing her hass - back view/0006_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/0006_3.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 7
+ },
+ {
+ "index": 8,
+ "reference_image": "woman solo showing her hass - back view/0007.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/0007_2.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 9
+ },
+ {
+ "index": 10,
+ "reference_image": "woman solo showing her hass - back view/0009.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 11,
+ "reference_image": "woman solo showing her hass - back view/0013.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 12,
+ "reference_image": "woman solo showing her hass - back view/0015.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 13,
+ "reference_image": "woman solo showing her hass - back view/0016.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 14,
+ "reference_image": "woman solo showing her hass - back view/0016_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 15,
+ "reference_image": "woman solo showing her hass - back view/17.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 16,
+ "reference_image": "woman solo showing her hass - back view/0019.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 17,
+ "reference_image": "woman solo showing her hass - back view/0021.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 18,
+ "reference_image": "woman solo showing her hass - back view/73.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 19,
+ "reference_image": "woman solo showing her hass - back view/76.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 20,
+ "reference_image": "woman solo showing her hass - back view/80.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 21,
+ "reference_image": "woman solo showing her hass - back view/112.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 22,
+ "reference_image": "woman solo showing her hass - back view/114.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 23,
+ "reference_image": "woman solo showing her hass - back view/118.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 24,
+ "reference_image": "woman solo showing her hass - back view/121.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 25,
+ "reference_image": "woman solo showing her hass - back view/124.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 26,
+ "reference_image": "woman solo showing her hass - back view/138.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 27,
+ "reference_image": "woman solo showing her hass - back view/153.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 28,
+ "reference_image": "woman solo showing her hass - back view/153_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 29,
+ "reference_image": "woman solo showing her hass - back view/155.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 30,
+ "reference_image": "woman solo showing her hass - back view/155_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 31,
+ "reference_image": "woman solo showing her hass - back view/157.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 32,
+ "reference_image": "woman solo showing her hass - back view/160.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 33,
+ "reference_image": "woman solo showing her hass - back view/161.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 34,
+ "reference_image": "woman solo showing her hass - back view/162.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 35,
+ "reference_image": "woman solo showing her hass - back view/162_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 36,
+ "reference_image": "woman solo showing her hass - back view/169.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 37,
+ "reference_image": "woman solo showing her hass - back view/169_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 38,
+ "reference_image": "woman solo showing her hass - back view/171.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 39,
+ "reference_image": "woman solo showing her hass - back view/174.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 40,
+ "reference_image": "woman solo showing her hass - back view/175.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 41,
+ "reference_image": "woman solo showing her hass - back view/181.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 42,
+ "reference_image": "woman solo showing her hass - back view/182.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 43,
+ "reference_image": "woman solo showing her hass - back view/182_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 44,
+ "reference_image": "woman solo showing her hass - back view/189.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/197.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 45
+ },
+ {
+ "index": 46,
+ "reference_image": "woman solo showing her hass - back view/207.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 47,
+ "reference_image": "woman solo showing her hass - back view/215.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/230.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 48
+ },
+ {
+ "index": 49,
+ "reference_image": "woman solo showing her hass - back view/232.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/235.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 50
+ },
+ {
+ "index": 51,
+ "reference_image": "woman solo showing her hass - back view/241.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 52,
+ "reference_image": "woman solo showing her hass - back view/242.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 53,
+ "reference_image": "woman solo showing her hass - back view/248.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 54,
+ "reference_image": "woman solo showing her hass - back view/256.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 55,
+ "reference_image": "woman solo showing her hass - back view/269.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 56,
+ "reference_image": "woman solo showing her hass - back view/270.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 57,
+ "reference_image": "woman solo showing her hass - back view/280.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/287.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 58
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/293.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 59
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/300.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 60
+ },
+ {
+ "index": 61,
+ "reference_image": "woman solo showing her hass - back view/301.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 62,
+ "reference_image": "woman solo showing her hass - back view/304.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 63,
+ "reference_image": "woman solo showing her hass - back view/305.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 64,
+ "reference_image": "woman solo showing her hass - back view/313.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 65,
+ "reference_image": "woman solo showing her hass - back view/313_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 66,
+ "reference_image": "woman solo showing her hass - back view/314.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 67,
+ "reference_image": "woman solo showing her hass - back view/315.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "reference_image": "woman solo showing her hass - back view/321.jpg",
+ "review_decision": "selected_reference",
+ "review_bucket": "back_view",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "selection_date": "2026-07-02",
+ "review_notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route.",
+ "index": 68
+ },
+ {
+ "index": 69,
+ "reference_image": "woman solo showing her hass - back view/322.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 70,
+ "reference_image": "woman solo showing her hass - back view/331.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 71,
+ "reference_image": "woman solo showing her hass - back view/331_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 72,
+ "reference_image": "woman solo showing her hass - back view/344.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 73,
+ "reference_image": "woman solo showing her hass - back view/346.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 74,
+ "reference_image": "woman solo showing her hass - back view/346_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 75,
+ "reference_image": "woman solo showing her hass - back view/348.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 76,
+ "reference_image": "woman solo showing her hass - back view/348_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 77,
+ "reference_image": "woman solo showing her hass - back view/349.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 78,
+ "reference_image": "woman solo showing her hass - back view/368.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 79,
+ "reference_image": "woman solo showing her hass - back view/497.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 80,
+ "reference_image": "woman solo showing her hass - back view/498.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 81,
+ "reference_image": "woman solo showing her hass - back view/499.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 82,
+ "reference_image": "woman solo showing her hass - back view/505.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 83,
+ "reference_image": "woman solo showing her hass - back view/505_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 84,
+ "reference_image": "woman solo showing her hass - back view/521.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 85,
+ "reference_image": "woman solo showing her hass - back view/521_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 86,
+ "reference_image": "woman solo showing her hass - back view/529.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 87,
+ "reference_image": "woman solo showing her hass - back view/534.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 88,
+ "reference_image": "woman solo showing her hass - back view/534_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 89,
+ "reference_image": "woman solo showing her hass - back view/540.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 90,
+ "reference_image": "woman solo showing her hass - back view/545.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 91,
+ "reference_image": "woman solo showing her hass - back view/556.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 92,
+ "reference_image": "woman solo showing her hass - back view/556_2.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 93,
+ "reference_image": "woman solo showing her hass - back view/594.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 94,
+ "reference_image": "woman solo showing her hass - back view/604.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 95,
+ "reference_image": "woman solo showing her hass - back view/608.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 96,
+ "reference_image": "woman solo showing her hass - back view/610.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 97,
+ "reference_image": "woman solo showing her hass - back view/612.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 98,
+ "reference_image": "woman solo showing her hass - back view/617.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ },
+ {
+ "index": 99,
+ "reference_image": "woman solo showing her hass - back view/624.jpg",
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": null,
+ "selection_date": null,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket"
+ }
+ ],
+ "contact_sheet_pages": [
+ {
+ "page": 1,
+ "html_anchor": "page-01",
+ "start_index": 1,
+ "end_index": 40,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 1,
+ "reference_image": "woman solo showing her hass - back view/0001.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 2,
+ "reference_image": "woman solo showing her hass - back view/0001_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 3,
+ "reference_image": "woman solo showing her hass - back view/0002.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 4,
+ "reference_image": "woman solo showing her hass - back view/0003.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 5,
+ "reference_image": "woman solo showing her hass - back view/0006.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 6,
+ "reference_image": "woman solo showing her hass - back view/0006_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 7,
+ "reference_image": "woman solo showing her hass - back view/0006_3.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 8,
+ "reference_image": "woman solo showing her hass - back view/0007.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 9,
+ "reference_image": "woman solo showing her hass - back view/0007_2.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 10,
+ "reference_image": "woman solo showing her hass - back view/0009.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 11,
+ "reference_image": "woman solo showing her hass - back view/0013.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 12,
+ "reference_image": "woman solo showing her hass - back view/0015.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 13,
+ "reference_image": "woman solo showing her hass - back view/0016.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 14,
+ "reference_image": "woman solo showing her hass - back view/0016_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 15,
+ "reference_image": "woman solo showing her hass - back view/17.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 16,
+ "reference_image": "woman solo showing her hass - back view/0019.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 17,
+ "reference_image": "woman solo showing her hass - back view/0021.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 18,
+ "reference_image": "woman solo showing her hass - back view/73.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 19,
+ "reference_image": "woman solo showing her hass - back view/76.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 20,
+ "reference_image": "woman solo showing her hass - back view/80.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 21,
+ "reference_image": "woman solo showing her hass - back view/112.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 22,
+ "reference_image": "woman solo showing her hass - back view/114.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 23,
+ "reference_image": "woman solo showing her hass - back view/118.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 24,
+ "reference_image": "woman solo showing her hass - back view/121.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 25,
+ "reference_image": "woman solo showing her hass - back view/124.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 26,
+ "reference_image": "woman solo showing her hass - back view/138.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 27,
+ "reference_image": "woman solo showing her hass - back view/153.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 28,
+ "reference_image": "woman solo showing her hass - back view/153_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 29,
+ "reference_image": "woman solo showing her hass - back view/155.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 30,
+ "reference_image": "woman solo showing her hass - back view/155_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 31,
+ "reference_image": "woman solo showing her hass - back view/157.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 32,
+ "reference_image": "woman solo showing her hass - back view/160.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 33,
+ "reference_image": "woman solo showing her hass - back view/161.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 34,
+ "reference_image": "woman solo showing her hass - back view/162.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 35,
+ "reference_image": "woman solo showing her hass - back view/162_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 36,
+ "reference_image": "woman solo showing her hass - back view/169.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 37,
+ "reference_image": "woman solo showing her hass - back view/169_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 38,
+ "reference_image": "woman solo showing her hass - back view/171.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 39,
+ "reference_image": "woman solo showing her hass - back view/174.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 40,
+ "reference_image": "woman solo showing her hass - back view/175.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 2,
+ "html_anchor": "page-02",
+ "start_index": 41,
+ "end_index": 80,
+ "image_count": 40,
+ "images": [
+ {
+ "index": 41,
+ "reference_image": "woman solo showing her hass - back view/181.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 42,
+ "reference_image": "woman solo showing her hass - back view/182.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 43,
+ "reference_image": "woman solo showing her hass - back view/182_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 44,
+ "reference_image": "woman solo showing her hass - back view/189.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 45,
+ "reference_image": "woman solo showing her hass - back view/197.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 46,
+ "reference_image": "woman solo showing her hass - back view/207.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 47,
+ "reference_image": "woman solo showing her hass - back view/215.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 48,
+ "reference_image": "woman solo showing her hass - back view/230.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 49,
+ "reference_image": "woman solo showing her hass - back view/232.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 50,
+ "reference_image": "woman solo showing her hass - back view/235.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 51,
+ "reference_image": "woman solo showing her hass - back view/241.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 52,
+ "reference_image": "woman solo showing her hass - back view/242.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 53,
+ "reference_image": "woman solo showing her hass - back view/248.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 54,
+ "reference_image": "woman solo showing her hass - back view/256.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 55,
+ "reference_image": "woman solo showing her hass - back view/269.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 56,
+ "reference_image": "woman solo showing her hass - back view/270.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 57,
+ "reference_image": "woman solo showing her hass - back view/280.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 58,
+ "reference_image": "woman solo showing her hass - back view/287.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 59,
+ "reference_image": "woman solo showing her hass - back view/293.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 60,
+ "reference_image": "woman solo showing her hass - back view/300.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 61,
+ "reference_image": "woman solo showing her hass - back view/301.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 62,
+ "reference_image": "woman solo showing her hass - back view/304.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 63,
+ "reference_image": "woman solo showing her hass - back view/305.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 64,
+ "reference_image": "woman solo showing her hass - back view/313.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 65,
+ "reference_image": "woman solo showing her hass - back view/313_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 66,
+ "reference_image": "woman solo showing her hass - back view/314.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 67,
+ "reference_image": "woman solo showing her hass - back view/315.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 68,
+ "reference_image": "woman solo showing her hass - back view/321.jpg",
+ "review_bucket": "back_view",
+ "review_decision": "selected_reference",
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "notes": "Residual-pool review found a repeated upright standing rear-body display family. Seated, kneeling, side-leaning, and close-crop rear examples remain in the broad source pool or existing rear-body route."
+ },
+ {
+ "index": 69,
+ "reference_image": "woman solo showing her hass - back view/322.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 70,
+ "reference_image": "woman solo showing her hass - back view/331.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 71,
+ "reference_image": "woman solo showing her hass - back view/331_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 72,
+ "reference_image": "woman solo showing her hass - back view/344.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 73,
+ "reference_image": "woman solo showing her hass - back view/346.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 74,
+ "reference_image": "woman solo showing her hass - back view/346_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 75,
+ "reference_image": "woman solo showing her hass - back view/348.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 76,
+ "reference_image": "woman solo showing her hass - back view/348_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 77,
+ "reference_image": "woman solo showing her hass - back view/349.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 78,
+ "reference_image": "woman solo showing her hass - back view/368.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 79,
+ "reference_image": "woman solo showing her hass - back view/497.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 80,
+ "reference_image": "woman solo showing her hass - back view/498.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ },
+ {
+ "page": 3,
+ "html_anchor": "page-03",
+ "start_index": 81,
+ "end_index": 99,
+ "image_count": 19,
+ "images": [
+ {
+ "index": 81,
+ "reference_image": "woman solo showing her hass - back view/499.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 82,
+ "reference_image": "woman solo showing her hass - back view/505.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 83,
+ "reference_image": "woman solo showing her hass - back view/505_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 84,
+ "reference_image": "woman solo showing her hass - back view/521.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 85,
+ "reference_image": "woman solo showing her hass - back view/521_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 86,
+ "reference_image": "woman solo showing her hass - back view/529.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 87,
+ "reference_image": "woman solo showing her hass - back view/534.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 88,
+ "reference_image": "woman solo showing her hass - back view/534_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 89,
+ "reference_image": "woman solo showing her hass - back view/540.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 90,
+ "reference_image": "woman solo showing her hass - back view/545.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 91,
+ "reference_image": "woman solo showing her hass - back view/556.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 92,
+ "reference_image": "woman solo showing her hass - back view/556_2.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 93,
+ "reference_image": "woman solo showing her hass - back view/594.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 94,
+ "reference_image": "woman solo showing her hass - back view/604.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 95,
+ "reference_image": "woman solo showing her hass - back view/608.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 96,
+ "reference_image": "woman solo showing her hass - back view/610.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 97,
+ "reference_image": "woman solo showing her hass - back view/612.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 98,
+ "reference_image": "woman solo showing her hass - back view/617.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ },
+ {
+ "index": 99,
+ "reference_image": "woman solo showing her hass - back view/624.jpg",
+ "review_bucket": "unassigned",
+ "review_decision": "residual_unassigned",
+ "variant_key": null,
+ "notes": ""
+ }
+ ]
+ }
+ ]
+}
diff --git a/categories/normal_camera_variants.json b/categories/normal_camera_variants.json
index df20bc1..bd04c77 100644
--- a/categories/normal_camera_variants.json
+++ b/categories/normal_camera_variants.json
@@ -14,41 +14,15 @@
"hold": "Cataloged for coverage only; do not queue as a normal prompt-only A/B candidate until split or expanded."
},
"inventory": {
- "variant_count": 86,
+ "variant_count": 131,
"status_counts": {
"hold": 0,
- "needs_samples": 51,
- "pre_ab_candidate": 35
+ "needs_samples": 76,
+ "pre_ab_candidate": 55
},
- "covered_non_empty_folder_count": 76,
- "uncovered_non_empty_folder_count": 25,
- "uncovered_non_empty_folders": [
- "69",
- "anal cowgirl",
- "anal doggy - side view",
- "anal fuck from behind laying - back view - 3-4 angle",
- "anal random",
- "anal reverse congress",
- "anus lickiing",
- "blowjob laying - back view - 3-4 angle",
- "doggy press - back side",
- "face sitting",
- "face sitting - front view",
- "fingering",
- "fist",
- "footjob",
- "handjob - standing -low angle",
- "pussy licking - backv iew",
- "pussy licking leg up - back view - 3-4 angle",
- "pussy licking standing woman",
- "removing pants",
- "reverse cowgirl",
- "reverse cowgirl - leg up",
- "reverse cowgirl -pretzel",
- "rimjob",
- "under desk",
- "wand"
- ]
+ "covered_non_empty_folder_count": 101,
+ "uncovered_non_empty_folder_count": 0,
+ "uncovered_non_empty_folders": []
},
"variants": [
{
@@ -486,7 +460,19 @@
],
"reference_images": [
"doggy on all four - back view - 3-4 angle/0002.jpg",
+ "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "doggy on all four - back view - 3-4 angle/206.jpg",
"doggy on all four - back view - 3-4 angle/267.jpg",
+ "doggy on all four - back view - 3-4 angle/302.jpg",
+ "doggy on all four - back view - 3-4 angle/327.jpg",
+ "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "doggy on all four - back view - 3-4 angle/611.jpg",
+ "doggy on all four - back view - 3-4 angle/70.jpg",
"doggy on all four - back view - 3-4 angle/97.jpg"
],
"generator_hook": {
@@ -498,12 +484,12 @@
],
"notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
},
- "pre_ab_notes": "Split from the prior doggy rear three-quarter grouping to keep all-fours wording separate. Visual review confirmed this status from a full-folder doggy contact sheet.",
+ "pre_ab_notes": "Split from the prior doggy rear three-quarter grouping to keep all-fours wording separate. Residual-pool review expanded the selected references to 15 images while keeping low, front-drifting, and tight-crop outliers outside the selected subset.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 69 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "Rear/offset all-fours framing dominates the folder. Some close crops and low/front-leaning examples exist, but the source is coherent enough for first wording tests."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual contact-sheet review of the 69-JPG source folder with 15 reviewed references selected.",
+ "decision": "expanded_reviewed_reference_set",
+ "notes": "Rear/offset all-fours framing repeats across the folder. The selected references keep normal-camera rear three-quarter composition while excluding low, front-drifting, and tight-crop outliers."
}
},
{
@@ -531,7 +517,19 @@
],
"reference_images": [
"doggy - back view - 3-4 angle/0002.jpg",
+ "doggy - back view - 3-4 angle/0002_2.jpg",
+ "doggy - back view - 3-4 angle/0008_2.jpg",
+ "doggy - back view - 3-4 angle/0013.jpg",
+ "doggy - back view - 3-4 angle/0015.jpg",
+ "doggy - back view - 3-4 angle/0017.jpg",
+ "doggy - back view - 3-4 angle/0021.jpg",
+ "doggy - back view - 3-4 angle/132.jpg",
+ "doggy - back view - 3-4 angle/145.jpg",
+ "doggy - back view - 3-4 angle/183.jpg",
"doggy - back view - 3-4 angle/185.jpg",
+ "doggy - back view - 3-4 angle/227.jpg",
+ "doggy - back view - 3-4 angle/39.jpg",
+ "doggy - back view - 3-4 angle/41.jpg",
"doggy - back view - 3-4 angle/77.jpg"
],
"generator_hook": {
@@ -542,12 +540,12 @@
],
"notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
},
- "pre_ab_notes": "Split from the prior doggy rear three-quarter grouping to keep the generic folder independent. Visual review confirmed this status from a full-folder doggy contact sheet.",
+ "pre_ab_notes": "Split from the prior doggy rear three-quarter grouping to keep the generic folder independent. Residual-pool review expanded the selected references to 15 images while keeping low/close and laying-drift examples outside the selected subset.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 35 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "Rear three-quarter normal-camera framing is visually consistent enough for a generic doggy back-offset route."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual contact-sheet review of the 35-JPG source folder with 15 reviewed references selected.",
+ "decision": "expanded_reviewed_reference_set",
+ "notes": "Generic rear three-quarter framing repeats across the folder. The selected references keep back-offset normal-camera composition while excluding low/close and laying-drift examples."
}
},
{
@@ -694,8 +692,20 @@
],
"reference_images": [
"doggy all four - front view/0016.jpg",
+ "doggy all four - front view/48.jpg",
+ "doggy all four - front view/58.jpg",
+ "doggy all four - front view/64.jpg",
+ "doggy all four - front view/69.jpg",
+ "doggy all four - front view/77.jpg",
+ "doggy all four - front view/83.jpg",
+ "doggy all four - front view/97.jpg",
+ "doggy all four - front view/171.jpg",
+ "doggy all four - front view/197.jpg",
+ "doggy all four - front view/204.jpg",
+ "doggy all four - front view/221.jpg",
"doggy all four - front view/290.jpg",
- "doggy all four - front view/97.jpg"
+ "doggy all four - front view/596.jpg",
+ "doggy all four - front view/598.jpg"
],
"generator_hook": {
"module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
@@ -708,10 +718,10 @@
},
"pre_ab_notes": "Split from the prior doggy front grouping so all-fours front wording stays separate. Visual review confirmed this status from a full-folder doggy contact sheet.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 28 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "Front normal-camera all-fours framing is clean enough: face/forearms are readable and POV body foreground cues are not dominant."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual-pool contact sheet covering 25 unselected JPGs after the original 3 reviewed references.",
+ "decision": "expanded_pre_ab_candidate",
+ "notes": "Expanded from 3 to 15 reviewed front all-fours references. Side-drifting, seated, tight close, and vertical-crop outliers remain outside the selected subset."
}
},
{
@@ -744,7 +754,16 @@
"doggy - front view/5.jpg",
"doggy - front view/6.jpg",
"doggy - front view /0003.jpg",
+ "doggy - front view /253.jpg",
+ "doggy - front view /262.jpg",
+ "doggy - front view /349.jpg",
+ "doggy - front view /354.jpg",
"doggy - front view /41.jpg",
+ "doggy - front view /49.jpg",
+ "doggy - front view /505.jpg",
+ "doggy - front view /537.jpg",
+ "doggy - front view /541.jpg",
+ "doggy - front view /567.jpg",
"doggy - front view /627.jpg"
],
"generator_hook": {
@@ -755,12 +774,12 @@
],
"notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
},
- "pre_ab_notes": "Kept grouped because the two source folders are the same front-view label except for trailing whitespace. Visual review confirmed this status from a full-folder doggy contact sheet.",
+ "pre_ab_notes": "Kept grouped because the two source folders are the same front-view label except for trailing whitespace. Residual contact-sheet review expanded the duplicate trailing-space folder references while leaving the weak top/down close crop outside the selected subset.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 16 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "Duplicate front-view source folders are visually coherent as a generic doggy front normal-camera route."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual contact-sheet review of the 13-JPG trailing-space duplicate folder plus the original three references from the non-trailing duplicate.",
+ "decision": "expanded_pre_ab_candidate",
+ "notes": "Expanded the grouped generic front-view route from 6 to 15 reviewed references. The selected trailing-space references repeat a front-facing third-person doggy camera; the weak top/down close crop remains outside the route."
}
},
{
@@ -829,7 +848,19 @@
],
"reference_images": [
"cowgirl - side view/0003.jpg",
+ "cowgirl - side view/0004_2.jpg",
+ "cowgirl - side view/0005.jpg",
+ "cowgirl - side view/0007.jpg",
+ "cowgirl - side view/0009.jpg",
+ "cowgirl - side view/0011.jpg",
+ "cowgirl - side view/0015.jpg",
+ "cowgirl - side view/118.jpg",
+ "cowgirl - side view/195.jpg",
+ "cowgirl - side view/2.jpg",
+ "cowgirl - side view/200.jpg",
+ "cowgirl - side view/255.jpg",
"cowgirl - side view/280.jpg",
+ "cowgirl - side view/86.jpg",
"cowgirl - side view/86_2.jpg"
],
"generator_hook": {
@@ -841,12 +872,12 @@
],
"notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
},
- "pre_ab_notes": "Clean source folder with enough images for first A/B tests. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.",
+ "pre_ab_notes": "Residual-pool review expanded this side-profile cowgirl route to 15 reviewed references while keeping front-drifting, rear-drifting, and tight-crop examples outside the selected subset.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 34 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "Side-profile cowgirl framing is visually consistent enough for a normal-camera route; front/back offsets are natural variation inside the side-view folder."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual contact-sheet review of the 34-JPG source folder with 15 reviewed references selected.",
+ "decision": "expanded_reviewed_reference_set",
+ "notes": "Side-profile straddle geometry repeats across the folder. The selected references keep lateral normal-camera composition while excluding front-drifting, rear-drifting, and tight-crop examples."
}
},
{
@@ -1003,8 +1034,20 @@
],
"reference_images": [
"cowgirl - back view - 3-4 angle/0002.jpg",
- "cowgirl - back view - 3-4 angle/248.jpg",
- "cowgirl - back view - 3-4 angle/90.jpg"
+ "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "cowgirl - back view - 3-4 angle/0006.jpg",
+ "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "cowgirl - back view - 3-4 angle/16.jpg",
+ "cowgirl - back view - 3-4 angle/22.jpg",
+ "cowgirl - back view - 3-4 angle/41.jpg",
+ "cowgirl - back view - 3-4 angle/82.jpg",
+ "cowgirl - back view - 3-4 angle/90.jpg",
+ "cowgirl - back view - 3-4 angle/145.jpg",
+ "cowgirl - back view - 3-4 angle/160.jpg",
+ "cowgirl - back view - 3-4 angle/172.jpg",
+ "cowgirl - back view - 3-4 angle/225.jpg",
+ "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "cowgirl - back view - 3-4 angle/248.jpg"
],
"generator_hook": {
"module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
@@ -1015,12 +1058,13 @@
],
"notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
},
- "pre_ab_notes": "Large source folder; good candidate for direct comparison against front cowgirl wording. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.",
+ "pre_ab_notes": "Large source folder; good candidate for direct comparison against front cowgirl wording. Residual-pool review expanded the route to 15 selected references rather than splitting a near-duplicate route.",
"visual_review": {
"reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 129 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "Large folder is broad but mostly rear/back-offset cowgirl normal-camera material, with natural side and close-crop variation; no new clean subcategory was isolated in this pass."
+ "updated_at": "2026-07-02",
+ "scope": "Full-folder and residual contact-sheet review covering 129 JPGs across atlas_folders plus 15 selected references.",
+ "decision": "confirmed_pre_ab_candidate_with_expanded_references",
+ "notes": "Large folder is broad but mostly rear/back-offset cowgirl normal-camera material, with natural side and close-crop variation. Residual review kept one route and expanded selected references."
}
},
{
@@ -1153,6 +1197,226 @@
"notes": "Side-profile reverse-cowgirl framing is visually coherent and keeps the back-facing orientation readable from the side."
}
},
+ {
+ "key": "normal_reverse_cowgirl_mixed_camera_folder_pool",
+ "family": "reverse_cowgirl",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "reverse_cowgirl",
+ "canonical_geometry": "Large reverse-cowgirl source pool with normal-camera examples but no single locked camera view until contact-sheet review selects stable subsets.",
+ "prompt_cues": [
+ "reverse cowgirl normal-camera source pool",
+ "select a repeated camera family before cue drafting",
+ "use contact-sheet evidence before fixed-seed testing"
+ ],
+ "avoid_cues": [
+ "using the full mixed folder as one locked camera preset",
+ "POV reverse-cowgirl wording",
+ "inventing camera cues from the folder label alone"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/82.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "reverse cowgirl",
+ "mixed camera source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Added as the first large unused-pool review tranche. The full 240-image folder is a cue-expansion pool, not a prompt-ready route; split selected-reference subvariants only after contact-sheet evidence shows repeated non-POV camera geometry.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Paged contact-sheet review scaffold covering 240 JPGs across atlas_folders plus representative references.",
+ "decision": "added_as_large_unused_pool_review_tranche",
+ "notes": "Folder is now tracked for review; selected-reference subvariants should be added only from repeated camera/pose families identified in the contact sheet."
+ }
+ },
+ {
+ "key": "normal_reverse_cowgirl_front_view",
+ "family": "reverse_cowgirl",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_reverse_cowgirl_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated front-view references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "camera_view": "front_view",
+ "action_family": "reverse_cowgirl",
+ "canonical_geometry": "Reviewed reverse-cowgirl front-view normal-camera subset from the large mixed source pool: the woman is on top facing the camera, the contact plane reads frontally, and the reclined partner remains visible below her in third person.",
+ "prompt_cues": [
+ "reviewed reverse cowgirl front-view normal camera",
+ "woman on top faces the camera",
+ "front contact plane centered between her legs",
+ "reclined partner visible below her in third person"
+ ],
+ "avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "rear or back-view reverse-cowgirl wording",
+ "side-profile reverse-cowgirl wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/0004.jpg",
+ "reverse cowgirl/0005_4.jpg",
+ "reverse cowgirl/0014.jpg",
+ "reverse cowgirl/79.jpg",
+ "reverse cowgirl/82.jpg",
+ "reverse cowgirl/145.jpg",
+ "reverse cowgirl/260.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/319.jpg",
+ "reverse cowgirl/527.jpg",
+ "reverse cowgirl/608.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "reverse cowgirl",
+ "front view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated front-facing camera family found during paged contact-sheet review of the 240-image mixed reverse-cowgirl source folder. The source pool remains needs_samples for other camera families.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected front-view subset from paged contact sheets covering 240 JPGs in the mixed reverse-cowgirl source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Front-facing reverse-cowgirl framing repeats across the folder with stable woman-on-top orientation and visible reclined partner context."
+ }
+ },
+ {
+ "key": "normal_reverse_cowgirl_front_three_quarter",
+ "family": "reverse_cowgirl",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_reverse_cowgirl_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated front-offset references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "camera_view": "front_three_quarter",
+ "action_family": "reverse_cowgirl",
+ "canonical_geometry": "Reviewed reverse-cowgirl front three-quarter normal-camera subset from the large mixed source pool: the woman is on top turned partly toward the camera, the contact plane reads from a front-offset angle, and the reclined partner remains visible below or behind her in third person.",
+ "prompt_cues": [
+ "reviewed reverse cowgirl front three-quarter normal camera",
+ "woman on top turns partly toward the camera",
+ "front-offset contact plane remains readable",
+ "reclined partner visible below her from a three-quarter angle"
+ ],
+ "avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "pure front-view reverse-cowgirl wording",
+ "rear or side-profile reverse-cowgirl wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "reverse cowgirl/153.jpg",
+ "reverse cowgirl/153_2.jpg",
+ "reverse cowgirl/239_2.jpg",
+ "reverse cowgirl/239_3.jpg",
+ "reverse cowgirl/241.jpg",
+ "reverse cowgirl/241_2.jpg",
+ "reverse cowgirl/241_3.jpg",
+ "reverse cowgirl/257.jpg",
+ "reverse cowgirl/287.jpg",
+ "reverse cowgirl/323_2.jpg",
+ "reverse cowgirl/609.jpg",
+ "reverse cowgirl/609_2.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "reverse cowgirl",
+ "front three-quarter"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated front-offset camera family found during paged contact-sheet review of the 240-image mixed reverse-cowgirl source folder. It stays separate from the straight front-view subset and from the thin anal front-three-quarter source folders.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected front-three-quarter subset from paged contact sheets covering 240 JPGs in the mixed reverse-cowgirl source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Front-offset reverse-cowgirl framing repeats across the folder with stable woman-on-top orientation and visible reclined partner context."
+ }
+ },
+ {
+ "key": "normal_reverse_cowgirl_low_close_front_view",
+ "family": "reverse_cowgirl",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_reverse_cowgirl_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated low-close front-view references selected from the residual contact-sheet review."
+ },
+ "atlas_folders": [
+ "reverse cowgirl"
+ ],
+ "camera_view": "front_view",
+ "action_family": "reverse_cowgirl",
+ "canonical_geometry": "Reviewed reverse-cowgirl low-close front-view normal-camera subset from the large mixed source pool: the woman is on top facing the camera, the foreground contact plane dominates the lower frame, and the subject remains visible above it in third-person framing.",
+ "prompt_cues": [
+ "reviewed reverse cowgirl low-close front-view normal camera",
+ "woman on top faces the camera",
+ "foreground contact plane dominates the lower frame",
+ "subject remains visible above the foreground plane"
+ ],
+ "avoid_cues": [
+ "POV reverse-cowgirl wording",
+ "wider room-context front-view wording",
+ "front three-quarter reverse-cowgirl wording",
+ "rear or side-profile reverse-cowgirl wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0009.jpg",
+ "reverse cowgirl/0009_2.jpg",
+ "reverse cowgirl/0009_3.jpg",
+ "reverse cowgirl/0015.jpg",
+ "reverse cowgirl/0015_2.jpg",
+ "reverse cowgirl/0016_2.jpg",
+ "reverse cowgirl/170.jpg",
+ "reverse cowgirl/261.jpg",
+ "reverse cowgirl/332.jpg",
+ "reverse cowgirl/332_2.jpg",
+ "reverse cowgirl/551.jpg",
+ "reverse cowgirl/618.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "reverse cowgirl",
+ "front view",
+ "low close"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated low-close front-view camera family found during residual-pool contact-sheet review of the 240-image mixed reverse-cowgirl source folder. It stays separate from the wider front-view subset and from front-offset three-quarter framing.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected low-close front-view subset from residual contact sheets covering the unselected reverse-cowgirl images.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Low-close front reverse-cowgirl framing repeats across the residual folder with stable foreground body-plane dominance and non-POV third-person framing."
+ }
+ },
{
"key": "normal_reverse_cowgirl_anal_front_view",
"family": "reverse_cowgirl",
@@ -1270,8 +1534,20 @@
],
"reference_images": [
"reverse congress - front view/0012.jpg",
+ "reverse congress - front view/0012_2.jpg",
+ "reverse congress - front view/0013.jpg",
+ "reverse congress - front view/61.jpg",
+ "reverse congress - front view/105.jpg",
+ "reverse congress - front view/105_2.jpg",
+ "reverse congress - front view/122.jpg",
+ "reverse congress - front view/183.jpg",
+ "reverse congress - front view/189.jpg",
"reverse congress - front view/289.jpg",
- "reverse congress - front view/61.jpg"
+ "reverse congress - front view/289_2.jpg",
+ "reverse congress - front view/291.jpg",
+ "reverse congress - front view/542.jpg",
+ "reverse congress - front view/542_2.jpg",
+ "reverse congress - front view/563_2.jpg"
],
"generator_hook": {
"module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
@@ -1283,10 +1559,10 @@
},
"pre_ab_notes": "Visual review confirmed this as a front-facing position-specific pre-A/B candidate; keep wording front-facing rather than generic sitting.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 21 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "The folder is visually consistent enough for a front-facing reverse-congress route; crop and distance vary but the front geometry remains readable."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual-pool contact sheet covering 18 unselected JPGs after the original 3 reviewed references.",
+ "decision": "expanded_pre_ab_candidate",
+ "notes": "Expanded from 3 to 15 reviewed front-facing reverse-congress references. Tight low crops, side/bed drift, and seated-only outliers remain outside the selected subset."
}
},
{
@@ -1674,6 +1950,166 @@
"notes": "Front three-quarter anal missionary label is visually accurate, but the source remains thin."
}
},
+ {
+ "key": "normal_anal_random_mixed_camera_folder_pool",
+ "family": "anal",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "anal random"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "anal",
+ "canonical_geometry": "Large anal source pool with mixed normal-camera examples and no single locked camera view until contact-sheet review selects stable subsets.",
+ "prompt_cues": [
+ "anal normal-camera source pool",
+ "select a repeated camera family before cue drafting",
+ "use contact-sheet evidence before fixed-seed testing"
+ ],
+ "avoid_cues": [
+ "using the full mixed folder as one locked camera preset",
+ "POV anal wording",
+ "inventing camera cues from the folder label alone"
+ ],
+ "reference_images": [
+ "anal random/0001.jpg",
+ "anal random/266_2.jpg",
+ "anal random/94_5.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anal",
+ "mixed camera source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Added as a large unused-pool review tranche after reverse cowgirl. The full 99-image folder is a cue-expansion pool, not a prompt-ready route; split selected-reference subvariants only after contact-sheet evidence shows repeated non-POV camera geometry.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Paged contact-sheet review scaffold covering 99 JPGs across atlas_folders plus representative references.",
+ "decision": "added_as_large_unused_pool_review_tranche",
+ "notes": "Folder is now tracked for review; selected-reference subvariants should be added only from repeated camera/pose families identified in the contact sheet."
+ }
+ },
+ {
+ "key": "normal_anal_random_front_view",
+ "family": "anal",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_anal_random_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated front-view references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "anal random"
+ ],
+ "camera_view": "front_view",
+ "action_family": "anal",
+ "canonical_geometry": "Reviewed anal front-view normal-camera subset from the large mixed source pool: the main subject faces the camera, the contact plane reads frontally, and partner context remains visible in third person.",
+ "prompt_cues": [
+ "reviewed anal front-view normal camera",
+ "main subject faces the camera",
+ "front contact plane centered",
+ "partner context visible in third person"
+ ],
+ "avoid_cues": [
+ "POV anal wording",
+ "side-profile anal wording",
+ "rear-view anal wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "anal random/0005.jpg",
+ "anal random/0006.jpg",
+ "anal random/0015.jpg",
+ "anal random/160_3.jpg",
+ "anal random/188.jpg",
+ "anal random/347_3.jpg",
+ "anal random/347_10.jpg",
+ "anal random/347_11.jpg",
+ "anal random/366.jpg",
+ "anal random/366_3.jpg",
+ "anal random/366_4.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anal",
+ "front view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated front-view camera family found during paged contact-sheet review of the 99-image mixed anal-random source folder. Side, rear, standing, and overhead-like frames remain in the source pool.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected front-view subset from paged contact sheets covering 99 JPGs in the mixed anal-random source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Front-view anal framing repeats across the folder with stable third-person camera placement and readable contact plane."
+ }
+ },
+ {
+ "key": "normal_anal_random_back_side_offset_view",
+ "family": "anal",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_anal_random_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated rear/side-offset references selected from the residual contact-sheet review."
+ },
+ "atlas_folders": [
+ "anal random"
+ ],
+ "camera_view": "back_three_quarter",
+ "action_family": "anal",
+ "canonical_geometry": "Reviewed anal rear/side-offset normal-camera subset from the large mixed source pool: the main body turns partly away from the camera, the rear-side contact plane remains readable, and partner context stays visible in third person.",
+ "prompt_cues": [
+ "reviewed anal rear side-offset normal camera",
+ "main body turns partly away from the camera",
+ "rear-side contact plane remains readable",
+ "partner context visible in third person"
+ ],
+ "avoid_cues": [
+ "POV anal wording",
+ "straight front-view anal wording",
+ "standing anal wording",
+ "overhead camera wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "anal random/0003.jpg",
+ "anal random/0003_3.jpg",
+ "anal random/0010.jpg",
+ "anal random/0013.jpg",
+ "anal random/119.jpg",
+ "anal random/119_2.jpg",
+ "anal random/119_3.jpg",
+ "anal random/124_2.jpg",
+ "anal random/124_8.jpg",
+ "anal random/347_4.jpg",
+ "anal random/347_5.jpg",
+ "anal random/347_8.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anal",
+ "back three-quarter",
+ "side offset"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated rear/side-offset camera family found during residual contact-sheet review of the 99-image mixed anal-random source folder. Front-view, standing, overhead-like, and tight close-crop frames remain in the source pool.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected rear/side-offset subset from residual contact sheets covering the unselected anal-random images.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Rear/side-offset anal framing repeats across the residual folder with stable third-person camera placement and readable contact plane."
+ }
+ },
{
"key": "normal_missionary_front_three_quarter",
"family": "missionary",
@@ -1868,8 +2304,20 @@
],
"reference_images": [
"blowjob - laying - front view/0001.jpg",
+ "blowjob - laying - front view/0003.jpg",
+ "blowjob - laying - front view/0004.jpg",
+ "blowjob - laying - front view/0010.jpg",
+ "blowjob - laying - front view/0010_2.jpg",
+ "blowjob - laying - front view/0018.jpg",
+ "blowjob - laying - front view/48.jpg",
+ "blowjob - laying - front view/69.jpg",
+ "blowjob - laying - front view/91.jpg",
+ "blowjob - laying - front view/94.jpg",
+ "blowjob - laying - front view/122.jpg",
+ "blowjob - laying - front view/171.jpg",
+ "blowjob - laying - front view/184.jpg",
"blowjob - laying - front view/274.jpg",
- "blowjob - laying - front view/94.jpg"
+ "blowjob - laying - front view/512.jpg"
],
"generator_hook": {
"module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
@@ -1882,10 +2330,10 @@
},
"pre_ab_notes": "Visual review confirmed this as a pre-A/B candidate: crop distance varies, but the frontal laying oral-contact geometry is stable enough for testing.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 26 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "The folder is visually broad in crop distance, but it consistently supports a frontal laying oral-contact route without needing a split."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual-pool contact sheet covering 23 unselected JPGs after the original 3 reviewed references.",
+ "decision": "expanded_pre_ab_candidate",
+ "notes": "Expanded from 3 to 15 reviewed front-facing laying oral-contact references. Side-drifting, wide couch/bed, and weak close-crop examples remain outside the selected subset."
}
},
{
@@ -2239,7 +2687,7 @@
"mixing standing and laying cues in one A/B prompt"
],
"reference_images": [
- "ballsucking - standing/0014.jpg",
+ "ballsucking - standing/0017.jpg",
"ballsucking - standing/252.jpg",
"ballsucking - standing/624.jpg"
],
@@ -2261,6 +2709,105 @@
"notes": "The standing-partner context is consistent, but camera angle and crop vary too much for a preset route."
}
},
+ {
+ "key": "normal_ballsucking_standing_low_side_view",
+ "family": "ballsucking",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_ballsucking_standing_partner_mixed_camera_folder_pool",
+ "atlas_folders": [
+ "ballsucking - standing"
+ ],
+ "camera_view": "side_view",
+ "action_family": "ballsucking",
+ "canonical_geometry": "Selected standing-partner low side or near-side normal-camera view where the receiving partner stands, the performer stays low beside or in front of the standing body, and the contact plane remains readable in third-person framing.",
+ "prompt_cues": [
+ "standing-partner low side normal camera view",
+ "performer stays low beside the standing partner",
+ "standing partner remains visible above the contact plane",
+ "third-person side or near-side framing keeps the bodies readable"
+ ],
+ "avoid_cues": [
+ "POV oral wording",
+ "laying posture wording",
+ "water-close crop",
+ "using the full mixed folder as one preset"
+ ],
+ "reference_images": [
+ "ballsucking - standing/0014.jpg",
+ "ballsucking - standing/130.jpg",
+ "ballsucking - standing/137.jpg",
+ "ballsucking - standing/207.jpg",
+ "ballsucking - standing/222.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/333.jpg",
+ "ballsucking - standing/34.jpg",
+ "ballsucking - standing/540.jpg",
+ "ballsucking - standing/589.jpg",
+ "ballsucking - standing/624.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "ballsucking",
+ "standing partner",
+ "low side"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Promoted from contact-sheet review of the 12-image standing source pool. The water-close outlier remains outside this selected route.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected 11-image low side/near-side subset from contact-sheet review of the mixed ballsucking standing source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "The selected subset repeats a standing-partner, low-performer third-person composition with side or near-side camera geometry; the water-close crop remains outside the route."
+ }
+ },
+ {
+ "key": "normal_face_sitting_mixed_camera_folder_pool",
+ "family": "face_sitting",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "face sitting"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "face_sitting",
+ "canonical_geometry": "Face-sitting mixed-camera source pool: the folder has three front or near-front samples plus one rear/back-view outlier, so it preserves review evidence without defining one locked normal-camera route.",
+ "prompt_cues": [
+ "face-sitting mixed-camera source pool",
+ "front and rear examples stay separate during review",
+ "select a narrower camera subset before testing",
+ "keep both bodies readable in third-person framing"
+ ],
+ "avoid_cues": [
+ "using the full folder as a locked camera preset",
+ "POV face-sitting wording",
+ "mixing front and rear examples in one prompt",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "face sitting/0005.jpg",
+ "face sitting/0021.jpg",
+ "face sitting/354.jpg",
+ "face sitting/533.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "face sitting",
+ "mixed camera",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found a thin, mixed 4-image source pool. Keep as needs_samples; do not queue the full folder as a pre-A/B route until a narrower camera subset has enough matched samples.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 4 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "Three samples are front or near-front face-sitting references, while one is a rear/back-view outlier. The folder is too thin and camera-variable for a selected pre-A/B route."
+ }
+ },
{
"key": "normal_ballsucking_laying_close_reference_folder_pool",
"family": "ballsucking",
@@ -2350,6 +2897,60 @@
"notes": "Mostly useful front-close material, but the folder includes enough side/standing/foreground-heavy crops that it should remain needs_samples."
}
},
+ {
+ "key": "normal_boobjob_front_close_view",
+ "family": "boobjob",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_boobjob_front_close_mixed_camera_folder_pool",
+ "atlas_folders": [
+ "boobjob"
+ ],
+ "camera_view": "front_view",
+ "action_family": "boobjob",
+ "canonical_geometry": "Selected front-close boobjob normal-camera view where the performer faces camera or near-camera, upper body and face remain readable, and the contact action stays centered without becoming POV.",
+ "prompt_cues": [
+ "boobjob front-close normal camera view",
+ "front-facing upper body and face remain readable",
+ "breast-contact action stays centered in the frame",
+ "third-person close camera without POV wording"
+ ],
+ "avoid_cues": [
+ "POV foreground body cues",
+ "side-profile boobjob wording",
+ "standing-only framing",
+ "using the full mixed folder as one locked camera preset"
+ ],
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/0018_2.jpg",
+ "boobjob/141.jpg",
+ "boobjob/186.jpg",
+ "boobjob/218.jpg",
+ "boobjob/259.jpg",
+ "boobjob/327.jpg",
+ "boobjob/588.jpg",
+ "boobjob/592.jpg",
+ "boobjob/598.jpg",
+ "boobjob/615.jpg",
+ "boobjob/618.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "boobjob",
+ "front close",
+ "selected reference subset"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Promoted from residual contact-sheet review of the 19-image boobjob source pool. Side, standing, foreground-heavy, and downward/crop-drifting examples remain outside this selected route.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected 12-image front-close subset from residual contact-sheet review of the mixed boobjob source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "The selected subset repeats a front-close third-person camera where face or upper body remains readable and the contact action stays centered."
+ }
+ },
{
"key": "normal_breast_contact_front_view",
"family": "breast_contact",
@@ -2373,8 +2974,20 @@
],
"reference_images": [
"breast - touching - front view/0006.jpg",
+ "breast - touching - front view/0006_2.jpg",
+ "breast - touching - front view/12.jpg",
+ "breast - touching - front view/0014.jpg",
+ "breast - touching - front view/0015.jpg",
+ "breast - touching - front view/16.jpg",
+ "breast - touching - front view/56.jpg",
+ "breast - touching - front view/72.jpg",
+ "breast - touching - front view/183.jpg",
+ "breast - touching - front view/220.jpg",
+ "breast - touching - front view/246.jpg",
"breast - touching - front view/248.jpg",
- "breast - touching - front view/72.jpg"
+ "breast - touching - front view/281.jpg",
+ "breast - touching - front view/348.jpg",
+ "breast - touching - front view/361.jpg"
],
"generator_hook": {
"module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
@@ -2386,10 +2999,10 @@
},
"pre_ab_notes": "Visual review confirmed this as a front-view pre-A/B candidate; pose and crop vary but the front body-contact plane is stable.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 25 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "The folder is mostly frontal upper-body/contact composition with posture variation but stable front camera intent."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual-pool contact sheet covering 22 unselected JPGs after the original 3 reviewed references.",
+ "decision": "expanded_pre_ab_candidate",
+ "notes": "Expanded from 3 to 15 reviewed front breast-contact references. Side-drifting, costume/standing outliers, and weak-contact crops remain outside the selected subset."
}
},
{
@@ -2462,7 +3075,19 @@
],
"reference_images": [
"breast sucking - side view/0003.jpg",
+ "breast sucking - side view/0005.jpg",
+ "breast sucking - side view/0007.jpg",
+ "breast sucking - side view/0009.jpg",
+ "breast sucking - side view/0010_2.jpg",
+ "breast sucking - side view/182.jpg",
+ "breast sucking - side view/186.jpg",
+ "breast sucking - side view/218.jpg",
+ "breast sucking - side view/234.jpg",
+ "breast sucking - side view/244.jpg",
"breast sucking - side view/257.jpg",
+ "breast sucking - side view/267.jpg",
+ "breast sucking - side view/269.jpg",
+ "breast sucking - side view/356.jpg",
"breast sucking - side view/99.jpg"
],
"generator_hook": {
@@ -2474,12 +3099,300 @@
],
"notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
},
- "pre_ab_notes": "Visual review confirmed this as a side/near-side pre-A/B candidate; keep wording about lateral contact rather than strict profile-only framing.",
+ "pre_ab_notes": "Residual-pool review expanded this side/near-side route to 15 reviewed references; keep wording about lateral contact rather than strict profile-only framing.",
"visual_review": {
- "reviewed_at": "2026-06-29",
- "scope": "Full-folder contact sheet covering 43 JPGs across atlas_folders plus representative references.",
- "decision": "confirmed_pre_ab_candidate",
- "notes": "The source folder is broad in pose and distance, but most samples preserve a side or near-side contact line and remain useful for the route."
+ "reviewed_at": "2026-07-02",
+ "scope": "Residual contact-sheet review of the 43-JPG source folder with 15 reviewed references selected.",
+ "decision": "expanded_reviewed_reference_set",
+ "notes": "Side/near-side mouth-contact framing repeats across standing and seated contexts. The selected references keep lateral contact readable while excluding front-only, hand-touch-only, and weak-contact examples."
+ }
+ },
+ {
+ "key": "normal_sixty_nine_mixed_camera_folder_pool",
+ "family": "oral_other",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "69"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "canonical_geometry": "Sixty-nine mixed-camera source pool: the folder contains useful mutual oral-contact examples, but mixes close/front, side/downward, upright seated, and wider room-context views, so it is not one locked normal-camera route.",
+ "prompt_cues": [
+ "sixty-nine mixed-camera source pool",
+ "mutual oral-contact examples with third-person framing",
+ "select reviewed camera subset before testing",
+ "do not infer a single azimuth"
+ ],
+ "avoid_cues": [
+ "using the full folder as a locked camera preset",
+ "POV viewer-mouth framing",
+ "assuming all samples are close front views",
+ "using without crop review"
+ ],
+ "reference_images": [
+ "69/0002.jpg",
+ "69/196.jpg",
+ "69/624.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "sixty-nine",
+ "mutual oral",
+ "mixed camera"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Visual review confirmed useful mutual oral-contact material, but the full 10-image source folder mixes close/front, side/downward, upright seated, and wider room-context framing. Keep as a folder_pool and use the selected front-close split for prompt testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 10 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The action is coherent, but the camera and posture drift enough that the whole folder should stay needs_samples."
+ }
+ },
+ {
+ "key": "normal_sixty_nine_front_close_view",
+ "family": "oral_other",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_sixty_nine_mixed_camera_folder_pool",
+ "atlas_folders": [
+ "69"
+ ],
+ "camera_view": "front_view",
+ "action_family": "oral_other",
+ "canonical_geometry": "Selected sixty-nine front-close normal-camera view where the upper subject faces camera, opposed oral-contact pose stays centered, and both bodies remain readable in close third-person framing.",
+ "prompt_cues": [
+ "sixty-nine front-close normal camera view",
+ "upper subject faces the camera",
+ "opposed oral-contact pose stays centered",
+ "third-person close framing keeps both bodies readable"
+ ],
+ "avoid_cues": [
+ "POV viewer-mouth framing",
+ "wide room-context layout",
+ "upright seated straddle framing",
+ "side-downward camera wording",
+ "using the full mixed folder as one preset"
+ ],
+ "reference_images": [
+ "69/0002.jpg",
+ "69/0008.jpg",
+ "69/0016.jpg",
+ "69/19.jpg",
+ "69/166.jpg",
+ "69/292.jpg",
+ "69/624.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "sixty-nine",
+ "front close",
+ "selected reference subset"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Promoted from contact-sheet review of the 10-image 69 source pool. Side/downward, upright seated, and wider room-context outliers remain outside this selected route.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected 7-image front-close subset from contact-sheet review of the mixed 69 source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "The selected subset repeats a close third-person camera where the upper subject faces camera and the opposed oral-contact pose remains centered."
+ }
+ },
+ {
+ "key": "normal_fingering_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "fingering"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "manual_or_toy",
+ "canonical_geometry": "Fingering mixed-camera source pool: the folder contains useful manual-contact examples, but mixes reclined front views with upright, standing, side, and oral-adjacent frames, so it is not one locked normal-camera route.",
+ "prompt_cues": [
+ "fingering mixed-camera source pool",
+ "manual contact examples with third-person framing",
+ "select reviewed camera subset before testing",
+ "do not infer a single azimuth"
+ ],
+ "avoid_cues": [
+ "using the full folder as a locked camera preset",
+ "POV manual-contact wording",
+ "assuming all samples are reclined front views",
+ "using without crop review"
+ ],
+ "reference_images": [
+ "fingering/0001.jpg",
+ "fingering/195.jpg",
+ "fingering/603.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "fingering",
+ "manual contact",
+ "mixed camera"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Visual review confirmed useful manual-contact material, but the full 15-image source folder mixes reclined front, upright, standing, side, and oral-adjacent frames. Keep as a folder_pool and use the selected reclined front-view split for prompt testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 15 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The action is useful, but the camera and posture are mixed enough that the whole folder should stay needs_samples."
+ }
+ },
+ {
+ "key": "normal_fingering_reclined_front_view",
+ "family": "manual_or_toy",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_fingering_mixed_camera_folder_pool",
+ "atlas_folders": [
+ "fingering"
+ ],
+ "camera_view": "front_view",
+ "action_family": "manual_or_toy",
+ "canonical_geometry": "Selected reclined manual-contact front normal-camera view where the subject is reclined, faces the camera, the open-thigh contact plane stays centered, and face or upper body remains readable in third-person framing.",
+ "prompt_cues": [
+ "manual-contact reclined front normal camera view",
+ "reclined subject faces the camera",
+ "open-thigh contact plane centered in frame",
+ "face and upper body remain readable behind the contact plane"
+ ],
+ "avoid_cues": [
+ "POV foreground-hand framing",
+ "upright chair-only framing",
+ "side-profile manual-contact wording",
+ "oral-contact primary-action wording",
+ "using the full mixed folder as one preset"
+ ],
+ "reference_images": [
+ "fingering/0004.jpg",
+ "fingering/0006.jpg",
+ "fingering/0013.jpg",
+ "fingering/0015.jpg",
+ "fingering/39.jpg",
+ "fingering/50.jpg",
+ "fingering/132.jpg",
+ "fingering/133.jpg",
+ "fingering/279.jpg",
+ "fingering/603.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "fingering",
+ "reclined front",
+ "selected reference subset"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Promoted from contact-sheet review of the 15-image fingering source pool. Upright chair, standing, side, and stronger oral-adjacent outliers remain outside this selected route.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected 10-image reclined front-view subset from contact-sheet review of the mixed fingering source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "The selected subset repeats a camera-facing reclined/open-thigh manual-contact composition with enough face or upper-body context for prompt cue drafting."
+ }
+ },
+ {
+ "key": "normal_wand_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "wand"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "manual_or_toy",
+ "canonical_geometry": "Wand toy-contact mixed-camera source pool: the folder contains useful front-close tool-contact examples, but includes side, portrait-close, and wider posture variation, so it is not one locked normal-camera route.",
+ "prompt_cues": [
+ "wand toy-contact mixed-camera source pool",
+ "tool-contact examples with third-person framing",
+ "select reviewed camera subset before testing",
+ "do not infer a single azimuth"
+ ],
+ "avoid_cues": [
+ "using the full folder as a locked camera preset",
+ "POV foreground-tool wording",
+ "assuming all samples are front-close views",
+ "using without crop review"
+ ],
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/508.jpg",
+ "wand/75.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "wand",
+ "toy contact",
+ "mixed camera"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Visual review confirmed useful wand/contact material, but the full 9-image source folder mixes front-close, side, portrait-close, and wider posture framing. Keep as a folder_pool and use the selected front-close split for prompt testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 9 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The action reference is useful, but the camera and crop vary enough that the full folder should stay needs_samples."
+ }
+ },
+ {
+ "key": "normal_wand_front_close_view",
+ "family": "manual_or_toy",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_wand_mixed_camera_folder_pool",
+ "atlas_folders": [
+ "wand"
+ ],
+ "camera_view": "front_view",
+ "action_family": "manual_or_toy",
+ "canonical_geometry": "Selected wand front-close normal-camera view where the subject faces camera or near-camera, the open-thigh tool-contact plane is centered, and the wand remains readable as one continuous object in third-person framing.",
+ "prompt_cues": [
+ "wand front-close normal camera view",
+ "subject faces camera or near camera",
+ "open-thigh tool-contact plane centered in frame",
+ "single continuous wand remains readable"
+ ],
+ "avoid_cues": [
+ "POV foreground-tool wording",
+ "side portrait-only crop",
+ "wide posture-variable framing",
+ "split-device wording",
+ "using the full mixed folder as one preset"
+ ],
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/0015.jpg",
+ "wand/217.jpg",
+ "wand/532.jpg",
+ "wand/561.jpg",
+ "wand/611.jpg",
+ "wand/75.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "wand",
+ "front close",
+ "selected reference subset"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Promoted from contact-sheet review of the 9-image wand source pool. Side, portrait-close, and wider posture outliers remain outside this selected route.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected 7-image front-close subset from contact-sheet review of the mixed wand source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "The selected subset repeats a front-close third-person camera where the contact plane is centered and the wand remains readable as one object."
}
},
{
@@ -3006,6 +3919,832 @@
"notes": "The front three-quarter label is plausible, but the folder has only two samples and remains too thin for A/B."
}
},
+ {
+ "key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "family": "oral_other",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "pussy licking - backv iew"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "canonical_geometry": "Thin oral-contact source pool from the mislabeled back-view folder: the reviewed samples show high/front and high-oblique third-person framing rather than one stable back-view normal-camera route.",
+ "prompt_cues": [
+ "high-front oral-contact source pool",
+ "reviewed samples use elevated third-person framing",
+ "select a narrower camera subset before testing",
+ "keep receiving partner and performer both readable"
+ ],
+ "avoid_cues": [
+ "using the folder label as a locked back-view preset",
+ "POV oral wording",
+ "mixing high-front and high-oblique samples in one prompt",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "pussy licking - backv iew/220.jpg",
+ "pussy licking - backv iew/567.jpg",
+ "pussy licking - backv iew/614.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "oral contact",
+ "high front",
+ "mixed camera"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found only three samples, all closer to high-front or high-oblique oral-contact framing than a stable back-view route. Keep as needs_samples and do not queue the folder as a pre-A/B preset.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 3 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The folder label says back view, but the reviewed images read as elevated front or high-oblique third-person references. The set is too thin and label-variable for a selected pre-A/B route."
+ }
+ },
+ {
+ "key": "normal_removing_pants_mixed_camera_folder_pool",
+ "family": "display",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "removing pants"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "display",
+ "canonical_geometry": "Removing-pants action source pool: three near-duplicate close references show a standing clothing-removal setup with strong foreground crop, so the folder is review evidence rather than a stable normal-camera route.",
+ "prompt_cues": [
+ "removing-pants action source pool",
+ "standing clothing-removal setup",
+ "select a wider non-POV crop before testing",
+ "keep face and body context readable"
+ ],
+ "avoid_cues": [
+ "using the close foreground crop as a locked camera preset",
+ "POV clothing-pull wording",
+ "cropping away body context",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "removing pants/0005.jpg",
+ "removing pants/0006.jpg",
+ "removing pants/0016.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "removing pants",
+ "display",
+ "mixed camera"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found three near-duplicate close action references with strong foreground crop. Keep as needs_samples and do not queue the folder as a pre-A/B camera preset until more matched, wider non-POV samples exist.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 3 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The folder has a coherent action setup, but the three samples are too close, near-duplicate, and foreground-heavy for a selected normal-camera route."
+ }
+ },
+ {
+ "key": "normal_rimjob_mixed_camera_folder_pool",
+ "family": "oral_other",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "rimjob"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "canonical_geometry": "Rimjob mixed-camera source pool: three reviewed references include close side/back oral-contact framing plus a wider kneeling context, so the folder is useful evidence but not a locked camera route.",
+ "prompt_cues": [
+ "rimjob mixed-camera source pool",
+ "select side or back sample before testing",
+ "performer and receiving partner both readable",
+ "third-person framing only"
+ ],
+ "avoid_cues": [
+ "using the full folder as a locked camera preset",
+ "POV oral wording",
+ "assuming one side or back geometry",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "rimjob/0003.jpg",
+ "rimjob/0010.jpg",
+ "rimjob/0018.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "rimjob",
+ "mixed camera",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found only three mixed close/wide references. Keep as needs_samples and do not queue the folder as a pre-A/B camera preset.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 3 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The folder has useful third-person contact evidence, but the samples mix close side/back and wider kneeling context and remain too thin for a selected route."
+ }
+ },
+ {
+ "key": "normal_footjob_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "footjob"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "manual_or_toy",
+ "canonical_geometry": "Foot-contact mixed-camera source pool: two reviewed references share the action family but vary between seated front context and tighter lower-body crop, so the folder is too thin for a camera route.",
+ "prompt_cues": [
+ "foot-contact mixed-camera source pool",
+ "select seated front or close crop before testing",
+ "keep body context readable",
+ "third-person framing only"
+ ],
+ "avoid_cues": [
+ "using the full folder as a locked camera preset",
+ "POV foot-contact wording",
+ "mixing seated context and close crop in one prompt",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "footjob/265.jpg",
+ "footjob/265_2.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "footjob",
+ "mixed camera",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found two related but camera-variable references. Keep as needs_samples until more matched samples define a route.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The two samples are useful action evidence but too thin and crop-variable for a selected pre-A/B route."
+ }
+ },
+ {
+ "key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "family": "reverse_cowgirl",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "reverse cowgirl - leg up"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "reverse_cowgirl",
+ "canonical_geometry": "Reverse-cowgirl leg-up source pool: two references preserve the posture cue, but the sample count and camera/crop variation are too thin for a locked normal-camera route.",
+ "prompt_cues": [
+ "reverse-cowgirl leg-up source pool",
+ "leg-up posture evidence",
+ "select exact camera sample before testing",
+ "keep full pose context readable"
+ ],
+ "avoid_cues": [
+ "using the folder as a locked camera preset",
+ "POV reverse-cowgirl wording",
+ "mixing with generic reverse-cowgirl prompt routes",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "reverse cowgirl - leg up/266.jpg",
+ "reverse cowgirl - leg up/267.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "reverse cowgirl",
+ "leg up",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review preserved this as a two-sample posture source pool. Do not promote until a larger matched camera subset exists.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The leg-up posture cue is useful, but two samples are too thin for a selected normal-camera route."
+ }
+ },
+ {
+ "key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "family": "reverse_cowgirl",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "reverse cowgirl -pretzel"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "reverse_cowgirl",
+ "canonical_geometry": "Reverse-cowgirl pretzel source pool: two references preserve a compact pretzel-like posture cue, but the folder is too thin and posture-specific for a pre-A/B camera route.",
+ "prompt_cues": [
+ "reverse-cowgirl pretzel source pool",
+ "compact folded-leg posture evidence",
+ "select exact camera sample before testing",
+ "keep pose ownership readable"
+ ],
+ "avoid_cues": [
+ "using the folder as a locked camera preset",
+ "POV reverse-cowgirl wording",
+ "mixing pretzel posture with generic reverse-cowgirl cues",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "reverse cowgirl -pretzel/0007.jpg",
+ "reverse cowgirl -pretzel/617.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "reverse cowgirl",
+ "pretzel",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review preserved this as a two-sample posture source pool. Do not promote until a larger matched camera subset exists.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.",
+ "decision": "added_mixed_folder_pool",
+ "notes": "The pretzel-like posture cue is useful, but two samples are too thin for a selected normal-camera route."
+ }
+ },
+ {
+ "key": "normal_fist_mixed_camera_folder_pool",
+ "family": "manual_or_toy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "fist"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "manual_or_toy",
+ "canonical_geometry": "Single-reference manual-contact source pool: the folder has one reviewed sample, so it is coverage evidence only and not a normal-camera route.",
+ "prompt_cues": [
+ "single-reference manual-contact source pool",
+ "preserve as review evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using a single image as a locked camera preset",
+ "POV manual-contact wording",
+ "testing before adding more matched samples",
+ "assuming a stable camera family"
+ ],
+ "reference_images": [
+ "fist/337.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "fist",
+ "manual contact",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found only one reference. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route; keep only as review evidence."
+ }
+ },
+ {
+ "key": "normal_anal_cowgirl_single_reference_pool",
+ "family": "cowgirl",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "anal cowgirl"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "cowgirl",
+ "canonical_geometry": "Single-reference anal cowgirl source pool: one reviewed third-person sample preserves the action cue but cannot define a stable normal-camera route.",
+ "prompt_cues": [
+ "single-reference anal cowgirl source pool",
+ "preserve as review evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked camera preset",
+ "POV cowgirl wording",
+ "assuming a stable camera family",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "anal cowgirl/49.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anal cowgirl",
+ "single reference",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route."
+ }
+ },
+ {
+ "key": "normal_anal_doggy_side_view_single_reference_pool",
+ "family": "doggy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "anal doggy - side view"
+ ],
+ "camera_view": "side_view",
+ "action_family": "doggy",
+ "canonical_geometry": "Single-reference anal doggy side-view source pool: one reviewed side-view sample preserves the label but remains too thin for a prompt-ready route.",
+ "prompt_cues": [
+ "single-reference anal doggy side-view source pool",
+ "preserve side-view evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked side-view preset",
+ "POV doggy wording",
+ "assuming route stability from the folder label",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "anal doggy - side view/16.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anal doggy",
+ "side view",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review confirmed one side-view sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "The label is plausible, but one image is not enough for a stable route."
+ }
+ },
+ {
+ "key": "normal_anal_laying_back_three_quarter_single_reference_pool",
+ "family": "doggy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "anal fuck from behind laying - back view - 3-4 angle"
+ ],
+ "camera_view": "back_three_quarter",
+ "action_family": "doggy",
+ "canonical_geometry": "Single-reference laying rear three-quarter anal source pool: one reviewed sample preserves the back three-quarter cue but remains coverage only.",
+ "prompt_cues": [
+ "single-reference laying rear three-quarter source pool",
+ "preserve back three-quarter evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked back three-quarter preset",
+ "POV wording",
+ "mixing with generic doggy routes without review",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "anal fuck from behind laying - back view - 3-4 angle/14.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anal laying",
+ "back three-quarter",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one rear three-quarter sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single back three-quarter sample cannot define a stable normal-camera route."
+ }
+ },
+ {
+ "key": "normal_anal_reverse_congress_single_reference_pool",
+ "family": "reverse_congress",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "anal reverse congress"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "reverse_congress",
+ "canonical_geometry": "Single-reference anal reverse-congress source pool: one reviewed sample preserves the posture/action cue but cannot define a selected normal-camera route.",
+ "prompt_cues": [
+ "single-reference anal reverse-congress source pool",
+ "preserve posture evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked camera preset",
+ "POV reverse-congress wording",
+ "assuming route stability",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "anal reverse congress/160.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anal reverse congress",
+ "single reference",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route."
+ }
+ },
+ {
+ "key": "normal_anus_licking_single_reference_pool",
+ "family": "oral_other",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "anus lickiing"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "canonical_geometry": "Single-reference anal oral-contact source pool: one reviewed sample preserves the action cue but remains coverage only.",
+ "prompt_cues": [
+ "single-reference anal oral-contact source pool",
+ "preserve oral-contact evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked camera preset",
+ "POV oral wording",
+ "assuming stable camera geometry",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "anus lickiing/0004.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "anus licking",
+ "single reference",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route."
+ }
+ },
+ {
+ "key": "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ "family": "blowjob",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "blowjob laying - back view - 3-4 angle"
+ ],
+ "camera_view": "back_three_quarter",
+ "action_family": "blowjob",
+ "canonical_geometry": "Single-reference laying oral-contact back three-quarter source pool: one reviewed sample preserves the rear-offset cue but remains too thin for a prompt-ready route.",
+ "prompt_cues": [
+ "single-reference laying back three-quarter oral source pool",
+ "preserve rear-offset evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked back three-quarter preset",
+ "POV oral wording",
+ "mixing with front oral routes without review",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "blowjob laying - back view - 3-4 angle/14.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "blowjob laying",
+ "back three-quarter",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one rear-offset sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route."
+ }
+ },
+ {
+ "key": "normal_doggy_press_back_side_single_reference_pool",
+ "family": "doggy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "doggy press - back side"
+ ],
+ "camera_view": "back_view",
+ "action_family": "doggy",
+ "canonical_geometry": "Single-reference doggy-press back-side source pool: one reviewed rear/back sample preserves the posture cue but remains coverage only.",
+ "prompt_cues": [
+ "single-reference doggy-press back-side source pool",
+ "preserve rear posture evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked back-view preset",
+ "POV doggy wording",
+ "assuming stable posture family",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "doggy press - back side/0011.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "doggy press",
+ "back side",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one rear/back sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route."
+ }
+ },
+ {
+ "key": "normal_face_sitting_front_view_single_reference_pool",
+ "family": "face_sitting",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "face sitting - front view"
+ ],
+ "camera_view": "front_view",
+ "action_family": "face_sitting",
+ "canonical_geometry": "Single-reference face-sitting front-view source pool: one reviewed front sample preserves the label but remains too thin for a selected route.",
+ "prompt_cues": [
+ "single-reference face-sitting front-view source pool",
+ "preserve front-view evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked front-view preset",
+ "POV face-sitting wording",
+ "mixing with broader face-sitting pool without review",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "face sitting - front view/56.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "face sitting",
+ "front view",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one front-view sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "The label is plausible, but one image is not enough for a stable route."
+ }
+ },
+ {
+ "key": "normal_handjob_standing_low_angle_single_reference_pool",
+ "family": "manual_or_toy",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "handjob - standing -low angle"
+ ],
+ "camera_view": "low_angle",
+ "action_family": "manual_or_toy",
+ "canonical_geometry": "Single-reference standing manual-contact low-angle source pool: one reviewed low-angle sample preserves the label but remains coverage only.",
+ "prompt_cues": [
+ "single-reference standing low-angle manual-contact source pool",
+ "preserve low-angle evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked low-angle preset",
+ "POV manual-contact wording",
+ "assuming stable camera geometry",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "handjob - standing -low angle/552.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "handjob",
+ "standing low angle",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one low-angle sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "The low-angle label is plausible, but one image is not enough for a stable route."
+ }
+ },
+ {
+ "key": "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ "family": "oral_other",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "pussy licking leg up - back view - 3-4 angle"
+ ],
+ "camera_view": "back_three_quarter",
+ "action_family": "oral_other",
+ "canonical_geometry": "Single-reference leg-up oral-contact back three-quarter source pool: one reviewed sample preserves the label but remains coverage only.",
+ "prompt_cues": [
+ "single-reference leg-up back three-quarter oral source pool",
+ "preserve rear-offset posture evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked back three-quarter preset",
+ "POV oral wording",
+ "assuming stable route geometry",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "pussy licking leg up - back view - 3-4 angle/0009.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "pussy licking",
+ "leg up back three-quarter",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one rear-offset leg-up sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "The label is plausible, but one image is not enough for a stable route."
+ }
+ },
+ {
+ "key": "normal_pussy_licking_standing_woman_single_reference_pool",
+ "family": "oral_other",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "pussy licking standing woman"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "canonical_geometry": "Single-reference standing-woman oral-contact source pool: one reviewed sample preserves the posture cue but remains coverage only.",
+ "prompt_cues": [
+ "single-reference standing-woman oral-contact source pool",
+ "preserve posture evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked camera preset",
+ "POV oral wording",
+ "assuming stable standing route",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "pussy licking standing woman/13.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "pussy licking",
+ "standing woman",
+ "single reference"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route."
+ }
+ },
+ {
+ "key": "normal_under_desk_single_reference_pool",
+ "family": "oral_other",
+ "status": "needs_samples",
+ "atlas_folders": [
+ "under desk"
+ ],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "oral_other",
+ "canonical_geometry": "Single-reference under-desk oral-contact source pool: one reviewed sample preserves the under-desk context cue but remains coverage only.",
+ "prompt_cues": [
+ "single-reference under-desk source pool",
+ "preserve under-desk context evidence",
+ "add matched samples before testing",
+ "keep third-person framing requirement"
+ ],
+ "avoid_cues": [
+ "using one image as a locked camera preset",
+ "POV under-desk wording",
+ "assuming stable camera geometry",
+ "testing before adding more matched samples"
+ ],
+ "reference_images": [
+ "under desk/347.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "under desk",
+ "single reference",
+ "source pool"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Contact-sheet review found one contextual sample. Keep as needs_samples coverage and do not queue for pre-A/B testing.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.",
+ "decision": "added_single_reference_pool",
+ "notes": "A single image cannot define a stable normal-camera route."
+ }
+ },
{
"key": "normal_display_rear_body_view_folder_pool",
"family": "display",
@@ -3115,6 +4854,66 @@
},
"pre_ab_notes": "Created from reviewed rear/back-facing references inside a broad rear-display source folder; use as the precise rear body-display route."
},
+ {
+ "key": "normal_display_rear_body_standing_back_view",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_rear_body_view_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains broad; this variant is defined by repeated upright standing back-view references selected from the residual contact-sheet review."
+ },
+ "atlas_folders": [
+ "woman solo showing her hass - back view"
+ ],
+ "camera_view": "back_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed standing solo rear body-display normal-camera subset: the subject stands upright with back or rear three-quarter side toward camera, rear body remains the primary composition, and the full standing posture stays readable in third-person framing.",
+ "prompt_cues": [
+ "reviewed standing rear body-display normal camera view",
+ "subject stands upright with back toward camera",
+ "rear body closest to camera",
+ "full standing solo display posture"
+ ],
+ "avoid_cues": [
+ "POV body inspection wording",
+ "seated rear-display wording",
+ "kneeling rear-display wording",
+ "front-facing portrait wording",
+ "partner-contact wording"
+ ],
+ "reference_images": [
+ "woman solo showing her hass - back view/0002.jpg",
+ "woman solo showing her hass - back view/0006.jpg",
+ "woman solo showing her hass - back view/0006_3.jpg",
+ "woman solo showing her hass - back view/0007_2.jpg",
+ "woman solo showing her hass - back view/173.jpg",
+ "woman solo showing her hass - back view/197.jpg",
+ "woman solo showing her hass - back view/230.jpg",
+ "woman solo showing her hass - back view/235.jpg",
+ "woman solo showing her hass - back view/287.jpg",
+ "woman solo showing her hass - back view/293.jpg",
+ "woman solo showing her hass - back view/300.jpg",
+ "woman solo showing her hass - back view/321.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "display",
+ "rear body",
+ "standing back view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated upright standing rear-body display family found during residual contact-sheet review of the broad 99-image source folder. It stays separate from the broader rear-body route and from seated, kneeling, side-leaning, and close-crop examples.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected standing back-view subset from residual contact sheets covering the unselected rear-body display images.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Standing rear-body display repeats across the residual folder with stable upright posture and non-POV third-person framing."
+ }
+ },
{
"key": "normal_display_rear_exposed_body_folder_pool",
"family": "display",
@@ -3140,6 +4939,7 @@
],
"reference_images": [
"woman ass exposed/40.jpg",
+ "woman ass exposed/49.jpg",
"woman ass exposed/52.jpg",
"woman ass exposed/58.jpg"
],
@@ -3151,7 +4951,7 @@
],
"notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
},
- "pre_ab_notes": "Visual review confirmed this as a thin mixed rear-display pool; keep needs_samples.",
+ "pre_ab_notes": "Visual review confirmed this as a thin mixed rear-display pool; keep needs_samples. The reviewed source-pool references now include all four folder images.",
"folder_pool": true,
"visual_review": {
"reviewed_at": "2026-06-29",
@@ -3249,6 +5049,182 @@
"notes": "The folder is mostly front/open display material but too mixed in crop and camera height for a locked route."
}
},
+ {
+ "key": "normal_display_front_open_leg_front_view",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_front_open_leg_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated wider front-view references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "camera_view": "front_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed front open-leg display normal-camera subset from the mixed source pool: the subject faces the camera, the open-leg display reads frontally, and enough body or room context remains visible to separate it from tight low-close crops.",
+ "prompt_cues": [
+ "reviewed open-leg display front-view normal camera",
+ "subject faces the camera",
+ "front display pose readable",
+ "body and room context remain visible"
+ ],
+ "avoid_cues": [
+ "POV spread wording",
+ "tight low-close crop wording",
+ "side-offset display wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "pussy spread/0002_3.jpg",
+ "pussy spread/0003_4.jpg",
+ "pussy spread/0012.jpg",
+ "pussy spread/0015.jpg",
+ "pussy spread/0017.jpg",
+ "pussy spread/80.jpg",
+ "pussy spread/130.jpg",
+ "pussy spread/153.jpg",
+ "pussy spread/296.jpg",
+ "pussy spread/297.jpg",
+ "pussy spread/328.jpg",
+ "pussy spread/367.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "open-leg display",
+ "front view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated wider front-view display family found during paged contact-sheet review of the 100-image mixed source folder. Tight low-close crops and side-offset frames remain separate.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected front-view subset from paged contact sheets covering 100 JPGs in the mixed source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Camera-facing front display repeats across the folder with enough body and room context to support a first wording test."
+ }
+ },
+ {
+ "key": "normal_display_front_open_leg_low_close",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_front_open_leg_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated low-close front-view references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "camera_view": "front_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed low-close front open-leg display normal-camera subset from the mixed source pool: the camera is front-facing and close enough that the foreground body plane dominates while the subject remains visible in normal third-person framing.",
+ "prompt_cues": [
+ "reviewed low-close open-leg display front-view normal camera",
+ "front-facing close composition",
+ "foreground body plane dominates the frame",
+ "subject remains visible above the foreground plane"
+ ],
+ "avoid_cues": [
+ "POV spread wording",
+ "wider room-context front-view wording",
+ "side-offset display wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "pussy spread/1.jpg",
+ "pussy spread/1_2.jpg",
+ "pussy spread/0003.jpg",
+ "pussy spread/0003_2.jpg",
+ "pussy spread/0003_3.jpg",
+ "pussy spread/0010_2.jpg",
+ "pussy spread/0016.jpg",
+ "pussy spread/0016_2.jpg",
+ "pussy spread/41.jpg",
+ "pussy spread/201.jpg",
+ "pussy spread/217_2.jpg",
+ "pussy spread/223.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "open-leg display",
+ "front view",
+ "low close"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated low-close front-view display family found during paged contact-sheet review of the 100-image mixed source folder. It stays separate from wider room-context display frames.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected low-close front-view subset from paged contact sheets covering 100 JPGs in the mixed source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Low-close front display repeats across the folder with stable foreground body-plane dominance and non-POV framing."
+ }
+ },
+ {
+ "key": "normal_display_front_open_leg_side_offset_view",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_front_open_leg_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated side-offset seated or reclined references selected from the residual contact-sheet review."
+ },
+ "atlas_folders": [
+ "pussy spread"
+ ],
+ "camera_view": "side_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed side-offset front open-leg display normal-camera subset from the mixed source pool: the subject sits or reclines at an oblique angle, the open-leg display reads from a lateral offset, and torso plus leg line angle across the frame in third-person composition.",
+ "prompt_cues": [
+ "reviewed side-offset open-leg display normal camera",
+ "subject sits or reclines at an oblique angle",
+ "open-leg display reads from a lateral offset",
+ "torso and leg line angle across the frame"
+ ],
+ "avoid_cues": [
+ "POV spread wording",
+ "straight front-view display wording",
+ "low-close foreground-dominant crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "pussy spread/0007.jpg",
+ "pussy spread/0008.jpg",
+ "pussy spread/73.jpg",
+ "pussy spread/121.jpg",
+ "pussy spread/134.jpg",
+ "pussy spread/154_3.jpg",
+ "pussy spread/163.jpg",
+ "pussy spread/175.jpg",
+ "pussy spread/256.jpg",
+ "pussy spread/308.jpg",
+ "pussy spread/311.jpg",
+ "pussy spread/368.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "open-leg display",
+ "side view",
+ "side offset"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated side-offset seated or reclined display family found during residual contact-sheet review of the 100-image mixed source folder. It stays separate from straight front-view and low-close display frames.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected side-offset subset from residual contact sheets covering the unselected pussy-spread images.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Side-offset open-leg display repeats across the residual folder with stable oblique body orientation and non-POV third-person framing."
+ }
+ },
{
"key": "normal_display_breasts_exposed_mixed_camera_folder_pool",
"family": "display",
@@ -3293,6 +5269,242 @@
"notes": "The folder is broad display coverage, not a precise camera variant."
}
},
+ {
+ "key": "normal_display_breasts_exposed_front_view",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_breasts_exposed_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated camera-facing references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "camera_view": "front_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed display front-view normal-camera subset from the broad breasts-exposed source pool: the subject faces the camera, the upper torso and full body remain readable, and the frame uses normal third-person display composition.",
+ "prompt_cues": [
+ "reviewed torso-display front-view normal camera",
+ "subject faces the camera",
+ "upper torso and full body remain readable",
+ "camera-facing display posture"
+ ],
+ "avoid_cues": [
+ "POV touch wording",
+ "side-offset display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_3.jpg",
+ "breasts exposed/0006.jpg",
+ "breasts exposed/0008_2.jpg",
+ "breasts exposed/0011_2.jpg",
+ "breasts exposed/141.jpg",
+ "breasts exposed/181.jpg",
+ "breasts exposed/263.jpg",
+ "breasts exposed/302.jpg",
+ "breasts exposed/327.jpg",
+ "breasts exposed/346.jpg",
+ "breasts exposed/594_2.jpg",
+ "breasts exposed/624.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "display",
+ "breasts exposed",
+ "front view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated camera-facing full-body display family found during paged contact-sheet review of the 168-image mixed breasts-exposed source folder. The source pool remains needs_samples for seated, side-offset, close-crop, and other mixed display families.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected front-view subset from paged contact sheets covering 168 JPGs in the mixed breasts-exposed source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Camera-facing torso-display framing repeats across the folder with stable full-body or near-full-body normal-camera composition."
+ }
+ },
+ {
+ "key": "normal_display_breasts_exposed_side_offset_view",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_breasts_exposed_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated side-offset references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "camera_view": "side_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed display side-offset normal-camera subset from the broad breasts-exposed source pool: the subject turns laterally, the side torso outline is readable, and the frame remains normal third-person display composition.",
+ "prompt_cues": [
+ "reviewed torso-display side-offset normal camera",
+ "body turned laterally",
+ "side torso outline readable",
+ "profile display pose"
+ ],
+ "avoid_cues": [
+ "POV touch wording",
+ "pure camera-facing display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "breasts exposed/83.jpg",
+ "breasts exposed/196.jpg",
+ "breasts exposed/235.jpg",
+ "breasts exposed/267.jpg",
+ "breasts exposed/271.jpg",
+ "breasts exposed/305.jpg",
+ "breasts exposed/353.jpg",
+ "breasts exposed/373.jpg",
+ "breasts exposed/590.jpg",
+ "breasts exposed/590_2.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "display",
+ "breasts exposed",
+ "side view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated side-offset display family found during paged contact-sheet review of the 168-image mixed breasts-exposed source folder. It stays separate from the camera-facing front-view subset and from tight crop display examples.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected side-offset subset from paged contact sheets covering 168 JPGs in the mixed breasts-exposed source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Side-offset torso-display framing repeats across the folder with stable lateral body orientation and normal-camera composition."
+ }
+ },
+ {
+ "key": "normal_display_breasts_exposed_standing_front_view",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_breasts_exposed_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated upright standing front-view references selected from the residual contact-sheet review."
+ },
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "camera_view": "front_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed standing display front-view normal-camera subset from the broad breasts-exposed source pool: the subject stands upright facing the camera, the torso and legs remain readable, and the frame preserves normal third-person display composition.",
+ "prompt_cues": [
+ "reviewed standing torso-display front-view normal camera",
+ "subject stands upright facing the camera",
+ "torso and legs remain readable",
+ "front-facing standing display posture"
+ ],
+ "avoid_cues": [
+ "POV touch wording",
+ "seated or kneeling display wording",
+ "side-offset display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "breasts exposed/0002_2.jpg",
+ "breasts exposed/0003.jpg",
+ "breasts exposed/49.jpg",
+ "breasts exposed/138.jpg",
+ "breasts exposed/155.jpg",
+ "breasts exposed/169.jpg",
+ "breasts exposed/190.jpg",
+ "breasts exposed/230.jpg",
+ "breasts exposed/242.jpg",
+ "breasts exposed/302_2.jpg",
+ "breasts exposed/332.jpg",
+ "breasts exposed/368.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "display",
+ "breasts exposed",
+ "standing front view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated upright standing front-view display family found during residual contact-sheet review of the 168-image mixed breasts-exposed source folder. It stays separate from the broader front-view subset, side-offset frames, seated examples, and tight upper-body crops.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected standing front-view subset from residual contact sheets covering the unselected breasts-exposed images.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Standing front display repeats across the residual folder with stable upright posture, readable lower-body context, and normal-camera composition."
+ }
+ },
+ {
+ "key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "family": "display",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_display_breasts_exposed_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated seated and kneeling front-view references selected from the residual contact-sheet review."
+ },
+ "atlas_folders": [
+ "breasts exposed"
+ ],
+ "camera_view": "front_view",
+ "action_family": "display",
+ "canonical_geometry": "Reviewed seated/kneeling display front-view normal-camera subset from the broad breasts-exposed source pool: the subject faces the camera from a seated or kneeling posture, the torso and lower-body placement remain readable, and the frame preserves normal third-person display composition.",
+ "prompt_cues": [
+ "reviewed seated-kneeling torso-display front-view normal camera",
+ "subject faces the camera from a seated posture",
+ "kneeling posture remains readable",
+ "front-facing seated display posture"
+ ],
+ "avoid_cues": [
+ "POV touch wording",
+ "standing display wording",
+ "side-offset display wording",
+ "tight upper-body crop wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "breasts exposed/0001_2.jpg",
+ "breasts exposed/0007_2.jpg",
+ "breasts exposed/101_2.jpg",
+ "breasts exposed/154.jpg",
+ "breasts exposed/165.jpg",
+ "breasts exposed/173.jpg",
+ "breasts exposed/259.jpg",
+ "breasts exposed/285.jpg",
+ "breasts exposed/293.jpg",
+ "breasts exposed/322.jpg",
+ "breasts exposed/328.jpg",
+ "breasts exposed/523.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "display",
+ "breasts exposed",
+ "seated kneeling front view"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated seated/kneeling front-view display family found during residual contact-sheet review of the 168-image mixed breasts-exposed source folder. It stays separate from standing front-view, side-offset, couple/action, and tight upper-body crop examples.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected seated/kneeling front-view subset from residual contact sheets covering the unselected breasts-exposed images.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Seated and kneeling front display repeats across the residual folder with stable front-facing posture, readable lower-body context, and normal-camera composition."
+ }
+ },
{
"key": "normal_standing_from_front_side_view",
"family": "standing_penetration",
@@ -3768,6 +5980,66 @@
"notes": "The action family is coherent, but camera and posture vary too much for a locked route."
}
},
+ {
+ "key": "normal_couple_kissing_upright_side_profile",
+ "family": "couple",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_couple_kissing_mixed_camera_folder_pool",
+ "subset_selection": {
+ "type": "review_selected_reference_images",
+ "selection_date": "2026-07-02",
+ "source_folder_note": "Source folder remains mixed; this variant is defined by repeated upright side-profile references selected from the paged contact sheet."
+ },
+ "atlas_folders": [
+ "couple kissing"
+ ],
+ "camera_view": "side_view",
+ "action_family": "couple",
+ "canonical_geometry": "Reviewed couple-kissing upright side-profile normal-camera subset from the mixed source pool: two subjects face each other laterally, the kissing contact is centered between their faces, and both bodies remain visible enough to preserve third-person camera geometry.",
+ "prompt_cues": [
+ "reviewed couple kissing upright side-profile normal camera",
+ "two subjects face each other in lateral profile",
+ "kissing contact centered between their faces",
+ "both bodies visible in third-person framing"
+ ],
+ "avoid_cues": [
+ "POV kissing wording",
+ "front-facing couple portrait wording",
+ "bed or seated crop wording",
+ "tight face close-up wording",
+ "using the full mixed folder as one route"
+ ],
+ "reference_images": [
+ "couple kissing/0001_2.jpg",
+ "couple kissing/0003.jpg",
+ "couple kissing/0005_2.jpg",
+ "couple kissing/16.jpg",
+ "couple kissing/159.jpg",
+ "couple kissing/247.jpg",
+ "couple kissing/247_2.jpg",
+ "couple kissing/253.jpg",
+ "couple kissing/253_2.jpg",
+ "couple kissing/322.jpg",
+ "couple kissing/354.jpg",
+ "couple kissing/379.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "couple kissing",
+ "side profile",
+ "upright"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Created from a repeated upright side-profile kissing family found during paged contact-sheet review of the 88-image mixed couple-kissing source folder. Seated, bed, close-crop, and front-facing examples stay in the mixed source pool.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected upright side-profile subset from paged contact sheets covering 88 JPGs in the mixed couple-kissing source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "Upright lateral couple-kissing framing repeats across the folder with clear third-person camera geometry and both subjects visible."
+ }
+ },
{
"key": "normal_piledriver_mixed_camera_folder_pool",
"family": "piledriver_or_pretzel",
@@ -3812,6 +6084,63 @@
"notes": "The pose/action is coherent, but the camera is mixed and should be narrowed before A/B."
}
},
+ {
+ "key": "normal_piledriver_high_front_down_view",
+ "family": "piledriver_or_pretzel",
+ "status": "pre_ab_candidate",
+ "source_variant": "normal_piledriver_mixed_camera_folder_pool",
+ "atlas_folders": [
+ "piledriver"
+ ],
+ "camera_view": "top_down_or_high_angle",
+ "action_family": "piledriver_or_pretzel",
+ "canonical_geometry": "Selected piledriver high front-down normal-camera view where the folded body stays readable below the partner from a high third-person camera.",
+ "prompt_cues": [
+ "piledriver high front-down normal camera view",
+ "folded body visible below the partner",
+ "legs folded high around the torso",
+ "third-person camera looking down at the compact stacked pose"
+ ],
+ "avoid_cues": [
+ "POV folded-leg wording",
+ "tight genital-only crop",
+ "using the entire mixed piledriver folder as one camera angle",
+ "pretzel pose wording"
+ ],
+ "reference_images": [
+ "piledriver/0002.jpg",
+ "piledriver/0004_2.jpg",
+ "piledriver/0005.jpg",
+ "piledriver/0006_2.jpg",
+ "piledriver/0009.jpg",
+ "piledriver/0009_2.jpg",
+ "piledriver/0012.jpg",
+ "piledriver/0013.jpg",
+ "piledriver/282.jpg",
+ "piledriver/317.jpg",
+ "piledriver/317_2.jpg",
+ "piledriver/318.jpg",
+ "piledriver/319.jpg",
+ "piledriver/494_2.jpg",
+ "piledriver/538.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": [
+ "piledriver",
+ "high front down",
+ "selected reference subset"
+ ],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Promoted from residual contact-sheet review of the 27-image piledriver source pool. Tight top crops, side drifts, and mixed/near-POV examples remain in the folder pool.",
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Selected 15-image high/front-down subset from residual contact-sheet review of the mixed piledriver source folder.",
+ "decision": "promoted_selected_reference_subvariant",
+ "notes": "The selected subset repeats a high third-person camera over the compact folded pose with body context preserved."
+ }
+ },
{
"key": "normal_pretzel_mixed_camera_folder_pool",
"family": "piledriver_or_pretzel",
diff --git a/docs/normal-camera-atlas.md b/docs/normal-camera-atlas.md
index 9b22f8a..52f9c70 100644
--- a/docs/normal-camera-atlas.md
+++ b/docs/normal-camera-atlas.md
@@ -104,12 +104,12 @@ Current variant inventory:
| Metric | Count |
| --- | ---: |
-| Curated variants | 86 |
-| Pre-A/B candidates | 35 |
-| Needs samples | 51 |
+| Curated variants | 131 |
+| Pre-A/B candidates | 55 |
+| Needs samples | 76 |
| Hold | 0 |
-| Covered non-empty source folders | 76 |
-| Uncovered non-empty source folders | 25 |
+| Covered non-empty source folders | 101 |
+| Uncovered non-empty source folders | 0 |
Catalog review notes:
@@ -155,11 +155,291 @@ Catalog review notes:
609, 608, 0011, 0006, and 0002_2 were split out as
`normal_penis_worship_laying_partner_vertical_side_view`. These remain
`needs_samples` until the folder is more fully sorted by camera orientation.
+- 2026-07-02 penis-worship residual review: generated review artifacts now
+ preserve the foreground-close source-pool anchor plus the existing top,
+ side, and laying-partner side-view anchors. The 29 unselected images remain
+ mixed across foreground-heavy, front, and near-POV framing, so no additional
+ references or prompt-ready subvariant were promoted.
+- 2026-07-02 reverse-cowgirl unused-pool tranche: the uncovered
+ `reverse cowgirl` folder with 240 JPGs was added as
+ `normal_reverse_cowgirl_mixed_camera_folder_pool`. It is a no-generation
+ cue-expansion pool, not a prompt-ready route; selected-reference subvariants
+ should be added only after paged contact-sheet evidence shows repeated
+ non-POV camera geometry. The first promoted selected-reference splits are
+ `normal_reverse_cowgirl_front_view`, a 12-image front-view subset,
+ `normal_reverse_cowgirl_front_three_quarter`, a 12-image front-offset subset,
+ and `normal_reverse_cowgirl_low_close_front_view`, a 12-image low-close
+ front-view subset from the paged and residual contact-sheet review.
+- 2026-07-02 doggy all-fours rear three-quarter expansion: residual
+ contact-sheet review of `doggy on all four - back view - 3-4 angle` expanded
+ `normal_doggy_all_fours_back_three_quarter` from 3 to 15 reviewed references.
+ The route key and prompt cues remain stable; low, front-drifting, and
+ tight-crop outliers remain outside the selected subset.
+- 2026-07-02 doggy all-fours side-view residual review: residual contact-sheet
+ review of `doggy on all four - side view` kept
+ `normal_doggy_all_fours_side_view` at its existing 14 reviewed references.
+ Remaining images mix standing, bed, chair, close, and front-drifting frames,
+ so no additional references were promoted in this pass.
+- 2026-07-02 doggy all-fours front-view expansion: residual contact-sheet
+ review of `doggy all four - front view` expanded
+ `normal_doggy_all_fours_front_view` from 3 to 15 reviewed references. The
+ selected subset keeps front-facing all-fours framing with face and forearms
+ readable; side-drifting, seated, tight-close, and vertical-crop outliers
+ remain outside the route.
+- 2026-07-02 doggy generic front-view expansion: residual contact-sheet review
+ of the duplicate trailing-space `doggy - front view ` folder expanded
+ `normal_doggy_generic_front_view` from 6 to 15 reviewed references. The route
+ remains grouped with the non-trailing duplicate folder, and one weak top/down
+ close crop remains outside the selected subset.
+- 2026-07-02 piledriver selected split: residual contact-sheet review of
+ `piledriver` preserved `normal_piledriver_mixed_camera_folder_pool` as a
+ `needs_samples` source pool and promoted
+ `normal_piledriver_high_front_down_view` as a 15-image high/front-down
+ selected-reference subvariant. Tight top crops, side drifts, and mixed
+ examples remain outside the selected route.
+- 2026-07-02 blowjob laying front-view expansion: residual contact-sheet review
+ of `blowjob - laying - front view` expanded
+ `normal_blowjob_laying_front_view` from 3 to 15 reviewed references. The
+ selected subset keeps front-facing laying oral-contact geometry; side-drifting,
+ wide couch/bed, and weak close-crop examples remain outside the route.
+- 2026-07-02 breast-contact front-view expansion: residual contact-sheet review
+ of `breast - touching - front view` expanded
+ `normal_breast_contact_front_view` from 3 to 15 reviewed references. The
+ selected subset keeps front-facing body-contact geometry while side-drifting,
+ costume/standing outliers, and weak-contact crops remain outside the route.
+- 2026-07-02 reverse-congress front-view expansion: residual contact-sheet
+ review of `reverse congress - front view` expanded
+ `normal_reverse_congress_front_view` from 3 to 15 reviewed references. The
+ selected subset keeps lifted/front-facing stacked-body geometry while tight
+ low crops, side/bed drift, and seated-only outliers remain outside the route.
+- 2026-07-02 boobjob selected split: residual contact-sheet review of `boobjob`
+ preserved `normal_boobjob_front_close_mixed_camera_folder_pool` as a
+ `needs_samples` source pool and promoted
+ `normal_boobjob_front_close_view` as a 12-image front-close
+ selected-reference subvariant. Side, standing, foreground-heavy, and
+ downward/crop-drifting outliers remain outside the route.
+- 2026-07-02 fingering selected split: contact-sheet review of `fingering`
+ added `normal_fingering_mixed_camera_folder_pool` as a `needs_samples` source
+ pool and promoted `normal_fingering_reclined_front_view` as a 10-image
+ reclined front-view selected-reference subvariant. Upright chair, standing,
+ side, and stronger oral-adjacent outliers remain outside the route.
+- 2026-07-02 wand selected split: contact-sheet review of `wand` added
+ `normal_wand_mixed_camera_folder_pool` as a `needs_samples` source pool and
+ promoted `normal_wand_front_close_view` as a 7-image front-close
+ selected-reference subvariant. Side, portrait-close, and wider posture
+ outliers remain outside the route.
+- 2026-07-02 ballsucking standing selected split: contact-sheet review of
+ `ballsucking - standing` preserved
+ `normal_ballsucking_standing_partner_mixed_camera_folder_pool` as a
+ `needs_samples` source pool and promoted
+ `normal_ballsucking_standing_low_side_view` as an 11-image low side/near-side
+ selected-reference subvariant. The water-close outlier remains outside the
+ route.
+- 2026-07-02 face-sitting source-pool review: contact-sheet review of
+ `face sitting` added `normal_face_sitting_mixed_camera_folder_pool` as a
+ 4-image `needs_samples` source pool. Three front/near-front samples and one
+ rear/back-view outlier are preserved as review evidence; no pre-A/B route was
+ promoted.
+- 2026-07-02 pussy-licking back-view source-pool review: contact-sheet review
+ of `pussy licking - backv iew` added
+ `normal_pussy_licking_backview_mixed_camera_folder_pool` as a 3-image
+ `needs_samples` source pool. The folder label is not promoted as prompt truth:
+ samples read as elevated front or high-oblique third-person references, so no
+ pre-A/B route was promoted.
+- 2026-07-02 removing-pants source-pool review: contact-sheet review of
+ `removing pants` added `normal_removing_pants_mixed_camera_folder_pool` as a
+ 3-image `needs_samples` source pool. The samples are close, near-duplicate,
+ and foreground-heavy, so they remain action evidence rather than a promoted
+ camera route.
+- 2026-07-02 thin-folder source-pool batch: contact-sheet review added
+ `normal_rimjob_mixed_camera_folder_pool`,
+ `normal_footjob_mixed_camera_folder_pool`,
+ `normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool`,
+ `normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool`, and
+ `normal_fist_mixed_camera_folder_pool` as `needs_samples` coverage pools.
+ Each folder has only one to three samples, so no pre-A/B camera route was
+ promoted.
+- 2026-07-02 final single-reference coverage batch: contact-sheet review added
+ coverage-only `needs_samples` pools for the remaining 12 one-image folders,
+ including thin anal, oral, doggy, face-sitting, handjob, and under-desk
+ references. This brings all non-empty source folders into the reviewed
+ variant catalog without promoting any single-image folder to pre-A/B.
+- 2026-07-02 covered mixed-pool artifact pass: review manifests/contact sheets
+ were added for the already-cataloged `ballsucking - laying`, `pretzel`, and
+ `woman ass exposed` source pools. `woman ass exposed` now carries all four
+ folder images as `needs_samples` evidence; no pre-A/B route was promoted.
+- 2026-07-02 sixty-nine selected split: contact-sheet review of `69` added
+ `normal_sixty_nine_mixed_camera_folder_pool` as a `needs_samples` source pool
+ and promoted `normal_sixty_nine_front_close_view` as a 7-image front-close
+ selected-reference subvariant. Side/downward, upright seated, and wider
+ room-context outliers remain outside the route.
+- 2026-07-02 handjob standing side-view residual review: residual contact-sheet
+ review of `handjob standing - side view` kept
+ `normal_handjob_standing_side_profile` at its existing 7 reviewed references.
+ Remaining images mix kneeling, seated, close portrait, near-front, and
+ oral-adjacent frames, so no additional references were promoted in this pass.
+- 2026-07-02 breast-sucking side-view expansion: residual contact-sheet review
+ of `breast sucking - side view` expanded
+ `normal_breast_sucking_side_view` from 3 to 15 reviewed references. The
+ route remains side/near-side rather than strict profile-only; front-only,
+ hand-touch-only, and weak-contact examples remain outside the selected subset.
+- 2026-07-02 standing from-front side-view residual review: residual
+ contact-sheet review of `fuck from front standing - side view` kept
+ `normal_standing_from_front_side_view` at its existing 3 reviewed references.
+ Remaining images include some usable side/near-side frames, but too many drift
+ into suspended/lifted, close-crop, couch, or front-heavy framing for a safe
+ reference expansion.
+- 2026-07-02 standing backside side-view residual review: residual contact-sheet
+ review of `fuck from behind standing - woman backside - side view` kept
+ `normal_doggy_standing_backside_side_view` at its existing 16 reviewed
+ references and preserved the 3-image folder-pool anchor. Remaining images mix
+ lifted, seated, bed/couch, front-drifting, and portrait-like frames, so no
+ additional references or distinct subvariant were promoted.
+- 2026-07-02 generic doggy rear three-quarter expansion: residual contact-sheet
+ review of `doggy - back view - 3-4 angle` expanded
+ `normal_doggy_generic_back_three_quarter` from 3 to 15 reviewed references.
+ The selected subset keeps back-offset normal-camera composition while
+ low/close and laying-drift examples remain outside the route.
+- 2026-07-02 cowgirl side-view expansion: residual contact-sheet review of
+ `cowgirl - side view` expanded `normal_cowgirl_side_profile` from 3 to 15
+ reviewed references. The selected subset keeps lateral straddle composition
+ while front-drifting, rear-drifting, and tight-crop examples remain outside
+ the route.
+- 2026-07-02 anal-random unused-pool tranche: the uncovered `anal random`
+ folder with 99 JPGs was added as
+ `normal_anal_random_mixed_camera_folder_pool`. Paged contact-sheet review
+ promoted `normal_anal_random_front_view` as an 11-image front-view
+ selected-reference split; residual-pool review then promoted
+ `normal_anal_random_back_side_offset_view` as a 12-image rear/side-offset
+ split. It remains `needs_samples` for standing, overhead-like, tight-crop, and
+ other mixed material.
+- 2026-07-02 breasts-exposed selected splits: paged contact-sheet review of the
+ 168-image `breasts exposed` source pool promoted
+ `normal_display_breasts_exposed_front_view` and
+ `normal_display_breasts_exposed_side_offset_view`; residual-pool review then
+ promoted `normal_display_breasts_exposed_standing_front_view` as a 12-image
+ upright standing front-view subset and
+ `normal_display_breasts_exposed_seated_kneeling_front_view` as a 12-image
+ seated/kneeling front-view subset. The mixed source pool remains
+ `needs_samples` for close-crop, couple/action, side-drifting, and other
+ display families.
+- 2026-07-02 front open-leg display selected splits: paged contact-sheet review
+ of the 100-image `pussy spread` source pool promoted
+ `normal_display_front_open_leg_front_view` and
+ `normal_display_front_open_leg_low_close`; residual-pool review then promoted
+ `normal_display_front_open_leg_side_offset_view` as a 12-image side-offset
+ seated or reclined subset. The mixed source pool remains `needs_samples` for
+ remaining front, low-close, and one-off crop/camera variants.
+- 2026-07-02 couple-kissing selected split: paged contact-sheet review of the
+ 88-image `couple kissing` source pool promoted
+ `normal_couple_kissing_upright_side_profile` as a 12-image upright
+ side-profile subset. Seated, bed, close-crop, and front-facing examples stay
+ in the mixed source pool.
+- 2026-07-02 cowgirl back-three-quarter reference expansion: residual-pool
+ review of the 129-image `cowgirl - back view - 3-4 angle` source folder kept
+ the existing `normal_cowgirl_back_three_quarter` route and expanded it to 15
+ selected references instead of creating a near-duplicate route.
+- 2026-07-02 rear-body display selected split: residual-pool review of the
+ 99-image `woman solo showing her hass - back view` source folder promoted
+ `normal_display_rear_body_standing_back_view` as a 12-image upright standing
+ back-view subset. The broad folder pool remains `needs_samples` for seated,
+ kneeling, side-leaning, and close-crop rear examples.
+- 2026-07-02 maintenance phase: prep artifacts now include a dedicated
+ validator, review indexes, per-image manifest annotations, explicit
+ typo/spacing alias metadata, and a separate `needs_samples` acquisition list.
+ These additions do not promote any new route and do not add generated
+ evidence.
Do not add fixed-seed evidence, eval-log IDs, or generator-default decisions to
this catalog until the normal-camera A/B workflow starts. Keep POV A/B notes in
the existing POV files.
+## No-Generation Prep Artifacts
+
+Prepared dry-run artifacts live under `ab_batches/normal_camera/`:
+
+- `normal_camera_priority_plan.json`: all 55 `pre_ab_candidate` variants in
+ stable catalog order, with representative references and deferred counts for
+ `needs_samples` and `hold`.
+- `normal_camera_prompt_cue_batch.json`: source prompt cues split into
+ prompt-ready positive cues and blocked review-only cues. Option words,
+ negative wording, contrast wording, and instruction-like cleanup text stay out
+ of prompt-ready text.
+- `normal_camera_score_sheet.json`: blank later-generation scoring rows for the
+ selected variants. Rows keep generator seed, sampling seed, image path, score,
+ note, and decision slots empty until fixed-seed generation exists.
+- `normal_camera_acceptance_gates.md`: human-readable scoring gates for later
+ A/B review.
+- `normal_camera_unused_pool_backlog.json`: larger remaining source folders
+ ranked by unselected image count so future tranches can proceed beyond the
+ first reverse-cowgirl unused-pool tranche. Rows include `folder_alias`
+ metadata so typo and spacing fixes remain separate from exact source paths.
+- `normal_camera_needs_samples_acquisition.json` and
+ `normal_camera_needs_samples_acquisition.md`: all 76 `needs_samples` variants
+ sorted by missing reference count against a 12-reference target. This list is
+ for reference acquisition and remains separate from the 55-item pre-A/B
+ priority plan.
+- `review/index.html` and `review/index.md`: no-generation indexes linking all
+ generated review manifests and contact sheets by source folder, canonical
+ alias label, image count, selected-reference count, and residual count.
+- `review/reverse_cowgirl_review_manifest.json`: no-generation review manifest
+ for all 240 JPGs in the uncovered `reverse cowgirl` folder, paged for contact
+ sheet review. Review manifests now include `review_items` for every image:
+ selected references are marked `selected_reference`; remaining images are
+ marked `residual_unassigned` with a conservative exclusion reason until a
+ human assigns a tighter bucket.
+- `review/reverse_cowgirl_contact_sheet.html`: local-image contact sheet for
+ assigning review buckets before any selected-reference subvariant is promoted.
+- `review/breasts_exposed_review_manifest.json` and
+ `review/breasts_exposed_contact_sheet.html`: no-generation review scaffold for
+ the large mixed display source pool.
+- `review/pussy_spread_review_manifest.json` and
+ `review/pussy_spread_contact_sheet.html`: no-generation review scaffold for
+ the large mixed front-display source pool.
+- `review/anal_random_review_manifest.json` and
+ `review/anal_random_contact_sheet.html`: no-generation review scaffold for
+ the uncovered `anal random` source pool.
+- `review/couple_kissing_review_manifest.json` and
+ `review/couple_kissing_contact_sheet.html`: no-generation review scaffold for
+ the large mixed couple-contact source pool.
+- `review/cowgirl_back_view_3_4_angle_review_manifest.json` and
+ `review/cowgirl_back_view_3_4_angle_contact_sheet.html`: no-generation review
+ scaffold for the large rear three-quarter cowgirl source folder.
+- `review/woman_solo_showing_her_hass_back_view_review_manifest.json` and
+ `review/woman_solo_showing_her_hass_back_view_contact_sheet.html`:
+ no-generation review scaffold for the large rear-body display source folder.
+
+Acceptance gates for later fixed-seed review:
+
+- `camera_geometry`: camera angle, elevation, side/front/back orientation, and
+ framing match the atlas family.
+- `pose_ownership`: the visible actors own the pose correctly, with no POV body
+ cues leaking into normal-camera framing.
+- `workspace_continuity`: workspace or lounge details support the camera angle
+ instead of fighting the pose.
+- `clothing_visibility`: clothing cues stay attached to the intended visible
+ subject and only describe garments visible in the pose.
+- `subject_identity`: the same woman identity, face, hair, eyes, and body type
+ remain stable across fixed-seed variants.
+- `body_proportion_control`: penis/body proportions and limb lengths stay
+ plausible for the selected atlas framing.
+- `prompt_noise`: prompt text uses direct visual cues, with option, negative,
+ and instruction-like wording removed from positive text.
+- `atlas_reference_match`: the generated frame can be matched back to the
+ selected atlas references for the variant.
+
+Regenerate these files without sending prompts or images:
+
+```bash
+python -m normal_camera_atlas_prep --write-artifacts --output-dir ab_batches/normal_camera
+```
+
+Validate the catalog and generated artifacts:
+
+```bash
+python tools/normal_camera_atlas_validate.py --artifacts-dir ab_batches/normal_camera
+```
+
## Camera Geometry Notes
### Side View
diff --git a/docs/superpowers/plans/2026-07-02-normal-camera-atlas-maintenance-phases.md b/docs/superpowers/plans/2026-07-02-normal-camera-atlas-maintenance-phases.md
new file mode 100644
index 0000000..a718d60
--- /dev/null
+++ b/docs/superpowers/plans/2026-07-02-normal-camera-atlas-maintenance-phases.md
@@ -0,0 +1,76 @@
+# Normal Camera Atlas Maintenance Phases Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Add phased maintenance tooling around the no-generation normal-camera atlas: a dedicated validator, review index, richer per-image annotations, folder alias metadata, needs-samples acquisition output, schema checks, and docs/smoke handoff.
+
+**Architecture:** Keep `normal_camera_atlas_prep.py` as the artifact builder and add `tools/normal_camera_atlas_validate.py` as the strict validation CLI. `tools/prompt_smoke.py` should delegate normal-camera artifact invariants to the validator instead of carrying every detail inline. Generated artifacts remain under `ab_batches/normal_camera/`.
+
+**Tech Stack:** Python standard library, JSON catalogs, generated Markdown/HTML review artifacts, existing `tools/prompt_smoke.py` smoke runner.
+
+---
+
+### Task 1: Dedicated Validator
+
+**Files:**
+- Create: `tools/normal_camera_atlas_validate.py`
+- Modify: `tools/prompt_smoke.py`
+
+- [x] Add a validator module that imports `normal_camera_atlas_prep`, reads `categories/normal_camera_variants.json`, verifies catalog schema/counts, folder coverage, no-generation invariants, artifact existence, review manifests/contact sheets, selected-reference consistency, folder alias metadata, and optional JSON schema-style structural checks.
+- [x] Expose `validate_normal_camera_atlas(...) -> list[str]` and a CLI that exits `1` with one error per line when validation fails.
+- [x] Add a narrow prompt-smoke check that calls the validator instead of duplicating all normal-camera artifact details.
+- [x] Verify with `python tools/normal_camera_atlas_validate.py --artifacts-dir ab_batches/normal_camera`.
+
+### Task 2: Review Index
+
+**Files:**
+- Modify: `normal_camera_atlas_prep.py`
+- Generated: `ab_batches/normal_camera/review/index.html`
+- Generated: `ab_batches/normal_camera/review/index.md`
+
+- [x] Add `build_review_index(...)` helpers that list every default review folder with source folder, canonical alias, image count, selected subvariant count, status summary, manifest path, and contact-sheet path.
+- [x] Write both HTML and Markdown indexes from `write_artifacts(...)`.
+- [x] Include no-generation language and local artifact links only.
+
+### Task 3: Per-Image Review Annotations
+
+**Files:**
+- Modify: `normal_camera_atlas_prep.py`
+
+- [x] Add `review_items` to every review manifest.
+- [x] For selected references, mark `review_decision: selected_reference`, preserve `review_bucket`, `variant_key`, and include selection notes.
+- [x] For residual images, mark `review_decision: residual_unassigned`, `review_bucket: unassigned`, and include a conservative reason such as `outside_selected_subvariants_or_pending_manual_bucket`.
+- [x] Reflect these decisions in contact-sheet figure attributes/captions.
+
+### Task 4: Folder Alias Metadata
+
+**Files:**
+- Modify: `normal_camera_atlas_prep.py`
+- Modify: `tools/normal_camera_atlas_validate.py`
+
+- [x] Add explicit alias metadata for typo/spacing variants while preserving exact source folder names.
+- [x] Include alias metadata in review manifests, unused-pool backlog rows, and review indexes.
+- [x] Validate that every known typo/spacing source folder keeps an alias record.
+
+### Task 5: Needs-Samples Acquisition List
+
+**Files:**
+- Modify: `normal_camera_atlas_prep.py`
+- Generated: `ab_batches/normal_camera/normal_camera_needs_samples_acquisition.json`
+- Generated: `ab_batches/normal_camera/normal_camera_needs_samples_acquisition.md`
+
+- [x] Build a needs-samples acquisition list from `categories/normal_camera_variants.json`.
+- [x] Sort by missing sample count, then action family, then variant key.
+- [x] Keep it separate from the pre-A/B priority plan.
+
+### Task 6: Docs And Verification
+
+**Files:**
+- Modify: `docs/normal-camera-atlas.md`
+- Modify: `tools/prompt_smoke.py`
+
+- [x] Document the validator, review index, alias metadata, per-image annotations, and acquisition list.
+- [x] Run `python normal_camera_atlas_prep.py --write-artifacts --output-dir ab_batches/normal_camera`.
+- [x] Run `python tools/normal_camera_atlas_validate.py --artifacts-dir ab_batches/normal_camera`.
+- [x] Run `python tools/prompt_smoke.py --case normal_camera_atlas_catalog --case normal_camera_atlas_prep_artifacts --case normal_camera_unused_pool_review_artifacts --quiet`.
+- [x] Run `python -m py_compile normal_camera_atlas_prep.py tools/normal_camera_atlas_validate.py tools/prompt_smoke.py`.
diff --git a/docs/superpowers/plans/2026-07-02-normal-camera-unused-pool-extension.md b/docs/superpowers/plans/2026-07-02-normal-camera-unused-pool-extension.md
new file mode 100644
index 0000000..a77794d
--- /dev/null
+++ b/docs/superpowers/plans/2026-07-02-normal-camera-unused-pool-extension.md
@@ -0,0 +1,279 @@
+# Normal Camera Unused Pool Extension Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Extend the no-generation normal-camera atlas prep system across larger unused image pools, starting with the uncovered `reverse cowgirl` folder.
+
+**Architecture:** Keep the folder inventory and curated variant catalog as the source of truth. Add read-only review/backlog builders to `normal_camera_atlas_prep.py`, write review artifacts under `ab_batches/normal_camera/`, then add selected catalog variants only when review evidence supports stable non-POV camera/pose families.
+
+**Tech Stack:** Python standard library, Pillow for optional contact-sheet image output, existing JSON catalogs, existing `tools/prompt_smoke.py` smoke harness.
+
+---
+
+### Task 1: Add Unused-Pool Review Artifact Tests
+
+**Files:**
+- Modify: `tools/prompt_smoke.py`
+- Test: `python tools/prompt_smoke.py --case normal_camera_unused_pool_review_artifacts --quiet`
+
+- [ ] **Step 1: Add failing smoke coverage**
+
+Add a smoke case that imports `normal_camera_atlas_prep`, calls `build_unused_pool_backlog(limit=5)`, `build_review_manifest("reverse cowgirl", page_size=40)`, and `build_contact_sheet_html("reverse cowgirl", page_size=40)`, then asserts:
+
+```python
+backlog = prep_module.build_unused_pool_backlog(limit=5)
+_expect(backlog.get("schema") == "sxcp_normal_camera_unused_pool_backlog_v1", "Normal camera unused-pool backlog schema changed")
+_expect(backlog.get("no_generation") is True, "Normal camera unused-pool backlog must stay no-generation")
+_expect((backlog.get("folders") or [])[0].get("folder") == "reverse cowgirl", "Reverse cowgirl should be the first unused-pool tranche")
+
+manifest = prep_module.build_review_manifest("reverse cowgirl", page_size=40)
+_expect(manifest.get("schema") == "sxcp_normal_camera_review_manifest_v1", "Normal camera review manifest schema changed")
+_expect(manifest.get("folder") == "reverse cowgirl", "Review manifest should target reverse cowgirl")
+_expect(manifest.get("image_count") == 240, "Reverse cowgirl review should cover all 240 JPGs")
+_expect(len(manifest.get("contact_sheet_pages") or []) == 6, "Reverse cowgirl review should be paged at 40 images per sheet")
+_expect("back_view" in manifest.get("review_bucket_values", {}), "Review buckets lost back-view routing")
+
+html = prep_module.build_contact_sheet_html("reverse cowgirl", page_size=40)
+_expect("reverse cowgirl/0001.jpg" in html, "Contact sheet lost first reverse-cowgirl image")
+_expect("data-review-bucket" in html, "Contact sheet should expose review buckets")
+```
+
+- [ ] **Step 2: Register the new smoke case**
+
+Add `("normal_camera_unused_pool_review_artifacts", smoke_normal_camera_unused_pool_review_artifacts)` after the existing normal-camera prep smoke case.
+
+- [ ] **Step 3: Verify the test fails**
+
+Run:
+
+```bash
+python tools/prompt_smoke.py --case normal_camera_unused_pool_review_artifacts --quiet
+```
+
+Expected: failure because `build_unused_pool_backlog`, `build_review_manifest`, and `build_contact_sheet_html` do not exist yet.
+
+### Task 2: Implement Backlog and Review Manifest Builders
+
+**Files:**
+- Modify: `normal_camera_atlas_prep.py`
+- Test: `python tools/prompt_smoke.py --case normal_camera_unused_pool_review_artifacts --quiet`
+
+- [ ] **Step 1: Add schemas and review buckets**
+
+Add constants:
+
+```python
+UNUSED_POOL_BACKLOG_SCHEMA = "sxcp_normal_camera_unused_pool_backlog_v1"
+REVIEW_MANIFEST_SCHEMA = "sxcp_normal_camera_review_manifest_v1"
+DEFAULT_REVIEW_DIR = DEFAULT_OUTPUT_DIR / "review"
+REVIEW_BUCKET_VALUES = {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.",
+}
+```
+
+- [ ] **Step 2: Add helper functions**
+
+Add helpers to compute selected-reference coverage and page full-folder images:
+
+```python
+def _natural_sort_key(text: str) -> list[int | str]:
+ return [int(part) if part.isdigit() else part.lower() for part in re.split(r"(\\d+)", text)]
+
+def _atlas_folder_rows() -> list[dict[str, Any]]:
+ return list(load_atlas().get("folders") or [])
+
+def _variant_reference_map() -> dict[str, set[str]]:
+ refs_by_folder: dict[str, set[str]] = {}
+ for variant in load_variants().get("variants") or []:
+ for ref in _reference_images(variant):
+ folder = ref.rsplit("/", 1)[0]
+ refs_by_folder.setdefault(folder, set()).add(ref)
+ return refs_by_folder
+```
+
+- [ ] **Step 3: Implement backlog builder**
+
+Implement `build_unused_pool_backlog(limit: int | None = None)` so it ranks non-empty folders by unselected image count, with fields `folder`, `image_count`, `selected_reference_count`, `remaining_image_count`, `covered_by_variants`, `camera_view`, `action_family`, `catalog_status`, and `suggested_action`.
+
+- [ ] **Step 4: Implement review manifest and HTML builders**
+
+Implement `build_review_manifest(folder_name: str, page_size: int = 40)` and `build_contact_sheet_html(folder_name: str, page_size: int = 40)` so `reverse cowgirl` produces six pages and exposes review buckets without classifying any image as truth.
+
+- [ ] **Step 5: Verify green**
+
+Run:
+
+```bash
+python tools/prompt_smoke.py --case normal_camera_unused_pool_review_artifacts --quiet
+```
+
+Expected: `OK: smoke passed (1 cases).`
+
+### Task 3: Write Review Artifacts
+
+**Files:**
+- Modify: `normal_camera_atlas_prep.py`
+- Create: `ab_batches/normal_camera/normal_camera_unused_pool_backlog.json`
+- Create: `ab_batches/normal_camera/review/reverse_cowgirl_review_manifest.json`
+- Create: `ab_batches/normal_camera/review/reverse_cowgirl_contact_sheet.html`
+- Test: `python -m normal_camera_atlas_prep --write-artifacts --output-dir ab_batches/normal_camera`
+
+- [ ] **Step 1: Extend artifact writing**
+
+Update `write_artifacts()` to include the unused-pool backlog and reverse-cowgirl review artifacts. Keep existing artifact names stable.
+
+- [ ] **Step 2: Regenerate artifacts**
+
+Run:
+
+```bash
+python -m normal_camera_atlas_prep --write-artifacts --output-dir ab_batches/normal_camera
+```
+
+Expected: output includes the four existing artifacts plus `unused_pool_backlog`, `reverse_cowgirl_review_manifest`, and `reverse_cowgirl_contact_sheet`.
+
+- [ ] **Step 3: Verify prep smoke**
+
+Run:
+
+```bash
+python tools/prompt_smoke.py --case normal_camera_atlas_prep_artifacts --case normal_camera_unused_pool_review_artifacts --quiet
+```
+
+Expected: `OK: smoke passed (2 cases).`
+
+### Task 4: Add Reverse-Cowgirl Catalog Source Pool
+
+**Files:**
+- Modify: `categories/normal_camera_variants.json`
+- Modify: `tools/prompt_smoke.py`
+- Test: `python tools/prompt_smoke.py --case normal_camera_atlas_catalog --quiet`
+
+- [ ] **Step 1: Add failing catalog expectation**
+
+Extend `required_variants` in `smoke_normal_camera_atlas_catalog()` with `normal_reverse_cowgirl_mixed_camera_folder_pool`.
+
+- [ ] **Step 2: Verify red**
+
+Run:
+
+```bash
+python tools/prompt_smoke.py --case normal_camera_atlas_catalog --quiet
+```
+
+Expected: failure because the mixed source-pool variant does not exist.
+
+- [ ] **Step 3: Add the source-pool variant**
+
+Add a `needs_samples` variant after the existing labeled reverse-cowgirl variants:
+
+```json
+{
+ "key": "normal_reverse_cowgirl_mixed_camera_folder_pool",
+ "family": "reverse_cowgirl",
+ "status": "needs_samples",
+ "atlas_folders": ["reverse cowgirl"],
+ "camera_view": "mixed_or_unspecified",
+ "action_family": "reverse_cowgirl",
+ "canonical_geometry": "Large reverse-cowgirl source pool with normal-camera examples but no single locked camera view until contact-sheet review selects stable subsets.",
+ "prompt_cues": [
+ "reverse cowgirl normal-camera source pool",
+ "select a repeated camera family before cue drafting",
+ "use contact-sheet evidence before fixed-seed testing"
+ ],
+ "avoid_cues": [
+ "using the full mixed folder as one locked camera preset",
+ "POV reverse-cowgirl wording",
+ "inventing camera cues from the folder label alone"
+ ],
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/82.jpg"
+ ],
+ "generator_hook": {
+ "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py",
+ "route_terms": ["reverse cowgirl", "mixed camera source pool"],
+ "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files."
+ },
+ "pre_ab_notes": "Added as the first large unused-pool review tranche. The full 240-image folder is a cue-expansion pool, not a prompt-ready route; split selected-reference subvariants only after contact-sheet evidence shows repeated non-POV camera geometry.",
+ "folder_pool": true,
+ "visual_review": {
+ "reviewed_at": "2026-07-02",
+ "scope": "Paged contact-sheet review scaffold covering 240 JPGs across atlas_folders plus representative references.",
+ "decision": "added_as_large_unused_pool_review_tranche",
+ "notes": "Folder is now tracked for review; selected-reference subvariants should be added only from repeated camera/pose families identified in the contact sheet."
+ }
+}
+```
+
+- [ ] **Step 4: Update inventory counts**
+
+Increment `variant_count` and `needs_samples`, increment `covered_non_empty_folder_count`, decrement `uncovered_non_empty_folder_count`, and remove `reverse cowgirl` from `uncovered_non_empty_folders`.
+
+- [ ] **Step 5: Verify green**
+
+Run:
+
+```bash
+python tools/prompt_smoke.py --case normal_camera_atlas_catalog --quiet
+```
+
+Expected: `OK: smoke passed (1 cases).`
+
+### Task 5: Document and Regenerate Prep Outputs
+
+**Files:**
+- Modify: `docs/normal-camera-atlas.md`
+- Modify: `ab_batches/normal_camera/normal_camera_priority_plan.json`
+- Modify: `ab_batches/normal_camera/normal_camera_prompt_cue_batch.json`
+- Modify: `ab_batches/normal_camera/normal_camera_score_sheet.json`
+- Test: `python tools/prompt_smoke.py --case normal_camera_atlas_catalog --case normal_camera_atlas_prep_artifacts --case normal_camera_unused_pool_review_artifacts --quiet`
+
+- [ ] **Step 1: Update docs**
+
+Document that the unused-pool extension starts with `reverse cowgirl`, adds `normal_camera_unused_pool_backlog.json`, and keeps full mixed folders out of `pre_ab_candidate` until selected-reference subvariants exist.
+
+- [ ] **Step 2: Regenerate artifacts**
+
+Run:
+
+```bash
+python -m normal_camera_atlas_prep --write-artifacts --output-dir ab_batches/normal_camera
+```
+
+- [ ] **Step 3: Verify focused smoke**
+
+Run:
+
+```bash
+python tools/prompt_smoke.py --case normal_camera_atlas_catalog --case normal_camera_atlas_prep_artifacts --case normal_camera_unused_pool_review_artifacts --quiet
+```
+
+Expected: `OK: smoke passed (3 cases).`
+
+### Task 6: Visual Split Follow-Up
+
+**Files:**
+- Modify later: `categories/normal_camera_variants.json`
+- Modify later: `docs/normal-camera-atlas.md`
+- Test later: focused smoke cases above
+
+- [ ] **Step 1: Review the contact sheet**
+
+Open `ab_batches/normal_camera/review/reverse_cowgirl_contact_sheet.html` or generated page images, classify repeated non-POV camera/pose families, and record selected image paths.
+
+- [ ] **Step 2: Add selected-reference subvariants only when evidence is stable**
+
+For each repeated family, add a subvariant with `source_variant: "normal_reverse_cowgirl_mixed_camera_folder_pool"`, `subset_selection.type: "review_selected_reference_images"`, positive-only cue sentences, and selected `reference_images`.
+
+- [ ] **Step 3: Leave weak groups as `needs_samples`**
+
+Do not promote one-off frames, POV-like frames, or visually mixed groups. Keep them in source-pool notes or review buckets until more evidence exists.
+
diff --git a/normal_camera_atlas_prep.py b/normal_camera_atlas_prep.py
new file mode 100644
index 0000000..20a7270
--- /dev/null
+++ b/normal_camera_atlas_prep.py
@@ -0,0 +1,2400 @@
+"""No-generation prep artifacts for the normal-camera atlas."""
+
+from __future__ import annotations
+
+import argparse
+import html
+import json
+import re
+from pathlib import Path
+from typing import Any
+
+
+ROOT = Path(__file__).resolve().parent
+CATALOG_DIR = ROOT / "categories"
+DEFAULT_OUTPUT_DIR = ROOT / "ab_batches" / "normal_camera"
+
+PRIORITY_PLAN_SCHEMA = "sxcp_normal_camera_priority_plan_v1"
+PROMPT_CUE_BATCH_SCHEMA = "sxcp_normal_camera_prompt_cue_batch_v1"
+SCORE_SHEET_SCHEMA = "sxcp_normal_camera_score_sheet_v1"
+UNUSED_POOL_BACKLOG_SCHEMA = "sxcp_normal_camera_unused_pool_backlog_v1"
+REVIEW_MANIFEST_SCHEMA = "sxcp_normal_camera_review_manifest_v1"
+NEEDS_SAMPLES_ACQUISITION_SCHEMA = "sxcp_normal_camera_needs_samples_acquisition_v1"
+
+DEFAULT_REVIEW_DIR = DEFAULT_OUTPUT_DIR / "review"
+NEEDS_SAMPLES_TARGET_REFERENCE_COUNT = 12
+
+DEFAULT_REVIEW_FOLDERS: tuple[str, ...] = (
+ "reverse cowgirl",
+ "breasts exposed",
+ "pussy spread",
+ "anal random",
+ "couple kissing",
+ "cowgirl - back view - 3-4 angle",
+ "cowgirl - side view",
+ "woman solo showing her hass - back view",
+ "doggy on all four - back view - 3-4 angle",
+ "doggy on all four - side view",
+ "doggy all four - front view",
+ "doggy - front view ",
+ "handjob standing - side view",
+ "wand",
+ "breast sucking - side view",
+ "fuck from front standing - side view",
+ "doggy - back view - 3-4 angle",
+ "penis worship",
+ "fuck from behind standing - woman backside - side view",
+ "piledriver",
+ "blowjob - laying - front view",
+ "breast - touching - front view",
+ "ballsucking - laying",
+ "ballsucking - standing",
+ "face sitting",
+ "pussy licking - backv iew",
+ "removing pants",
+ "rimjob",
+ "footjob",
+ "reverse cowgirl - leg up",
+ "reverse cowgirl -pretzel",
+ "fist",
+ "anal cowgirl",
+ "anal doggy - side view",
+ "anal fuck from behind laying - back view - 3-4 angle",
+ "anal reverse congress",
+ "anus lickiing",
+ "blowjob laying - back view - 3-4 angle",
+ "doggy press - back side",
+ "face sitting - front view",
+ "handjob - standing -low angle",
+ "pussy licking leg up - back view - 3-4 angle",
+ "pussy licking standing woman",
+ "under desk",
+ "pretzel",
+ "woman ass exposed",
+ "reverse congress - front view",
+ "boobjob",
+ "fingering",
+ "69",
+)
+
+REVIEW_BUCKET_VALUES: dict[str, str] = {
+ "back_view": "Rear-facing normal-camera view where back/hips face camera.",
+ "back_three_quarter": "Rear-offset normal-camera view with enough side/torso context.",
+ "side_view": "Profile or near-profile lateral view with the body/action axis across frame.",
+ "front_view": "Front-facing normal-camera view where the contact plane faces camera.",
+ "front_three_quarter": "Front-offset normal-camera view.",
+ "top_or_low_special": "Overhead, high-downward, low-angle, or under-view special camera.",
+ "reject_or_unclear": "POV-like, mismatched, unclear, duplicate-only, or too mixed for cue drafting.",
+}
+
+SOURCE_FOLDER_ALIASES: dict[str, dict[str, str]] = {
+ "doggy - front view": {
+ "canonical_folder": "doggy - front view",
+ "alias_reason": "Duplicate source-folder display name; preserved separately from trailing-space source folder.",
+ },
+ "doggy - front view ": {
+ "canonical_folder": "doggy - front view",
+ "alias_reason": "Trailing-space source folder preserved exactly for path stability.",
+ },
+ "handjob - standing -low angle": {
+ "canonical_folder": "handjob - standing - low angle",
+ "alias_reason": "Spacing typo normalized for review metadata while preserving exact source path.",
+ },
+ "pussy licking - backv iew": {
+ "canonical_folder": "pussy licking - back view",
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path.",
+ },
+ "reverse cowgirl -pretzel": {
+ "canonical_folder": "reverse cowgirl - pretzel",
+ "alias_reason": "Missing-space folder label normalized for review metadata while preserving exact source path.",
+ },
+ "anus lickiing": {
+ "canonical_folder": "anus licking",
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path.",
+ },
+ "woman solo showing her hass - back view": {
+ "canonical_folder": "woman solo showing her ass - back view",
+ "alias_reason": "Folder-name typo normalized for review metadata while preserving exact source path.",
+ },
+}
+
+REVIEW_SELECTED_SUBVARIANTS: dict[str, list[dict[str, Any]]] = {
+ "cowgirl - back view - 3-4 angle": [
+ {
+ "variant_key": "normal_cowgirl_back_three_quarter",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "cowgirl - back view - 3-4 angle/0002.jpg",
+ "cowgirl - back view - 3-4 angle/0003_4.jpg",
+ "cowgirl - back view - 3-4 angle/0006.jpg",
+ "cowgirl - back view - 3-4 angle/0008_2.jpg",
+ "cowgirl - back view - 3-4 angle/16.jpg",
+ "cowgirl - back view - 3-4 angle/22.jpg",
+ "cowgirl - back view - 3-4 angle/41.jpg",
+ "cowgirl - back view - 3-4 angle/82.jpg",
+ "cowgirl - back view - 3-4 angle/90.jpg",
+ "cowgirl - back view - 3-4 angle/145.jpg",
+ "cowgirl - back view - 3-4 angle/160.jpg",
+ "cowgirl - back view - 3-4 angle/172.jpg",
+ "cowgirl - back view - 3-4 angle/225.jpg",
+ "cowgirl - back view - 3-4 angle/241_2.jpg",
+ "cowgirl - back view - 3-4 angle/248.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed the existing route as a broad but coherent "
+ "rear three-quarter cowgirl family. References were expanded rather than "
+ "splitting a near-duplicate route."
+ ),
+ }
+ ],
+ "cowgirl - side view": [
+ {
+ "variant_key": "normal_cowgirl_side_profile",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "cowgirl - side view/0003.jpg",
+ "cowgirl - side view/0004_2.jpg",
+ "cowgirl - side view/0005.jpg",
+ "cowgirl - side view/0007.jpg",
+ "cowgirl - side view/0009.jpg",
+ "cowgirl - side view/0011.jpg",
+ "cowgirl - side view/0015.jpg",
+ "cowgirl - side view/118.jpg",
+ "cowgirl - side view/195.jpg",
+ "cowgirl - side view/2.jpg",
+ "cowgirl - side view/200.jpg",
+ "cowgirl - side view/255.jpg",
+ "cowgirl - side view/280.jpg",
+ "cowgirl - side view/86.jpg",
+ "cowgirl - side view/86_2.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed the existing side-profile cowgirl route "
+ "as a coherent lateral camera family. References were expanded while "
+ "front-drifting, rear-drifting, and tight-crop examples remain outside "
+ "the selected subset."
+ ),
+ }
+ ],
+ "doggy on all four - back view - 3-4 angle": [
+ {
+ "variant_key": "normal_doggy_all_fours_back_three_quarter",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy on all four - back view - 3-4 angle/0002.jpg",
+ "doggy on all four - back view - 3-4 angle/0003.jpg",
+ "doggy on all four - back view - 3-4 angle/0013.jpg",
+ "doggy on all four - back view - 3-4 angle/0014.jpg",
+ "doggy on all four - back view - 3-4 angle/0019.jpg",
+ "doggy on all four - back view - 3-4 angle/0020.jpg",
+ "doggy on all four - back view - 3-4 angle/206.jpg",
+ "doggy on all four - back view - 3-4 angle/267.jpg",
+ "doggy on all four - back view - 3-4 angle/302.jpg",
+ "doggy on all four - back view - 3-4 angle/327.jpg",
+ "doggy on all four - back view - 3-4 angle/550_2.jpg",
+ "doggy on all four - back view - 3-4 angle/608_2.jpg",
+ "doggy on all four - back view - 3-4 angle/611.jpg",
+ "doggy on all four - back view - 3-4 angle/70.jpg",
+ "doggy on all four - back view - 3-4 angle/97.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed the existing all-fours rear three-quarter "
+ "route as a coherent camera family. References were expanded while low, "
+ "front-drifting, and tight-crop outliers remain outside the selected subset."
+ ),
+ }
+ ],
+ "doggy on all four - side view": [
+ {
+ "variant_key": "normal_doggy_all_fours_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "doggy on all four - side view/0020.jpg",
+ "doggy on all four - side view/192.jpg",
+ "doggy on all four - side view/2.jpg",
+ "doggy on all four - side view/204.jpg",
+ "doggy on all four - side view/254.jpg",
+ "doggy on all four - side view/254_2.jpg",
+ "doggy on all four - side view/254_3.jpg",
+ "doggy on all four - side view/271.jpg",
+ "doggy on all four - side view/271_2.jpg",
+ "doggy on all four - side view/362.jpg",
+ "doggy on all four - side view/495.jpg",
+ "doggy on all four - side view/556.jpg",
+ "doggy on all four - side view/86.jpg",
+ "doggy on all four - side view/99.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing selected side-view subset unchanged. "
+ "The remaining source images mix standing, bed, chair, close, and front-drifting "
+ "frames, so no additional references were promoted in this pass."
+ ),
+ }
+ ],
+ "doggy all four - front view": [
+ {
+ "variant_key": "normal_doggy_all_fours_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy all four - front view/0016.jpg",
+ "doggy all four - front view/48.jpg",
+ "doggy all four - front view/58.jpg",
+ "doggy all four - front view/64.jpg",
+ "doggy all four - front view/69.jpg",
+ "doggy all four - front view/77.jpg",
+ "doggy all four - front view/83.jpg",
+ "doggy all four - front view/97.jpg",
+ "doggy all four - front view/171.jpg",
+ "doggy all four - front view/197.jpg",
+ "doggy all four - front view/204.jpg",
+ "doggy all four - front view/221.jpg",
+ "doggy all four - front view/290.jpg",
+ "doggy all four - front view/596.jpg",
+ "doggy all four - front view/598.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed a repeated front all-fours normal-camera "
+ "family with face and forearms readable in front while the partner remains "
+ "behind. Side-drifting, seated, tight-close, and vertical-crop outliers "
+ "remain outside the selected subset."
+ ),
+ }
+ ],
+ "doggy - front view ": [
+ {
+ "variant_key": "normal_doggy_generic_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy - front view/11.jpg",
+ "doggy - front view/5.jpg",
+ "doggy - front view/6.jpg",
+ "doggy - front view /0003.jpg",
+ "doggy - front view /253.jpg",
+ "doggy - front view /262.jpg",
+ "doggy - front view /349.jpg",
+ "doggy - front view /354.jpg",
+ "doggy - front view /41.jpg",
+ "doggy - front view /49.jpg",
+ "doggy - front view /505.jpg",
+ "doggy - front view /537.jpg",
+ "doggy - front view /541.jpg",
+ "doggy - front view /567.jpg",
+ "doggy - front view /627.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review expanded the existing grouped generic front-view route "
+ "for the duplicate trailing-space source folder. The selected references "
+ "repeat a front-facing third-person doggy camera while one weak top/down "
+ "close crop remains outside the route."
+ ),
+ }
+ ],
+ "wand": [
+ {
+ "variant_key": "normal_wand_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/508.jpg",
+ "wand/75.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the folder as a mixed source-pool anchor. "
+ "The source images include useful front-close tool-contact material, but "
+ "side, portrait-close, and wider posture variation keep the full folder "
+ "from being one locked prompt-ready route."
+ ),
+ },
+ {
+ "variant_key": "normal_wand_front_close_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "wand/0005.jpg",
+ "wand/0015.jpg",
+ "wand/217.jpg",
+ "wand/532.jpg",
+ "wand/561.jpg",
+ "wand/611.jpg",
+ "wand/75.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review found a repeated front-close third-person family "
+ "where the contact plane is centered and the wand remains readable as one "
+ "continuous object. Side, portrait-close, and wider posture outliers remain "
+ "outside this selected subset."
+ ),
+ },
+ ],
+ "handjob standing - side view": [
+ {
+ "variant_key": "normal_handjob_standing_side_profile",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "handjob standing - side view/16.jpg",
+ "handjob standing - side view/105.jpg",
+ "handjob standing - side view/171.jpg",
+ "handjob standing - side view/174.jpg",
+ "handjob standing - side view/175.jpg",
+ "handjob standing - side view/305.jpg",
+ "handjob standing - side view/549.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing standing side-profile subset unchanged. "
+ "The remaining source images mix kneeling, seated, close portrait, near-front, "
+ "and oral-adjacent frames, so no additional references were promoted in this pass."
+ ),
+ }
+ ],
+ "penis worship": [
+ {
+ "variant_key": "normal_penis_worship_foreground_close_reference_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/0001.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing foreground-close source-pool anchor "
+ "unchanged. The remaining images are foreground-heavy and drift through front "
+ "or near-POV framing, so no prompt-ready expansion was promoted in this pass."
+ ),
+ },
+ {
+ "variant_key": "normal_penis_worship_top_view",
+ "review_bucket": "top_or_low_special",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/510.jpg",
+ "penis worship/517.jpg",
+ "penis worship/519.jpg",
+ "penis worship/520.jpg",
+ "penis worship/603_4.jpg",
+ "penis worship/607_2.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing user-selected top-view anchors "
+ "unchanged. The folder still needs cleaner repeated samples before this "
+ "orientation can become a pre-A/B route."
+ ),
+ },
+ {
+ "variant_key": "normal_penis_worship_side_view",
+ "review_bucket": "side_view",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/0003.jpg",
+ "penis worship/0004.jpg",
+ "penis worship/0008_2.jpg",
+ "penis worship/0016.jpg",
+ "penis worship/505.jpg",
+ "penis worship/566.jpg",
+ "penis worship/566_2.jpg",
+ "penis worship/618.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing user-selected side-view anchors "
+ "unchanged. The residual folder does not add a cleaner repeated lateral "
+ "camera subset in this pass."
+ ),
+ },
+ {
+ "variant_key": "normal_penis_worship_laying_partner_vertical_side_view",
+ "review_bucket": "side_view",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "penis worship/0002_2.jpg",
+ "penis worship/0006.jpg",
+ "penis worship/0011.jpg",
+ "penis worship/608.jpg",
+ "penis worship/609.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing laying-partner vertical side-view "
+ "anchors unchanged. The remaining frames stay too mixed for promotion."
+ ),
+ },
+ ],
+ "piledriver": [
+ {
+ "variant_key": "normal_piledriver_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "piledriver/0001.jpg",
+ "piledriver/0012_2.jpg",
+ "piledriver/617.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review preserved the existing mixed source-pool anchor. "
+ "The full folder remains too broad for one camera route because it mixes "
+ "tight top crops, side drifts, and selected high/front-down examples."
+ ),
+ },
+ {
+ "variant_key": "normal_piledriver_high_front_down_view",
+ "review_bucket": "top_or_low_special",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "piledriver/0002.jpg",
+ "piledriver/0004_2.jpg",
+ "piledriver/0005.jpg",
+ "piledriver/0006_2.jpg",
+ "piledriver/0009.jpg",
+ "piledriver/0009_2.jpg",
+ "piledriver/0012.jpg",
+ "piledriver/0013.jpg",
+ "piledriver/282.jpg",
+ "piledriver/317.jpg",
+ "piledriver/317_2.jpg",
+ "piledriver/318.jpg",
+ "piledriver/319.jpg",
+ "piledriver/494_2.jpg",
+ "piledriver/538.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated high/front-down piledriver "
+ "camera family where the folded body remains readable below the partner. "
+ "Tight top crops, side drifts, and mixed examples remain outside this route."
+ ),
+ },
+ ],
+ "blowjob - laying - front view": [
+ {
+ "variant_key": "normal_blowjob_laying_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "blowjob - laying - front view/0001.jpg",
+ "blowjob - laying - front view/0003.jpg",
+ "blowjob - laying - front view/0004.jpg",
+ "blowjob - laying - front view/0010.jpg",
+ "blowjob - laying - front view/0010_2.jpg",
+ "blowjob - laying - front view/0018.jpg",
+ "blowjob - laying - front view/48.jpg",
+ "blowjob - laying - front view/69.jpg",
+ "blowjob - laying - front view/91.jpg",
+ "blowjob - laying - front view/94.jpg",
+ "blowjob - laying - front view/122.jpg",
+ "blowjob - laying - front view/171.jpg",
+ "blowjob - laying - front view/184.jpg",
+ "blowjob - laying - front view/274.jpg",
+ "blowjob - laying - front view/512.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed the existing front-facing laying "
+ "oral-contact route as a broad but coherent third-person camera family. "
+ "Side-drifting, wide couch/bed, and weak close-crop examples remain outside "
+ "the selected subset."
+ ),
+ }
+ ],
+ "breast - touching - front view": [
+ {
+ "variant_key": "normal_breast_contact_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breast - touching - front view/0006.jpg",
+ "breast - touching - front view/0006_2.jpg",
+ "breast - touching - front view/12.jpg",
+ "breast - touching - front view/0014.jpg",
+ "breast - touching - front view/0015.jpg",
+ "breast - touching - front view/16.jpg",
+ "breast - touching - front view/56.jpg",
+ "breast - touching - front view/72.jpg",
+ "breast - touching - front view/183.jpg",
+ "breast - touching - front view/220.jpg",
+ "breast - touching - front view/246.jpg",
+ "breast - touching - front view/248.jpg",
+ "breast - touching - front view/281.jpg",
+ "breast - touching - front view/348.jpg",
+ "breast - touching - front view/361.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed the existing front breast-contact "
+ "route as a coherent third-person camera family across standing, "
+ "seated, and kneeling contexts. Side-drifting, costume/standing "
+ "outliers, and weak-contact crops remain outside the selected subset."
+ ),
+ }
+ ],
+ "ballsucking - standing": [
+ {
+ "variant_key": "normal_ballsucking_standing_partner_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "ballsucking - standing/0017.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/624.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the existing mixed source-pool anchor. "
+ "The standing-partner context is useful, but the full folder still mixes "
+ "close, side, front, and one water-close outlier; the outlier is anchored "
+ "here rather than in the pre-A/B split."
+ ),
+ },
+ {
+ "variant_key": "normal_ballsucking_standing_low_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "ballsucking - standing/0014.jpg",
+ "ballsucking - standing/130.jpg",
+ "ballsucking - standing/137.jpg",
+ "ballsucking - standing/207.jpg",
+ "ballsucking - standing/222.jpg",
+ "ballsucking - standing/252.jpg",
+ "ballsucking - standing/333.jpg",
+ "ballsucking - standing/34.jpg",
+ "ballsucking - standing/540.jpg",
+ "ballsucking - standing/589.jpg",
+ "ballsucking - standing/624.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review found a repeated standing-partner, low-performer "
+ "side or near-side camera family. The water-close crop remains outside "
+ "this selected subset."
+ ),
+ },
+ ],
+ "face sitting": [
+ {
+ "variant_key": "normal_face_sitting_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "face sitting/0005.jpg",
+ "face sitting/0021.jpg",
+ "face sitting/354.jpg",
+ "face sitting/533.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the full folder as a mixed source-pool "
+ "anchor. Three samples are front or near-front face-sitting references, "
+ "while one rear/back-view outlier makes the folder too mixed and thin "
+ "for a selected pre-A/B route."
+ ),
+ },
+ ],
+ "pussy licking - backv iew": [
+ {
+ "variant_key": "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy licking - backv iew/220.jpg",
+ "pussy licking - backv iew/567.jpg",
+ "pussy licking - backv iew/614.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the full folder as a mixed source-pool "
+ "anchor. The folder label says back view, but the reviewed images read "
+ "as elevated front or high-oblique third-person oral-contact references; "
+ "the three-image set is too thin for a selected pre-A/B route."
+ ),
+ },
+ ],
+ "removing pants": [
+ {
+ "variant_key": "normal_removing_pants_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "removing pants/0005.jpg",
+ "removing pants/0006.jpg",
+ "removing pants/0016.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the full folder as a mixed source-pool "
+ "anchor. The three samples are near-duplicate close action references "
+ "with strong foreground crop, so they should not become a locked "
+ "normal-camera route without more matched, wider non-POV samples."
+ ),
+ },
+ ],
+ "ballsucking - laying": [
+ {
+ "variant_key": "normal_ballsucking_laying_close_reference_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "ballsucking - laying/271.jpg",
+ "ballsucking - laying/591.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review records the existing two-sample laying close-reference "
+ "source pool as needs_samples. The folder is fully represented but too thin "
+ "and crop-variable for a selected pre-A/B route."
+ ),
+ },
+ ],
+ "rimjob": [
+ {
+ "variant_key": "normal_rimjob_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "rimjob/0003.jpg",
+ "rimjob/0010.jpg",
+ "rimjob/0018.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the full folder as a mixed source-pool "
+ "anchor. The three samples mix close side/back oral-contact framing "
+ "with wider kneeling context and are too thin for a selected pre-A/B route."
+ ),
+ },
+ ],
+ "footjob": [
+ {
+ "variant_key": "normal_footjob_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "footjob/265.jpg",
+ "footjob/265_2.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the full folder as a mixed source-pool "
+ "anchor. The two samples share the foot-contact action but vary between "
+ "seated front context and tighter crop, so more matched samples are needed."
+ ),
+ },
+ ],
+ "reverse cowgirl - leg up": [
+ {
+ "variant_key": "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl - leg up/266.jpg",
+ "reverse cowgirl - leg up/267.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved this as a two-sample leg-up posture "
+ "source pool. The folder is useful cue evidence but too thin for a "
+ "selected normal-camera route."
+ ),
+ },
+ ],
+ "reverse cowgirl -pretzel": [
+ {
+ "variant_key": "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl -pretzel/0007.jpg",
+ "reverse cowgirl -pretzel/617.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved this as a two-sample pretzel-posture "
+ "source pool. The folder is useful cue evidence but too thin for a "
+ "selected normal-camera route."
+ ),
+ },
+ ],
+ "fist": [
+ {
+ "variant_key": "normal_fist_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "fist/337.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one available manual-contact "
+ "reference as coverage evidence only. A single image cannot define "
+ "a stable normal-camera route."
+ ),
+ },
+ ],
+ "anal cowgirl": [
+ {
+ "variant_key": "normal_anal_cowgirl_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["anal cowgirl/49.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one available sample as coverage "
+ "evidence only. A single image cannot define a stable normal-camera route."
+ ),
+ },
+ ],
+ "anal doggy - side view": [
+ {
+ "variant_key": "normal_anal_doggy_side_view_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["anal doggy - side view/16.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one side-view sample as coverage "
+ "evidence only. The label is plausible, but a single image is too thin "
+ "for a selected pre-A/B route."
+ ),
+ },
+ ],
+ "anal fuck from behind laying - back view - 3-4 angle": [
+ {
+ "variant_key": "normal_anal_laying_back_three_quarter_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["anal fuck from behind laying - back view - 3-4 angle/14.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one rear three-quarter sample as "
+ "coverage evidence only. A single image cannot define a stable "
+ "normal-camera route."
+ ),
+ },
+ ],
+ "anal reverse congress": [
+ {
+ "variant_key": "normal_anal_reverse_congress_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["anal reverse congress/160.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one available sample as coverage "
+ "evidence only. A single image cannot define a stable normal-camera route."
+ ),
+ },
+ ],
+ "anus lickiing": [
+ {
+ "variant_key": "normal_anus_licking_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["anus lickiing/0004.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one available sample as coverage "
+ "evidence only. A single image cannot define a stable normal-camera route."
+ ),
+ },
+ ],
+ "blowjob laying - back view - 3-4 angle": [
+ {
+ "variant_key": "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["blowjob laying - back view - 3-4 angle/14.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one rear-offset laying oral-contact "
+ "sample as coverage evidence only. A single image cannot define a stable "
+ "normal-camera route."
+ ),
+ },
+ ],
+ "doggy press - back side": [
+ {
+ "variant_key": "normal_doggy_press_back_side_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["doggy press - back side/0011.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one back-side doggy-press sample as "
+ "coverage evidence only. A single image cannot define a stable "
+ "normal-camera route."
+ ),
+ },
+ ],
+ "face sitting - front view": [
+ {
+ "variant_key": "normal_face_sitting_front_view_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["face sitting - front view/56.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one front-view face-sitting sample "
+ "as coverage evidence only. A single image is too thin for a selected "
+ "pre-A/B route."
+ ),
+ },
+ ],
+ "handjob - standing -low angle": [
+ {
+ "variant_key": "normal_handjob_standing_low_angle_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["handjob - standing -low angle/552.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one standing low-angle manual-contact "
+ "sample as coverage evidence only. A single image is too thin for a "
+ "selected pre-A/B route."
+ ),
+ },
+ ],
+ "pussy licking leg up - back view - 3-4 angle": [
+ {
+ "variant_key": "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["pussy licking leg up - back view - 3-4 angle/0009.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one leg-up rear-offset oral-contact "
+ "sample as coverage evidence only. A single image cannot define a stable "
+ "normal-camera route."
+ ),
+ },
+ ],
+ "pussy licking standing woman": [
+ {
+ "variant_key": "normal_pussy_licking_standing_woman_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["pussy licking standing woman/13.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one standing-woman oral-contact "
+ "sample as coverage evidence only. A single image cannot define a stable "
+ "normal-camera route."
+ ),
+ },
+ ],
+ "under desk": [
+ {
+ "variant_key": "normal_under_desk_single_reference_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": ["under desk/347.jpg"],
+ "evidence_notes": (
+ "Contact-sheet review preserved the one under-desk context sample as "
+ "coverage evidence only. A single image cannot define a stable "
+ "normal-camera route."
+ ),
+ },
+ ],
+ "pretzel": [
+ {
+ "variant_key": "normal_pretzel_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pretzel/0001.jpg",
+ "pretzel/0006.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review records the existing two-sample pretzel mixed-camera "
+ "source pool as needs_samples. The folder is fully represented but too thin "
+ "for a selected pre-A/B route."
+ ),
+ },
+ ],
+ "woman ass exposed": [
+ {
+ "variant_key": "normal_display_rear_exposed_body_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "woman ass exposed/40.jpg",
+ "woman ass exposed/49.jpg",
+ "woman ass exposed/52.jpg",
+ "woman ass exposed/58.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review records the existing rear exposed-body source pool "
+ "with all four folder images. The folder is fully represented but remains "
+ "too thin and camera-variable for a selected pre-A/B route."
+ ),
+ },
+ ],
+ "reverse congress - front view": [
+ {
+ "variant_key": "normal_reverse_congress_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse congress - front view/0012.jpg",
+ "reverse congress - front view/0012_2.jpg",
+ "reverse congress - front view/0013.jpg",
+ "reverse congress - front view/61.jpg",
+ "reverse congress - front view/105.jpg",
+ "reverse congress - front view/105_2.jpg",
+ "reverse congress - front view/122.jpg",
+ "reverse congress - front view/183.jpg",
+ "reverse congress - front view/189.jpg",
+ "reverse congress - front view/289.jpg",
+ "reverse congress - front view/289_2.jpg",
+ "reverse congress - front view/291.jpg",
+ "reverse congress - front view/542.jpg",
+ "reverse congress - front view/542_2.jpg",
+ "reverse congress - front view/563_2.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed the existing front-facing reverse-congress "
+ "route as a coherent lifted/front camera family. Tight low crops, "
+ "side/bed drift, and seated-only outliers remain outside the selected subset."
+ ),
+ }
+ ],
+ "boobjob": [
+ {
+ "variant_key": "normal_boobjob_front_close_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/259.jpg",
+ "boobjob/91.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review preserved the existing mixed source-pool anchor. "
+ "The full folder includes useful front-close material, but side, standing, "
+ "foreground-heavy, and downward/crop-drifting examples keep it from being "
+ "one locked prompt-ready camera route."
+ ),
+ },
+ {
+ "variant_key": "normal_boobjob_front_close_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "boobjob/0017.jpg",
+ "boobjob/0018_2.jpg",
+ "boobjob/141.jpg",
+ "boobjob/186.jpg",
+ "boobjob/218.jpg",
+ "boobjob/259.jpg",
+ "boobjob/327.jpg",
+ "boobjob/588.jpg",
+ "boobjob/592.jpg",
+ "boobjob/598.jpg",
+ "boobjob/615.jpg",
+ "boobjob/618.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated front-close third-person family "
+ "where face or upper body remains readable and the contact action stays "
+ "centered. Side, standing, foreground-heavy, and downward/crop-drifting "
+ "outliers remain outside this selected subset."
+ ),
+ },
+ ],
+ "fingering": [
+ {
+ "variant_key": "normal_fingering_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "fingering/0001.jpg",
+ "fingering/195.jpg",
+ "fingering/603.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the folder as a mixed source-pool anchor. "
+ "The images include useful manual-contact examples, but upright, standing, "
+ "side, and oral-adjacent frames keep the full folder from being one locked "
+ "prompt-ready route."
+ ),
+ },
+ {
+ "variant_key": "normal_fingering_reclined_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "fingering/0004.jpg",
+ "fingering/0006.jpg",
+ "fingering/0013.jpg",
+ "fingering/0015.jpg",
+ "fingering/39.jpg",
+ "fingering/50.jpg",
+ "fingering/132.jpg",
+ "fingering/133.jpg",
+ "fingering/279.jpg",
+ "fingering/603.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review found a repeated reclined front-view manual-contact "
+ "family where the camera faces the open-thigh contact plane and face or "
+ "upper body remains readable. Upright chair, standing, side, and stronger "
+ "oral-adjacent outliers remain outside this selected subset."
+ ),
+ },
+ ],
+ "69": [
+ {
+ "variant_key": "normal_sixty_nine_mixed_camera_folder_pool",
+ "review_bucket": "reject_or_unclear",
+ "status": "needs_samples",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "69/0002.jpg",
+ "69/196.jpg",
+ "69/624.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review preserved the folder as a mixed source-pool anchor. "
+ "The source images include useful mutual oral-contact examples, but "
+ "side/downward, upright seated, and wider room-context frames keep the "
+ "full folder from being one locked prompt-ready route."
+ ),
+ },
+ {
+ "variant_key": "normal_sixty_nine_front_close_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "69/0002.jpg",
+ "69/0008.jpg",
+ "69/0016.jpg",
+ "69/19.jpg",
+ "69/166.jpg",
+ "69/292.jpg",
+ "69/624.jpg",
+ ],
+ "evidence_notes": (
+ "Contact-sheet review found a repeated front-close third-person family "
+ "where the upper subject faces camera and the opposed oral-contact pose "
+ "stays centered. Side/downward, upright seated, and wider room-context "
+ "outliers remain outside this selected subset."
+ ),
+ },
+ ],
+ "breast sucking - side view": [
+ {
+ "variant_key": "normal_breast_sucking_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breast sucking - side view/0003.jpg",
+ "breast sucking - side view/0005.jpg",
+ "breast sucking - side view/0007.jpg",
+ "breast sucking - side view/0009.jpg",
+ "breast sucking - side view/0010_2.jpg",
+ "breast sucking - side view/182.jpg",
+ "breast sucking - side view/186.jpg",
+ "breast sucking - side view/218.jpg",
+ "breast sucking - side view/234.jpg",
+ "breast sucking - side view/244.jpg",
+ "breast sucking - side view/257.jpg",
+ "breast sucking - side view/267.jpg",
+ "breast sucking - side view/269.jpg",
+ "breast sucking - side view/356.jpg",
+ "breast sucking - side view/99.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed a repeated side/near-side mouth-contact "
+ "family across standing and seated contexts. References were expanded "
+ "while front-only, hand-touch-only, and weak-contact examples remain outside "
+ "the selected subset."
+ ),
+ }
+ ],
+ "fuck from front standing - side view": [
+ {
+ "variant_key": "normal_standing_from_front_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "fuck from front standing - side view/0001.jpg",
+ "fuck from front standing - side view/252.jpg",
+ "fuck from front standing - side view/73.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing selected standing from-front side-view "
+ "subset unchanged. The remaining source images include usable side/near-side "
+ "frames, but too many drift into suspended/lifted, close-crop, couch, or "
+ "front-heavy framing for a safe reference expansion."
+ ),
+ }
+ ],
+ "fuck from behind standing - woman backside - side view": [
+ {
+ "variant_key": "normal_doggy_standing_backside_side_view_folder_pool",
+ "review_bucket": "side_view",
+ "status": "needs_samples",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "fuck from behind standing - woman backside - side view/0008.jpg",
+ "fuck from behind standing - woman backside - side view/288.jpg",
+ "fuck from behind standing - woman backside - side view/68_2.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing folder-pool anchor unchanged. "
+ "The folder has standing side/rear-lateral material, but the unselected "
+ "images mix lifted, seated, bed/couch, front-drifting, and portrait-like "
+ "frames rather than a cleaner prompt-ready split."
+ ),
+ },
+ {
+ "variant_key": "normal_doggy_standing_backside_side_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-06-29",
+ "reference_images": [
+ "fuck from behind standing - woman backside - side view/0010.jpg",
+ "fuck from behind standing - woman backside - side view/0012.jpg",
+ "fuck from behind standing - woman backside - side view/186.jpg",
+ "fuck from behind standing - woman backside - side view/186_2.jpg",
+ "fuck from behind standing - woman backside - side view/196.jpg",
+ "fuck from behind standing - woman backside - side view/257.jpg",
+ "fuck from behind standing - woman backside - side view/286.jpg",
+ "fuck from behind standing - woman backside - side view/288.jpg",
+ "fuck from behind standing - woman backside - side view/343.jpg",
+ "fuck from behind standing - woman backside - side view/343_2.jpg",
+ "fuck from behind standing - woman backside - side view/343_3.jpg",
+ "fuck from behind standing - woman backside - side view/345.jpg",
+ "fuck from behind standing - woman backside - side view/345_2.jpg",
+ "fuck from behind standing - woman backside - side view/542.jpg",
+ "fuck from behind standing - woman backside - side view/68.jpg",
+ "fuck from behind standing - woman backside - side view/68_2.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review kept the existing standing backside side-view route "
+ "unchanged. It already has a coherent reviewed subset; remaining images "
+ "do not add a distinct repeated camera family in this pass."
+ ),
+ },
+ ],
+ "doggy - back view - 3-4 angle": [
+ {
+ "variant_key": "normal_doggy_generic_back_three_quarter",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "doggy - back view - 3-4 angle/0002.jpg",
+ "doggy - back view - 3-4 angle/0002_2.jpg",
+ "doggy - back view - 3-4 angle/0008_2.jpg",
+ "doggy - back view - 3-4 angle/0013.jpg",
+ "doggy - back view - 3-4 angle/0015.jpg",
+ "doggy - back view - 3-4 angle/0017.jpg",
+ "doggy - back view - 3-4 angle/0021.jpg",
+ "doggy - back view - 3-4 angle/132.jpg",
+ "doggy - back view - 3-4 angle/145.jpg",
+ "doggy - back view - 3-4 angle/183.jpg",
+ "doggy - back view - 3-4 angle/185.jpg",
+ "doggy - back view - 3-4 angle/227.jpg",
+ "doggy - back view - 3-4 angle/39.jpg",
+ "doggy - back view - 3-4 angle/41.jpg",
+ "doggy - back view - 3-4 angle/77.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review confirmed the existing generic rear three-quarter "
+ "route as a coherent back-offset camera family. References were expanded "
+ "while low/close and laying-drift examples remain outside the selected subset."
+ ),
+ }
+ ],
+ "woman solo showing her hass - back view": [
+ {
+ "variant_key": "normal_display_rear_body_standing_back_view",
+ "review_bucket": "back_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "woman solo showing her hass - back view/0002.jpg",
+ "woman solo showing her hass - back view/0006.jpg",
+ "woman solo showing her hass - back view/0006_3.jpg",
+ "woman solo showing her hass - back view/0007_2.jpg",
+ "woman solo showing her hass - back view/173.jpg",
+ "woman solo showing her hass - back view/197.jpg",
+ "woman solo showing her hass - back view/230.jpg",
+ "woman solo showing her hass - back view/235.jpg",
+ "woman solo showing her hass - back view/287.jpg",
+ "woman solo showing her hass - back view/293.jpg",
+ "woman solo showing her hass - back view/300.jpg",
+ "woman solo showing her hass - back view/321.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated upright standing rear-body display "
+ "family. Seated, kneeling, side-leaning, and close-crop rear examples remain "
+ "in the broad source pool or existing rear-body route."
+ ),
+ }
+ ],
+ "couple kissing": [
+ {
+ "variant_key": "normal_couple_kissing_upright_side_profile",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "couple kissing/0001_2.jpg",
+ "couple kissing/0003.jpg",
+ "couple kissing/0005_2.jpg",
+ "couple kissing/16.jpg",
+ "couple kissing/159.jpg",
+ "couple kissing/247.jpg",
+ "couple kissing/247_2.jpg",
+ "couple kissing/253.jpg",
+ "couple kissing/253_2.jpg",
+ "couple kissing/322.jpg",
+ "couple kissing/354.jpg",
+ "couple kissing/379.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated upright side-profile kissing family. "
+ "Seated, bed, close-crop, and front-facing examples remain in the mixed source pool."
+ ),
+ }
+ ],
+ "anal random": [
+ {
+ "variant_key": "normal_anal_random_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal random/0005.jpg",
+ "anal random/0006.jpg",
+ "anal random/0015.jpg",
+ "anal random/160_3.jpg",
+ "anal random/188.jpg",
+ "anal random/347_3.jpg",
+ "anal random/347_10.jpg",
+ "anal random/347_11.jpg",
+ "anal random/366.jpg",
+ "anal random/366_3.jpg",
+ "anal random/366_4.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated front-view anal camera family. "
+ "Side, rear, standing, and overhead-like frames remain in the mixed source pool."
+ ),
+ },
+ {
+ "variant_key": "normal_anal_random_back_side_offset_view",
+ "review_bucket": "back_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "anal random/0003.jpg",
+ "anal random/0003_3.jpg",
+ "anal random/0010.jpg",
+ "anal random/0013.jpg",
+ "anal random/119.jpg",
+ "anal random/119_2.jpg",
+ "anal random/119_3.jpg",
+ "anal random/124_2.jpg",
+ "anal random/124_8.jpg",
+ "anal random/347_4.jpg",
+ "anal random/347_5.jpg",
+ "anal random/347_8.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated rear/side-offset anal camera family "
+ "with third-person framing. Front-view, standing, overhead-like, and tight "
+ "close-crop frames remain in the mixed source pool."
+ ),
+ }
+ ],
+ "breasts exposed": [
+ {
+ "variant_key": "normal_display_breasts_exposed_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/0001_3.jpg",
+ "breasts exposed/0006.jpg",
+ "breasts exposed/0008_2.jpg",
+ "breasts exposed/0011_2.jpg",
+ "breasts exposed/141.jpg",
+ "breasts exposed/181.jpg",
+ "breasts exposed/263.jpg",
+ "breasts exposed/302.jpg",
+ "breasts exposed/327.jpg",
+ "breasts exposed/346.jpg",
+ "breasts exposed/594_2.jpg",
+ "breasts exposed/624.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated camera-facing full-body display family "
+ "inside the broad mixed source folder. Seated, side-offset, and tight "
+ "upper-body crops stay separate from this selected subset."
+ ),
+ },
+ {
+ "variant_key": "normal_display_breasts_exposed_side_offset_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/83.jpg",
+ "breasts exposed/196.jpg",
+ "breasts exposed/235.jpg",
+ "breasts exposed/267.jpg",
+ "breasts exposed/271.jpg",
+ "breasts exposed/305.jpg",
+ "breasts exposed/353.jpg",
+ "breasts exposed/373.jpg",
+ "breasts exposed/590.jpg",
+ "breasts exposed/590_2.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated side-offset display family with lateral "
+ "torso orientation and normal third-person framing."
+ ),
+ },
+ {
+ "variant_key": "normal_display_breasts_exposed_standing_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/0002_2.jpg",
+ "breasts exposed/0003.jpg",
+ "breasts exposed/49.jpg",
+ "breasts exposed/138.jpg",
+ "breasts exposed/155.jpg",
+ "breasts exposed/169.jpg",
+ "breasts exposed/190.jpg",
+ "breasts exposed/230.jpg",
+ "breasts exposed/242.jpg",
+ "breasts exposed/302_2.jpg",
+ "breasts exposed/332.jpg",
+ "breasts exposed/368.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated upright standing front-view display "
+ "family. Seated, kneeling, side-offset, and tight crop examples remain in the "
+ "mixed source pool."
+ ),
+ },
+ {
+ "variant_key": "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "breasts exposed/0001_2.jpg",
+ "breasts exposed/0007_2.jpg",
+ "breasts exposed/101_2.jpg",
+ "breasts exposed/154.jpg",
+ "breasts exposed/165.jpg",
+ "breasts exposed/173.jpg",
+ "breasts exposed/259.jpg",
+ "breasts exposed/285.jpg",
+ "breasts exposed/293.jpg",
+ "breasts exposed/322.jpg",
+ "breasts exposed/328.jpg",
+ "breasts exposed/523.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated seated or kneeling front-view display "
+ "family. Standing, side-offset, couple/action, and tight crop examples remain "
+ "outside this selected subset."
+ ),
+ },
+ ],
+ "pussy spread": [
+ {
+ "variant_key": "normal_display_front_open_leg_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy spread/0002_3.jpg",
+ "pussy spread/0003_4.jpg",
+ "pussy spread/0012.jpg",
+ "pussy spread/0015.jpg",
+ "pussy spread/0017.jpg",
+ "pussy spread/80.jpg",
+ "pussy spread/130.jpg",
+ "pussy spread/153.jpg",
+ "pussy spread/296.jpg",
+ "pussy spread/297.jpg",
+ "pussy spread/328.jpg",
+ "pussy spread/367.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated camera-facing front-view display family "
+ "with enough body and room context to stay separate from tight low-close crops."
+ ),
+ },
+ {
+ "variant_key": "normal_display_front_open_leg_low_close",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy spread/1.jpg",
+ "pussy spread/1_2.jpg",
+ "pussy spread/0003.jpg",
+ "pussy spread/0003_2.jpg",
+ "pussy spread/0003_3.jpg",
+ "pussy spread/0010_2.jpg",
+ "pussy spread/0016.jpg",
+ "pussy spread/0016_2.jpg",
+ "pussy spread/41.jpg",
+ "pussy spread/201.jpg",
+ "pussy spread/217_2.jpg",
+ "pussy spread/223.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated low-close front-view display family "
+ "where the foreground body plane dominates the composition."
+ ),
+ },
+ {
+ "variant_key": "normal_display_front_open_leg_side_offset_view",
+ "review_bucket": "side_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "pussy spread/0007.jpg",
+ "pussy spread/0008.jpg",
+ "pussy spread/73.jpg",
+ "pussy spread/121.jpg",
+ "pussy spread/134.jpg",
+ "pussy spread/154_3.jpg",
+ "pussy spread/163.jpg",
+ "pussy spread/175.jpg",
+ "pussy spread/256.jpg",
+ "pussy spread/308.jpg",
+ "pussy spread/311.jpg",
+ "pussy spread/368.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated side-offset seated or reclined "
+ "open-leg display family. Straight front, low-close, and one-off crop "
+ "variants remain in the mixed source pool."
+ ),
+ },
+ ],
+ "reverse cowgirl": [
+ {
+ "variant_key": "normal_reverse_cowgirl_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl/0001.jpg",
+ "reverse cowgirl/0004.jpg",
+ "reverse cowgirl/0005_4.jpg",
+ "reverse cowgirl/0014.jpg",
+ "reverse cowgirl/79.jpg",
+ "reverse cowgirl/82.jpg",
+ "reverse cowgirl/145.jpg",
+ "reverse cowgirl/260.jpg",
+ "reverse cowgirl/288.jpg",
+ "reverse cowgirl/319.jpg",
+ "reverse cowgirl/527.jpg",
+ "reverse cowgirl/608.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated front-facing reverse-cowgirl camera family "
+ "across the large mixed source folder. Rear and side labels remain covered "
+ "by the existing dedicated source folders until cleaner selected subsets are chosen."
+ ),
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_front_three_quarter",
+ "review_bucket": "front_three_quarter",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl/153.jpg",
+ "reverse cowgirl/153_2.jpg",
+ "reverse cowgirl/239_2.jpg",
+ "reverse cowgirl/239_3.jpg",
+ "reverse cowgirl/241.jpg",
+ "reverse cowgirl/241_2.jpg",
+ "reverse cowgirl/241_3.jpg",
+ "reverse cowgirl/257.jpg",
+ "reverse cowgirl/287.jpg",
+ "reverse cowgirl/323_2.jpg",
+ "reverse cowgirl/609.jpg",
+ "reverse cowgirl/609_2.jpg",
+ ],
+ "evidence_notes": (
+ "Paged review found a repeated front-offset reverse-cowgirl camera family "
+ "where the woman's body turns partly toward camera while the partner remains "
+ "visible below or behind her in third person."
+ ),
+ },
+ {
+ "variant_key": "normal_reverse_cowgirl_low_close_front_view",
+ "review_bucket": "front_view",
+ "status": "pre_ab_candidate",
+ "selection_date": "2026-07-02",
+ "reference_images": [
+ "reverse cowgirl/0009.jpg",
+ "reverse cowgirl/0009_2.jpg",
+ "reverse cowgirl/0009_3.jpg",
+ "reverse cowgirl/0015.jpg",
+ "reverse cowgirl/0015_2.jpg",
+ "reverse cowgirl/0016_2.jpg",
+ "reverse cowgirl/170.jpg",
+ "reverse cowgirl/261.jpg",
+ "reverse cowgirl/332.jpg",
+ "reverse cowgirl/332_2.jpg",
+ "reverse cowgirl/551.jpg",
+ "reverse cowgirl/618.jpg",
+ ],
+ "evidence_notes": (
+ "Residual-pool review found a repeated low-close front-view reverse-cowgirl "
+ "family where the foreground contact plane dominates while the subject remains "
+ "visible in third-person framing. Wider room-context front views stay in the "
+ "existing front-view subset."
+ ),
+ }
+ ]
+}
+
+ACCEPTANCE_GATES: tuple[str, ...] = (
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match",
+)
+
+GATE_DESCRIPTIONS: dict[str, str] = {
+ "camera_geometry": "Camera angle, elevation, side/front/back orientation, and framing match the atlas family.",
+ "pose_ownership": "The visible actors own the pose correctly, with no POV body cues leaking into normal-camera framing.",
+ "workspace_continuity": "Workspace/lounge details support the camera angle instead of fighting the pose.",
+ "clothing_visibility": "Clothing cues stay attached to the intended visible subject and only describe garments visible in this pose.",
+ "subject_identity": "The same woman identity, face, hair, eyes, and body type remain stable across fixed-seed variants.",
+ "body_proportion_control": "Penis/body proportions and limb lengths stay plausible for the selected atlas framing.",
+ "prompt_noise": "Prompt text uses direct visual cues, with option, negative, and instruction-like wording removed from positive text.",
+ "atlas_reference_match": "The generated frame can be matched back to the selected atlas references for this variant.",
+}
+
+PROMPT_NOISE_PATTERNS: tuple[tuple[str, re.Pattern[str]], ...] = (
+ ("option_word", re.compile(r"\b(?:may|optionally|either|or)\b", flags=re.IGNORECASE)),
+ ("negative_word", re.compile(r"\b(?:without|never|no|not)\b", flags=re.IGNORECASE)),
+ ("contrast_wording", re.compile(r"\brather than\b", flags=re.IGNORECASE)),
+ ("instruction_wording", re.compile(r"\b(?:avoid|exclude|prevent|forbid|should|must)\b", flags=re.IGNORECASE)),
+)
+
+
+def _load_json(path: Path) -> dict[str, Any]:
+ return json.loads(path.read_text(encoding="utf-8"))
+
+
+def load_atlas() -> dict[str, Any]:
+ return _load_json(CATALOG_DIR / "normal_camera_atlas.json")
+
+
+def load_variants() -> dict[str, Any]:
+ return _load_json(CATALOG_DIR / "normal_camera_variants.json")
+
+
+def _limited(items: list[dict[str, Any]], limit: int | None) -> list[dict[str, Any]]:
+ if limit is None:
+ return items
+ if limit < 0:
+ raise ValueError("limit must be non-negative")
+ return items[:limit]
+
+
+def _natural_sort_key(text: str) -> list[int | str]:
+ return [int(part) if part.isdigit() else part.lower() for part in re.split(r"(\d+)", text)]
+
+
+def _safe_artifact_stem(text: str) -> str:
+ stem = re.sub(r"[^a-z0-9]+", "_", text.lower()).strip("_")
+ return stem or "folder"
+
+
+def _folder_alias(folder_name: str) -> dict[str, Any]:
+ alias = SOURCE_FOLDER_ALIASES.get(folder_name) or {}
+ canonical_folder = str(alias.get("canonical_folder") or folder_name)
+ return {
+ "exact_source_folder": folder_name,
+ "canonical_folder": canonical_folder,
+ "canonical_key": _safe_artifact_stem(canonical_folder),
+ "alias_applied": bool(alias),
+ "alias_reason": str(alias.get("alias_reason") or ""),
+ }
+
+
+def _atlas_folder_rows() -> list[dict[str, Any]]:
+ return list(load_atlas().get("folders") or [])
+
+
+def _atlas_folder_row(folder_name: str) -> dict[str, Any]:
+ for folder in _atlas_folder_rows():
+ if folder.get("folder") == folder_name:
+ return folder
+ raise KeyError(f"unknown normal-camera atlas folder: {folder_name}")
+
+
+def _variant_reference_map() -> dict[str, set[str]]:
+ refs_by_folder: dict[str, set[str]] = {}
+ for variant in load_variants().get("variants") or []:
+ for ref in _reference_images(variant):
+ folder = ref.rsplit("/", 1)[0]
+ refs_by_folder.setdefault(folder, set()).add(ref)
+ return refs_by_folder
+
+
+def _covered_variant_folders() -> set[str]:
+ covered: set[str] = set()
+ for variant in load_variants().get("variants") or []:
+ for folder in variant.get("atlas_folders") or []:
+ folder_text = str(folder)
+ if folder_text.strip():
+ covered.add(folder_text)
+ return covered
+
+
+def _folder_image_refs(folder_name: str) -> list[str]:
+ atlas_root = Path(str(load_atlas().get("atlas_root") or ""))
+ source_dir = atlas_root / folder_name
+ if source_dir.is_dir():
+ image_names = sorted(
+ (path.name for path in source_dir.iterdir() if path.is_file() and path.suffix.lower() == ".jpg"),
+ key=_natural_sort_key,
+ )
+ return [f"{folder_name}/{name}" for name in image_names]
+ return [str(ref) for ref in _atlas_folder_row(folder_name).get("reference_images") or [] if str(ref).strip()]
+
+
+def _variant_rows(status: str | None = None, limit: int | None = None) -> list[dict[str, Any]]:
+ variants = load_variants().get("variants") or []
+ rows = [variant for variant in variants if not status or variant.get("status") == status]
+ return _limited(rows, limit)
+
+
+def _reference_images(variant: dict[str, Any]) -> list[str]:
+ return [str(ref) for ref in variant.get("reference_images") or [] if str(ref).strip()]
+
+
+def _source_prompt_cues(variant: dict[str, Any]) -> list[str]:
+ return [str(cue).strip() for cue in variant.get("prompt_cues") or [] if str(cue).strip()]
+
+
+def _avoid_cues(variant: dict[str, Any]) -> list[str]:
+ return [str(cue).strip() for cue in variant.get("avoid_cues") or [] if str(cue).strip()]
+
+
+def _prompt_noise(cue: str) -> list[str]:
+ return [name for name, pattern in PROMPT_NOISE_PATTERNS if pattern.search(cue)]
+
+
+def _prompt_cue_review(variant: dict[str, Any]) -> dict[str, Any]:
+ positive_cues: list[str] = []
+ blocked_cues: list[dict[str, Any]] = []
+ for cue in _source_prompt_cues(variant):
+ issues = _prompt_noise(cue)
+ if issues:
+ blocked_cues.append({"cue": cue, "issues": issues})
+ else:
+ positive_cues.append(cue)
+ state = "prompt_ready" if positive_cues and not blocked_cues else "needs_prompt_cleanup"
+ return {
+ "state": state,
+ "positive_prompt_cues": positive_cues,
+ "blocked_prompt_cues": blocked_cues,
+ "prompt_text": ". ".join(positive_cues) + ("." if positive_cues else ""),
+ }
+
+
+def _unused_pool_suggested_action(folder: dict[str, Any], covered_by_variants: bool) -> str:
+ if not covered_by_variants:
+ return "review_contact_sheet"
+ if folder.get("camera_view") == "mixed_or_unspecified" or folder.get("catalog_status") == "action_reference_only":
+ return "split_or_expand_selected_reference_subvariants"
+ return "mine_remaining_reference_images"
+
+
+def build_unused_pool_backlog(limit: int | None = None) -> dict[str, Any]:
+ refs_by_folder = _variant_reference_map()
+ covered_folders = _covered_variant_folders()
+ rows: list[dict[str, Any]] = []
+ for folder in _atlas_folder_rows():
+ image_count = int(folder.get("image_count") or 0)
+ if image_count <= 0:
+ continue
+ folder_name = str(folder.get("folder") or "")
+ selected_reference_count = len(refs_by_folder.get(folder_name, set()))
+ remaining_image_count = max(image_count - selected_reference_count, 0)
+ if remaining_image_count <= 0:
+ continue
+ covered_by_variants = folder_name in covered_folders
+ rows.append(
+ {
+ "folder": folder_name,
+ "folder_alias": _folder_alias(folder_name),
+ "image_count": image_count,
+ "selected_reference_count": selected_reference_count,
+ "remaining_image_count": remaining_image_count,
+ "covered_by_variants": covered_by_variants,
+ "camera_view": folder.get("camera_view"),
+ "action_family": folder.get("action_family"),
+ "catalog_status": folder.get("catalog_status"),
+ "suggested_action": _unused_pool_suggested_action(folder, covered_by_variants),
+ }
+ )
+ rows.sort(key=lambda row: (-int(row["remaining_image_count"]), str(row["folder"])))
+ selected = _limited(rows, limit)
+ return {
+ "schema": UNUSED_POOL_BACKLOG_SCHEMA,
+ "no_generation": True,
+ "atlas_root": load_atlas().get("atlas_root"),
+ "source_inventory": "categories/normal_camera_atlas.json",
+ "source_variant_catalog": "categories/normal_camera_variants.json",
+ "selection": "non-empty folders with unselected images, sorted by remaining image count",
+ "available_folder_count": len(rows),
+ "selected_count": len(selected),
+ "folders": selected,
+ }
+
+
+def _selected_review_items(folder_name: str) -> dict[str, dict[str, Any]]:
+ items: dict[str, dict[str, Any]] = {}
+ for selected in REVIEW_SELECTED_SUBVARIANTS.get(folder_name, []):
+ for ref in selected.get("reference_images") or []:
+ ref_text = str(ref)
+ if not ref_text.strip():
+ continue
+ items[ref_text] = {
+ "reference_image": ref_text,
+ "review_decision": "selected_reference",
+ "review_bucket": selected.get("review_bucket"),
+ "variant_key": selected.get("variant_key"),
+ "selection_date": selected.get("selection_date"),
+ "review_notes": selected.get("evidence_notes") or "",
+ }
+ return items
+
+
+def _review_items(folder_name: str, image_refs: list[str]) -> list[dict[str, Any]]:
+ selected_by_ref = _selected_review_items(folder_name)
+ items: list[dict[str, Any]] = []
+ for index, ref in enumerate(image_refs, start=1):
+ selected = selected_by_ref.get(ref)
+ if selected:
+ item = dict(selected)
+ item["index"] = index
+ else:
+ item = {
+ "index": index,
+ "reference_image": ref,
+ "review_decision": "residual_unassigned",
+ "review_bucket": "unassigned",
+ "variant_key": None,
+ "selection_date": None,
+ "review_notes": "",
+ "exclusion_reason": "outside_selected_subvariants_or_pending_manual_bucket",
+ }
+ items.append(item)
+ return items
+
+
+def _contact_sheet_pages(
+ image_refs: list[str],
+ page_size: int,
+ review_items_by_ref: dict[str, dict[str, Any]] | None = None,
+) -> list[dict[str, Any]]:
+ pages: list[dict[str, Any]] = []
+ for page_index, start in enumerate(range(0, len(image_refs), page_size), start=1):
+ page_refs = image_refs[start : start + page_size]
+ pages.append(
+ {
+ "page": page_index,
+ "html_anchor": f"page-{page_index:02d}",
+ "start_index": start + 1,
+ "end_index": start + len(page_refs),
+ "image_count": len(page_refs),
+ "images": [
+ {
+ "index": start + offset + 1,
+ "reference_image": ref,
+ "review_bucket": (review_items_by_ref or {}).get(ref, {}).get("review_bucket") or "unassigned",
+ "review_decision": (review_items_by_ref or {}).get(ref, {}).get("review_decision")
+ or "residual_unassigned",
+ "variant_key": (review_items_by_ref or {}).get(ref, {}).get("variant_key"),
+ "notes": (review_items_by_ref or {}).get(ref, {}).get("review_notes") or "",
+ }
+ for offset, ref in enumerate(page_refs)
+ ],
+ }
+ )
+ return pages
+
+
+def build_review_manifest(folder_name: str, page_size: int = 40) -> dict[str, Any]:
+ if page_size <= 0:
+ raise ValueError("page_size must be positive")
+ folder = _atlas_folder_row(folder_name)
+ image_refs = _folder_image_refs(folder_name)
+ review_items = _review_items(folder_name, image_refs)
+ review_items_by_ref = {str(item["reference_image"]): item for item in review_items}
+ return {
+ "schema": REVIEW_MANIFEST_SCHEMA,
+ "no_generation": True,
+ "atlas_root": load_atlas().get("atlas_root"),
+ "folder": folder_name,
+ "folder_alias": _folder_alias(folder_name),
+ "image_count": len(image_refs),
+ "action_family": folder.get("action_family"),
+ "source_camera_view": folder.get("camera_view"),
+ "source_catalog_status": folder.get("catalog_status"),
+ "review_state": "contact_sheet_ready",
+ "methodology": [
+ "Treat this folder as a cue-expansion pool, not automatic prompt truth.",
+ "Cluster only repeated non-POV camera/pose families.",
+ "Draft positive-only visual prompt cues from selected atlas references.",
+ "Keep weak, mixed, or one-off groups as needs_samples.",
+ ],
+ "review_bucket_values": REVIEW_BUCKET_VALUES,
+ "selected_subvariants": REVIEW_SELECTED_SUBVARIANTS.get(folder_name, []),
+ "review_items": review_items,
+ "contact_sheet_pages": _contact_sheet_pages(image_refs, page_size, review_items_by_ref),
+ }
+
+
+def build_contact_sheet_html(folder_name: str, page_size: int = 40) -> str:
+ manifest = build_review_manifest(folder_name, page_size)
+ atlas_root = Path(str(manifest.get("atlas_root") or ""))
+ title = f"Normal Camera Review Contact Sheet: {folder_name}"
+ review_items_by_ref = {str(item.get("reference_image")): item for item in manifest.get("review_items") or []}
+ alias = manifest.get("folder_alias") or {}
+ lines = [
+ "",
+ '',
+ "",
+ ' ',
+ f"{html.escape(title)} ",
+ "",
+ "",
+ "",
+ f"{html.escape(title)} ",
+ (
+ f'No-generation contact sheet. {manifest["image_count"]} JPGs from '
+ f'{html.escape(folder_name)}. Review buckets are placeholders until visual review assigns them.
'
+ ),
+ (
+ f'Canonical folder label: {html.escape(str(alias.get("canonical_folder") or folder_name))}.
'
+ ),
+ '',
+ ]
+ for bucket, description in REVIEW_BUCKET_VALUES.items():
+ lines.append(f'
{html.escape(bucket)} {html.escape(description)}
')
+ lines.append("
")
+ for page in manifest["contact_sheet_pages"]:
+ lines.append(f'Page {page["page"]}: {page["start_index"]}-{page["end_index"]} ')
+ lines.append('')
+ for image in page["images"]:
+ ref = str(image["reference_image"])
+ src = (atlas_root / ref).as_uri() if atlas_root.is_absolute() else ref
+ review_item = review_items_by_ref.get(ref) or {}
+ review_bucket = str(review_item.get("review_bucket") or "unassigned")
+ review_decision = str(review_item.get("review_decision") or "residual_unassigned")
+ selected_variant = str(review_item.get("variant_key") or "")
+ bucket_label = review_bucket
+ variant_label = f" / {selected_variant}" if selected_variant else ""
+ lines.extend(
+ [
+ (
+ f'
'
+ ),
+ f' ',
+ (
+ f'{image["index"]:03d} '
+ f'{html.escape(ref)}bucket: {html.escape(bucket_label)}'
+ f'{html.escape(variant_label)} '
+ ),
+ " ",
+ ]
+ )
+ lines.append("
")
+ lines.extend(["", "", ""])
+ return "\n".join(lines)
+
+
+def _review_index_rows() -> list[dict[str, Any]]:
+ rows: list[dict[str, Any]] = []
+ for folder_name in DEFAULT_REVIEW_FOLDERS:
+ manifest = build_review_manifest(folder_name)
+ stem = _safe_artifact_stem(folder_name)
+ decision_counts: dict[str, int] = {}
+ for item in manifest.get("review_items") or []:
+ decision = str(item.get("review_decision") or "unknown")
+ decision_counts[decision] = decision_counts.get(decision, 0) + 1
+ rows.append(
+ {
+ "folder": folder_name,
+ "folder_alias": manifest.get("folder_alias"),
+ "image_count": manifest.get("image_count"),
+ "action_family": manifest.get("action_family"),
+ "source_camera_view": manifest.get("source_camera_view"),
+ "source_catalog_status": manifest.get("source_catalog_status"),
+ "selected_subvariant_count": len(manifest.get("selected_subvariants") or []),
+ "selected_reference_count": int(decision_counts.get("selected_reference") or 0),
+ "residual_unassigned_count": int(decision_counts.get("residual_unassigned") or 0),
+ "review_decision_counts": decision_counts,
+ "manifest_path": f"{stem}_review_manifest.json",
+ "contact_sheet_path": f"{stem}_contact_sheet.html",
+ }
+ )
+ return rows
+
+
+def _markdown_cell(value: Any) -> str:
+ return str(value if value is not None else "").replace("|", "\\|")
+
+
+def build_review_index_markdown() -> str:
+ lines = [
+ "# Normal Camera Review Index",
+ "",
+ "No-generation index for local review manifests and contact sheets.",
+ "",
+ "| Source folder | Canonical label | Images | Selected refs | Residual | Manifest | Contact sheet |",
+ "| --- | --- | ---: | ---: | ---: | --- | --- |",
+ ]
+ for row in _review_index_rows():
+ alias = row.get("folder_alias") or {}
+ lines.append(
+ "| "
+ + " | ".join(
+ [
+ _markdown_cell(row.get("folder")),
+ _markdown_cell(alias.get("canonical_folder")),
+ _markdown_cell(row.get("image_count")),
+ _markdown_cell(row.get("selected_reference_count")),
+ _markdown_cell(row.get("residual_unassigned_count")),
+ f"[manifest]({_markdown_cell(row.get('manifest_path'))})",
+ f"[contact sheet]({_markdown_cell(row.get('contact_sheet_path'))})",
+ ]
+ )
+ + " |"
+ )
+ lines.append("")
+ return "\n".join(lines)
+
+
+def build_review_index_html() -> str:
+ lines = [
+ "",
+ '',
+ "",
+ ' ',
+ "Normal Camera Review Index ",
+ "",
+ "",
+ "",
+ "Normal Camera Review Index ",
+ 'No-generation index for local review manifests and contact sheets.
',
+ "",
+ "Source folder Canonical label Images Selected refs Residual Manifest Contact sheet ",
+ "",
+ ]
+ for row in _review_index_rows():
+ alias = row.get("folder_alias") or {}
+ manifest_path = str(row.get("manifest_path") or "")
+ contact_sheet_path = str(row.get("contact_sheet_path") or "")
+ lines.append(
+ ""
+ f"{html.escape(str(row.get('folder') or ''))} "
+ f"{html.escape(str(alias.get('canonical_folder') or ''))} "
+ f"{html.escape(str(row.get('image_count') or 0))} "
+ f"{html.escape(str(row.get('selected_reference_count') or 0))} "
+ f"{html.escape(str(row.get('residual_unassigned_count') or 0))} "
+ f'manifest '
+ f'contact sheet '
+ " "
+ )
+ lines.extend([" ", "
", "", "", ""])
+ return "\n".join(lines)
+
+
+def build_needs_samples_acquisition(limit: int | None = None) -> dict[str, Any]:
+ rows: list[dict[str, Any]] = []
+ for variant in _variant_rows("needs_samples"):
+ reference_count = len(_reference_images(variant))
+ missing_reference_count = max(NEEDS_SAMPLES_TARGET_REFERENCE_COUNT - reference_count, 0)
+ rows.append(
+ {
+ "variant_key": variant.get("key"),
+ "family": variant.get("family"),
+ "action_family": variant.get("action_family"),
+ "camera_view": variant.get("camera_view"),
+ "atlas_folders": list(variant.get("atlas_folders") or []),
+ "folder_aliases": [_folder_alias(str(folder)) for folder in variant.get("atlas_folders") or []],
+ "reference_count": reference_count,
+ "target_reference_count": NEEDS_SAMPLES_TARGET_REFERENCE_COUNT,
+ "missing_reference_count": missing_reference_count,
+ "canonical_geometry": variant.get("canonical_geometry"),
+ "suggested_action": "collect_or_mine_repeatable_non_pov_references",
+ "review_notes": variant.get("pre_ab_notes") or (variant.get("visual_review") or {}).get("notes") or "",
+ }
+ )
+ rows.sort(
+ key=lambda row: (
+ -int(row["missing_reference_count"]),
+ str(row.get("action_family") or ""),
+ str(row.get("variant_key") or ""),
+ )
+ )
+ for index, row in enumerate(rows, start=1):
+ row["acquisition_rank"] = index
+ selected = _limited(rows, limit)
+ return {
+ "schema": NEEDS_SAMPLES_ACQUISITION_SCHEMA,
+ "no_generation": True,
+ "atlas_root": load_variants().get("atlas_root"),
+ "source_variant_catalog": "categories/normal_camera_variants.json",
+ "selection": "needs_samples variants sorted by missing reference count, action family, and variant key",
+ "target_reference_count": NEEDS_SAMPLES_TARGET_REFERENCE_COUNT,
+ "available_variant_count": len(rows),
+ "selected_count": len(selected),
+ "variants": selected,
+ }
+
+
+def build_needs_samples_acquisition_markdown(limit: int | None = None) -> str:
+ acquisition = build_needs_samples_acquisition(limit)
+ lines = [
+ "# Normal Camera Needs-Samples Acquisition",
+ "",
+ "No-generation acquisition list for variants that are not ready for fixed-seed pre-A/B testing.",
+ "",
+ f"Target reference count per promoted selected-reference family: {NEEDS_SAMPLES_TARGET_REFERENCE_COUNT}.",
+ "",
+ "| Rank | Variant | Action | Camera | Refs | Missing | Source folders |",
+ "| ---: | --- | --- | --- | ---: | ---: | --- |",
+ ]
+ for row in acquisition.get("variants") or []:
+ folders = ", ".join(str(folder) for folder in row.get("atlas_folders") or [])
+ lines.append(
+ "| "
+ + " | ".join(
+ [
+ _markdown_cell(row.get("acquisition_rank")),
+ _markdown_cell(row.get("variant_key")),
+ _markdown_cell(row.get("action_family")),
+ _markdown_cell(row.get("camera_view")),
+ _markdown_cell(row.get("reference_count")),
+ _markdown_cell(row.get("missing_reference_count")),
+ _markdown_cell(folders),
+ ]
+ )
+ + " |"
+ )
+ lines.append("")
+ return "\n".join(lines)
+
+
+def _candidate_base(variant: dict[str, Any], rank: int) -> dict[str, Any]:
+ hook = variant.get("generator_hook") or {}
+ return {
+ "priority_rank": rank,
+ "key": variant.get("key"),
+ "family": variant.get("family"),
+ "action_family": variant.get("action_family"),
+ "camera_view": variant.get("camera_view"),
+ "status": variant.get("status"),
+ "atlas_folders": list(variant.get("atlas_folders") or []),
+ "reference_images": _reference_images(variant),
+ "canonical_geometry": variant.get("canonical_geometry"),
+ "acceptance_gates": list(ACCEPTANCE_GATES),
+ "priority_reason": (
+ "Catalog status is pre_ab_candidate with representative references; "
+ "catalog order is preserved until fixed-seed evidence exists."
+ ),
+ "generator_hook_notes": hook.get("notes"),
+ }
+
+
+def build_priority_plan(limit: int | None = None) -> dict[str, Any]:
+ variants_catalog = load_variants()
+ selected = _variant_rows("pre_ab_candidate", limit)
+ all_pre_ab = _variant_rows("pre_ab_candidate")
+ status_counts = (variants_catalog.get("inventory") or {}).get("status_counts") or {}
+ return {
+ "schema": PRIORITY_PLAN_SCHEMA,
+ "no_generation": True,
+ "atlas_root": variants_catalog.get("atlas_root"),
+ "source_variant_catalog": "categories/normal_camera_variants.json",
+ "available_pre_ab_count": len(all_pre_ab),
+ "selected_count": len(selected),
+ "deferred_counts": {
+ "needs_samples": int(status_counts.get("needs_samples") or 0),
+ "hold": int(status_counts.get("hold") or 0),
+ },
+ "acceptance_gate_descriptions": GATE_DESCRIPTIONS,
+ "candidates": [_candidate_base(variant, index) for index, variant in enumerate(selected, start=1)],
+ }
+
+
+def build_prompt_cue_batch(limit: int | None = None) -> dict[str, Any]:
+ selected = _variant_rows("pre_ab_candidate", limit)
+ items: list[dict[str, Any]] = []
+ for index, variant in enumerate(selected, start=1):
+ cue_review = _prompt_cue_review(variant)
+ items.append(
+ {
+ "batch_rank": index,
+ "variant_key": variant.get("key"),
+ "family": variant.get("family"),
+ "camera_view": variant.get("camera_view"),
+ "atlas_folders": list(variant.get("atlas_folders") or []),
+ "reference_images": _reference_images(variant),
+ "canonical_geometry": variant.get("canonical_geometry"),
+ "source_prompt_cues": _source_prompt_cues(variant),
+ "review_only_avoid_cues": _avoid_cues(variant),
+ "state": cue_review["state"],
+ "positive_prompt_cues": cue_review["positive_prompt_cues"],
+ "blocked_prompt_cues": cue_review["blocked_prompt_cues"],
+ "prompt_text": cue_review["prompt_text"],
+ "prompt_order": [
+ "subject_identity",
+ "scene_anchor",
+ "camera_pose_cues",
+ "pose-visible_clothing_cues",
+ "expression_eye_cues",
+ ],
+ "later_test_seed_slots": {
+ "generator_seed": None,
+ "sampling_seed": None,
+ "fixed_subject_seed": None,
+ },
+ }
+ )
+ return {
+ "schema": PROMPT_CUE_BATCH_SCHEMA,
+ "no_generation": True,
+ "atlas_root": load_variants().get("atlas_root"),
+ "selection": "pre_ab_candidate variants in catalog order",
+ "items": items,
+ }
+
+
+def build_score_sheet(limit: int | None = None) -> dict[str, Any]:
+ selected = _variant_rows("pre_ab_candidate", limit)
+ rows = []
+ for index, variant in enumerate(selected, start=1):
+ rows.append(
+ {
+ "batch_rank": index,
+ "variant_key": variant.get("key"),
+ "family": variant.get("family"),
+ "camera_view": variant.get("camera_view"),
+ "atlas_folders": list(variant.get("atlas_folders") or []),
+ "reference_images": _reference_images(variant),
+ "test_prompt_id": None,
+ "image_path": None,
+ "generator_seed": None,
+ "sampling_seed": None,
+ "scores": {gate: None for gate in ACCEPTANCE_GATES},
+ "notes": "",
+ "decision": None,
+ }
+ )
+ return {
+ "schema": SCORE_SHEET_SCHEMA,
+ "no_generation": True,
+ "atlas_root": load_variants().get("atlas_root"),
+ "acceptance_gates": list(ACCEPTANCE_GATES),
+ "acceptance_gate_descriptions": GATE_DESCRIPTIONS,
+ "score_scale": {
+ "0": "fails the gate",
+ "1": "partial or unstable",
+ "2": "usable but needs wording refinement",
+ "3": "strong enough to preserve as candidate wording",
+ },
+ "rows": rows,
+ }
+
+
+def build_acceptance_gates_markdown() -> str:
+ lines = [
+ "# Normal Camera Pre-A/B Acceptance Gates",
+ "",
+ "No-generation gate sheet for later fixed-seed generation review. This file does not record generated evidence.",
+ "",
+ ]
+ for gate in ACCEPTANCE_GATES:
+ lines.append(f"- `{gate}`: {GATE_DESCRIPTIONS[gate]}")
+ lines.extend(
+ [
+ "",
+ "Prompt-ready cues must stay positive and direct. Cues with option words, negative wording, or instruction-like cleanup text remain review-only until manually rewritten from atlas evidence.",
+ "",
+ ]
+ )
+ return "\n".join(lines)
+
+
+def write_artifacts(output_dir: Path = DEFAULT_OUTPUT_DIR, limit: int | None = None, indent: int = 2) -> dict[str, Path]:
+ output_dir.mkdir(parents=True, exist_ok=True)
+ review_dir = output_dir / "review"
+ artifacts: dict[str, tuple[Path, Any]] = {
+ "priority_plan": (output_dir / "normal_camera_priority_plan.json", build_priority_plan(limit)),
+ "prompt_cue_batch": (output_dir / "normal_camera_prompt_cue_batch.json", build_prompt_cue_batch(limit)),
+ "score_sheet": (output_dir / "normal_camera_score_sheet.json", build_score_sheet(limit)),
+ "acceptance_gates": (output_dir / "normal_camera_acceptance_gates.md", build_acceptance_gates_markdown()),
+ "unused_pool_backlog": (output_dir / "normal_camera_unused_pool_backlog.json", build_unused_pool_backlog(limit)),
+ "needs_samples_acquisition": (
+ output_dir / "normal_camera_needs_samples_acquisition.json",
+ build_needs_samples_acquisition(limit),
+ ),
+ "needs_samples_acquisition_md": (
+ output_dir / "normal_camera_needs_samples_acquisition.md",
+ build_needs_samples_acquisition_markdown(limit),
+ ),
+ }
+ for folder_name in DEFAULT_REVIEW_FOLDERS:
+ stem = _safe_artifact_stem(folder_name)
+ artifacts[f"{stem}_review_manifest"] = (
+ review_dir / f"{stem}_review_manifest.json",
+ build_review_manifest(folder_name),
+ )
+ artifacts[f"{stem}_contact_sheet"] = (
+ review_dir / f"{stem}_contact_sheet.html",
+ build_contact_sheet_html(folder_name),
+ )
+ artifacts["review_index_md"] = (review_dir / "index.md", build_review_index_markdown())
+ artifacts["review_index_html"] = (review_dir / "index.html", build_review_index_html())
+ written: dict[str, Path] = {}
+ for name, (path, payload) in artifacts.items():
+ path.parent.mkdir(parents=True, exist_ok=True)
+ if isinstance(payload, str):
+ path.write_text(payload, encoding="utf-8")
+ else:
+ path.write_text(json.dumps(payload, indent=indent) + "\n", encoding="utf-8")
+ written[name] = path
+ return written
+
+
+def _parser() -> argparse.ArgumentParser:
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument("--limit", type=int, default=None, help="Limit selected pre-A/B variants.")
+ parser.add_argument("--indent", type=int, default=2, help="JSON indentation for written/printed artifacts.")
+ parser.add_argument("--output-dir", type=Path, default=DEFAULT_OUTPUT_DIR, help="Artifact output directory.")
+ parser.add_argument(
+ "--artifact",
+ choices=(
+ "priority-plan",
+ "prompt-cue-batch",
+ "score-sheet",
+ "acceptance-gates",
+ "unused-pool-backlog",
+ "needs-samples-acquisition",
+ "needs-samples-acquisition-md",
+ "review-manifest",
+ "contact-sheet-html",
+ "review-index-md",
+ "review-index-html",
+ ),
+ default="priority-plan",
+ help="Artifact to print when --write-artifacts is not set.",
+ )
+ parser.add_argument("--review-folder", default="reverse cowgirl", help="Folder to use for review-manifest/contact-sheet-html artifacts.")
+ parser.add_argument("--page-size", type=int, default=40, help="Review contact-sheet page size.")
+ parser.add_argument("--write-artifacts", action="store_true", help="Write all normal-camera prep artifacts.")
+ return parser
+
+
+def main(argv: list[str] | None = None) -> int:
+ args = _parser().parse_args(argv)
+ if args.write_artifacts:
+ written = write_artifacts(args.output_dir, args.limit, args.indent)
+ for name, path in written.items():
+ print(f"{name}: {path}")
+ return 0
+
+ payloads: dict[str, Any] = {
+ "priority-plan": build_priority_plan(args.limit),
+ "prompt-cue-batch": build_prompt_cue_batch(args.limit),
+ "score-sheet": build_score_sheet(args.limit),
+ "acceptance-gates": build_acceptance_gates_markdown(),
+ "unused-pool-backlog": build_unused_pool_backlog(args.limit),
+ "needs-samples-acquisition": build_needs_samples_acquisition(args.limit),
+ "needs-samples-acquisition-md": build_needs_samples_acquisition_markdown(args.limit),
+ "review-manifest": build_review_manifest(str(args.review_folder), args.page_size),
+ "contact-sheet-html": build_contact_sheet_html(str(args.review_folder), args.page_size),
+ "review-index-md": build_review_index_markdown(),
+ "review-index-html": build_review_index_html(),
+ }
+ payload = payloads[args.artifact]
+ if isinstance(payload, str):
+ print(payload)
+ else:
+ print(json.dumps(payload, indent=args.indent))
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/tools/normal_camera_atlas_validate.py b/tools/normal_camera_atlas_validate.py
new file mode 100644
index 0000000..22dc64b
--- /dev/null
+++ b/tools/normal_camera_atlas_validate.py
@@ -0,0 +1,339 @@
+#!/usr/bin/env python3
+"""Validate no-generation normal-camera atlas maintenance artifacts."""
+
+from __future__ import annotations
+
+import argparse
+import json
+import sys
+from pathlib import Path
+from typing import Any
+
+
+ROOT = Path(__file__).resolve().parents[1]
+if str(ROOT) not in sys.path:
+ sys.path.insert(0, str(ROOT))
+
+import normal_camera_atlas_prep as prep # noqa: E402
+
+
+EXPECTED_VARIANT_COUNT = 131
+EXPECTED_PRE_AB_COUNT = 55
+EXPECTED_NEEDS_SAMPLES_COUNT = 76
+EXPECTED_COVERED_NON_EMPTY_FOLDER_COUNT = 101
+EXPECTED_UNCOVERED_NON_EMPTY_FOLDER_COUNT = 0
+
+JSON_ARTIFACT_SCHEMAS = {
+ "normal_camera_priority_plan.json": prep.PRIORITY_PLAN_SCHEMA,
+ "normal_camera_prompt_cue_batch.json": prep.PROMPT_CUE_BATCH_SCHEMA,
+ "normal_camera_score_sheet.json": prep.SCORE_SHEET_SCHEMA,
+ "normal_camera_unused_pool_backlog.json": prep.UNUSED_POOL_BACKLOG_SCHEMA,
+ "normal_camera_needs_samples_acquisition.json": prep.NEEDS_SAMPLES_ACQUISITION_SCHEMA,
+}
+
+TEXT_ARTIFACTS = (
+ "normal_camera_acceptance_gates.md",
+ "normal_camera_needs_samples_acquisition.md",
+ "review/index.md",
+ "review/index.html",
+)
+
+
+def _add_error(errors: list[str], message: str) -> None:
+ errors.append(message)
+
+
+def _json_file(path: Path, errors: list[str]) -> dict[str, Any]:
+ if not path.is_file():
+ _add_error(errors, f"missing artifact: {path}")
+ return {}
+ try:
+ payload = json.loads(path.read_text(encoding="utf-8"))
+ except json.JSONDecodeError as exc:
+ _add_error(errors, f"invalid JSON artifact {path}: {exc}")
+ return {}
+ if not isinstance(payload, dict):
+ _add_error(errors, f"JSON artifact is not an object: {path}")
+ return {}
+ return payload
+
+
+def _expect_object(value: Any, name: str, errors: list[str]) -> dict[str, Any]:
+ if not isinstance(value, dict):
+ _add_error(errors, f"{name} must be an object")
+ return {}
+ return value
+
+
+def _expect_list(value: Any, name: str, errors: list[str]) -> list[Any]:
+ if not isinstance(value, list):
+ _add_error(errors, f"{name} must be a list")
+ return []
+ return value
+
+
+def _expect_schema(payload: dict[str, Any], schema: str, name: str, errors: list[str]) -> None:
+ if payload.get("schema") != schema:
+ _add_error(errors, f"{name} schema changed: {payload.get('schema')!r}")
+ if payload.get("no_generation") is not True:
+ _add_error(errors, f"{name} must stay no_generation=true")
+
+
+def _validate_variant_catalog(errors: list[str]) -> tuple[dict[str, dict[str, Any]], set[str]]:
+ atlas = prep.load_atlas()
+ variants_catalog = prep.load_variants()
+ folders = _expect_list(atlas.get("folders"), "normal_camera_atlas.folders", errors)
+ variants = _expect_list(variants_catalog.get("variants"), "normal_camera_variants.variants", errors)
+ inventory = _expect_object(variants_catalog.get("inventory"), "normal_camera_variants.inventory", errors)
+ status_counts = _expect_object(inventory.get("status_counts"), "normal_camera_variants.inventory.status_counts", errors)
+
+ if len(variants) != EXPECTED_VARIANT_COUNT:
+ _add_error(errors, f"expected {EXPECTED_VARIANT_COUNT} variants, got {len(variants)}")
+ if int(status_counts.get("pre_ab_candidate") or 0) != EXPECTED_PRE_AB_COUNT:
+ _add_error(errors, "pre_ab_candidate count changed")
+ if int(status_counts.get("needs_samples") or 0) != EXPECTED_NEEDS_SAMPLES_COUNT:
+ _add_error(errors, "needs_samples count changed")
+ if int(inventory.get("covered_non_empty_folder_count") or 0) != EXPECTED_COVERED_NON_EMPTY_FOLDER_COUNT:
+ _add_error(errors, "covered non-empty folder count changed")
+ if int(inventory.get("uncovered_non_empty_folder_count") or 0) != EXPECTED_UNCOVERED_NON_EMPTY_FOLDER_COUNT:
+ _add_error(errors, "normal-camera atlas has uncovered non-empty folders")
+
+ folder_names = {str(folder.get("folder")) for folder in folders if str(folder.get("folder") or "").strip()}
+ variants_by_key: dict[str, dict[str, Any]] = {}
+ seen_variant_keys: set[str] = set()
+ status_values = set((variants_catalog.get("status_values") or {}).keys())
+ for index, variant in enumerate(variants, start=1):
+ variant_obj = _expect_object(variant, f"variant[{index}]", errors)
+ key = str(variant_obj.get("key") or "")
+ if not key:
+ _add_error(errors, f"variant[{index}] has no key")
+ continue
+ if key in seen_variant_keys:
+ _add_error(errors, f"duplicate variant key: {key}")
+ seen_variant_keys.add(key)
+ variants_by_key[key] = variant_obj
+ if variant_obj.get("status") not in status_values:
+ _add_error(errors, f"{key} has unknown status: {variant_obj.get('status')!r}")
+ for field in ("family", "action_family", "camera_view", "canonical_geometry"):
+ if not str(variant_obj.get(field) or "").strip():
+ _add_error(errors, f"{key}.{field} is empty")
+ for field in ("atlas_folders", "reference_images", "prompt_cues", "avoid_cues"):
+ values = _expect_list(variant_obj.get(field), f"{key}.{field}", errors)
+ if not values:
+ _add_error(errors, f"{key}.{field} is empty")
+ for folder_name in variant_obj.get("atlas_folders") or []:
+ if str(folder_name) not in folder_names:
+ _add_error(errors, f"{key} references unknown atlas folder: {folder_name!r}")
+ for ref in variant_obj.get("reference_images") or []:
+ ref_text = str(ref or "")
+ if ".." in Path(ref_text).parts:
+ _add_error(errors, f"{key} reference escapes atlas root: {ref_text!r}")
+ hook = _expect_object(variant_obj.get("generator_hook"), f"{key}.generator_hook", errors)
+ if "Future hook only" not in str(hook.get("notes") or ""):
+ _add_error(errors, f"{key} generator hook should remain future-only")
+ return variants_by_key, folder_names
+
+
+def _validate_built_artifacts(errors: list[str]) -> None:
+ priority_plan = prep.build_priority_plan()
+ prompt_batch = prep.build_prompt_cue_batch()
+ score_sheet = prep.build_score_sheet()
+ unused_pool_backlog = prep.build_unused_pool_backlog()
+ acquisition = prep.build_needs_samples_acquisition()
+
+ _expect_schema(priority_plan, prep.PRIORITY_PLAN_SCHEMA, "built priority plan", errors)
+ _expect_schema(prompt_batch, prep.PROMPT_CUE_BATCH_SCHEMA, "built prompt cue batch", errors)
+ _expect_schema(score_sheet, prep.SCORE_SHEET_SCHEMA, "built score sheet", errors)
+ _expect_schema(unused_pool_backlog, prep.UNUSED_POOL_BACKLOG_SCHEMA, "built unused-pool backlog", errors)
+ _expect_schema(acquisition, prep.NEEDS_SAMPLES_ACQUISITION_SCHEMA, "built needs-samples acquisition", errors)
+
+ if int(priority_plan.get("selected_count") or 0) != EXPECTED_PRE_AB_COUNT:
+ _add_error(errors, "priority plan should include all pre-A/B candidates")
+ if len(prompt_batch.get("items") or []) != EXPECTED_PRE_AB_COUNT:
+ _add_error(errors, "prompt cue batch should include all pre-A/B candidates")
+ if len(score_sheet.get("rows") or []) != EXPECTED_PRE_AB_COUNT:
+ _add_error(errors, "score sheet should include all pre-A/B candidates")
+ if int(acquisition.get("available_variant_count") or 0) != EXPECTED_NEEDS_SAMPLES_COUNT:
+ _add_error(errors, "needs-samples acquisition should include all needs_samples variants")
+
+ acquisition_rows = acquisition.get("variants") or []
+ missing_counts = [int(row.get("missing_reference_count") or 0) for row in acquisition_rows]
+ if missing_counts != sorted(missing_counts, reverse=True):
+ _add_error(errors, "needs-samples acquisition must be sorted by missing reference count")
+ for row in acquisition_rows:
+ if row.get("target_reference_count") != prep.NEEDS_SAMPLES_TARGET_REFERENCE_COUNT:
+ _add_error(errors, f"{row.get('variant_key')} has wrong acquisition target")
+ if row.get("missing_reference_count") is None:
+ _add_error(errors, f"{row.get('variant_key')} has no missing reference count")
+
+
+def _validate_artifact_files(artifacts_dir: Path, errors: list[str]) -> None:
+ for relative_path, schema in JSON_ARTIFACT_SCHEMAS.items():
+ payload = _json_file(artifacts_dir / relative_path, errors)
+ if payload:
+ _expect_schema(payload, schema, relative_path, errors)
+
+ for relative_path in TEXT_ARTIFACTS:
+ path = artifacts_dir / relative_path
+ if not path.is_file():
+ _add_error(errors, f"missing artifact: {path}")
+ continue
+ text = path.read_text(encoding="utf-8")
+ if relative_path.endswith(".html") and "No-generation" not in text:
+ _add_error(errors, f"{relative_path} lost no-generation language")
+ if relative_path.endswith(".md") and "No-generation" not in text:
+ _add_error(errors, f"{relative_path} lost no-generation language")
+
+ gates_path = artifacts_dir / "normal_camera_acceptance_gates.md"
+ if gates_path.is_file() and "body_proportion_control" not in gates_path.read_text(encoding="utf-8"):
+ _add_error(errors, "acceptance gates lost body_proportion_control")
+
+
+def _validate_alias_metadata(artifacts_dir: Path, errors: list[str]) -> None:
+ atlas_folders = {str(folder.get("folder")) for folder in prep.load_atlas().get("folders") or []}
+ variant_folders = {
+ str(folder)
+ for variant in prep.load_variants().get("variants") or []
+ for folder in variant.get("atlas_folders") or []
+ }
+ known_folder_names = atlas_folders | variant_folders
+ for folder_name, alias in prep.SOURCE_FOLDER_ALIASES.items():
+ if folder_name not in known_folder_names:
+ _add_error(errors, f"alias folder is not present in atlas/variants: {folder_name!r}")
+ if not str(alias.get("canonical_folder") or "").strip():
+ _add_error(errors, f"alias has no canonical folder: {folder_name!r}")
+ if not str(alias.get("alias_reason") or "").strip():
+ _add_error(errors, f"alias has no reason: {folder_name!r}")
+
+ backlog = _json_file(artifacts_dir / "normal_camera_unused_pool_backlog.json", errors)
+ for row in backlog.get("folders") or []:
+ folder_name = str(row.get("folder") or "")
+ alias = row.get("folder_alias") or {}
+ if not alias:
+ _add_error(errors, f"unused-pool row has no folder_alias: {folder_name!r}")
+ continue
+ if folder_name in prep.SOURCE_FOLDER_ALIASES and alias.get("alias_applied") is not True:
+ _add_error(errors, f"known alias folder is not marked alias_applied in backlog: {folder_name!r}")
+
+
+def _validate_review_artifacts(artifacts_dir: Path, variants_by_key: dict[str, dict[str, Any]], errors: list[str]) -> None:
+ review_dir = artifacts_dir / "review"
+ for folder_name in prep.DEFAULT_REVIEW_FOLDERS:
+ stem = prep._safe_artifact_stem(folder_name)
+ manifest_path = review_dir / f"{stem}_review_manifest.json"
+ contact_sheet_path = review_dir / f"{stem}_contact_sheet.html"
+ manifest = _json_file(manifest_path, errors)
+ if not contact_sheet_path.is_file():
+ _add_error(errors, f"missing contact sheet: {contact_sheet_path}")
+ continue
+ contact_sheet = contact_sheet_path.read_text(encoding="utf-8")
+ if "No-generation contact sheet" not in contact_sheet:
+ _add_error(errors, f"{folder_name} contact sheet lost no-generation scope")
+ if "data-review-decision=" not in contact_sheet:
+ _add_error(errors, f"{folder_name} contact sheet has no review-decision attributes")
+ if not manifest:
+ continue
+
+ _expect_schema(manifest, prep.REVIEW_MANIFEST_SCHEMA, f"{folder_name} review manifest", errors)
+ if manifest.get("folder") != folder_name:
+ _add_error(errors, f"{folder_name} manifest folder changed: {manifest.get('folder')!r}")
+ alias = manifest.get("folder_alias") or {}
+ if alias.get("exact_source_folder") != folder_name:
+ _add_error(errors, f"{folder_name} manifest alias does not preserve exact source folder")
+ if folder_name in prep.SOURCE_FOLDER_ALIASES and alias.get("alias_applied") is not True:
+ _add_error(errors, f"{folder_name} manifest should mark alias_applied")
+
+ review_items = _expect_list(manifest.get("review_items"), f"{folder_name}.review_items", errors)
+ if len(review_items) != int(manifest.get("image_count") or 0):
+ _add_error(errors, f"{folder_name} review_items count does not match image_count")
+ item_by_ref = {str(item.get("reference_image")): item for item in review_items}
+ selected_refs: set[str] = set()
+ for selected in manifest.get("selected_subvariants") or []:
+ variant_key = str(selected.get("variant_key") or "")
+ if variant_key not in variants_by_key:
+ _add_error(errors, f"{folder_name} selected subvariant is missing from catalog: {variant_key}")
+ continue
+ catalog_refs = set(str(ref) for ref in variants_by_key[variant_key].get("reference_images") or [])
+ for ref in selected.get("reference_images") or []:
+ ref_text = str(ref)
+ selected_refs.add(ref_text)
+ if ref_text not in catalog_refs:
+ _add_error(errors, f"{folder_name} selected ref is not in catalog variant {variant_key}: {ref_text}")
+
+ for item in review_items:
+ ref = str(item.get("reference_image") or "")
+ decision = str(item.get("review_decision") or "")
+ bucket = str(item.get("review_bucket") or "")
+ if not ref:
+ _add_error(errors, f"{folder_name} review item has no reference_image")
+ if ".." in Path(ref).parts:
+ _add_error(errors, f"{folder_name} review item escapes atlas root: {ref!r}")
+ if decision not in {"selected_reference", "residual_unassigned"}:
+ _add_error(errors, f"{folder_name} review item has unknown decision: {decision!r}")
+ if decision == "selected_reference":
+ if ref not in selected_refs:
+ _add_error(errors, f"{folder_name} selected review item is not in selected_subvariants: {ref}")
+ if bucket == "unassigned" or not bucket:
+ _add_error(errors, f"{folder_name} selected review item has no selected bucket: {ref}")
+ if not item.get("variant_key"):
+ _add_error(errors, f"{folder_name} selected review item has no variant key: {ref}")
+ if decision == "residual_unassigned":
+ if bucket != "unassigned":
+ _add_error(errors, f"{folder_name} residual review item should use unassigned bucket: {ref}")
+ if not item.get("exclusion_reason"):
+ _add_error(errors, f"{folder_name} residual review item has no exclusion reason: {ref}")
+
+ page_refs = [
+ str(image.get("reference_image"))
+ for page in manifest.get("contact_sheet_pages") or []
+ for image in page.get("images") or []
+ ]
+ if set(page_refs) != set(item_by_ref):
+ _add_error(errors, f"{folder_name} contact-sheet pages and review_items disagree")
+
+
+def validate_normal_camera_atlas(
+ artifacts_dir: Path | str | None = None,
+ *,
+ require_artifacts: bool = True,
+) -> list[str]:
+ errors: list[str] = []
+ artifacts_path = Path(artifacts_dir) if artifacts_dir is not None else prep.DEFAULT_OUTPUT_DIR
+ variants_by_key, _folder_names = _validate_variant_catalog(errors)
+ _validate_built_artifacts(errors)
+ if require_artifacts:
+ _validate_artifact_files(artifacts_path, errors)
+ _validate_alias_metadata(artifacts_path, errors)
+ _validate_review_artifacts(artifacts_path, variants_by_key, errors)
+ return errors
+
+
+def _parser() -> argparse.ArgumentParser:
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument(
+ "--artifacts-dir",
+ type=Path,
+ default=prep.DEFAULT_OUTPUT_DIR,
+ help="Normal-camera artifact directory to validate.",
+ )
+ parser.add_argument(
+ "--skip-artifacts",
+ action="store_true",
+ help="Validate in-memory builders and catalogs without requiring generated files.",
+ )
+ return parser
+
+
+def main(argv: list[str] | None = None) -> int:
+ args = _parser().parse_args(argv)
+ errors = validate_normal_camera_atlas(args.artifacts_dir, require_artifacts=not args.skip_artifacts)
+ if errors:
+ for error in errors:
+ print(f"ERROR: {error}", file=sys.stderr)
+ return 1
+ print("OK: normal camera atlas validation passed")
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/tools/prompt_smoke.py b/tools/prompt_smoke.py
index ca34553..4582120 100644
--- a/tools/prompt_smoke.py
+++ b/tools/prompt_smoke.py
@@ -6890,13 +6890,13 @@ def smoke_normal_camera_atlas_catalog() -> None:
folders = atlas.get("folders")
variants = variants_catalog.get("variants")
_expect(isinstance(folders, list) and len(folders) == 104, "Normal camera atlas should track 104 folders")
- _expect(isinstance(variants, list) and len(variants) == 86, "Normal camera variant catalog should track 86 variants")
+ _expect(isinstance(variants, list) and len(variants) == 131, "Normal camera variant catalog should track 131 variants")
inventory = atlas.get("inventory") or {}
_expect(inventory.get("jpg_count") == 1979, "Normal camera atlas lost reference image count")
_expect(inventory.get("catalog_status_counts", {}).get("camera_reference") == 49, "Normal camera atlas lost camera-reference count")
variant_inventory = variants_catalog.get("inventory") or {}
- _expect(variant_inventory.get("status_counts", {}).get("pre_ab_candidate") == 35, "Normal camera variants lost pre-A/B count")
- _expect(variant_inventory.get("status_counts", {}).get("needs_samples") == 51, "Normal camera variants lost needs-samples count")
+ _expect(variant_inventory.get("status_counts", {}).get("pre_ab_candidate") == 55, "Normal camera variants lost pre-A/B count")
+ _expect(variant_inventory.get("status_counts", {}).get("needs_samples") == 76, "Normal camera variants lost needs-samples count")
folder_keys: set[str] = set()
folder_names: set[str] = set()
@@ -6920,19 +6920,69 @@ def smoke_normal_camera_atlas_catalog() -> None:
variant_statuses = set((variants_catalog.get("status_values") or {}).keys())
seen_variant_keys: set[str] = set()
+ variants_by_key: dict[str, dict[str, Any]] = {}
required_variants = {
"normal_doggy_all_fours_side_view",
+ "normal_doggy_all_fours_front_view",
+ "normal_doggy_generic_front_view",
+ "normal_cowgirl_back_three_quarter",
"normal_cowgirl_side_profile",
"normal_missionary_side_profile",
"normal_blowjob_laying_front_view",
+ "normal_couple_kissing_upright_side_profile",
"normal_penis_worship_top_view",
"normal_penis_worship_side_view",
"normal_penis_worship_laying_partner_vertical_side_view",
+ "normal_anal_random_mixed_camera_folder_pool",
+ "normal_anal_random_front_view",
+ "normal_anal_random_back_side_offset_view",
+ "normal_display_breasts_exposed_front_view",
+ "normal_display_breasts_exposed_side_offset_view",
+ "normal_display_breasts_exposed_standing_front_view",
+ "normal_display_breasts_exposed_seated_kneeling_front_view",
+ "normal_display_rear_body_standing_back_view",
+ "normal_display_front_open_leg_front_view",
+ "normal_display_front_open_leg_low_close",
+ "normal_display_front_open_leg_side_offset_view",
+ "normal_reverse_cowgirl_mixed_camera_folder_pool",
+ "normal_reverse_cowgirl_front_view",
+ "normal_reverse_cowgirl_front_three_quarter",
+ "normal_reverse_cowgirl_low_close_front_view",
+ "normal_boobjob_front_close_view",
+ "normal_fingering_mixed_camera_folder_pool",
+ "normal_fingering_reclined_front_view",
+ "normal_sixty_nine_mixed_camera_folder_pool",
+ "normal_sixty_nine_front_close_view",
+ "normal_wand_mixed_camera_folder_pool",
+ "normal_wand_front_close_view",
+ "normal_ballsucking_standing_low_side_view",
+ "normal_face_sitting_mixed_camera_folder_pool",
+ "normal_pussy_licking_backview_mixed_camera_folder_pool",
+ "normal_removing_pants_mixed_camera_folder_pool",
+ "normal_rimjob_mixed_camera_folder_pool",
+ "normal_footjob_mixed_camera_folder_pool",
+ "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool",
+ "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool",
+ "normal_fist_mixed_camera_folder_pool",
+ "normal_anal_cowgirl_single_reference_pool",
+ "normal_anal_doggy_side_view_single_reference_pool",
+ "normal_anal_laying_back_three_quarter_single_reference_pool",
+ "normal_anal_reverse_congress_single_reference_pool",
+ "normal_anus_licking_single_reference_pool",
+ "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ "normal_doggy_press_back_side_single_reference_pool",
+ "normal_face_sitting_front_view_single_reference_pool",
+ "normal_handjob_standing_low_angle_single_reference_pool",
+ "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ "normal_pussy_licking_standing_woman_single_reference_pool",
+ "normal_under_desk_single_reference_pool",
+ "normal_piledriver_high_front_down_view",
}
for variant in variants:
key = _expect_text("normal_camera_variants.key", variant.get("key"), 8)
_expect(key not in seen_variant_keys, f"Normal camera variants have duplicate key {key!r}")
seen_variant_keys.add(key)
+ variants_by_key[key] = variant
_expect(variant.get("status") in variant_statuses, f"{key} has unknown status {variant.get('status')!r}")
_expect_text(f"{key}.canonical_geometry", variant.get("canonical_geometry"), 40)
prompt_cues = variant.get("prompt_cues")
@@ -6951,11 +7001,2424 @@ def smoke_normal_camera_atlas_catalog() -> None:
_expect_text(f"{key}.generator_hook.notes", hook.get("notes"), 20)
_expect("Future hook only" in hook.get("notes", ""), f"{key} should remain a future hook, not a live route")
_expect(required_variants.issubset(seen_variant_keys), "Normal camera variants lost required reviewed camera splits")
+ cowgirl_back_refs = (variants_by_key.get("normal_cowgirl_back_three_quarter") or {}).get("reference_images") or []
+ _expect(len(cowgirl_back_refs) == 15, "Normal cowgirl back-three-quarter route should carry 15 reviewed references")
+ cowgirl_side_refs = (variants_by_key.get("normal_cowgirl_side_profile") or {}).get("reference_images") or []
+ _expect(len(cowgirl_side_refs) == 15, "Normal cowgirl side-profile route should carry 15 reviewed references")
+ doggy_back_refs = (variants_by_key.get("normal_doggy_all_fours_back_three_quarter") or {}).get("reference_images") or []
+ _expect(len(doggy_back_refs) == 15, "Normal doggy all-fours back-three-quarter route should carry 15 reviewed references")
+ doggy_front_refs = (variants_by_key.get("normal_doggy_all_fours_front_view") or {}).get("reference_images") or []
+ _expect(len(doggy_front_refs) == 15, "Normal doggy all-fours front-view route should carry 15 reviewed references")
+ doggy_generic_front_refs = (variants_by_key.get("normal_doggy_generic_front_view") or {}).get("reference_images") or []
+ _expect(len(doggy_generic_front_refs) == 15, "Normal doggy generic front-view route should carry 15 reviewed references")
+ doggy_generic_back_refs = (variants_by_key.get("normal_doggy_generic_back_three_quarter") or {}).get("reference_images") or []
+ _expect(len(doggy_generic_back_refs) == 15, "Normal doggy generic back-three-quarter route should carry 15 reviewed references")
+ breast_sucking_refs = (variants_by_key.get("normal_breast_sucking_side_view") or {}).get("reference_images") or []
+ _expect(len(breast_sucking_refs) == 15, "Normal breast-sucking side-view route should carry 15 reviewed references")
+ breast_contact_front_refs = (variants_by_key.get("normal_breast_contact_front_view") or {}).get("reference_images") or []
+ _expect(len(breast_contact_front_refs) == 15, "Normal breast-contact front-view route should carry 15 reviewed references")
+ reverse_congress_front_refs = (variants_by_key.get("normal_reverse_congress_front_view") or {}).get("reference_images") or []
+ _expect(len(reverse_congress_front_refs) == 15, "Normal reverse-congress front-view route should carry 15 reviewed references")
+ boobjob_front_close_refs = (variants_by_key.get("normal_boobjob_front_close_view") or {}).get("reference_images") or []
+ _expect(len(boobjob_front_close_refs) == 12, "Normal boobjob front-close route should carry 12 reviewed references")
+ fingering_reclined_front_refs = (variants_by_key.get("normal_fingering_reclined_front_view") or {}).get("reference_images") or []
+ _expect(len(fingering_reclined_front_refs) == 10, "Normal fingering reclined front-view route should carry 10 reviewed references")
+ sixty_nine_front_close_refs = (variants_by_key.get("normal_sixty_nine_front_close_view") or {}).get("reference_images") or []
+ _expect(len(sixty_nine_front_close_refs) == 7, "Normal sixty-nine front-close route should carry 7 reviewed references")
+ wand_front_close_refs = (variants_by_key.get("normal_wand_front_close_view") or {}).get("reference_images") or []
+ _expect(len(wand_front_close_refs) == 7, "Normal wand front-close route should carry 7 reviewed references")
+ ballsucking_standing_refs = (variants_by_key.get("normal_ballsucking_standing_low_side_view") or {}).get("reference_images") or []
+ _expect(len(ballsucking_standing_refs) == 11, "Normal ballsucking standing low-side route should carry 11 reviewed references")
+ face_sitting_pool_refs = (variants_by_key.get("normal_face_sitting_mixed_camera_folder_pool") or {}).get("reference_images") or []
+ _expect(len(face_sitting_pool_refs) == 4, "Normal face-sitting source pool should carry all 4 reviewed references")
+ _expect(
+ (variants_by_key.get("normal_face_sitting_mixed_camera_folder_pool") or {}).get("status") == "needs_samples",
+ "Normal face-sitting source pool should stay needs_samples",
+ )
+ pussy_licking_backview_pool_refs = (
+ variants_by_key.get("normal_pussy_licking_backview_mixed_camera_folder_pool") or {}
+ ).get("reference_images") or []
+ _expect(
+ len(pussy_licking_backview_pool_refs) == 3,
+ "Normal pussy-licking back-view source pool should carry all 3 reviewed references",
+ )
+ _expect(
+ (variants_by_key.get("normal_pussy_licking_backview_mixed_camera_folder_pool") or {}).get("status") == "needs_samples",
+ "Normal pussy-licking back-view source pool should stay needs_samples",
+ )
+ removing_pants_pool_refs = (variants_by_key.get("normal_removing_pants_mixed_camera_folder_pool") or {}).get("reference_images") or []
+ _expect(len(removing_pants_pool_refs) == 3, "Normal removing-pants source pool should carry all 3 reviewed references")
+ _expect(
+ (variants_by_key.get("normal_removing_pants_mixed_camera_folder_pool") or {}).get("status") == "needs_samples",
+ "Normal removing-pants source pool should stay needs_samples",
+ )
+ thin_batch_pool_counts = {
+ "normal_rimjob_mixed_camera_folder_pool": 3,
+ "normal_footjob_mixed_camera_folder_pool": 2,
+ "normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool": 2,
+ "normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool": 2,
+ "normal_fist_mixed_camera_folder_pool": 1,
+ "normal_anal_cowgirl_single_reference_pool": 1,
+ "normal_anal_doggy_side_view_single_reference_pool": 1,
+ "normal_anal_laying_back_three_quarter_single_reference_pool": 1,
+ "normal_anal_reverse_congress_single_reference_pool": 1,
+ "normal_anus_licking_single_reference_pool": 1,
+ "normal_blowjob_laying_back_three_quarter_single_reference_pool": 1,
+ "normal_doggy_press_back_side_single_reference_pool": 1,
+ "normal_face_sitting_front_view_single_reference_pool": 1,
+ "normal_handjob_standing_low_angle_single_reference_pool": 1,
+ "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool": 1,
+ "normal_pussy_licking_standing_woman_single_reference_pool": 1,
+ "normal_under_desk_single_reference_pool": 1,
+ "normal_ballsucking_laying_close_reference_folder_pool": 2,
+ "normal_pretzel_mixed_camera_folder_pool": 2,
+ "normal_display_rear_exposed_body_folder_pool": 4,
+ }
+ for variant_key, expected_count in thin_batch_pool_counts.items():
+ pool_refs = (variants_by_key.get(variant_key) or {}).get("reference_images") or []
+ _expect(
+ len(pool_refs) == expected_count,
+ f"{variant_key} should carry all {expected_count} reviewed references",
+ )
+ _expect(
+ (variants_by_key.get(variant_key) or {}).get("status") == "needs_samples",
+ f"{variant_key} should stay needs_samples",
+ )
+ blowjob_laying_front_refs = (variants_by_key.get("normal_blowjob_laying_front_view") or {}).get("reference_images") or []
+ _expect(len(blowjob_laying_front_refs) == 15, "Normal blowjob laying front-view route should carry 15 reviewed references")
+ piledriver_refs = (variants_by_key.get("normal_piledriver_high_front_down_view") or {}).get("reference_images") or []
+ _expect(len(piledriver_refs) == 15, "Normal piledriver high-front-down route should carry 15 reviewed references")
doc = doc_path.read_text(encoding="utf-8")
_expect("Normal Camera Atlas" in doc, "Normal camera docs lost title")
- _expect("Curated variants | 86" in doc, "Normal camera docs lost variant count")
+ _expect("Curated variants | 131" in doc, "Normal camera docs lost variant count")
+ _expect("Pre-A/B candidates | 55" in doc, "Normal camera docs lost pre-A/B count")
+ _expect("Needs samples | 76" in doc, "Normal camera docs lost needs-samples count")
_expect("penis-worship orientation corrections" in doc, "Normal camera docs lost user-corrected orientation note")
+ _expect("reverse-cowgirl unused-pool tranche" in doc, "Normal camera docs lost reverse-cowgirl unused-pool note")
+ _expect("No-Generation Prep Artifacts" in doc, "Normal camera docs lost no-generation prep artifact section")
+ _expect("normal_camera_score_sheet.json" in doc, "Normal camera docs lost score-sheet artifact reference")
+
+
+def _expect_normal_camera_validator() -> None:
+ from tools import normal_camera_atlas_validate
+
+ errors = normal_camera_atlas_validate.validate_normal_camera_atlas(ROOT / "ab_batches" / "normal_camera")
+ _expect(not errors, "Normal camera atlas validator failed: " + "; ".join(errors[:10]))
+
+
+def smoke_normal_camera_atlas_prep_artifacts() -> None:
+ import importlib
+
+ _expect_normal_camera_validator()
+
+ prep_module = importlib.import_module("normal_camera_atlas_prep")
+ artifact_dir = ROOT / "ab_batches" / "normal_camera"
+ priority_artifact_path = artifact_dir / "normal_camera_priority_plan.json"
+ prompt_batch_artifact_path = artifact_dir / "normal_camera_prompt_cue_batch.json"
+ score_sheet_artifact_path = artifact_dir / "normal_camera_score_sheet.json"
+ gates_artifact_path = artifact_dir / "normal_camera_acceptance_gates.md"
+ unused_pool_backlog_path = artifact_dir / "normal_camera_unused_pool_backlog.json"
+ reverse_cowgirl_manifest_path = artifact_dir / "review" / "reverse_cowgirl_review_manifest.json"
+ reverse_cowgirl_contact_sheet_path = artifact_dir / "review" / "reverse_cowgirl_contact_sheet.html"
+ breasts_exposed_manifest_path = artifact_dir / "review" / "breasts_exposed_review_manifest.json"
+ breasts_exposed_contact_sheet_path = artifact_dir / "review" / "breasts_exposed_contact_sheet.html"
+ pussy_spread_manifest_path = artifact_dir / "review" / "pussy_spread_review_manifest.json"
+ pussy_spread_contact_sheet_path = artifact_dir / "review" / "pussy_spread_contact_sheet.html"
+ anal_random_manifest_path = artifact_dir / "review" / "anal_random_review_manifest.json"
+ anal_random_contact_sheet_path = artifact_dir / "review" / "anal_random_contact_sheet.html"
+ couple_kissing_manifest_path = artifact_dir / "review" / "couple_kissing_review_manifest.json"
+ couple_kissing_contact_sheet_path = artifact_dir / "review" / "couple_kissing_contact_sheet.html"
+ cowgirl_back_manifest_path = artifact_dir / "review" / "cowgirl_back_view_3_4_angle_review_manifest.json"
+ cowgirl_back_contact_sheet_path = artifact_dir / "review" / "cowgirl_back_view_3_4_angle_contact_sheet.html"
+ rear_body_manifest_path = artifact_dir / "review" / "woman_solo_showing_her_hass_back_view_review_manifest.json"
+ rear_body_contact_sheet_path = artifact_dir / "review" / "woman_solo_showing_her_hass_back_view_contact_sheet.html"
+ doggy_all_fours_back_manifest_path = artifact_dir / "review" / "doggy_on_all_four_back_view_3_4_angle_review_manifest.json"
+ doggy_all_fours_back_contact_sheet_path = artifact_dir / "review" / "doggy_on_all_four_back_view_3_4_angle_contact_sheet.html"
+ doggy_all_fours_side_manifest_path = artifact_dir / "review" / "doggy_on_all_four_side_view_review_manifest.json"
+ doggy_all_fours_side_contact_sheet_path = artifact_dir / "review" / "doggy_on_all_four_side_view_contact_sheet.html"
+ handjob_standing_side_manifest_path = artifact_dir / "review" / "handjob_standing_side_view_review_manifest.json"
+ handjob_standing_side_contact_sheet_path = artifact_dir / "review" / "handjob_standing_side_view_contact_sheet.html"
+ breast_sucking_side_manifest_path = artifact_dir / "review" / "breast_sucking_side_view_review_manifest.json"
+ breast_sucking_side_contact_sheet_path = artifact_dir / "review" / "breast_sucking_side_view_contact_sheet.html"
+ standing_from_front_side_manifest_path = artifact_dir / "review" / "fuck_from_front_standing_side_view_review_manifest.json"
+ standing_from_front_side_contact_sheet_path = artifact_dir / "review" / "fuck_from_front_standing_side_view_contact_sheet.html"
+ doggy_generic_back_manifest_path = artifact_dir / "review" / "doggy_back_view_3_4_angle_review_manifest.json"
+ doggy_generic_back_contact_sheet_path = artifact_dir / "review" / "doggy_back_view_3_4_angle_contact_sheet.html"
+ cowgirl_side_manifest_path = artifact_dir / "review" / "cowgirl_side_view_review_manifest.json"
+ cowgirl_side_contact_sheet_path = artifact_dir / "review" / "cowgirl_side_view_contact_sheet.html"
+ penis_worship_manifest_path = artifact_dir / "review" / "penis_worship_review_manifest.json"
+ penis_worship_contact_sheet_path = artifact_dir / "review" / "penis_worship_contact_sheet.html"
+ standing_backside_side_manifest_path = artifact_dir / "review" / "fuck_from_behind_standing_woman_backside_side_view_review_manifest.json"
+ standing_backside_side_contact_sheet_path = artifact_dir / "review" / "fuck_from_behind_standing_woman_backside_side_view_contact_sheet.html"
+ doggy_all_fours_front_manifest_path = artifact_dir / "review" / "doggy_all_four_front_view_review_manifest.json"
+ doggy_all_fours_front_contact_sheet_path = artifact_dir / "review" / "doggy_all_four_front_view_contact_sheet.html"
+ doggy_generic_front_manifest_path = artifact_dir / "review" / "doggy_front_view_review_manifest.json"
+ doggy_generic_front_contact_sheet_path = artifact_dir / "review" / "doggy_front_view_contact_sheet.html"
+ piledriver_manifest_path = artifact_dir / "review" / "piledriver_review_manifest.json"
+ piledriver_contact_sheet_path = artifact_dir / "review" / "piledriver_contact_sheet.html"
+ blowjob_laying_front_manifest_path = artifact_dir / "review" / "blowjob_laying_front_view_review_manifest.json"
+ blowjob_laying_front_contact_sheet_path = artifact_dir / "review" / "blowjob_laying_front_view_contact_sheet.html"
+ breast_contact_front_manifest_path = artifact_dir / "review" / "breast_touching_front_view_review_manifest.json"
+ breast_contact_front_contact_sheet_path = artifact_dir / "review" / "breast_touching_front_view_contact_sheet.html"
+ reverse_congress_front_manifest_path = artifact_dir / "review" / "reverse_congress_front_view_review_manifest.json"
+ reverse_congress_front_contact_sheet_path = artifact_dir / "review" / "reverse_congress_front_view_contact_sheet.html"
+ boobjob_manifest_path = artifact_dir / "review" / "boobjob_review_manifest.json"
+ boobjob_contact_sheet_path = artifact_dir / "review" / "boobjob_contact_sheet.html"
+ fingering_manifest_path = artifact_dir / "review" / "fingering_review_manifest.json"
+ fingering_contact_sheet_path = artifact_dir / "review" / "fingering_contact_sheet.html"
+ sixty_nine_manifest_path = artifact_dir / "review" / "69_review_manifest.json"
+ sixty_nine_contact_sheet_path = artifact_dir / "review" / "69_contact_sheet.html"
+ wand_manifest_path = artifact_dir / "review" / "wand_review_manifest.json"
+ wand_contact_sheet_path = artifact_dir / "review" / "wand_contact_sheet.html"
+ ballsucking_standing_manifest_path = artifact_dir / "review" / "ballsucking_standing_review_manifest.json"
+ ballsucking_standing_contact_sheet_path = artifact_dir / "review" / "ballsucking_standing_contact_sheet.html"
+ face_sitting_manifest_path = artifact_dir / "review" / "face_sitting_review_manifest.json"
+ face_sitting_contact_sheet_path = artifact_dir / "review" / "face_sitting_contact_sheet.html"
+ pussy_licking_backview_manifest_path = artifact_dir / "review" / "pussy_licking_backv_iew_review_manifest.json"
+ pussy_licking_backview_contact_sheet_path = artifact_dir / "review" / "pussy_licking_backv_iew_contact_sheet.html"
+ removing_pants_manifest_path = artifact_dir / "review" / "removing_pants_review_manifest.json"
+ removing_pants_contact_sheet_path = artifact_dir / "review" / "removing_pants_contact_sheet.html"
+ thin_batch_review_paths = {
+ "rimjob": (
+ artifact_dir / "review" / "rimjob_review_manifest.json",
+ artifact_dir / "review" / "rimjob_contact_sheet.html",
+ ),
+ "footjob": (
+ artifact_dir / "review" / "footjob_review_manifest.json",
+ artifact_dir / "review" / "footjob_contact_sheet.html",
+ ),
+ "reverse cowgirl - leg up": (
+ artifact_dir / "review" / "reverse_cowgirl_leg_up_review_manifest.json",
+ artifact_dir / "review" / "reverse_cowgirl_leg_up_contact_sheet.html",
+ ),
+ "reverse cowgirl -pretzel": (
+ artifact_dir / "review" / "reverse_cowgirl_pretzel_review_manifest.json",
+ artifact_dir / "review" / "reverse_cowgirl_pretzel_contact_sheet.html",
+ ),
+ "fist": (
+ artifact_dir / "review" / "fist_review_manifest.json",
+ artifact_dir / "review" / "fist_contact_sheet.html",
+ ),
+ "anal cowgirl": (
+ artifact_dir / "review" / "anal_cowgirl_review_manifest.json",
+ artifact_dir / "review" / "anal_cowgirl_contact_sheet.html",
+ ),
+ "anal doggy - side view": (
+ artifact_dir / "review" / "anal_doggy_side_view_review_manifest.json",
+ artifact_dir / "review" / "anal_doggy_side_view_contact_sheet.html",
+ ),
+ "anal fuck from behind laying - back view - 3-4 angle": (
+ artifact_dir / "review" / "anal_fuck_from_behind_laying_back_view_3_4_angle_review_manifest.json",
+ artifact_dir / "review" / "anal_fuck_from_behind_laying_back_view_3_4_angle_contact_sheet.html",
+ ),
+ "anal reverse congress": (
+ artifact_dir / "review" / "anal_reverse_congress_review_manifest.json",
+ artifact_dir / "review" / "anal_reverse_congress_contact_sheet.html",
+ ),
+ "anus lickiing": (
+ artifact_dir / "review" / "anus_lickiing_review_manifest.json",
+ artifact_dir / "review" / "anus_lickiing_contact_sheet.html",
+ ),
+ "blowjob laying - back view - 3-4 angle": (
+ artifact_dir / "review" / "blowjob_laying_back_view_3_4_angle_review_manifest.json",
+ artifact_dir / "review" / "blowjob_laying_back_view_3_4_angle_contact_sheet.html",
+ ),
+ "doggy press - back side": (
+ artifact_dir / "review" / "doggy_press_back_side_review_manifest.json",
+ artifact_dir / "review" / "doggy_press_back_side_contact_sheet.html",
+ ),
+ "face sitting - front view": (
+ artifact_dir / "review" / "face_sitting_front_view_review_manifest.json",
+ artifact_dir / "review" / "face_sitting_front_view_contact_sheet.html",
+ ),
+ "handjob - standing -low angle": (
+ artifact_dir / "review" / "handjob_standing_low_angle_review_manifest.json",
+ artifact_dir / "review" / "handjob_standing_low_angle_contact_sheet.html",
+ ),
+ "pussy licking leg up - back view - 3-4 angle": (
+ artifact_dir / "review" / "pussy_licking_leg_up_back_view_3_4_angle_review_manifest.json",
+ artifact_dir / "review" / "pussy_licking_leg_up_back_view_3_4_angle_contact_sheet.html",
+ ),
+ "pussy licking standing woman": (
+ artifact_dir / "review" / "pussy_licking_standing_woman_review_manifest.json",
+ artifact_dir / "review" / "pussy_licking_standing_woman_contact_sheet.html",
+ ),
+ "under desk": (
+ artifact_dir / "review" / "under_desk_review_manifest.json",
+ artifact_dir / "review" / "under_desk_contact_sheet.html",
+ ),
+ "ballsucking - laying": (
+ artifact_dir / "review" / "ballsucking_laying_review_manifest.json",
+ artifact_dir / "review" / "ballsucking_laying_contact_sheet.html",
+ ),
+ "pretzel": (
+ artifact_dir / "review" / "pretzel_review_manifest.json",
+ artifact_dir / "review" / "pretzel_contact_sheet.html",
+ ),
+ "woman ass exposed": (
+ artifact_dir / "review" / "woman_ass_exposed_review_manifest.json",
+ artifact_dir / "review" / "woman_ass_exposed_contact_sheet.html",
+ ),
+ }
+ thin_batch_pool_expectations = {
+ "rimjob": ("normal_rimjob_mixed_camera_folder_pool", 3),
+ "footjob": ("normal_footjob_mixed_camera_folder_pool", 2),
+ "reverse cowgirl - leg up": ("normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool", 2),
+ "reverse cowgirl -pretzel": ("normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool", 2),
+ "fist": ("normal_fist_mixed_camera_folder_pool", 1),
+ "anal cowgirl": ("normal_anal_cowgirl_single_reference_pool", 1),
+ "anal doggy - side view": ("normal_anal_doggy_side_view_single_reference_pool", 1),
+ "anal fuck from behind laying - back view - 3-4 angle": (
+ "normal_anal_laying_back_three_quarter_single_reference_pool",
+ 1,
+ ),
+ "anal reverse congress": ("normal_anal_reverse_congress_single_reference_pool", 1),
+ "anus lickiing": ("normal_anus_licking_single_reference_pool", 1),
+ "blowjob laying - back view - 3-4 angle": (
+ "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ 1,
+ ),
+ "doggy press - back side": ("normal_doggy_press_back_side_single_reference_pool", 1),
+ "face sitting - front view": ("normal_face_sitting_front_view_single_reference_pool", 1),
+ "handjob - standing -low angle": ("normal_handjob_standing_low_angle_single_reference_pool", 1),
+ "pussy licking leg up - back view - 3-4 angle": (
+ "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ 1,
+ ),
+ "pussy licking standing woman": ("normal_pussy_licking_standing_woman_single_reference_pool", 1),
+ "under desk": ("normal_under_desk_single_reference_pool", 1),
+ "ballsucking - laying": ("normal_ballsucking_laying_close_reference_folder_pool", 2),
+ "pretzel": ("normal_pretzel_mixed_camera_folder_pool", 2),
+ "woman ass exposed": ("normal_display_rear_exposed_body_folder_pool", 4),
+ }
+ for artifact_path in (
+ priority_artifact_path,
+ prompt_batch_artifact_path,
+ score_sheet_artifact_path,
+ gates_artifact_path,
+ unused_pool_backlog_path,
+ reverse_cowgirl_manifest_path,
+ reverse_cowgirl_contact_sheet_path,
+ breasts_exposed_manifest_path,
+ breasts_exposed_contact_sheet_path,
+ pussy_spread_manifest_path,
+ pussy_spread_contact_sheet_path,
+ anal_random_manifest_path,
+ anal_random_contact_sheet_path,
+ couple_kissing_manifest_path,
+ couple_kissing_contact_sheet_path,
+ cowgirl_back_manifest_path,
+ cowgirl_back_contact_sheet_path,
+ rear_body_manifest_path,
+ rear_body_contact_sheet_path,
+ doggy_all_fours_back_manifest_path,
+ doggy_all_fours_back_contact_sheet_path,
+ doggy_all_fours_side_manifest_path,
+ doggy_all_fours_side_contact_sheet_path,
+ handjob_standing_side_manifest_path,
+ handjob_standing_side_contact_sheet_path,
+ breast_sucking_side_manifest_path,
+ breast_sucking_side_contact_sheet_path,
+ standing_from_front_side_manifest_path,
+ standing_from_front_side_contact_sheet_path,
+ doggy_generic_back_manifest_path,
+ doggy_generic_back_contact_sheet_path,
+ cowgirl_side_manifest_path,
+ cowgirl_side_contact_sheet_path,
+ penis_worship_manifest_path,
+ penis_worship_contact_sheet_path,
+ standing_backside_side_manifest_path,
+ standing_backside_side_contact_sheet_path,
+ doggy_all_fours_front_manifest_path,
+ doggy_all_fours_front_contact_sheet_path,
+ doggy_generic_front_manifest_path,
+ doggy_generic_front_contact_sheet_path,
+ piledriver_manifest_path,
+ piledriver_contact_sheet_path,
+ blowjob_laying_front_manifest_path,
+ blowjob_laying_front_contact_sheet_path,
+ breast_contact_front_manifest_path,
+ breast_contact_front_contact_sheet_path,
+ reverse_congress_front_manifest_path,
+ reverse_congress_front_contact_sheet_path,
+ boobjob_manifest_path,
+ boobjob_contact_sheet_path,
+ fingering_manifest_path,
+ fingering_contact_sheet_path,
+ sixty_nine_manifest_path,
+ sixty_nine_contact_sheet_path,
+ wand_manifest_path,
+ wand_contact_sheet_path,
+ ballsucking_standing_manifest_path,
+ ballsucking_standing_contact_sheet_path,
+ face_sitting_manifest_path,
+ face_sitting_contact_sheet_path,
+ pussy_licking_backview_manifest_path,
+ pussy_licking_backview_contact_sheet_path,
+ removing_pants_manifest_path,
+ removing_pants_contact_sheet_path,
+ *(path for pair in thin_batch_review_paths.values() for path in pair),
+ ):
+ _expect(artifact_path.is_file(), f"Normal camera prep artifact is missing: {artifact_path}")
+
+ priority_plan = prep_module.build_priority_plan(limit=5)
+ _expect(priority_plan.get("schema") == "sxcp_normal_camera_priority_plan_v1", "Normal camera priority plan schema changed")
+ _expect(priority_plan.get("no_generation") is True, "Normal camera priority plan must stay no-generation")
+ _expect(priority_plan.get("atlas_root") == "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted", "Normal camera priority plan atlas root changed")
+ candidates = priority_plan.get("candidates")
+ _expect(isinstance(candidates, list) and len(candidates) == 5, "Normal camera priority plan should honor the limit")
+ for index, candidate in enumerate(candidates, start=1):
+ _expect(candidate.get("priority_rank") == index, "Normal camera priority ranks should be stable and 1-based")
+ _expect(candidate.get("status") == "pre_ab_candidate", f"{candidate.get('key')} is not a pre-A/B candidate")
+ _expect(isinstance(candidate.get("reference_images"), list) and candidate["reference_images"], f"{candidate.get('key')} has no references")
+ _expect(isinstance(candidate.get("acceptance_gates"), list) and len(candidate["acceptance_gates"]) >= 6, f"{candidate.get('key')} lost acceptance gates")
+
+ prompt_batch = prep_module.build_prompt_cue_batch(limit=5)
+ _expect(prompt_batch.get("schema") == "sxcp_normal_camera_prompt_cue_batch_v1", "Normal camera prompt batch schema changed")
+ _expect(prompt_batch.get("no_generation") is True, "Normal camera prompt batch must stay no-generation")
+ items = prompt_batch.get("items")
+ _expect(isinstance(items, list) and len(items) == 5, "Normal camera prompt batch should honor the limit")
+ _expect(
+ any(item.get("state") == "needs_prompt_cleanup" for item in items),
+ "Normal camera prompt batch should flag option/noise cues before they become prompt-ready",
+ )
+ for item in items:
+ _expect(isinstance(item.get("source_prompt_cues"), list) and item["source_prompt_cues"], f"{item.get('variant_key')} lost source cues")
+ _expect(isinstance(item.get("positive_prompt_cues"), list), f"{item.get('variant_key')} positive cues should be a list")
+ _expect(isinstance(item.get("blocked_prompt_cues"), list), f"{item.get('variant_key')} blocked cues should be a list")
+ for cue in item.get("positive_prompt_cues") or []:
+ _expect(
+ not re.search(r"\b(?:may|optionally|either|or|without|never|no|not)\b", cue, flags=re.IGNORECASE),
+ f"{item.get('variant_key')} prompt-ready cue still has option/negative wording: {cue!r}",
+ )
+
+ score_sheet = prep_module.build_score_sheet(limit=5)
+ _expect(score_sheet.get("schema") == "sxcp_normal_camera_score_sheet_v1", "Normal camera score sheet schema changed")
+ _expect(score_sheet.get("no_generation") is True, "Normal camera score sheet must stay no-generation")
+ expected_gates = {
+ "camera_geometry",
+ "pose_ownership",
+ "workspace_continuity",
+ "clothing_visibility",
+ "subject_identity",
+ "body_proportion_control",
+ "prompt_noise",
+ "atlas_reference_match",
+ }
+ _expect(set(score_sheet.get("acceptance_gates") or []) == expected_gates, "Normal camera score sheet lost acceptance gates")
+ rows = score_sheet.get("rows")
+ _expect(isinstance(rows, list) and len(rows) == 5, "Normal camera score sheet should honor the limit")
+ for row in rows:
+ scores = row.get("scores")
+ _expect(isinstance(scores, dict), f"{row.get('variant_key')} score row has no scores")
+ _expect(set(scores.keys()) == expected_gates, f"{row.get('variant_key')} score row lost gate columns")
+ _expect(all(value is None for value in scores.values()), f"{row.get('variant_key')} score row should be blank before generation")
+
+ priority_artifact = json.loads(priority_artifact_path.read_text(encoding="utf-8"))
+ prompt_batch_artifact = json.loads(prompt_batch_artifact_path.read_text(encoding="utf-8"))
+ score_sheet_artifact = json.loads(score_sheet_artifact_path.read_text(encoding="utf-8"))
+ unused_pool_backlog = json.loads(unused_pool_backlog_path.read_text(encoding="utf-8"))
+ reverse_cowgirl_manifest = json.loads(reverse_cowgirl_manifest_path.read_text(encoding="utf-8"))
+ breasts_exposed_manifest = json.loads(breasts_exposed_manifest_path.read_text(encoding="utf-8"))
+ pussy_spread_manifest = json.loads(pussy_spread_manifest_path.read_text(encoding="utf-8"))
+ anal_random_manifest = json.loads(anal_random_manifest_path.read_text(encoding="utf-8"))
+ couple_kissing_manifest = json.loads(couple_kissing_manifest_path.read_text(encoding="utf-8"))
+ cowgirl_back_manifest = json.loads(cowgirl_back_manifest_path.read_text(encoding="utf-8"))
+ rear_body_manifest = json.loads(rear_body_manifest_path.read_text(encoding="utf-8"))
+ doggy_all_fours_back_manifest = json.loads(doggy_all_fours_back_manifest_path.read_text(encoding="utf-8"))
+ doggy_all_fours_side_manifest = json.loads(doggy_all_fours_side_manifest_path.read_text(encoding="utf-8"))
+ handjob_standing_side_manifest = json.loads(handjob_standing_side_manifest_path.read_text(encoding="utf-8"))
+ breast_sucking_side_manifest = json.loads(breast_sucking_side_manifest_path.read_text(encoding="utf-8"))
+ standing_from_front_side_manifest = json.loads(standing_from_front_side_manifest_path.read_text(encoding="utf-8"))
+ doggy_generic_back_manifest = json.loads(doggy_generic_back_manifest_path.read_text(encoding="utf-8"))
+ cowgirl_side_manifest = json.loads(cowgirl_side_manifest_path.read_text(encoding="utf-8"))
+ penis_worship_manifest = json.loads(penis_worship_manifest_path.read_text(encoding="utf-8"))
+ standing_backside_side_manifest = json.loads(standing_backside_side_manifest_path.read_text(encoding="utf-8"))
+ doggy_all_fours_front_manifest = json.loads(doggy_all_fours_front_manifest_path.read_text(encoding="utf-8"))
+ doggy_generic_front_manifest = json.loads(doggy_generic_front_manifest_path.read_text(encoding="utf-8"))
+ piledriver_manifest = json.loads(piledriver_manifest_path.read_text(encoding="utf-8"))
+ blowjob_laying_front_manifest = json.loads(blowjob_laying_front_manifest_path.read_text(encoding="utf-8"))
+ breast_contact_front_manifest = json.loads(breast_contact_front_manifest_path.read_text(encoding="utf-8"))
+ reverse_congress_front_manifest = json.loads(reverse_congress_front_manifest_path.read_text(encoding="utf-8"))
+ boobjob_manifest = json.loads(boobjob_manifest_path.read_text(encoding="utf-8"))
+ fingering_manifest = json.loads(fingering_manifest_path.read_text(encoding="utf-8"))
+ sixty_nine_manifest = json.loads(sixty_nine_manifest_path.read_text(encoding="utf-8"))
+ wand_manifest = json.loads(wand_manifest_path.read_text(encoding="utf-8"))
+ ballsucking_standing_manifest = json.loads(ballsucking_standing_manifest_path.read_text(encoding="utf-8"))
+ face_sitting_manifest = json.loads(face_sitting_manifest_path.read_text(encoding="utf-8"))
+ pussy_licking_backview_manifest = json.loads(pussy_licking_backview_manifest_path.read_text(encoding="utf-8"))
+ removing_pants_manifest = json.loads(removing_pants_manifest_path.read_text(encoding="utf-8"))
+ thin_batch_manifests = {
+ folder: json.loads(manifest_path.read_text(encoding="utf-8"))
+ for folder, (manifest_path, _contact_sheet_path) in thin_batch_review_paths.items()
+ }
+ _expect(priority_artifact.get("selected_count") == 55, "Normal camera priority artifact should include all 55 pre-A/B variants")
+ _expect(len(prompt_batch_artifact.get("items") or []) == 55, "Normal camera prompt batch artifact should include all 55 pre-A/B variants")
+ _expect(len(score_sheet_artifact.get("rows") or []) == 55, "Normal camera score sheet artifact should include all 55 pre-A/B variants")
+ _expect("body_proportion_control" in gates_artifact_path.read_text(encoding="utf-8"), "Normal camera gate artifact lost body proportion gate")
+ _expect((unused_pool_backlog.get("folders") or [])[0].get("folder") == "reverse cowgirl", "Normal camera unused-pool backlog should start with reverse cowgirl")
+ artifact_backlog_by_folder = {str(row.get("folder")): row for row in unused_pool_backlog.get("folders") or []}
+ _expect("cowgirl - back view - 3-4 angle" in artifact_backlog_by_folder, "Cowgirl back-three-quarter backlog row should remain tracked")
+ _expect(artifact_backlog_by_folder["cowgirl - back view - 3-4 angle"].get("selected_reference_count") == 15, "Cowgirl back-three-quarter selected-reference count changed")
+ _expect(artifact_backlog_by_folder["cowgirl - back view - 3-4 angle"].get("remaining_image_count") == 114, "Cowgirl back-three-quarter unused-pool count changed")
+ _expect("pussy spread" in artifact_backlog_by_folder, "Pussy-spread backlog row should remain tracked")
+ _expect(artifact_backlog_by_folder["pussy spread"].get("selected_reference_count") == 39, "Pussy-spread selected-reference count changed")
+ _expect(artifact_backlog_by_folder["pussy spread"].get("remaining_image_count") == 61, "Pussy-spread unused-pool count changed")
+ _expect("breasts exposed" in artifact_backlog_by_folder, "Breasts-exposed backlog row should remain tracked")
+ _expect(artifact_backlog_by_folder["breasts exposed"].get("selected_reference_count") == 49, "Breasts-exposed selected-reference count changed")
+ _expect(artifact_backlog_by_folder["breasts exposed"].get("remaining_image_count") == 119, "Breasts-exposed unused-pool count changed")
+ _expect("woman solo showing her hass - back view" in artifact_backlog_by_folder, "Rear-body display backlog row should remain tracked")
+ _expect(artifact_backlog_by_folder["woman solo showing her hass - back view"].get("selected_reference_count") == 30, "Rear-body display selected-reference count changed")
+ _expect(artifact_backlog_by_folder["woman solo showing her hass - back view"].get("remaining_image_count") == 69, "Rear-body display unused-pool count changed")
+ _expect("doggy on all four - back view - 3-4 angle" in artifact_backlog_by_folder, "Doggy all-fours back-three-quarter backlog row should remain tracked")
+ _expect(artifact_backlog_by_folder["doggy on all four - back view - 3-4 angle"].get("selected_reference_count") == 15, "Doggy all-fours back-three-quarter selected-reference count changed")
+ _expect(artifact_backlog_by_folder["doggy on all four - back view - 3-4 angle"].get("remaining_image_count") == 54, "Doggy all-fours back-three-quarter unused-pool count changed")
+ _expect("breast sucking - side view" in artifact_backlog_by_folder, "Breast-sucking side-view backlog row should remain tracked")
+ _expect(artifact_backlog_by_folder["breast sucking - side view"].get("selected_reference_count") == 15, "Breast-sucking side-view selected-reference count changed")
+ _expect(artifact_backlog_by_folder["breast sucking - side view"].get("remaining_image_count") == 28, "Breast-sucking side-view unused-pool count changed")
+ _expect("penis worship" in artifact_backlog_by_folder, "Penis-worship backlog row should remain tracked")
+ _expect(artifact_backlog_by_folder["penis worship"].get("selected_reference_count") == 20, "Penis-worship selected-reference count changed")
+ _expect(artifact_backlog_by_folder["penis worship"].get("remaining_image_count") == 29, "Penis-worship unused-pool count changed")
+ _expect(
+ "fuck from behind standing - woman backside - side view" in artifact_backlog_by_folder,
+ "Standing backside side-view backlog row should remain tracked",
+ )
+ _expect(
+ artifact_backlog_by_folder["fuck from behind standing - woman backside - side view"].get("selected_reference_count") == 17,
+ "Standing backside side-view selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["fuck from behind standing - woman backside - side view"].get("remaining_image_count") == 30,
+ "Standing backside side-view unused-pool count changed",
+ )
+ _expect("doggy all four - front view" in artifact_backlog_by_folder, "Doggy all-fours front-view backlog row should remain tracked")
+ _expect(
+ artifact_backlog_by_folder["doggy all four - front view"].get("selected_reference_count") == 15,
+ "Doggy all-fours front-view selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["doggy all four - front view"].get("remaining_image_count") == 13,
+ "Doggy all-fours front-view unused-pool count changed",
+ )
+ _expect(
+ "doggy - front view " in artifact_backlog_by_folder,
+ "Doggy generic front-view trailing-space backlog row should remain tracked",
+ )
+ _expect(
+ artifact_backlog_by_folder["doggy - front view "].get("covered_by_variants") is True,
+ "Doggy generic front-view trailing-space folder should be covered by an exact variant folder name",
+ )
+ _expect(
+ artifact_backlog_by_folder["doggy - front view "].get("selected_reference_count") == 12,
+ "Doggy generic front-view selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["doggy - front view "].get("remaining_image_count") == 1,
+ "Doggy generic front-view unused-pool count changed",
+ )
+ _expect("piledriver" in artifact_backlog_by_folder, "Piledriver backlog row should remain tracked")
+ _expect(
+ artifact_backlog_by_folder["piledriver"].get("selected_reference_count") == 18,
+ "Piledriver selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["piledriver"].get("remaining_image_count") == 9,
+ "Piledriver unused-pool count changed",
+ )
+ _expect(
+ "blowjob - laying - front view" in artifact_backlog_by_folder,
+ "Blowjob laying front-view backlog row should remain tracked",
+ )
+ _expect(
+ artifact_backlog_by_folder["blowjob - laying - front view"].get("selected_reference_count") == 15,
+ "Blowjob laying front-view selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["blowjob - laying - front view"].get("remaining_image_count") == 11,
+ "Blowjob laying front-view unused-pool count changed",
+ )
+ _expect(
+ "breast - touching - front view" in artifact_backlog_by_folder,
+ "Breast-contact front-view backlog row should remain tracked",
+ )
+ _expect(
+ artifact_backlog_by_folder["breast - touching - front view"].get("selected_reference_count") == 15,
+ "Breast-contact front-view selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["breast - touching - front view"].get("remaining_image_count") == 10,
+ "Breast-contact front-view unused-pool count changed",
+ )
+ _expect(
+ "reverse congress - front view" in artifact_backlog_by_folder,
+ "Reverse-congress front-view backlog row should remain tracked",
+ )
+ _expect(
+ artifact_backlog_by_folder["reverse congress - front view"].get("selected_reference_count") == 15,
+ "Reverse-congress front-view selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["reverse congress - front view"].get("remaining_image_count") == 6,
+ "Reverse-congress front-view unused-pool count changed",
+ )
+ _expect("boobjob" in artifact_backlog_by_folder, "Boobjob backlog row should remain tracked")
+ _expect(
+ artifact_backlog_by_folder["boobjob"].get("selected_reference_count") == 13,
+ "Boobjob selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["boobjob"].get("remaining_image_count") == 6,
+ "Boobjob unused-pool count changed",
+ )
+ _expect("fingering" in artifact_backlog_by_folder, "Fingering backlog row should remain tracked")
+ _expect(
+ artifact_backlog_by_folder["fingering"].get("selected_reference_count") == 12,
+ "Fingering selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["fingering"].get("remaining_image_count") == 3,
+ "Fingering unused-pool count changed",
+ )
+ _expect("69" in artifact_backlog_by_folder, "Sixty-nine backlog row should remain tracked")
+ _expect(
+ artifact_backlog_by_folder["69"].get("selected_reference_count") == 8,
+ "Sixty-nine selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["69"].get("remaining_image_count") == 2,
+ "Sixty-nine unused-pool count changed",
+ )
+ _expect("wand" in artifact_backlog_by_folder, "Wand backlog row should remain tracked")
+ _expect(
+ artifact_backlog_by_folder["wand"].get("selected_reference_count") == 8,
+ "Wand selected-reference count changed",
+ )
+ _expect(
+ artifact_backlog_by_folder["wand"].get("remaining_image_count") == 1,
+ "Wand unused-pool count changed",
+ )
+ _expect(
+ "ballsucking - standing" not in artifact_backlog_by_folder,
+ "Fully represented ballsucking standing folder should leave the unused-pool backlog",
+ )
+ _expect(
+ "face sitting" not in artifact_backlog_by_folder,
+ "Fully represented face-sitting folder should leave the unused-pool backlog",
+ )
+ _expect(
+ "pussy licking - backv iew" not in artifact_backlog_by_folder,
+ "Fully represented pussy-licking back-view folder should leave the unused-pool backlog",
+ )
+ _expect(
+ "removing pants" not in artifact_backlog_by_folder,
+ "Fully represented removing-pants folder should leave the unused-pool backlog",
+ )
+ for folder in thin_batch_pool_expectations:
+ _expect(
+ folder not in artifact_backlog_by_folder,
+ f"Fully represented {folder} folder should leave the unused-pool backlog",
+ )
+ _expect(reverse_cowgirl_manifest.get("folder") == "reverse cowgirl", "Reverse-cowgirl review manifest targets the wrong folder")
+ reverse_selected = {
+ str(item.get("variant_key")): item for item in reverse_cowgirl_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_reverse_cowgirl_low_close_front_view" in reverse_selected,
+ "Reverse-cowgirl artifact manifest should record the low-close selected subset",
+ )
+ _expect(
+ len(reverse_selected["normal_reverse_cowgirl_low_close_front_view"].get("reference_images") or []) == 12,
+ "Reverse-cowgirl low-close artifact subset should have 12 references",
+ )
+ _expect(breasts_exposed_manifest.get("folder") == "breasts exposed", "Breasts-exposed review manifest targets the wrong folder")
+ _expect(breasts_exposed_manifest.get("image_count") == 168, "Breasts-exposed review manifest should cover all 168 JPGs")
+ breasts_selected = {
+ str(item.get("variant_key")): item for item in breasts_exposed_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_display_breasts_exposed_front_view" in breasts_selected,
+ "Breasts-exposed review manifest should record the front-view selected subset",
+ )
+ _expect(
+ len(breasts_selected["normal_display_breasts_exposed_front_view"].get("reference_images") or []) == 12,
+ "Breasts-exposed front-view subset should have 12 references",
+ )
+ _expect(
+ "normal_display_breasts_exposed_side_offset_view" in breasts_selected,
+ "Breasts-exposed review manifest should record the side-offset selected subset",
+ )
+ _expect(
+ len(breasts_selected["normal_display_breasts_exposed_side_offset_view"].get("reference_images") or []) == 10,
+ "Breasts-exposed side-offset subset should have 10 references",
+ )
+ _expect(
+ "normal_display_breasts_exposed_standing_front_view" in breasts_selected,
+ "Breasts-exposed review manifest should record the standing front-view selected subset",
+ )
+ _expect(
+ len(breasts_selected["normal_display_breasts_exposed_standing_front_view"].get("reference_images") or []) == 12,
+ "Breasts-exposed standing front-view subset should have 12 references",
+ )
+ _expect(
+ "normal_display_breasts_exposed_seated_kneeling_front_view" in breasts_selected,
+ "Breasts-exposed review manifest should record the seated/kneeling front-view selected subset",
+ )
+ _expect(
+ len(breasts_selected["normal_display_breasts_exposed_seated_kneeling_front_view"].get("reference_images") or []) == 12,
+ "Breasts-exposed seated/kneeling front-view subset should have 12 references",
+ )
+ _expect(pussy_spread_manifest.get("folder") == "pussy spread", "Pussy-spread review manifest targets the wrong folder")
+ _expect(pussy_spread_manifest.get("image_count") == 100, "Pussy-spread review manifest should cover all 100 JPGs")
+ pussy_selected = {
+ str(item.get("variant_key")): item for item in pussy_spread_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_display_front_open_leg_front_view" in pussy_selected,
+ "Pussy-spread review manifest should record the front-view selected subset",
+ )
+ _expect(
+ len(pussy_selected["normal_display_front_open_leg_front_view"].get("reference_images") or []) == 12,
+ "Pussy-spread front-view subset should have 12 references",
+ )
+ _expect(
+ "normal_display_front_open_leg_low_close" in pussy_selected,
+ "Pussy-spread review manifest should record the low-close selected subset",
+ )
+ _expect(
+ len(pussy_selected["normal_display_front_open_leg_low_close"].get("reference_images") or []) == 12,
+ "Pussy-spread low-close subset should have 12 references",
+ )
+ _expect(
+ "normal_display_front_open_leg_side_offset_view" in pussy_selected,
+ "Pussy-spread review manifest should record the side-offset selected subset",
+ )
+ _expect(
+ len(pussy_selected["normal_display_front_open_leg_side_offset_view"].get("reference_images") or []) == 12,
+ "Pussy-spread side-offset subset should have 12 references",
+ )
+ _expect(anal_random_manifest.get("folder") == "anal random", "Anal-random review manifest targets the wrong folder")
+ _expect(anal_random_manifest.get("image_count") == 99, "Anal-random review manifest should cover all 99 JPGs")
+ anal_selected = {
+ str(item.get("variant_key")): item for item in anal_random_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_anal_random_front_view" in anal_selected,
+ "Anal-random review manifest should record the front-view selected subset",
+ )
+ _expect(
+ len(anal_selected["normal_anal_random_front_view"].get("reference_images") or []) == 11,
+ "Anal-random front-view subset should have 11 references",
+ )
+ _expect(
+ "normal_anal_random_back_side_offset_view" in anal_selected,
+ "Anal-random review manifest should record the back-side-offset selected subset",
+ )
+ _expect(
+ len(anal_selected["normal_anal_random_back_side_offset_view"].get("reference_images") or []) == 12,
+ "Anal-random back-side-offset subset should have 12 references",
+ )
+ _expect(couple_kissing_manifest.get("folder") == "couple kissing", "Couple-kissing review manifest targets the wrong folder")
+ _expect(couple_kissing_manifest.get("image_count") == 88, "Couple-kissing review manifest should cover all 88 JPGs")
+ couple_selected = {
+ str(item.get("variant_key")): item for item in couple_kissing_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_couple_kissing_upright_side_profile" in couple_selected,
+ "Couple-kissing review manifest should record the upright side-profile selected subset",
+ )
+ _expect(
+ len(couple_selected["normal_couple_kissing_upright_side_profile"].get("reference_images") or []) == 12,
+ "Couple-kissing upright side-profile subset should have 12 references",
+ )
+ _expect(cowgirl_back_manifest.get("folder") == "cowgirl - back view - 3-4 angle", "Cowgirl back-three-quarter review manifest targets the wrong folder")
+ _expect(cowgirl_back_manifest.get("image_count") == 129, "Cowgirl back-three-quarter review manifest should cover all 129 JPGs")
+ cowgirl_back_selected = {
+ str(item.get("variant_key")): item for item in cowgirl_back_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_cowgirl_back_three_quarter" in cowgirl_back_selected,
+ "Cowgirl back-three-quarter review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(cowgirl_back_selected["normal_cowgirl_back_three_quarter"].get("reference_images") or []) == 15,
+ "Cowgirl back-three-quarter reviewed subset should have 15 references",
+ )
+ _expect(rear_body_manifest.get("folder") == "woman solo showing her hass - back view", "Rear-body display review manifest targets the wrong folder")
+ _expect(rear_body_manifest.get("image_count") == 99, "Rear-body display review manifest should cover all 99 JPGs")
+ rear_body_selected = {
+ str(item.get("variant_key")): item for item in rear_body_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_display_rear_body_standing_back_view" in rear_body_selected,
+ "Rear-body display review manifest should record the standing back-view selected subset",
+ )
+ _expect(
+ len(rear_body_selected["normal_display_rear_body_standing_back_view"].get("reference_images") or []) == 12,
+ "Rear-body standing back-view subset should have 12 references",
+ )
+ _expect(doggy_all_fours_back_manifest.get("folder") == "doggy on all four - back view - 3-4 angle", "Doggy all-fours back-three-quarter review manifest targets the wrong folder")
+ _expect(doggy_all_fours_back_manifest.get("image_count") == 69, "Doggy all-fours back-three-quarter review manifest should cover all 69 JPGs")
+ doggy_all_fours_back_selected = {
+ str(item.get("variant_key")): item for item in doggy_all_fours_back_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_all_fours_back_three_quarter" in doggy_all_fours_back_selected,
+ "Doggy all-fours back-three-quarter review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_all_fours_back_selected["normal_doggy_all_fours_back_three_quarter"].get("reference_images") or []) == 15,
+ "Doggy all-fours back-three-quarter reviewed subset should have 15 references",
+ )
+ _expect(doggy_all_fours_side_manifest.get("folder") == "doggy on all four - side view", "Doggy all-fours side-view review manifest targets the wrong folder")
+ _expect(doggy_all_fours_side_manifest.get("image_count") == 70, "Doggy all-fours side-view review manifest should cover all 70 JPGs")
+ doggy_all_fours_side_selected = {
+ str(item.get("variant_key")): item for item in doggy_all_fours_side_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_all_fours_side_view" in doggy_all_fours_side_selected,
+ "Doggy all-fours side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_all_fours_side_selected["normal_doggy_all_fours_side_view"].get("reference_images") or []) == 14,
+ "Doggy all-fours side-view reviewed subset should keep 14 references",
+ )
+ _expect(handjob_standing_side_manifest.get("folder") == "handjob standing - side view", "Handjob standing side-view review manifest targets the wrong folder")
+ _expect(handjob_standing_side_manifest.get("image_count") == 63, "Handjob standing side-view review manifest should cover all 63 JPGs")
+ handjob_standing_side_selected = {
+ str(item.get("variant_key")): item for item in handjob_standing_side_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_handjob_standing_side_profile" in handjob_standing_side_selected,
+ "Handjob standing side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(handjob_standing_side_selected["normal_handjob_standing_side_profile"].get("reference_images") or []) == 7,
+ "Handjob standing side-view reviewed subset should keep 7 references",
+ )
+ _expect(breast_sucking_side_manifest.get("folder") == "breast sucking - side view", "Breast-sucking side-view review manifest targets the wrong folder")
+ _expect(breast_sucking_side_manifest.get("image_count") == 43, "Breast-sucking side-view review manifest should cover all 43 JPGs")
+ breast_sucking_side_selected = {
+ str(item.get("variant_key")): item for item in breast_sucking_side_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_breast_sucking_side_view" in breast_sucking_side_selected,
+ "Breast-sucking side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(breast_sucking_side_selected["normal_breast_sucking_side_view"].get("reference_images") or []) == 15,
+ "Breast-sucking side-view reviewed subset should have 15 references",
+ )
+ _expect(standing_from_front_side_manifest.get("folder") == "fuck from front standing - side view", "Standing from-front side-view review manifest targets the wrong folder")
+ _expect(standing_from_front_side_manifest.get("image_count") == 36, "Standing from-front side-view review manifest should cover all 36 JPGs")
+ standing_from_front_side_selected = {
+ str(item.get("variant_key")): item for item in standing_from_front_side_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_standing_from_front_side_view" in standing_from_front_side_selected,
+ "Standing from-front side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(standing_from_front_side_selected["normal_standing_from_front_side_view"].get("reference_images") or []) == 3,
+ "Standing from-front side-view reviewed subset should keep 3 references",
+ )
+ _expect(doggy_generic_back_manifest.get("folder") == "doggy - back view - 3-4 angle", "Doggy generic back-three-quarter review manifest targets the wrong folder")
+ _expect(doggy_generic_back_manifest.get("image_count") == 35, "Doggy generic back-three-quarter review manifest should cover all 35 JPGs")
+ doggy_generic_back_selected = {
+ str(item.get("variant_key")): item for item in doggy_generic_back_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_generic_back_three_quarter" in doggy_generic_back_selected,
+ "Doggy generic back-three-quarter review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_generic_back_selected["normal_doggy_generic_back_three_quarter"].get("reference_images") or []) == 15,
+ "Doggy generic back-three-quarter reviewed subset should have 15 references",
+ )
+ _expect(cowgirl_side_manifest.get("folder") == "cowgirl - side view", "Cowgirl side-view review manifest targets the wrong folder")
+ _expect(cowgirl_side_manifest.get("image_count") == 34, "Cowgirl side-view review manifest should cover all 34 JPGs")
+ cowgirl_side_selected = {
+ str(item.get("variant_key")): item for item in cowgirl_side_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_cowgirl_side_profile" in cowgirl_side_selected,
+ "Cowgirl side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(cowgirl_side_selected["normal_cowgirl_side_profile"].get("reference_images") or []) == 15,
+ "Cowgirl side-view reviewed subset should have 15 references",
+ )
+ _expect(penis_worship_manifest.get("folder") == "penis worship", "Penis-worship review manifest targets the wrong folder")
+ _expect(penis_worship_manifest.get("image_count") == 49, "Penis-worship review manifest should cover all 49 JPGs")
+ penis_worship_selected = {
+ str(item.get("variant_key")): item for item in penis_worship_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_penis_worship_foreground_close_reference_folder_pool" in penis_worship_selected,
+ "Penis-worship review manifest should record the residual foreground-close source pool anchor",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_foreground_close_reference_folder_pool"].get("reference_images") or []) == 1,
+ "Penis-worship foreground-close pool anchor should keep 1 reference",
+ )
+ _expect(
+ "normal_penis_worship_top_view" in penis_worship_selected,
+ "Penis-worship review manifest should record the top-view anchors",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_top_view"].get("reference_images") or []) == 6,
+ "Penis-worship top-view anchor subset should keep 6 references",
+ )
+ _expect(
+ "normal_penis_worship_side_view" in penis_worship_selected,
+ "Penis-worship review manifest should record the side-view anchors",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_side_view"].get("reference_images") or []) == 8,
+ "Penis-worship side-view anchor subset should keep 8 references",
+ )
+ _expect(
+ "normal_penis_worship_laying_partner_vertical_side_view" in penis_worship_selected,
+ "Penis-worship review manifest should record the laying-partner vertical side-view anchors",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_laying_partner_vertical_side_view"].get("reference_images") or []) == 5,
+ "Penis-worship laying-partner vertical side-view anchor subset should keep 5 references",
+ )
+ _expect(
+ standing_backside_side_manifest.get("folder") == "fuck from behind standing - woman backside - side view",
+ "Standing backside side-view review manifest targets the wrong folder",
+ )
+ _expect(
+ standing_backside_side_manifest.get("image_count") == 47,
+ "Standing backside side-view review manifest should cover all 47 JPGs",
+ )
+ standing_backside_side_selected = {
+ str(item.get("variant_key")): item for item in standing_backside_side_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_standing_backside_side_view_folder_pool" in standing_backside_side_selected,
+ "Standing backside side-view review manifest should record the source-pool anchor",
+ )
+ _expect(
+ len(standing_backside_side_selected["normal_doggy_standing_backside_side_view_folder_pool"].get("reference_images") or []) == 3,
+ "Standing backside side-view source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_doggy_standing_backside_side_view" in standing_backside_side_selected,
+ "Standing backside side-view review manifest should record the reviewed route anchors",
+ )
+ _expect(
+ len(standing_backside_side_selected["normal_doggy_standing_backside_side_view"].get("reference_images") or []) == 16,
+ "Standing backside side-view reviewed subset should keep 16 references",
+ )
+ _expect(
+ doggy_all_fours_front_manifest.get("folder") == "doggy all four - front view",
+ "Doggy all-fours front-view review manifest targets the wrong folder",
+ )
+ _expect(
+ doggy_all_fours_front_manifest.get("image_count") == 28,
+ "Doggy all-fours front-view review manifest should cover all 28 JPGs",
+ )
+ doggy_all_fours_front_selected = {
+ str(item.get("variant_key")): item for item in doggy_all_fours_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_all_fours_front_view" in doggy_all_fours_front_selected,
+ "Doggy all-fours front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_all_fours_front_selected["normal_doggy_all_fours_front_view"].get("reference_images") or []) == 15,
+ "Doggy all-fours front-view reviewed subset should have 15 references",
+ )
+ _expect(
+ doggy_generic_front_manifest.get("folder") == "doggy - front view ",
+ "Doggy generic front-view review manifest targets the wrong folder",
+ )
+ _expect(
+ doggy_generic_front_manifest.get("image_count") == 13,
+ "Doggy generic front-view review manifest should cover all 13 JPGs",
+ )
+ doggy_generic_front_selected = {
+ str(item.get("variant_key")): item for item in doggy_generic_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_generic_front_view" in doggy_generic_front_selected,
+ "Doggy generic front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_generic_front_selected["normal_doggy_generic_front_view"].get("reference_images") or []) == 15,
+ "Doggy generic front-view reviewed subset should have 15 references",
+ )
+ _expect(piledriver_manifest.get("folder") == "piledriver", "Piledriver review manifest targets the wrong folder")
+ _expect(piledriver_manifest.get("image_count") == 27, "Piledriver review manifest should cover all 27 JPGs")
+ piledriver_selected = {
+ str(item.get("variant_key")): item for item in piledriver_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_piledriver_mixed_camera_folder_pool" in piledriver_selected,
+ "Piledriver review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ len(piledriver_selected["normal_piledriver_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Piledriver mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_piledriver_high_front_down_view" in piledriver_selected,
+ "Piledriver review manifest should record the high-front-down selected split",
+ )
+ _expect(
+ len(piledriver_selected["normal_piledriver_high_front_down_view"].get("reference_images") or []) == 15,
+ "Piledriver high-front-down selected split should have 15 references",
+ )
+ _expect(
+ blowjob_laying_front_manifest.get("folder") == "blowjob - laying - front view",
+ "Blowjob laying front-view review manifest targets the wrong folder",
+ )
+ _expect(
+ blowjob_laying_front_manifest.get("image_count") == 26,
+ "Blowjob laying front-view review manifest should cover all 26 JPGs",
+ )
+ blowjob_laying_front_selected = {
+ str(item.get("variant_key")): item for item in blowjob_laying_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_blowjob_laying_front_view" in blowjob_laying_front_selected,
+ "Blowjob laying front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(blowjob_laying_front_selected["normal_blowjob_laying_front_view"].get("reference_images") or []) == 15,
+ "Blowjob laying front-view reviewed subset should have 15 references",
+ )
+ _expect(
+ breast_contact_front_manifest.get("folder") == "breast - touching - front view",
+ "Breast-contact front-view review manifest targets the wrong folder",
+ )
+ _expect(
+ breast_contact_front_manifest.get("image_count") == 25,
+ "Breast-contact front-view review manifest should cover all 25 JPGs",
+ )
+ breast_contact_front_selected = {
+ str(item.get("variant_key")): item for item in breast_contact_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_breast_contact_front_view" in breast_contact_front_selected,
+ "Breast-contact front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(breast_contact_front_selected["normal_breast_contact_front_view"].get("reference_images") or []) == 15,
+ "Breast-contact front-view reviewed subset should have 15 references",
+ )
+ _expect(
+ reverse_congress_front_manifest.get("folder") == "reverse congress - front view",
+ "Reverse-congress front-view review manifest targets the wrong folder",
+ )
+ _expect(
+ reverse_congress_front_manifest.get("image_count") == 21,
+ "Reverse-congress front-view review manifest should cover all 21 JPGs",
+ )
+ reverse_congress_front_selected = {
+ str(item.get("variant_key")): item for item in reverse_congress_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_reverse_congress_front_view" in reverse_congress_front_selected,
+ "Reverse-congress front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(reverse_congress_front_selected["normal_reverse_congress_front_view"].get("reference_images") or []) == 15,
+ "Reverse-congress front-view reviewed subset should have 15 references",
+ )
+ _expect(boobjob_manifest.get("folder") == "boobjob", "Boobjob review manifest targets the wrong folder")
+ _expect(boobjob_manifest.get("image_count") == 19, "Boobjob review manifest should cover all 19 JPGs")
+ boobjob_selected = {
+ str(item.get("variant_key")): item for item in boobjob_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_boobjob_front_close_mixed_camera_folder_pool" in boobjob_selected,
+ "Boobjob review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ boobjob_selected["normal_boobjob_front_close_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Boobjob mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(boobjob_selected["normal_boobjob_front_close_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Boobjob mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_boobjob_front_close_view" in boobjob_selected,
+ "Boobjob review manifest should record the front-close selected split",
+ )
+ _expect(
+ boobjob_selected["normal_boobjob_front_close_view"].get("status") == "pre_ab_candidate",
+ "Boobjob front-close selected split should be pre-A/B",
+ )
+ _expect(
+ len(boobjob_selected["normal_boobjob_front_close_view"].get("reference_images") or []) == 12,
+ "Boobjob front-close selected split should have 12 references",
+ )
+ _expect(fingering_manifest.get("folder") == "fingering", "Fingering review manifest targets the wrong folder")
+ _expect(fingering_manifest.get("image_count") == 15, "Fingering review manifest should cover all 15 JPGs")
+ fingering_selected = {
+ str(item.get("variant_key")): item for item in fingering_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_fingering_mixed_camera_folder_pool" in fingering_selected,
+ "Fingering review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ fingering_selected["normal_fingering_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Fingering mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(fingering_selected["normal_fingering_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Fingering mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_fingering_reclined_front_view" in fingering_selected,
+ "Fingering review manifest should record the reclined front-view selected split",
+ )
+ _expect(
+ fingering_selected["normal_fingering_reclined_front_view"].get("status") == "pre_ab_candidate",
+ "Fingering reclined front-view selected split should be pre-A/B",
+ )
+ _expect(
+ len(fingering_selected["normal_fingering_reclined_front_view"].get("reference_images") or []) == 10,
+ "Fingering reclined front-view selected split should have 10 references",
+ )
+ _expect(sixty_nine_manifest.get("folder") == "69", "Sixty-nine review manifest targets the wrong folder")
+ _expect(sixty_nine_manifest.get("image_count") == 10, "Sixty-nine review manifest should cover all 10 JPGs")
+ sixty_nine_selected = {
+ str(item.get("variant_key")): item for item in sixty_nine_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_sixty_nine_mixed_camera_folder_pool" in sixty_nine_selected,
+ "Sixty-nine review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ sixty_nine_selected["normal_sixty_nine_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Sixty-nine mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(sixty_nine_selected["normal_sixty_nine_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Sixty-nine mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_sixty_nine_front_close_view" in sixty_nine_selected,
+ "Sixty-nine review manifest should record the front-close selected split",
+ )
+ _expect(
+ sixty_nine_selected["normal_sixty_nine_front_close_view"].get("status") == "pre_ab_candidate",
+ "Sixty-nine front-close selected split should be pre-A/B",
+ )
+ _expect(
+ len(sixty_nine_selected["normal_sixty_nine_front_close_view"].get("reference_images") or []) == 7,
+ "Sixty-nine front-close selected split should have 7 references",
+ )
+ _expect(wand_manifest.get("folder") == "wand", "Wand review manifest targets the wrong folder")
+ _expect(wand_manifest.get("image_count") == 9, "Wand review manifest should cover all 9 JPGs")
+ wand_selected = {
+ str(item.get("variant_key")): item for item in wand_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_wand_mixed_camera_folder_pool" in wand_selected,
+ "Wand review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ wand_selected["normal_wand_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Wand mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(wand_selected["normal_wand_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Wand mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_wand_front_close_view" in wand_selected,
+ "Wand review manifest should record the front-close selected split",
+ )
+ _expect(
+ wand_selected["normal_wand_front_close_view"].get("status") == "pre_ab_candidate",
+ "Wand front-close selected split should be pre-A/B",
+ )
+ _expect(
+ len(wand_selected["normal_wand_front_close_view"].get("reference_images") or []) == 7,
+ "Wand front-close selected split should have 7 references",
+ )
+ _expect(
+ ballsucking_standing_manifest.get("folder") == "ballsucking - standing",
+ "Ballsucking standing review manifest targets the wrong folder",
+ )
+ _expect(
+ ballsucking_standing_manifest.get("image_count") == 12,
+ "Ballsucking standing review manifest should cover all 12 JPGs",
+ )
+ ballsucking_standing_selected = {
+ str(item.get("variant_key")): item for item in ballsucking_standing_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_ballsucking_standing_partner_mixed_camera_folder_pool" in ballsucking_standing_selected,
+ "Ballsucking standing review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ ballsucking_standing_selected["normal_ballsucking_standing_partner_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Ballsucking standing mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(ballsucking_standing_selected["normal_ballsucking_standing_partner_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Ballsucking standing mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_ballsucking_standing_low_side_view" in ballsucking_standing_selected,
+ "Ballsucking standing review manifest should record the low-side selected split",
+ )
+ _expect(
+ ballsucking_standing_selected["normal_ballsucking_standing_low_side_view"].get("status") == "pre_ab_candidate",
+ "Ballsucking standing low-side selected split should be pre-A/B",
+ )
+ _expect(
+ len(ballsucking_standing_selected["normal_ballsucking_standing_low_side_view"].get("reference_images") or []) == 11,
+ "Ballsucking standing low-side selected split should have 11 references",
+ )
+ _expect(face_sitting_manifest.get("folder") == "face sitting", "Face-sitting review manifest targets the wrong folder")
+ _expect(face_sitting_manifest.get("image_count") == 4, "Face-sitting review manifest should cover all 4 JPGs")
+ face_sitting_selected = {
+ str(item.get("variant_key")): item for item in face_sitting_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_face_sitting_mixed_camera_folder_pool" in face_sitting_selected,
+ "Face-sitting review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ face_sitting_selected["normal_face_sitting_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Face-sitting mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ face_sitting_selected["normal_face_sitting_mixed_camera_folder_pool"].get("review_bucket") == "reject_or_unclear",
+ "Face-sitting mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(face_sitting_selected["normal_face_sitting_mixed_camera_folder_pool"].get("reference_images") or []) == 4,
+ "Face-sitting mixed source-pool anchor should keep all 4 references",
+ )
+ _expect(
+ pussy_licking_backview_manifest.get("folder") == "pussy licking - backv iew",
+ "Pussy-licking back-view review manifest targets the wrong folder",
+ )
+ _expect(
+ pussy_licking_backview_manifest.get("image_count") == 3,
+ "Pussy-licking back-view review manifest should cover all 3 JPGs",
+ )
+ pussy_licking_backview_selected = {
+ str(item.get("variant_key")): item for item in pussy_licking_backview_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_pussy_licking_backview_mixed_camera_folder_pool" in pussy_licking_backview_selected,
+ "Pussy-licking back-view review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ pussy_licking_backview_selected["normal_pussy_licking_backview_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Pussy-licking back-view mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ pussy_licking_backview_selected["normal_pussy_licking_backview_mixed_camera_folder_pool"].get("review_bucket") == "reject_or_unclear",
+ "Pussy-licking back-view mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(pussy_licking_backview_selected["normal_pussy_licking_backview_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Pussy-licking back-view mixed source-pool anchor should keep all 3 references",
+ )
+ _expect(removing_pants_manifest.get("folder") == "removing pants", "Removing-pants review manifest targets the wrong folder")
+ _expect(removing_pants_manifest.get("image_count") == 3, "Removing-pants review manifest should cover all 3 JPGs")
+ removing_pants_selected = {
+ str(item.get("variant_key")): item for item in removing_pants_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_removing_pants_mixed_camera_folder_pool" in removing_pants_selected,
+ "Removing-pants review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ removing_pants_selected["normal_removing_pants_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Removing-pants mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ removing_pants_selected["normal_removing_pants_mixed_camera_folder_pool"].get("review_bucket") == "reject_or_unclear",
+ "Removing-pants mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(removing_pants_selected["normal_removing_pants_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Removing-pants mixed source-pool anchor should keep all 3 references",
+ )
+ for folder, (variant_key, expected_count) in thin_batch_pool_expectations.items():
+ manifest = thin_batch_manifests[folder]
+ _expect(manifest.get("folder") == folder, f"{folder} review manifest targets the wrong folder")
+ _expect(
+ manifest.get("image_count") == expected_count,
+ f"{folder} review manifest should cover all {expected_count} JPGs",
+ )
+ selected = {str(item.get("variant_key")): item for item in manifest.get("selected_subvariants") or []}
+ _expect(variant_key in selected, f"{folder} review manifest should record the mixed source-pool anchor")
+ _expect(selected[variant_key].get("status") == "needs_samples", f"{folder} mixed source-pool anchor should stay needs_samples")
+ _expect(
+ selected[variant_key].get("review_bucket") == "reject_or_unclear",
+ f"{folder} mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(selected[variant_key].get("reference_images") or []) == expected_count,
+ f"{folder} mixed source-pool anchor should keep all {expected_count} references",
+ )
+ _expect("No-generation contact sheet" in reverse_cowgirl_contact_sheet_path.read_text(encoding="utf-8"), "Reverse-cowgirl contact sheet lost no-generation scope")
+ breasts_contact_sheet = breasts_exposed_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in breasts_contact_sheet, "Breasts-exposed contact sheet lost no-generation scope")
+ _expect('data-review-bucket="front_view"' in breasts_contact_sheet, "Breasts-exposed contact sheet should mark selected front-view references")
+ _expect('data-review-bucket="side_view"' in breasts_contact_sheet, "Breasts-exposed contact sheet should mark selected side-view references")
+ _expect('data-selected-variant="normal_display_breasts_exposed_standing_front_view"' in breasts_contact_sheet, "Breasts-exposed contact sheet should mark selected standing front-view references")
+ _expect('data-selected-variant="normal_display_breasts_exposed_seated_kneeling_front_view"' in breasts_contact_sheet, "Breasts-exposed contact sheet should mark selected seated/kneeling front-view references")
+ pussy_contact_sheet = pussy_spread_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in pussy_contact_sheet, "Pussy-spread contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_display_front_open_leg_front_view"' in pussy_contact_sheet, "Pussy-spread contact sheet should mark selected front-view references")
+ _expect('data-selected-variant="normal_display_front_open_leg_low_close"' in pussy_contact_sheet, "Pussy-spread contact sheet should mark selected low-close references")
+ _expect('data-selected-variant="normal_display_front_open_leg_side_offset_view"' in pussy_contact_sheet, "Pussy-spread contact sheet should mark selected side-offset references")
+ anal_contact_sheet = anal_random_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in anal_contact_sheet, "Anal-random contact sheet lost no-generation scope")
+ _expect('data-review-bucket="front_view"' in anal_contact_sheet, "Anal-random contact sheet should mark selected front-view references")
+ _expect('data-selected-variant="normal_anal_random_back_side_offset_view"' in anal_contact_sheet, "Anal-random contact sheet should mark selected back-side-offset references")
+ couple_contact_sheet = couple_kissing_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in couple_contact_sheet, "Couple-kissing contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_couple_kissing_upright_side_profile"' in couple_contact_sheet, "Couple-kissing contact sheet should mark selected side-profile references")
+ cowgirl_back_contact_sheet = cowgirl_back_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in cowgirl_back_contact_sheet, "Cowgirl back-three-quarter contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_cowgirl_back_three_quarter"' in cowgirl_back_contact_sheet, "Cowgirl back-three-quarter contact sheet should mark reviewed references")
+ rear_body_contact_sheet = rear_body_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in rear_body_contact_sheet, "Rear-body display contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_display_rear_body_standing_back_view"' in rear_body_contact_sheet, "Rear-body display contact sheet should mark standing back-view references")
+ doggy_all_fours_back_contact_sheet = doggy_all_fours_back_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in doggy_all_fours_back_contact_sheet, "Doggy all-fours back-three-quarter contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_doggy_all_fours_back_three_quarter"' in doggy_all_fours_back_contact_sheet, "Doggy all-fours back-three-quarter contact sheet should mark reviewed references")
+ doggy_all_fours_side_contact_sheet = doggy_all_fours_side_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in doggy_all_fours_side_contact_sheet, "Doggy all-fours side-view contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_doggy_all_fours_side_view"' in doggy_all_fours_side_contact_sheet, "Doggy all-fours side-view contact sheet should mark reviewed references")
+ handjob_standing_side_contact_sheet = handjob_standing_side_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in handjob_standing_side_contact_sheet, "Handjob standing side-view contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_handjob_standing_side_profile"' in handjob_standing_side_contact_sheet, "Handjob standing side-view contact sheet should mark reviewed references")
+ breast_sucking_side_contact_sheet = breast_sucking_side_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in breast_sucking_side_contact_sheet, "Breast-sucking side-view contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_breast_sucking_side_view"' in breast_sucking_side_contact_sheet, "Breast-sucking side-view contact sheet should mark reviewed references")
+ standing_from_front_side_contact_sheet = standing_from_front_side_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in standing_from_front_side_contact_sheet, "Standing from-front side-view contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_standing_from_front_side_view"' in standing_from_front_side_contact_sheet, "Standing from-front side-view contact sheet should mark reviewed references")
+ doggy_generic_back_contact_sheet = doggy_generic_back_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in doggy_generic_back_contact_sheet, "Doggy generic back-three-quarter contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_doggy_generic_back_three_quarter"' in doggy_generic_back_contact_sheet, "Doggy generic back-three-quarter contact sheet should mark reviewed references")
+ cowgirl_side_contact_sheet = cowgirl_side_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in cowgirl_side_contact_sheet, "Cowgirl side-view contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_cowgirl_side_profile"' in cowgirl_side_contact_sheet, "Cowgirl side-view contact sheet should mark reviewed references")
+ penis_worship_contact_sheet = penis_worship_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in penis_worship_contact_sheet, "Penis-worship contact sheet lost no-generation scope")
+ _expect('data-selected-variant="normal_penis_worship_top_view"' in penis_worship_contact_sheet, "Penis-worship contact sheet should mark top-view anchors")
+ _expect('data-selected-variant="normal_penis_worship_side_view"' in penis_worship_contact_sheet, "Penis-worship contact sheet should mark side-view anchors")
+ _expect('data-selected-variant="normal_penis_worship_laying_partner_vertical_side_view"' in penis_worship_contact_sheet, "Penis-worship contact sheet should mark laying-partner vertical side-view anchors")
+ _expect('data-selected-variant="normal_penis_worship_foreground_close_reference_folder_pool"' in penis_worship_contact_sheet, "Penis-worship contact sheet should mark foreground-close source-pool anchor")
+ standing_backside_side_contact_sheet = standing_backside_side_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in standing_backside_side_contact_sheet, "Standing backside side-view contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_doggy_standing_backside_side_view"' in standing_backside_side_contact_sheet,
+ "Standing backside side-view contact sheet should mark reviewed route anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_doggy_standing_backside_side_view_folder_pool"' in standing_backside_side_contact_sheet,
+ "Standing backside side-view contact sheet should mark source-pool anchors",
+ )
+ doggy_all_fours_front_contact_sheet = doggy_all_fours_front_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in doggy_all_fours_front_contact_sheet, "Doggy all-fours front-view contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_doggy_all_fours_front_view"' in doggy_all_fours_front_contact_sheet,
+ "Doggy all-fours front-view contact sheet should mark reviewed route references",
+ )
+ doggy_generic_front_contact_sheet = doggy_generic_front_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in doggy_generic_front_contact_sheet, "Doggy generic front-view contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_doggy_generic_front_view"' in doggy_generic_front_contact_sheet,
+ "Doggy generic front-view contact sheet should mark reviewed route references",
+ )
+ piledriver_contact_sheet = piledriver_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in piledriver_contact_sheet, "Piledriver contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_piledriver_high_front_down_view"' in piledriver_contact_sheet,
+ "Piledriver contact sheet should mark high-front-down selected references",
+ )
+ _expect(
+ 'data-selected-variant="normal_piledriver_mixed_camera_folder_pool"' in piledriver_contact_sheet,
+ "Piledriver contact sheet should mark mixed source-pool anchors",
+ )
+ blowjob_laying_front_contact_sheet = blowjob_laying_front_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in blowjob_laying_front_contact_sheet, "Blowjob laying front-view contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_blowjob_laying_front_view"' in blowjob_laying_front_contact_sheet,
+ "Blowjob laying front-view contact sheet should mark reviewed route references",
+ )
+ breast_contact_front_contact_sheet = breast_contact_front_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in breast_contact_front_contact_sheet, "Breast-contact front-view contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_breast_contact_front_view"' in breast_contact_front_contact_sheet,
+ "Breast-contact front-view contact sheet should mark reviewed route references",
+ )
+ reverse_congress_front_contact_sheet = reverse_congress_front_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in reverse_congress_front_contact_sheet, "Reverse-congress front-view contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_reverse_congress_front_view"' in reverse_congress_front_contact_sheet,
+ "Reverse-congress front-view contact sheet should mark reviewed route references",
+ )
+ boobjob_contact_sheet = boobjob_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in boobjob_contact_sheet, "Boobjob contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_boobjob_front_close_mixed_camera_folder_pool"' in boobjob_contact_sheet,
+ "Boobjob contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_boobjob_front_close_view"' in boobjob_contact_sheet,
+ "Boobjob contact sheet should mark front-close selected references",
+ )
+ fingering_contact_sheet = fingering_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in fingering_contact_sheet, "Fingering contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_fingering_mixed_camera_folder_pool"' in fingering_contact_sheet,
+ "Fingering contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_fingering_reclined_front_view"' in fingering_contact_sheet,
+ "Fingering contact sheet should mark reclined front-view selected references",
+ )
+ sixty_nine_contact_sheet = sixty_nine_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in sixty_nine_contact_sheet, "Sixty-nine contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_sixty_nine_mixed_camera_folder_pool"' in sixty_nine_contact_sheet,
+ "Sixty-nine contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_sixty_nine_front_close_view"' in sixty_nine_contact_sheet,
+ "Sixty-nine contact sheet should mark front-close selected references",
+ )
+ wand_contact_sheet = wand_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in wand_contact_sheet, "Wand contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_wand_mixed_camera_folder_pool"' in wand_contact_sheet,
+ "Wand contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_wand_front_close_view"' in wand_contact_sheet,
+ "Wand contact sheet should mark front-close selected references",
+ )
+ ballsucking_standing_contact_sheet = ballsucking_standing_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in ballsucking_standing_contact_sheet, "Ballsucking standing contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_ballsucking_standing_partner_mixed_camera_folder_pool"' in ballsucking_standing_contact_sheet,
+ "Ballsucking standing contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_ballsucking_standing_low_side_view"' in ballsucking_standing_contact_sheet,
+ "Ballsucking standing contact sheet should mark low-side selected references",
+ )
+ face_sitting_contact_sheet = face_sitting_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in face_sitting_contact_sheet, "Face-sitting contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_face_sitting_mixed_camera_folder_pool"' in face_sitting_contact_sheet,
+ "Face-sitting contact sheet should mark mixed source-pool anchors",
+ )
+ pussy_licking_backview_contact_sheet = pussy_licking_backview_contact_sheet_path.read_text(encoding="utf-8")
+ _expect(
+ "No-generation contact sheet" in pussy_licking_backview_contact_sheet,
+ "Pussy-licking back-view contact sheet lost no-generation scope",
+ )
+ _expect(
+ 'data-selected-variant="normal_pussy_licking_backview_mixed_camera_folder_pool"' in pussy_licking_backview_contact_sheet,
+ "Pussy-licking back-view contact sheet should mark mixed source-pool anchors",
+ )
+ removing_pants_contact_sheet = removing_pants_contact_sheet_path.read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in removing_pants_contact_sheet, "Removing-pants contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_removing_pants_mixed_camera_folder_pool"' in removing_pants_contact_sheet,
+ "Removing-pants contact sheet should mark mixed source-pool anchors",
+ )
+ for folder, (variant_key, _expected_count) in thin_batch_pool_expectations.items():
+ contact_sheet = thin_batch_review_paths[folder][1].read_text(encoding="utf-8")
+ _expect("No-generation contact sheet" in contact_sheet, f"{folder} contact sheet lost no-generation scope")
+ _expect(
+ f'data-selected-variant="{variant_key}"' in contact_sheet,
+ f"{folder} contact sheet should mark mixed source-pool anchors",
+ )
+
+
+def smoke_normal_camera_unused_pool_review_artifacts() -> None:
+ import importlib
+
+ _expect_normal_camera_validator()
+
+ prep_module = importlib.import_module("normal_camera_atlas_prep")
+
+ backlog = prep_module.build_unused_pool_backlog(limit=5)
+ _expect(backlog.get("schema") == "sxcp_normal_camera_unused_pool_backlog_v1", "Normal camera unused-pool backlog schema changed")
+ _expect(backlog.get("no_generation") is True, "Normal camera unused-pool backlog must stay no-generation")
+ backlog_folders = backlog.get("folders")
+ _expect(isinstance(backlog_folders, list) and backlog_folders, "Normal camera unused-pool backlog has no folders")
+ _expect(backlog_folders[0].get("folder") == "reverse cowgirl", "Reverse cowgirl should be the first unused-pool tranche")
+ _expect(backlog_folders[0].get("image_count") == 240, "Reverse cowgirl source-pool size changed")
+ _expect(backlog_folders[0].get("selected_reference_count") == 36, "Reverse cowgirl selected-reference count changed")
+ _expect(backlog_folders[0].get("remaining_image_count") == 204, "Reverse cowgirl unused-pool count changed")
+ _expect(backlog_folders[1].get("folder") == "breasts exposed", "Breasts exposed should remain the second unused-pool tranche")
+ _expect(backlog_folders[1].get("selected_reference_count") == 49, "Breasts-exposed selected-reference count changed")
+ _expect(backlog_folders[1].get("remaining_image_count") == 119, "Breasts-exposed unused-pool count changed")
+ _expect(backlog_folders[2].get("folder") == "cowgirl - back view - 3-4 angle", "Cowgirl back-three-quarter should remain the third unused-pool tranche")
+ _expect(backlog_folders[2].get("selected_reference_count") == 15, "Cowgirl back-three-quarter selected-reference count changed")
+ _expect(backlog_folders[2].get("remaining_image_count") == 114, "Cowgirl back-three-quarter unused-pool count changed")
+ backlog_by_folder = {str(row.get("folder")): row for row in backlog_folders}
+ _expect("anal random" in backlog_by_folder, "Anal random should remain in the top unused-pool backlog")
+ _expect(backlog_by_folder["anal random"].get("selected_reference_count") == 26, "Anal-random selected-reference count changed")
+ _expect(backlog_by_folder["anal random"].get("remaining_image_count") == 73, "Anal-random unused-pool count changed")
+
+ full_backlog = prep_module.build_unused_pool_backlog()
+ full_backlog_by_folder = {str(row.get("folder")): row for row in full_backlog.get("folders") or []}
+ _expect("doggy on all four - back view - 3-4 angle" in full_backlog_by_folder, "Doggy all-fours back-three-quarter should remain in the unused-pool backlog")
+ _expect(full_backlog_by_folder["doggy on all four - back view - 3-4 angle"].get("selected_reference_count") == 15, "Doggy all-fours back-three-quarter selected-reference count changed")
+ _expect(full_backlog_by_folder["doggy on all four - back view - 3-4 angle"].get("remaining_image_count") == 54, "Doggy all-fours back-three-quarter unused-pool count changed")
+ _expect("breast sucking - side view" in full_backlog_by_folder, "Breast-sucking side-view should remain in the unused-pool backlog")
+ _expect(full_backlog_by_folder["breast sucking - side view"].get("selected_reference_count") == 15, "Breast-sucking side-view selected-reference count changed")
+ _expect(full_backlog_by_folder["breast sucking - side view"].get("remaining_image_count") == 28, "Breast-sucking side-view unused-pool count changed")
+ _expect("fuck from front standing - side view" in full_backlog_by_folder, "Standing from-front side-view should remain in the unused-pool backlog")
+ _expect(full_backlog_by_folder["fuck from front standing - side view"].get("selected_reference_count") == 3, "Standing from-front side-view selected-reference count changed")
+ _expect(full_backlog_by_folder["fuck from front standing - side view"].get("remaining_image_count") == 33, "Standing from-front side-view unused-pool count changed")
+ _expect("doggy - back view - 3-4 angle" in full_backlog_by_folder, "Doggy generic back-three-quarter should remain in the unused-pool backlog")
+ _expect(full_backlog_by_folder["doggy - back view - 3-4 angle"].get("selected_reference_count") == 15, "Doggy generic back-three-quarter selected-reference count changed")
+ _expect(full_backlog_by_folder["doggy - back view - 3-4 angle"].get("remaining_image_count") == 20, "Doggy generic back-three-quarter unused-pool count changed")
+ _expect("cowgirl - side view" in full_backlog_by_folder, "Cowgirl side-view should remain in the unused-pool backlog")
+ _expect(full_backlog_by_folder["cowgirl - side view"].get("selected_reference_count") == 15, "Cowgirl side-view selected-reference count changed")
+ _expect(full_backlog_by_folder["cowgirl - side view"].get("remaining_image_count") == 19, "Cowgirl side-view unused-pool count changed")
+ _expect("penis worship" in full_backlog_by_folder, "Penis-worship should remain in the unused-pool backlog")
+ _expect(full_backlog_by_folder["penis worship"].get("selected_reference_count") == 20, "Penis-worship selected-reference count changed")
+ _expect(full_backlog_by_folder["penis worship"].get("remaining_image_count") == 29, "Penis-worship unused-pool count changed")
+ _expect(
+ "fuck from behind standing - woman backside - side view" in full_backlog_by_folder,
+ "Standing backside side-view should remain in the unused-pool backlog",
+ )
+ _expect(
+ full_backlog_by_folder["fuck from behind standing - woman backside - side view"].get("selected_reference_count") == 17,
+ "Standing backside side-view selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["fuck from behind standing - woman backside - side view"].get("remaining_image_count") == 30,
+ "Standing backside side-view unused-pool count changed",
+ )
+ _expect("doggy all four - front view" in full_backlog_by_folder, "Doggy all-fours front-view should remain in the unused-pool backlog")
+ _expect(
+ full_backlog_by_folder["doggy all four - front view"].get("selected_reference_count") == 15,
+ "Doggy all-fours front-view selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["doggy all four - front view"].get("remaining_image_count") == 13,
+ "Doggy all-fours front-view unused-pool count changed",
+ )
+ _expect(
+ "doggy - front view " in full_backlog_by_folder,
+ "Doggy generic front-view trailing-space folder should remain in the unused-pool backlog",
+ )
+ _expect(
+ full_backlog_by_folder["doggy - front view "].get("covered_by_variants") is True,
+ "Doggy generic front-view trailing-space folder should be covered by an exact variant folder name",
+ )
+ _expect(
+ full_backlog_by_folder["doggy - front view "].get("selected_reference_count") == 12,
+ "Doggy generic front-view selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["doggy - front view "].get("remaining_image_count") == 1,
+ "Doggy generic front-view unused-pool count changed",
+ )
+ _expect("piledriver" in full_backlog_by_folder, "Piledriver should remain in the unused-pool backlog")
+ _expect(
+ full_backlog_by_folder["piledriver"].get("selected_reference_count") == 18,
+ "Piledriver selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["piledriver"].get("remaining_image_count") == 9,
+ "Piledriver unused-pool count changed",
+ )
+ _expect(
+ "blowjob - laying - front view" in full_backlog_by_folder,
+ "Blowjob laying front-view should remain in the unused-pool backlog",
+ )
+ _expect(
+ full_backlog_by_folder["blowjob - laying - front view"].get("selected_reference_count") == 15,
+ "Blowjob laying front-view selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["blowjob - laying - front view"].get("remaining_image_count") == 11,
+ "Blowjob laying front-view unused-pool count changed",
+ )
+ _expect(
+ "breast - touching - front view" in full_backlog_by_folder,
+ "Breast-contact front-view should remain in the unused-pool backlog",
+ )
+ _expect(
+ full_backlog_by_folder["breast - touching - front view"].get("selected_reference_count") == 15,
+ "Breast-contact front-view selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["breast - touching - front view"].get("remaining_image_count") == 10,
+ "Breast-contact front-view unused-pool count changed",
+ )
+ _expect(
+ "reverse congress - front view" in full_backlog_by_folder,
+ "Reverse-congress front-view should remain in the unused-pool backlog",
+ )
+ _expect(
+ full_backlog_by_folder["reverse congress - front view"].get("selected_reference_count") == 15,
+ "Reverse-congress front-view selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["reverse congress - front view"].get("remaining_image_count") == 6,
+ "Reverse-congress front-view unused-pool count changed",
+ )
+ _expect("boobjob" in full_backlog_by_folder, "Boobjob should remain in the unused-pool backlog")
+ _expect(
+ full_backlog_by_folder["boobjob"].get("selected_reference_count") == 13,
+ "Boobjob selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["boobjob"].get("remaining_image_count") == 6,
+ "Boobjob unused-pool count changed",
+ )
+ _expect("fingering" in full_backlog_by_folder, "Fingering should remain in the unused-pool backlog")
+ _expect(
+ full_backlog_by_folder["fingering"].get("selected_reference_count") == 12,
+ "Fingering selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["fingering"].get("remaining_image_count") == 3,
+ "Fingering unused-pool count changed",
+ )
+ _expect("69" in full_backlog_by_folder, "Sixty-nine should remain in the unused-pool backlog")
+ _expect(
+ full_backlog_by_folder["69"].get("selected_reference_count") == 8,
+ "Sixty-nine selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["69"].get("remaining_image_count") == 2,
+ "Sixty-nine unused-pool count changed",
+ )
+ _expect("wand" in full_backlog_by_folder, "Wand should remain in the unused-pool backlog")
+ _expect(
+ full_backlog_by_folder["wand"].get("selected_reference_count") == 8,
+ "Wand selected-reference count changed",
+ )
+ _expect(
+ full_backlog_by_folder["wand"].get("remaining_image_count") == 1,
+ "Wand unused-pool count changed",
+ )
+ _expect(
+ "ballsucking - standing" not in full_backlog_by_folder,
+ "Fully represented ballsucking standing folder should leave the unused-pool backlog",
+ )
+ _expect(
+ "face sitting" not in full_backlog_by_folder,
+ "Fully represented face-sitting folder should leave the unused-pool backlog",
+ )
+ _expect(
+ "pussy licking - backv iew" not in full_backlog_by_folder,
+ "Fully represented pussy-licking back-view folder should leave the unused-pool backlog",
+ )
+ _expect(
+ "removing pants" not in full_backlog_by_folder,
+ "Fully represented removing-pants folder should leave the unused-pool backlog",
+ )
+ thin_batch_pool_expectations = {
+ "rimjob": ("normal_rimjob_mixed_camera_folder_pool", 3),
+ "footjob": ("normal_footjob_mixed_camera_folder_pool", 2),
+ "reverse cowgirl - leg up": ("normal_reverse_cowgirl_leg_up_mixed_camera_folder_pool", 2),
+ "reverse cowgirl -pretzel": ("normal_reverse_cowgirl_pretzel_mixed_camera_folder_pool", 2),
+ "fist": ("normal_fist_mixed_camera_folder_pool", 1),
+ "anal cowgirl": ("normal_anal_cowgirl_single_reference_pool", 1),
+ "anal doggy - side view": ("normal_anal_doggy_side_view_single_reference_pool", 1),
+ "anal fuck from behind laying - back view - 3-4 angle": (
+ "normal_anal_laying_back_three_quarter_single_reference_pool",
+ 1,
+ ),
+ "anal reverse congress": ("normal_anal_reverse_congress_single_reference_pool", 1),
+ "anus lickiing": ("normal_anus_licking_single_reference_pool", 1),
+ "blowjob laying - back view - 3-4 angle": (
+ "normal_blowjob_laying_back_three_quarter_single_reference_pool",
+ 1,
+ ),
+ "doggy press - back side": ("normal_doggy_press_back_side_single_reference_pool", 1),
+ "face sitting - front view": ("normal_face_sitting_front_view_single_reference_pool", 1),
+ "handjob - standing -low angle": ("normal_handjob_standing_low_angle_single_reference_pool", 1),
+ "pussy licking leg up - back view - 3-4 angle": (
+ "normal_pussy_licking_leg_up_back_three_quarter_single_reference_pool",
+ 1,
+ ),
+ "pussy licking standing woman": ("normal_pussy_licking_standing_woman_single_reference_pool", 1),
+ "under desk": ("normal_under_desk_single_reference_pool", 1),
+ "ballsucking - laying": ("normal_ballsucking_laying_close_reference_folder_pool", 2),
+ "pretzel": ("normal_pretzel_mixed_camera_folder_pool", 2),
+ "woman ass exposed": ("normal_display_rear_exposed_body_folder_pool", 4),
+ }
+ for folder in thin_batch_pool_expectations:
+ _expect(
+ folder not in full_backlog_by_folder,
+ f"Fully represented {folder} folder should leave the unused-pool backlog",
+ )
+
+ manifest = prep_module.build_review_manifest("reverse cowgirl", page_size=40)
+ _expect(manifest.get("schema") == "sxcp_normal_camera_review_manifest_v1", "Normal camera review manifest schema changed")
+ _expect(manifest.get("no_generation") is True, "Normal camera review manifest must stay no-generation")
+ _expect(manifest.get("folder") == "reverse cowgirl", "Review manifest should target reverse cowgirl")
+ _expect(manifest.get("image_count") == 240, "Reverse cowgirl review should cover all 240 JPGs")
+ _expect(len(manifest.get("contact_sheet_pages") or []) == 6, "Reverse cowgirl review should be paged at 40 images per sheet")
+ _expect("back_view" in (manifest.get("review_bucket_values") or {}), "Review buckets lost back-view routing")
+ selected_subvariants = manifest.get("selected_subvariants")
+ _expect(isinstance(selected_subvariants, list) and selected_subvariants, "Review manifest lost selected subvariants")
+ selected_by_key = {str(item.get("variant_key")): item for item in selected_subvariants}
+ _expect(
+ "normal_reverse_cowgirl_front_view" in selected_by_key,
+ "Review manifest should record the reverse-cowgirl front-view selected subset",
+ )
+ _expect(len(selected_by_key["normal_reverse_cowgirl_front_view"].get("reference_images") or []) == 12, "Reverse-cowgirl front-view subset should have 12 references")
+ _expect(
+ "normal_reverse_cowgirl_front_three_quarter" in selected_by_key,
+ "Review manifest should record the reverse-cowgirl front-three-quarter selected subset",
+ )
+ _expect(
+ len(selected_by_key["normal_reverse_cowgirl_front_three_quarter"].get("reference_images") or []) == 12,
+ "Reverse-cowgirl front-three-quarter subset should have 12 references",
+ )
+ _expect(
+ "normal_reverse_cowgirl_low_close_front_view" in selected_by_key,
+ "Review manifest should record the reverse-cowgirl low-close front-view selected subset",
+ )
+ _expect(
+ len(selected_by_key["normal_reverse_cowgirl_low_close_front_view"].get("reference_images") or []) == 12,
+ "Reverse-cowgirl low-close front-view subset should have 12 references",
+ )
+
+ html = prep_module.build_contact_sheet_html("reverse cowgirl", page_size=40)
+ _expect("reverse cowgirl/0001.jpg" in html, "Contact sheet lost first reverse-cowgirl image")
+ _expect('data-review-bucket="front_view"' in html, "Contact sheet should mark selected front-view references")
+ _expect('data-review-bucket="front_three_quarter"' in html, "Contact sheet should mark selected front-three-quarter references")
+ _expect('data-selected-variant="normal_reverse_cowgirl_low_close_front_view"' in html, "Contact sheet should mark selected low-close front-view references")
+ _expect("No-generation contact sheet" in html, "Contact sheet should document no-generation review scope")
+
+ breasts_manifest = prep_module.build_review_manifest("breasts exposed", page_size=40)
+ breasts_selected = {str(item.get("variant_key")): item for item in breasts_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_display_breasts_exposed_standing_front_view" in breasts_selected,
+ "Breasts-exposed review manifest should record the standing front-view selected subset",
+ )
+ _expect(
+ len(breasts_selected["normal_display_breasts_exposed_standing_front_view"].get("reference_images") or []) == 12,
+ "Breasts-exposed standing front-view subset should have 12 references",
+ )
+ _expect(
+ "normal_display_breasts_exposed_seated_kneeling_front_view" in breasts_selected,
+ "Breasts-exposed review manifest should record the seated/kneeling front-view selected subset",
+ )
+ _expect(
+ len(breasts_selected["normal_display_breasts_exposed_seated_kneeling_front_view"].get("reference_images") or []) == 12,
+ "Breasts-exposed seated/kneeling front-view subset should have 12 references",
+ )
+
+ doggy_all_fours_back_manifest = prep_module.build_review_manifest("doggy on all four - back view - 3-4 angle", page_size=40)
+ doggy_all_fours_back_selected = {str(item.get("variant_key")): item for item in doggy_all_fours_back_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_doggy_all_fours_back_three_quarter" in doggy_all_fours_back_selected,
+ "Doggy all-fours back-three-quarter review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_all_fours_back_selected["normal_doggy_all_fours_back_three_quarter"].get("reference_images") or []) == 15,
+ "Doggy all-fours back-three-quarter reviewed subset should have 15 references",
+ )
+
+ doggy_all_fours_side_manifest = prep_module.build_review_manifest("doggy on all four - side view", page_size=40)
+ doggy_all_fours_side_selected = {str(item.get("variant_key")): item for item in doggy_all_fours_side_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_doggy_all_fours_side_view" in doggy_all_fours_side_selected,
+ "Doggy all-fours side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_all_fours_side_selected["normal_doggy_all_fours_side_view"].get("reference_images") or []) == 14,
+ "Doggy all-fours side-view reviewed subset should keep 14 references",
+ )
+
+ handjob_standing_side_manifest = prep_module.build_review_manifest("handjob standing - side view", page_size=40)
+ handjob_standing_side_selected = {str(item.get("variant_key")): item for item in handjob_standing_side_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_handjob_standing_side_profile" in handjob_standing_side_selected,
+ "Handjob standing side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(handjob_standing_side_selected["normal_handjob_standing_side_profile"].get("reference_images") or []) == 7,
+ "Handjob standing side-view reviewed subset should keep 7 references",
+ )
+
+ breast_sucking_side_manifest = prep_module.build_review_manifest("breast sucking - side view", page_size=40)
+ breast_sucking_side_selected = {str(item.get("variant_key")): item for item in breast_sucking_side_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_breast_sucking_side_view" in breast_sucking_side_selected,
+ "Breast-sucking side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(breast_sucking_side_selected["normal_breast_sucking_side_view"].get("reference_images") or []) == 15,
+ "Breast-sucking side-view reviewed subset should have 15 references",
+ )
+
+ standing_from_front_side_manifest = prep_module.build_review_manifest("fuck from front standing - side view", page_size=40)
+ standing_from_front_side_selected = {str(item.get("variant_key")): item for item in standing_from_front_side_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_standing_from_front_side_view" in standing_from_front_side_selected,
+ "Standing from-front side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(standing_from_front_side_selected["normal_standing_from_front_side_view"].get("reference_images") or []) == 3,
+ "Standing from-front side-view reviewed subset should keep 3 references",
+ )
+
+ doggy_generic_back_manifest = prep_module.build_review_manifest("doggy - back view - 3-4 angle", page_size=40)
+ doggy_generic_back_selected = {str(item.get("variant_key")): item for item in doggy_generic_back_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_doggy_generic_back_three_quarter" in doggy_generic_back_selected,
+ "Doggy generic back-three-quarter review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_generic_back_selected["normal_doggy_generic_back_three_quarter"].get("reference_images") or []) == 15,
+ "Doggy generic back-three-quarter reviewed subset should have 15 references",
+ )
+
+ cowgirl_side_manifest = prep_module.build_review_manifest("cowgirl - side view", page_size=40)
+ cowgirl_side_selected = {str(item.get("variant_key")): item for item in cowgirl_side_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_cowgirl_side_profile" in cowgirl_side_selected,
+ "Cowgirl side-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(cowgirl_side_selected["normal_cowgirl_side_profile"].get("reference_images") or []) == 15,
+ "Cowgirl side-view reviewed subset should have 15 references",
+ )
+
+ penis_worship_manifest = prep_module.build_review_manifest("penis worship", page_size=40)
+ penis_worship_selected = {str(item.get("variant_key")): item for item in penis_worship_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_penis_worship_foreground_close_reference_folder_pool" in penis_worship_selected,
+ "Penis-worship review manifest should record the foreground-close source-pool anchor",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_foreground_close_reference_folder_pool"].get("reference_images") or []) == 1,
+ "Penis-worship foreground-close source-pool anchor should keep 1 reference",
+ )
+ _expect(
+ "normal_penis_worship_top_view" in penis_worship_selected,
+ "Penis-worship review manifest should record the top-view anchors",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_top_view"].get("reference_images") or []) == 6,
+ "Penis-worship top-view anchor subset should keep 6 references",
+ )
+ _expect(
+ "normal_penis_worship_side_view" in penis_worship_selected,
+ "Penis-worship review manifest should record the side-view anchors",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_side_view"].get("reference_images") or []) == 8,
+ "Penis-worship side-view anchor subset should keep 8 references",
+ )
+ _expect(
+ "normal_penis_worship_laying_partner_vertical_side_view" in penis_worship_selected,
+ "Penis-worship review manifest should record the laying-partner vertical side-view anchors",
+ )
+ _expect(
+ len(penis_worship_selected["normal_penis_worship_laying_partner_vertical_side_view"].get("reference_images") or []) == 5,
+ "Penis-worship laying-partner vertical side-view anchor subset should keep 5 references",
+ )
+
+ standing_backside_side_manifest = prep_module.build_review_manifest(
+ "fuck from behind standing - woman backside - side view", page_size=40
+ )
+ _expect(
+ standing_backside_side_manifest.get("image_count") == 47,
+ "Standing backside side-view review manifest should cover all 47 JPGs",
+ )
+ standing_backside_side_selected = {
+ str(item.get("variant_key")): item for item in standing_backside_side_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_standing_backside_side_view_folder_pool" in standing_backside_side_selected,
+ "Standing backside side-view review manifest should record the source-pool anchor",
+ )
+ _expect(
+ len(standing_backside_side_selected["normal_doggy_standing_backside_side_view_folder_pool"].get("reference_images") or []) == 3,
+ "Standing backside side-view source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_doggy_standing_backside_side_view" in standing_backside_side_selected,
+ "Standing backside side-view review manifest should record the reviewed route anchors",
+ )
+ _expect(
+ len(standing_backside_side_selected["normal_doggy_standing_backside_side_view"].get("reference_images") or []) == 16,
+ "Standing backside side-view reviewed subset should keep 16 references",
+ )
+ standing_backside_side_html = prep_module.build_contact_sheet_html(
+ "fuck from behind standing - woman backside - side view", page_size=40
+ )
+ _expect(
+ 'data-selected-variant="normal_doggy_standing_backside_side_view"' in standing_backside_side_html,
+ "Standing backside side-view contact sheet should mark reviewed route anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_doggy_standing_backside_side_view_folder_pool"' in standing_backside_side_html,
+ "Standing backside side-view contact sheet should mark source-pool anchors",
+ )
+
+ doggy_all_fours_front_manifest = prep_module.build_review_manifest("doggy all four - front view", page_size=40)
+ _expect(
+ doggy_all_fours_front_manifest.get("image_count") == 28,
+ "Doggy all-fours front-view review manifest should cover all 28 JPGs",
+ )
+ doggy_all_fours_front_selected = {
+ str(item.get("variant_key")): item for item in doggy_all_fours_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_all_fours_front_view" in doggy_all_fours_front_selected,
+ "Doggy all-fours front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_all_fours_front_selected["normal_doggy_all_fours_front_view"].get("reference_images") or []) == 15,
+ "Doggy all-fours front-view reviewed subset should have 15 references",
+ )
+ doggy_all_fours_front_html = prep_module.build_contact_sheet_html("doggy all four - front view", page_size=40)
+ _expect(
+ 'data-selected-variant="normal_doggy_all_fours_front_view"' in doggy_all_fours_front_html,
+ "Doggy all-fours front-view contact sheet should mark reviewed route references",
+ )
+
+ doggy_generic_front_manifest = prep_module.build_review_manifest("doggy - front view ", page_size=40)
+ _expect(
+ doggy_generic_front_manifest.get("folder") == "doggy - front view ",
+ "Doggy generic front-view review manifest should target the trailing-space source folder",
+ )
+ _expect(
+ doggy_generic_front_manifest.get("image_count") == 13,
+ "Doggy generic front-view review manifest should cover all 13 JPGs",
+ )
+ doggy_generic_front_selected = {
+ str(item.get("variant_key")): item for item in doggy_generic_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_doggy_generic_front_view" in doggy_generic_front_selected,
+ "Doggy generic front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(doggy_generic_front_selected["normal_doggy_generic_front_view"].get("reference_images") or []) == 15,
+ "Doggy generic front-view reviewed subset should have 15 references",
+ )
+ doggy_generic_front_html = prep_module.build_contact_sheet_html("doggy - front view ", page_size=40)
+ _expect("No-generation contact sheet" in doggy_generic_front_html, "Doggy generic front-view contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_doggy_generic_front_view"' in doggy_generic_front_html,
+ "Doggy generic front-view contact sheet should mark reviewed route references",
+ )
+
+ piledriver_manifest = prep_module.build_review_manifest("piledriver", page_size=40)
+ _expect(piledriver_manifest.get("image_count") == 27, "Piledriver review manifest should cover all 27 JPGs")
+ piledriver_selected = {str(item.get("variant_key")): item for item in piledriver_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_piledriver_mixed_camera_folder_pool" in piledriver_selected,
+ "Piledriver review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ len(piledriver_selected["normal_piledriver_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Piledriver mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_piledriver_high_front_down_view" in piledriver_selected,
+ "Piledriver review manifest should record the high-front-down selected split",
+ )
+ _expect(
+ len(piledriver_selected["normal_piledriver_high_front_down_view"].get("reference_images") or []) == 15,
+ "Piledriver high-front-down selected split should have 15 references",
+ )
+ piledriver_html = prep_module.build_contact_sheet_html("piledriver", page_size=40)
+ _expect(
+ 'data-selected-variant="normal_piledriver_high_front_down_view"' in piledriver_html,
+ "Piledriver contact sheet should mark high-front-down selected references",
+ )
+ _expect(
+ 'data-selected-variant="normal_piledriver_mixed_camera_folder_pool"' in piledriver_html,
+ "Piledriver contact sheet should mark mixed source-pool anchors",
+ )
+
+ blowjob_laying_front_manifest = prep_module.build_review_manifest("blowjob - laying - front view", page_size=40)
+ _expect(
+ blowjob_laying_front_manifest.get("image_count") == 26,
+ "Blowjob laying front-view review manifest should cover all 26 JPGs",
+ )
+ blowjob_laying_front_selected = {
+ str(item.get("variant_key")): item for item in blowjob_laying_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_blowjob_laying_front_view" in blowjob_laying_front_selected,
+ "Blowjob laying front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(blowjob_laying_front_selected["normal_blowjob_laying_front_view"].get("reference_images") or []) == 15,
+ "Blowjob laying front-view reviewed subset should have 15 references",
+ )
+ blowjob_laying_front_html = prep_module.build_contact_sheet_html("blowjob - laying - front view", page_size=40)
+ _expect(
+ 'data-selected-variant="normal_blowjob_laying_front_view"' in blowjob_laying_front_html,
+ "Blowjob laying front-view contact sheet should mark reviewed route references",
+ )
+
+ breast_contact_front_manifest = prep_module.build_review_manifest("breast - touching - front view", page_size=40)
+ _expect(
+ breast_contact_front_manifest.get("image_count") == 25,
+ "Breast-contact front-view review manifest should cover all 25 JPGs",
+ )
+ breast_contact_front_selected = {
+ str(item.get("variant_key")): item for item in breast_contact_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_breast_contact_front_view" in breast_contact_front_selected,
+ "Breast-contact front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(breast_contact_front_selected["normal_breast_contact_front_view"].get("reference_images") or []) == 15,
+ "Breast-contact front-view reviewed subset should have 15 references",
+ )
+ breast_contact_front_html = prep_module.build_contact_sheet_html("breast - touching - front view", page_size=40)
+ _expect(
+ 'data-selected-variant="normal_breast_contact_front_view"' in breast_contact_front_html,
+ "Breast-contact front-view contact sheet should mark reviewed route references",
+ )
+
+ reverse_congress_front_manifest = prep_module.build_review_manifest("reverse congress - front view", page_size=40)
+ _expect(
+ reverse_congress_front_manifest.get("image_count") == 21,
+ "Reverse-congress front-view review manifest should cover all 21 JPGs",
+ )
+ reverse_congress_front_selected = {
+ str(item.get("variant_key")): item for item in reverse_congress_front_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_reverse_congress_front_view" in reverse_congress_front_selected,
+ "Reverse-congress front-view review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(reverse_congress_front_selected["normal_reverse_congress_front_view"].get("reference_images") or []) == 15,
+ "Reverse-congress front-view reviewed subset should have 15 references",
+ )
+ reverse_congress_front_html = prep_module.build_contact_sheet_html("reverse congress - front view", page_size=40)
+ _expect(
+ 'data-selected-variant="normal_reverse_congress_front_view"' in reverse_congress_front_html,
+ "Reverse-congress front-view contact sheet should mark reviewed route references",
+ )
+
+ boobjob_manifest = prep_module.build_review_manifest("boobjob", page_size=40)
+ _expect(boobjob_manifest.get("folder") == "boobjob", "Boobjob review manifest should target boobjob")
+ _expect(boobjob_manifest.get("image_count") == 19, "Boobjob review should cover all 19 JPGs")
+ boobjob_selected = {
+ str(item.get("variant_key")): item for item in boobjob_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_boobjob_front_close_mixed_camera_folder_pool" in boobjob_selected,
+ "Boobjob review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ boobjob_selected["normal_boobjob_front_close_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Boobjob mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(boobjob_selected["normal_boobjob_front_close_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Boobjob mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_boobjob_front_close_view" in boobjob_selected,
+ "Boobjob review manifest should record the front-close selected split",
+ )
+ _expect(
+ boobjob_selected["normal_boobjob_front_close_view"].get("status") == "pre_ab_candidate",
+ "Boobjob front-close selected split should be pre-A/B",
+ )
+ _expect(
+ len(boobjob_selected["normal_boobjob_front_close_view"].get("reference_images") or []) == 12,
+ "Boobjob front-close selected split should have 12 references",
+ )
+ boobjob_html = prep_module.build_contact_sheet_html("boobjob", page_size=40)
+ _expect("No-generation contact sheet" in boobjob_html, "Boobjob contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_boobjob_front_close_mixed_camera_folder_pool"' in boobjob_html,
+ "Boobjob contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_boobjob_front_close_view"' in boobjob_html,
+ "Boobjob contact sheet should mark front-close selected references",
+ )
+
+ fingering_manifest = prep_module.build_review_manifest("fingering", page_size=40)
+ _expect(fingering_manifest.get("folder") == "fingering", "Fingering review manifest should target fingering")
+ _expect(fingering_manifest.get("image_count") == 15, "Fingering review should cover all 15 JPGs")
+ fingering_selected = {
+ str(item.get("variant_key")): item for item in fingering_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_fingering_mixed_camera_folder_pool" in fingering_selected,
+ "Fingering review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ fingering_selected["normal_fingering_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Fingering mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(fingering_selected["normal_fingering_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Fingering mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_fingering_reclined_front_view" in fingering_selected,
+ "Fingering review manifest should record the reclined front-view selected split",
+ )
+ _expect(
+ fingering_selected["normal_fingering_reclined_front_view"].get("status") == "pre_ab_candidate",
+ "Fingering reclined front-view selected split should be pre-A/B",
+ )
+ _expect(
+ len(fingering_selected["normal_fingering_reclined_front_view"].get("reference_images") or []) == 10,
+ "Fingering reclined front-view selected split should have 10 references",
+ )
+ fingering_html = prep_module.build_contact_sheet_html("fingering", page_size=40)
+ _expect("No-generation contact sheet" in fingering_html, "Fingering contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_fingering_mixed_camera_folder_pool"' in fingering_html,
+ "Fingering contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_fingering_reclined_front_view"' in fingering_html,
+ "Fingering contact sheet should mark reclined front-view selected references",
+ )
+
+ sixty_nine_manifest = prep_module.build_review_manifest("69", page_size=40)
+ _expect(sixty_nine_manifest.get("folder") == "69", "Sixty-nine review manifest should target 69")
+ _expect(sixty_nine_manifest.get("image_count") == 10, "Sixty-nine review should cover all 10 JPGs")
+ sixty_nine_selected = {
+ str(item.get("variant_key")): item for item in sixty_nine_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_sixty_nine_mixed_camera_folder_pool" in sixty_nine_selected,
+ "Sixty-nine review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ sixty_nine_selected["normal_sixty_nine_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Sixty-nine mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(sixty_nine_selected["normal_sixty_nine_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Sixty-nine mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_sixty_nine_front_close_view" in sixty_nine_selected,
+ "Sixty-nine review manifest should record the front-close selected split",
+ )
+ _expect(
+ sixty_nine_selected["normal_sixty_nine_front_close_view"].get("status") == "pre_ab_candidate",
+ "Sixty-nine front-close selected split should be pre-A/B",
+ )
+ _expect(
+ len(sixty_nine_selected["normal_sixty_nine_front_close_view"].get("reference_images") or []) == 7,
+ "Sixty-nine front-close selected split should have 7 references",
+ )
+ sixty_nine_html = prep_module.build_contact_sheet_html("69", page_size=40)
+ _expect("No-generation contact sheet" in sixty_nine_html, "Sixty-nine contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_sixty_nine_mixed_camera_folder_pool"' in sixty_nine_html,
+ "Sixty-nine contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_sixty_nine_front_close_view"' in sixty_nine_html,
+ "Sixty-nine contact sheet should mark front-close selected references",
+ )
+
+ wand_manifest = prep_module.build_review_manifest("wand", page_size=40)
+ _expect(wand_manifest.get("folder") == "wand", "Wand review manifest should target wand")
+ _expect(wand_manifest.get("image_count") == 9, "Wand review should cover all 9 JPGs")
+ wand_selected = {
+ str(item.get("variant_key")): item for item in wand_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_wand_mixed_camera_folder_pool" in wand_selected,
+ "Wand review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ wand_selected["normal_wand_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Wand mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(wand_selected["normal_wand_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Wand mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_wand_front_close_view" in wand_selected,
+ "Wand review manifest should record the front-close selected split",
+ )
+ _expect(
+ wand_selected["normal_wand_front_close_view"].get("status") == "pre_ab_candidate",
+ "Wand front-close selected split should be pre-A/B",
+ )
+ _expect(
+ len(wand_selected["normal_wand_front_close_view"].get("reference_images") or []) == 7,
+ "Wand front-close selected split should have 7 references",
+ )
+ wand_html = prep_module.build_contact_sheet_html("wand", page_size=40)
+ _expect("No-generation contact sheet" in wand_html, "Wand contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_wand_mixed_camera_folder_pool"' in wand_html,
+ "Wand contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_wand_front_close_view"' in wand_html,
+ "Wand contact sheet should mark front-close selected references",
+ )
+
+ ballsucking_standing_manifest = prep_module.build_review_manifest("ballsucking - standing", page_size=40)
+ _expect(
+ ballsucking_standing_manifest.get("folder") == "ballsucking - standing",
+ "Ballsucking standing review manifest should target ballsucking - standing",
+ )
+ _expect(
+ ballsucking_standing_manifest.get("image_count") == 12,
+ "Ballsucking standing review should cover all 12 JPGs",
+ )
+ ballsucking_standing_selected = {
+ str(item.get("variant_key")): item for item in ballsucking_standing_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_ballsucking_standing_partner_mixed_camera_folder_pool" in ballsucking_standing_selected,
+ "Ballsucking standing review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ ballsucking_standing_selected["normal_ballsucking_standing_partner_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Ballsucking standing mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ len(ballsucking_standing_selected["normal_ballsucking_standing_partner_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Ballsucking standing mixed source-pool anchor should keep 3 references",
+ )
+ _expect(
+ "normal_ballsucking_standing_low_side_view" in ballsucking_standing_selected,
+ "Ballsucking standing review manifest should record the low-side selected split",
+ )
+ _expect(
+ ballsucking_standing_selected["normal_ballsucking_standing_low_side_view"].get("status") == "pre_ab_candidate",
+ "Ballsucking standing low-side selected split should be pre-A/B",
+ )
+ _expect(
+ len(ballsucking_standing_selected["normal_ballsucking_standing_low_side_view"].get("reference_images") or []) == 11,
+ "Ballsucking standing low-side selected split should have 11 references",
+ )
+ ballsucking_standing_html = prep_module.build_contact_sheet_html("ballsucking - standing", page_size=40)
+ _expect("No-generation contact sheet" in ballsucking_standing_html, "Ballsucking standing contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_ballsucking_standing_partner_mixed_camera_folder_pool"' in ballsucking_standing_html,
+ "Ballsucking standing contact sheet should mark mixed source-pool anchors",
+ )
+ _expect(
+ 'data-selected-variant="normal_ballsucking_standing_low_side_view"' in ballsucking_standing_html,
+ "Ballsucking standing contact sheet should mark low-side selected references",
+ )
+
+ face_sitting_manifest = prep_module.build_review_manifest("face sitting", page_size=40)
+ _expect(face_sitting_manifest.get("folder") == "face sitting", "Face-sitting review manifest should target face sitting")
+ _expect(face_sitting_manifest.get("image_count") == 4, "Face-sitting review should cover all 4 JPGs")
+ face_sitting_selected = {
+ str(item.get("variant_key")): item for item in face_sitting_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_face_sitting_mixed_camera_folder_pool" in face_sitting_selected,
+ "Face-sitting review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ face_sitting_selected["normal_face_sitting_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Face-sitting mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ face_sitting_selected["normal_face_sitting_mixed_camera_folder_pool"].get("review_bucket") == "reject_or_unclear",
+ "Face-sitting mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(face_sitting_selected["normal_face_sitting_mixed_camera_folder_pool"].get("reference_images") or []) == 4,
+ "Face-sitting mixed source-pool anchor should keep all 4 references",
+ )
+ face_sitting_html = prep_module.build_contact_sheet_html("face sitting", page_size=40)
+ _expect("No-generation contact sheet" in face_sitting_html, "Face-sitting contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_face_sitting_mixed_camera_folder_pool"' in face_sitting_html,
+ "Face-sitting contact sheet should mark mixed source-pool anchors",
+ )
+
+ pussy_licking_backview_manifest = prep_module.build_review_manifest("pussy licking - backv iew", page_size=40)
+ _expect(
+ pussy_licking_backview_manifest.get("folder") == "pussy licking - backv iew",
+ "Pussy-licking back-view review manifest should target pussy licking - backv iew",
+ )
+ _expect(
+ pussy_licking_backview_manifest.get("image_count") == 3,
+ "Pussy-licking back-view review should cover all 3 JPGs",
+ )
+ pussy_licking_backview_selected = {
+ str(item.get("variant_key")): item for item in pussy_licking_backview_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_pussy_licking_backview_mixed_camera_folder_pool" in pussy_licking_backview_selected,
+ "Pussy-licking back-view review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ pussy_licking_backview_selected["normal_pussy_licking_backview_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Pussy-licking back-view mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ pussy_licking_backview_selected["normal_pussy_licking_backview_mixed_camera_folder_pool"].get("review_bucket") == "reject_or_unclear",
+ "Pussy-licking back-view mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(pussy_licking_backview_selected["normal_pussy_licking_backview_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Pussy-licking back-view mixed source-pool anchor should keep all 3 references",
+ )
+ pussy_licking_backview_html = prep_module.build_contact_sheet_html("pussy licking - backv iew", page_size=40)
+ _expect(
+ "No-generation contact sheet" in pussy_licking_backview_html,
+ "Pussy-licking back-view contact sheet lost no-generation scope",
+ )
+ _expect(
+ 'data-selected-variant="normal_pussy_licking_backview_mixed_camera_folder_pool"' in pussy_licking_backview_html,
+ "Pussy-licking back-view contact sheet should mark mixed source-pool anchors",
+ )
+
+ removing_pants_manifest = prep_module.build_review_manifest("removing pants", page_size=40)
+ _expect(removing_pants_manifest.get("folder") == "removing pants", "Removing-pants review manifest should target removing pants")
+ _expect(removing_pants_manifest.get("image_count") == 3, "Removing-pants review should cover all 3 JPGs")
+ removing_pants_selected = {
+ str(item.get("variant_key")): item for item in removing_pants_manifest.get("selected_subvariants") or []
+ }
+ _expect(
+ "normal_removing_pants_mixed_camera_folder_pool" in removing_pants_selected,
+ "Removing-pants review manifest should record the mixed source-pool anchor",
+ )
+ _expect(
+ removing_pants_selected["normal_removing_pants_mixed_camera_folder_pool"].get("status") == "needs_samples",
+ "Removing-pants mixed source-pool anchor should stay needs_samples",
+ )
+ _expect(
+ removing_pants_selected["normal_removing_pants_mixed_camera_folder_pool"].get("review_bucket") == "reject_or_unclear",
+ "Removing-pants mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(removing_pants_selected["normal_removing_pants_mixed_camera_folder_pool"].get("reference_images") or []) == 3,
+ "Removing-pants mixed source-pool anchor should keep all 3 references",
+ )
+ removing_pants_html = prep_module.build_contact_sheet_html("removing pants", page_size=40)
+ _expect("No-generation contact sheet" in removing_pants_html, "Removing-pants contact sheet lost no-generation scope")
+ _expect(
+ 'data-selected-variant="normal_removing_pants_mixed_camera_folder_pool"' in removing_pants_html,
+ "Removing-pants contact sheet should mark mixed source-pool anchors",
+ )
+ for folder, (variant_key, expected_count) in thin_batch_pool_expectations.items():
+ manifest = prep_module.build_review_manifest(folder, page_size=40)
+ _expect(manifest.get("folder") == folder, f"{folder} review manifest should target {folder}")
+ _expect(manifest.get("image_count") == expected_count, f"{folder} review should cover all {expected_count} JPGs")
+ selected = {str(item.get("variant_key")): item for item in manifest.get("selected_subvariants") or []}
+ _expect(variant_key in selected, f"{folder} review manifest should record the mixed source-pool anchor")
+ _expect(selected[variant_key].get("status") == "needs_samples", f"{folder} mixed source-pool anchor should stay needs_samples")
+ _expect(
+ selected[variant_key].get("review_bucket") == "reject_or_unclear",
+ f"{folder} mixed source-pool anchor should stay in the reject/unclear review bucket",
+ )
+ _expect(
+ len(selected[variant_key].get("reference_images") or []) == expected_count,
+ f"{folder} mixed source-pool anchor should keep all {expected_count} references",
+ )
+ html = prep_module.build_contact_sheet_html(folder, page_size=40)
+ _expect("No-generation contact sheet" in html, f"{folder} contact sheet lost no-generation scope")
+ _expect(
+ f'data-selected-variant="{variant_key}"' in html,
+ f"{folder} contact sheet should mark mixed source-pool anchors",
+ )
+
+ anal_manifest = prep_module.build_review_manifest("anal random", page_size=40)
+ anal_selected = {str(item.get("variant_key")): item for item in anal_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_anal_random_back_side_offset_view" in anal_selected,
+ "Anal-random review manifest should record the back-side-offset selected subset",
+ )
+ _expect(
+ len(anal_selected["normal_anal_random_back_side_offset_view"].get("reference_images") or []) == 12,
+ "Anal-random back-side-offset subset should have 12 references",
+ )
+
+ pussy_manifest = prep_module.build_review_manifest("pussy spread", page_size=40)
+ pussy_selected = {str(item.get("variant_key")): item for item in pussy_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_display_front_open_leg_side_offset_view" in pussy_selected,
+ "Pussy-spread review manifest should record the side-offset selected subset",
+ )
+ _expect(
+ len(pussy_selected["normal_display_front_open_leg_side_offset_view"].get("reference_images") or []) == 12,
+ "Pussy-spread side-offset subset should have 12 references",
+ )
+
+ cowgirl_back_manifest = prep_module.build_review_manifest("cowgirl - back view - 3-4 angle", page_size=40)
+ _expect(cowgirl_back_manifest.get("folder") == "cowgirl - back view - 3-4 angle", "Cowgirl back-three-quarter review manifest should target the source folder")
+ _expect(cowgirl_back_manifest.get("image_count") == 129, "Cowgirl back-three-quarter review should cover all 129 JPGs")
+ _expect(len(cowgirl_back_manifest.get("contact_sheet_pages") or []) == 4, "Cowgirl back-three-quarter review should be paged at 40 images per sheet")
+ cowgirl_back_selected = {str(item.get("variant_key")): item for item in cowgirl_back_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_cowgirl_back_three_quarter" in cowgirl_back_selected,
+ "Cowgirl back-three-quarter review manifest should record the reviewed route references",
+ )
+ _expect(
+ len(cowgirl_back_selected["normal_cowgirl_back_three_quarter"].get("reference_images") or []) == 15,
+ "Cowgirl back-three-quarter reviewed subset should have 15 references",
+ )
+ cowgirl_back_html = prep_module.build_contact_sheet_html("cowgirl - back view - 3-4 angle", page_size=40)
+ _expect("cowgirl - back view - 3-4 angle/0002.jpg" in cowgirl_back_html, "Cowgirl back-three-quarter contact sheet lost first selected image")
+ _expect('data-selected-variant="normal_cowgirl_back_three_quarter"' in cowgirl_back_html, "Cowgirl back-three-quarter contact sheet should mark reviewed references")
+
+ rear_body_manifest = prep_module.build_review_manifest("woman solo showing her hass - back view", page_size=40)
+ _expect(rear_body_manifest.get("folder") == "woman solo showing her hass - back view", "Rear-body display review manifest should target the source folder")
+ _expect(rear_body_manifest.get("image_count") == 99, "Rear-body display review should cover all 99 JPGs")
+ _expect(len(rear_body_manifest.get("contact_sheet_pages") or []) == 3, "Rear-body display review should be paged at 40 images per sheet")
+ rear_body_selected = {str(item.get("variant_key")): item for item in rear_body_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_display_rear_body_standing_back_view" in rear_body_selected,
+ "Rear-body display review manifest should record the standing back-view selected subset",
+ )
+ _expect(
+ len(rear_body_selected["normal_display_rear_body_standing_back_view"].get("reference_images") or []) == 12,
+ "Rear-body standing back-view subset should have 12 references",
+ )
+ rear_body_html = prep_module.build_contact_sheet_html("woman solo showing her hass - back view", page_size=40)
+ _expect("woman solo showing her hass - back view/0001.jpg" in rear_body_html, "Rear-body display contact sheet lost first image")
+ _expect('data-selected-variant="normal_display_rear_body_standing_back_view"' in rear_body_html, "Rear-body display contact sheet should mark standing back-view references")
+
+ couple_manifest = prep_module.build_review_manifest("couple kissing", page_size=40)
+ _expect(couple_manifest.get("folder") == "couple kissing", "Couple-kissing review manifest should target couple kissing")
+ _expect(couple_manifest.get("image_count") == 88, "Couple-kissing review should cover all 88 JPGs")
+ _expect(len(couple_manifest.get("contact_sheet_pages") or []) == 3, "Couple-kissing review should be paged at 40 images per sheet")
+ couple_selected = {str(item.get("variant_key")): item for item in couple_manifest.get("selected_subvariants") or []}
+ _expect(
+ "normal_couple_kissing_upright_side_profile" in couple_selected,
+ "Couple-kissing review manifest should record the upright side-profile selected subset",
+ )
+ _expect(
+ len(couple_selected["normal_couple_kissing_upright_side_profile"].get("reference_images") or []) == 12,
+ "Couple-kissing upright side-profile subset should have 12 references",
+ )
+ couple_html = prep_module.build_contact_sheet_html("couple kissing", page_size=40)
+ _expect("couple kissing/0001.jpg" in couple_html, "Contact sheet lost first couple-kissing image")
+ _expect('data-review-bucket="side_view"' in couple_html, "Couple-kissing contact sheet should mark selected side-view references")
+ _expect('data-selected-variant="normal_couple_kissing_upright_side_profile"' in couple_html, "Couple-kissing contact sheet should mark selected side-profile references")
def _atlas_variant_include_key(variant_key: str) -> str:
@@ -17258,6 +19721,8 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
("pov_camera_scene", smoke_pov_camera_scene),
("krea2_pov_pose_variant_catalog", smoke_krea2_pov_pose_variant_catalog),
("normal_camera_atlas_catalog", smoke_normal_camera_atlas_catalog),
+ ("normal_camera_atlas_prep_artifacts", smoke_normal_camera_atlas_prep_artifacts),
+ ("normal_camera_unused_pool_review_artifacts", smoke_normal_camera_unused_pool_review_artifacts),
("krea2_pov_atlas_variant_prompt_routes", smoke_krea2_pov_atlas_variant_prompt_routes),
("krea2_pose_variant_catalog_policy", smoke_krea2_pose_variant_catalog_policy),
("krea2_eval_log_policy", smoke_krea2_eval_log_policy),