diff --git a/categories/normal_camera_atlas.json b/categories/normal_camera_atlas.json new file mode 100644 index 0000000..7115be2 --- /dev/null +++ b/categories/normal_camera_atlas.json @@ -0,0 +1,2836 @@ +{ + "version": 1, + "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted", + "purpose": "Machine-readable inventory for the non-POV normal-camera reference atlas. It records folder-level camera geometry for later prompt or node work without changing generator behavior.", + "scope": { + "included": "Top-level non-POV folders currently present under atlas_root.", + "excluded": "POV-specific folders are intentionally outside this atlas and should stay in the existing POV atlas workflow.", + "generator_behavior": "No generator defaults, prompt routes, or formatter behavior are changed by this catalog." + }, + "camera_view_values": { + "front_view": "Camera faces the main visible subject or contact plane from the front.", + "front_three_quarter": "Camera faces the main visible subject from a front-offset quarter angle.", + "side_view": "Profile or near-profile camera, with the body/action axis running across the frame.", + "back_view": "Rear-facing camera where the back, hips, or rear contact side is closest to frame.", + "back_three_quarter": "Rear-offset quarter camera, usually showing the rear/action side plus enough torso/face context.", + "top_view": "Overhead or high downward camera where elevation matters more than azimuth.", + "low_angle": "Low camera looking upward or from below the action plane.", + "under_view": "Under-view camera from below hips/legs or below the body line.", + "mixed_or_unspecified": "Folder name does not lock camera geometry; inspect samples before using as a camera reference." + }, + "action_family_values": { + "anal": "Anal-position folders that are not already captured by a named position family.", + "ballsucking": "Low or standing oral-contact folders centered on ballsucking geometry.", + "blowjob": "Oral-contact folders centered on blowjob geometry.", + "boobjob": "Breast-contact outercourse folders.", + "breast_contact": "Breast touching or breast sucking folders.", + "couple": "Non-penetrative couple interaction folder.", + "cowgirl": "Woman-on-top cowgirl folders where the visible subject faces camera or sits across the partner.", + "display": "Solo/display folders with exposed body presentation rather than partner contact as the main geometry.", + "doggy": "Rear-entry, from-behind, or all-fours folders.", + "double_contact": "Multi-partner double-contact folders.", + "face_sitting": "Facesitting folders.", + "manual_or_toy": "Manual-contact, footjob, fingering, fist, or toy-contact folders.", + "missionary": "Missionary, mating-press, or folded-leg front/side/top folders.", + "oral_other": "Other oral-contact folders such as 69, licking, rimjob, penis worship, and under-desk oral framing.", + "piledriver_or_pretzel": "Piledriver, pretzel, and closely related folded-body position folders.", + "reverse_congress": "Reverse-congress folders.", + "reverse_cowgirl": "Reverse-cowgirl folders where back-facing body orientation is part of the action geometry.", + "standing_penetration": "Standing penetration folders that are not better classified as doggy/from-behind.", + "other": "Low-count or miscellaneous folders that need manual review before reuse.", + "front_penetration": "Front-entry penetration folders that are not better captured by missionary or standing labels." + }, + "catalog_status_values": { + "camera_reference": "Enough images and a camera-bearing folder name make this useful as a camera reference.", + "thin_sample": "The folder has one or two images; inspect before treating it as a stable family.", + "narrow_sample": "The folder is camera-labeled but constrained by close-up wording.", + "action_reference_only": "The folder is useful for action/pose examples but does not declare a stable camera view.", + "empty": "The folder currently contains no JPG files." + }, + "inventory": { + "folder_count": 104, + "jpg_count": 1979, + "empty_folders": [ + "blowjob - standing - side view", + "blowjob - standing close up - side view", + "mating press - backview" + ], + "camera_view_counts": { + "back_three_quarter": 12, + "back_view": 5, + "front_three_quarter": 7, + "front_view": 19, + "low_angle": 2, + "mixed_or_unspecified": 28, + "side_view": 28, + "top_view": 2, + "under_view": 1 + }, + "action_family_counts": { + "anal": 1, + "ballsucking": 2, + "blowjob": 10, + "boobjob": 1, + "breast_contact": 3, + "couple": 1, + "cowgirl": 6, + "display": 6, + "doggy": 15, + "double_contact": 6, + "face_sitting": 2, + "front_penetration": 1, + "manual_or_toy": 11, + "missionary": 11, + "oral_other": 11, + "piledriver_or_pretzel": 2, + "reverse_congress": 2, + "reverse_cowgirl": 10, + "standing_penetration": 3 + }, + "catalog_status_counts": { + "action_reference_only": 28, + "camera_reference": 49, + "empty": 3, + "thin_sample": 24 + }, + "disambiguated_key_count": 6 + }, + "folders": [ + { + "key": "69", + "folder": "69", + "display_name": "69", + "image_count": 10, + "action_family": "oral_other", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "69/0002.jpg", + "69/196.jpg", + "69/624.jpg" + ] + }, + { + "key": "anal_reverse_cowgirl_front_view_1", + "folder": " anal reverse cowgirl - front view", + "display_name": "anal reverse cowgirl - front view", + "image_count": 2, + "action_family": "reverse_cowgirl", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + " anal reverse cowgirl - front view/26.jpg", + " anal reverse cowgirl - front view/49.jpg" + ] + }, + { + "key": "anal_reverse_cowgirl_front_view_3_4_angle_1", + "folder": "anal reverse cowgirl - front view - 3-4 angle", + "display_name": "anal reverse cowgirl - front view - 3-4 angle", + "image_count": 3, + "action_family": "reverse_cowgirl", + "camera_view": "front_three_quarter", + "camera_tokens": [ + "front_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front three-quarter label keeps the visible subject/front contact plane readable while the camera sits offset enough to show body depth.", + "prompt_cues": [ + "front three-quarter normal camera view", + "camera offset from the front", + "face, torso, and contact plane all readable" + ], + "avoid_cues": [ + "exact 45-degree claims without checking samples", + "POV foreground body cues" + ], + "reference_images": [ + "anal reverse cowgirl - front view - 3-4 angle/10.jpg", + "anal reverse cowgirl - front view - 3-4 angle/14.jpg", + "anal reverse cowgirl - front view - 3-4 angle/19.jpg" + ] + }, + { + "key": "anal_cowgirl", + "folder": "anal cowgirl", + "display_name": "anal cowgirl", + "image_count": 1, + "action_family": "cowgirl", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "anal cowgirl/49.jpg" + ] + }, + { + "key": "anal_doggy_side_view", + "folder": "anal doggy - side view", + "display_name": "anal doggy - side view", + "image_count": 1, + "action_family": "doggy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "anal doggy - side view/16.jpg" + ] + }, + { + "key": "anal_fuck_from_behind_laying_back_view_3_4_angle", + "folder": "anal fuck from behind laying - back view - 3-4 angle", + "display_name": "anal fuck from behind laying - back view - 3-4 angle", + "image_count": 1, + "action_family": "doggy", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "anal fuck from behind laying - back view - 3-4 angle/14.jpg" + ] + }, + { + "key": "anal_missionary_front_view_3_4_angle", + "folder": "anal missionary - front view - 3-4 angle", + "display_name": "anal missionary - front view - 3-4 angle", + "image_count": 4, + "action_family": "missionary", + "camera_view": "front_three_quarter", + "camera_tokens": [ + "front_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front three-quarter label keeps the visible subject/front contact plane readable while the camera sits offset enough to show body depth.", + "prompt_cues": [ + "front three-quarter normal camera view", + "camera offset from the front", + "face, torso, and contact plane all readable" + ], + "avoid_cues": [ + "exact 45-degree claims without checking samples", + "POV foreground body cues" + ], + "reference_images": [ + "anal missionary - front view - 3-4 angle/118.jpg", + "anal missionary - front view - 3-4 angle/124.jpg", + "anal missionary - front view - 3-4 angle/94.jpg" + ] + }, + { + "key": "anal_random", + "folder": "anal random", + "display_name": "anal random", + "image_count": 99, + "action_family": "anal", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "anal random/0001.jpg", + "anal random/266_2.jpg", + "anal random/94_5.jpg" + ] + }, + { + "key": "anal_reverse_congress", + "folder": "anal reverse congress", + "display_name": "anal reverse congress", + "image_count": 1, + "action_family": "reverse_congress", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "anal reverse congress/160.jpg" + ] + }, + { + "key": "anal_reverse_cowgirl_front_view_2", + "folder": "anal reverse cowgirl - front view", + "display_name": "anal reverse cowgirl - front view", + "image_count": 1, + "action_family": "reverse_cowgirl", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "anal reverse cowgirl - front view/59.jpg" + ] + }, + { + "key": "anal_reverse_cowgirl_front_view_3_4_angle_2", + "folder": "anal reverse cowgirl - front view - 3-4 angle", + "display_name": "anal reverse cowgirl - front view - 3-4 angle", + "image_count": 2, + "action_family": "reverse_cowgirl", + "camera_view": "front_three_quarter", + "camera_tokens": [ + "front_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front three-quarter label keeps the visible subject/front contact plane readable while the camera sits offset enough to show body depth.", + "prompt_cues": [ + "front three-quarter normal camera view", + "camera offset from the front", + "face, torso, and contact plane all readable" + ], + "avoid_cues": [ + "exact 45-degree claims without checking samples", + "POV foreground body cues" + ], + "reference_images": [ + "anal reverse cowgirl - front view - 3-4 angle/118.jpg", + "anal reverse cowgirl - front view - 3-4 angle/94.jpg" + ] + }, + { + "key": "anus_exposed_back_view", + "folder": "anus exposed - back view", + "display_name": "anus exposed - back view", + "image_count": 4, + "action_family": "display", + "camera_view": "back_view", + "camera_tokens": [ + "back_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back-view folders put the back, hips, or rear contact side closest to camera. Use rear-view language instead of first-person wording.", + "prompt_cues": [ + "rear normal camera view", + "back and hips closest to camera", + "rear contact side anchors the frame" + ], + "avoid_cues": [ + "front-facing camera wording", + "viewer/POV body cues" + ], + "reference_images": [ + "anus exposed - back view/0017.jpg", + "anus exposed - back view/607.jpg", + "anus exposed - back view/614.jpg" + ] + }, + { + "key": "anus_lickiing", + "folder": "anus lickiing", + "display_name": "anus lickiing", + "image_count": 1, + "action_family": "oral_other", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "anus lickiing/0004.jpg" + ] + }, + { + "key": "ballsucking_laying", + "folder": "ballsucking - laying", + "display_name": "ballsucking - laying", + "image_count": 2, + "action_family": "ballsucking", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "ballsucking - laying/271.jpg", + "ballsucking - laying/591.jpg" + ] + }, + { + "key": "ballsucking_standing", + "folder": "ballsucking - standing", + "display_name": "ballsucking - standing", + "image_count": 12, + "action_family": "ballsucking", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "ballsucking - standing/0014.jpg", + "ballsucking - standing/252.jpg", + "ballsucking - standing/624.jpg" + ] + }, + { + "key": "blowjob_front_view_low_angle", + "folder": "blowjob - front view - low angle", + "display_name": "blowjob - front view - low angle", + "image_count": 2, + "action_family": "blowjob", + "camera_view": "front_view", + "camera_tokens": [ + "front_view", + "low_angle" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "blowjob - front view - low angle/145.jpg", + "blowjob - front view - low angle/223.jpg" + ] + }, + { + "key": "blowjob_kneeling_side_view", + "folder": "blowjob - kneeling - side view", + "display_name": "blowjob - kneeling - side view", + "image_count": 6, + "action_family": "blowjob", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "blowjob - kneeling - side view/160.jpg", + "blowjob - kneeling - side view/64.jpg", + "blowjob - kneeling - side view/83.jpg" + ] + }, + { + "key": "blowjob_laying_front_view", + "folder": "blowjob - laying - front view", + "display_name": "blowjob - laying - front view", + "image_count": 26, + "action_family": "blowjob", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "blowjob - laying - front view/0001.jpg", + "blowjob - laying - front view/274.jpg", + "blowjob - laying - front view/94.jpg" + ] + }, + { + "key": "blowjob_laying_side_view", + "folder": "blowjob - laying - side view", + "display_name": "blowjob - laying - side view", + "image_count": 24, + "action_family": "blowjob", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "blowjob - laying - side view/0001.jpg", + "blowjob - laying - side view/36.jpg", + "blowjob - laying - side view/85.jpg" + ] + }, + { + "key": "blowjob_low_angle", + "folder": "blowjob - low angle", + "display_name": "blowjob - low angle", + "image_count": 1, + "action_family": "blowjob", + "camera_view": "low_angle", + "camera_tokens": [ + "low_angle" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Low-angle folders place the camera below the body/action line and look upward; keep them separate from eye-level front views.", + "prompt_cues": [ + "low-angle normal camera view", + "camera placed below the subject", + "upward view from near the body line" + ], + "avoid_cues": [ + "overhead wording", + "eye-level portrait wording" + ], + "reference_images": [ + "blowjob - low angle/569.jpg" + ] + }, + { + "key": "blowjob_sitting_frontview", + "folder": "blowjob - sitting - frontview", + "display_name": "blowjob - sitting - frontview", + "image_count": 12, + "action_family": "blowjob", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "blowjob - sitting - frontview/0003.jpg", + "blowjob - sitting - frontview/37.jpg", + "blowjob - sitting - frontview/81.jpg" + ] + }, + { + "key": "blowjob_sitting_side_view", + "folder": "blowjob - sitting - side view", + "display_name": "blowjob - sitting - side view", + "image_count": 17, + "action_family": "blowjob", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "blowjob - sitting - side view/0002.jpg", + "blowjob - sitting - side view/241.jpg", + "blowjob - sitting - side view/64.jpg" + ] + }, + { + "key": "blowjob_standing_side_view", + "folder": "blowjob - standing - side view", + "display_name": "blowjob - standing - side view", + "image_count": 0, + "action_family": "blowjob", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "empty", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [] + }, + { + "key": "blowjob_standing_close_up_side_view", + "folder": "blowjob - standing close up - side view", + "display_name": "blowjob - standing close up - side view", + "image_count": 0, + "action_family": "blowjob", + "camera_view": "side_view", + "camera_tokens": [ + "side_view", + "close_up" + ], + "catalog_status": "empty", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [] + }, + { + "key": "blowjob_laying_back_view_3_4_angle", + "folder": "blowjob laying - back view - 3-4 angle", + "display_name": "blowjob laying - back view - 3-4 angle", + "image_count": 1, + "action_family": "blowjob", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "blowjob laying - back view - 3-4 angle/14.jpg" + ] + }, + { + "key": "boobjob", + "folder": "boobjob", + "display_name": "boobjob", + "image_count": 19, + "action_family": "boobjob", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "boobjob/0017.jpg", + "boobjob/259.jpg", + "boobjob/91.jpg" + ] + }, + { + "key": "breast_touching_front_view", + "folder": "breast - touching - front view", + "display_name": "breast - touching - front view", + "image_count": 25, + "action_family": "breast_contact", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "breast - touching - front view/0006.jpg", + "breast - touching - front view/248.jpg", + "breast - touching - front view/72.jpg" + ] + }, + { + "key": "breast_touching_side_view", + "folder": "breast - touching - side view", + "display_name": "breast - touching - side view", + "image_count": 10, + "action_family": "breast_contact", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "breast - touching - side view/0010.jpg", + "breast - touching - side view/364.jpg", + "breast - touching - side view/97.jpg" + ] + }, + { + "key": "breast_sucking_side_view", + "folder": "breast sucking - side view", + "display_name": "breast sucking - side view", + "image_count": 43, + "action_family": "breast_contact", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "breast sucking - side view/0003.jpg", + "breast sucking - side view/257.jpg", + "breast sucking - side view/99.jpg" + ] + }, + { + "key": "breasts_exposed", + "folder": "breasts exposed", + "display_name": "breasts exposed", + "image_count": 168, + "action_family": "display", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "breasts exposed/0001.jpg", + "breasts exposed/280.jpg", + "breasts exposed/97.jpg" + ] + }, + { + "key": "couple_kissing", + "folder": "couple kissing", + "display_name": "couple kissing", + "image_count": 88, + "action_family": "couple", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "couple kissing/0001.jpg", + "couple kissing/258.jpg", + "couple kissing/96.jpg" + ] + }, + { + "key": "cowgirl_back_view_3_4_angle", + "folder": "cowgirl - back view - 3-4 angle", + "display_name": "cowgirl - back view - 3-4 angle", + "image_count": 129, + "action_family": "cowgirl", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "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" + ] + }, + { + "key": "cowgirl_front_view", + "folder": "cowgirl - front view", + "display_name": "cowgirl - front view", + "image_count": 1, + "action_family": "cowgirl", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "cowgirl - front view/68.jpg" + ] + }, + { + "key": "cowgirl_front_view_3_4_angle", + "folder": "cowgirl - front view - 3-4 angle", + "display_name": "cowgirl - front view - 3-4 angle", + "image_count": 6, + "action_family": "cowgirl", + "camera_view": "front_three_quarter", + "camera_tokens": [ + "front_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front three-quarter label keeps the visible subject/front contact plane readable while the camera sits offset enough to show body depth.", + "prompt_cues": [ + "front three-quarter normal camera view", + "camera offset from the front", + "face, torso, and contact plane all readable" + ], + "avoid_cues": [ + "exact 45-degree claims without checking samples", + "POV foreground body cues" + ], + "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" + ] + }, + { + "key": "cowgirl_side_view", + "folder": "cowgirl - side view", + "display_name": "cowgirl - side view", + "image_count": 34, + "action_family": "cowgirl", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "cowgirl - side view/0003.jpg", + "cowgirl - side view/280.jpg", + "cowgirl - side view/86_2.jpg" + ] + }, + { + "key": "cowgirl_full_man_body_front_view", + "folder": "cowgirl full man body - front view", + "display_name": "cowgirl full man body - front view", + "image_count": 17, + "action_family": "cowgirl", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "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" + ] + }, + { + "key": "doggy_back_view_3_4_angle", + "folder": "doggy - back view - 3-4 angle", + "display_name": "doggy - back view - 3-4 angle", + "image_count": 35, + "action_family": "doggy", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "doggy - back view - 3-4 angle/0002.jpg", + "doggy - back view - 3-4 angle/185.jpg", + "doggy - back view - 3-4 angle/77.jpg" + ] + }, + { + "key": "doggy_front_view_1", + "folder": "doggy - front view", + "display_name": "doggy - front view", + "image_count": 3, + "action_family": "doggy", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "doggy - front view/11.jpg", + "doggy - front view/5.jpg", + "doggy - front view/6.jpg" + ] + }, + { + "key": "doggy_front_view_2", + "folder": "doggy - front view ", + "display_name": "doggy - front view", + "image_count": 13, + "action_family": "doggy", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "doggy - front view /0003.jpg", + "doggy - front view /41.jpg", + "doggy - front view /627.jpg" + ] + }, + { + "key": "doggy_side_view", + "folder": "doggy - side view", + "display_name": "doggy - side view", + "image_count": 12, + "action_family": "doggy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "doggy - side view/0014.jpg", + "doggy - side view/276.jpg", + "doggy - side view/541.jpg" + ] + }, + { + "key": "doggy_underview", + "folder": "doggy - underview", + "display_name": "doggy - underview", + "image_count": 11, + "action_family": "doggy", + "camera_view": "under_view", + "camera_tokens": [ + "under_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Under-view folders are extreme low cameras below the hips or legs. They should be treated as special geometry, not a normal rear/front camera.", + "prompt_cues": [ + "under-view normal camera angle", + "camera below the hips or legs", + "underside body geometry visible" + ], + "avoid_cues": [ + "overhead wording", + "front-facing portrait framing" + ], + "reference_images": [ + "doggy - underview/0001.jpg", + "doggy - underview/0008.jpg", + "doggy - underview/614.jpg" + ] + }, + { + "key": "doggy_all_four_front_view", + "folder": "doggy all four - front view", + "display_name": "doggy all four - front view", + "image_count": 28, + "action_family": "doggy", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "doggy all four - front view/0016.jpg", + "doggy all four - front view/290.jpg", + "doggy all four - front view/97.jpg" + ] + }, + { + "key": "doggy_on_all_four_back_view_3_4_angle", + "folder": "doggy on all four - back view - 3-4 angle", + "display_name": "doggy on all four - back view - 3-4 angle", + "image_count": 69, + "action_family": "doggy", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "doggy on all four - back view - 3-4 angle/0002.jpg", + "doggy on all four - back view - 3-4 angle/267.jpg", + "doggy on all four - back view - 3-4 angle/97.jpg" + ] + }, + { + "key": "doggy_on_all_four_side_view", + "folder": "doggy on all four - side view", + "display_name": "doggy on all four - side view", + "image_count": 70, + "action_family": "doggy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "doggy on all four - side view/0004.jpg", + "doggy on all four - side view/270.jpg", + "doggy on all four - side view/99.jpg" + ] + }, + { + "key": "doggy_press_back_side", + "folder": "doggy press - back side", + "display_name": "doggy press - back side", + "image_count": 1, + "action_family": "doggy", + "camera_view": "back_view", + "camera_tokens": [ + "back_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Back-view folders put the back, hips, or rear contact side closest to camera. Use rear-view language instead of first-person wording.", + "prompt_cues": [ + "rear normal camera view", + "back and hips closest to camera", + "rear contact side anchors the frame" + ], + "avoid_cues": [ + "front-facing camera wording", + "viewer/POV body cues" + ], + "reference_images": [ + "doggy press - back side/0011.jpg" + ] + }, + { + "key": "double_blowjob_handjob_frontview", + "folder": "double blowjob-handjob-frontview", + "display_name": "double blowjob-handjob-frontview", + "image_count": 1, + "action_family": "double_contact", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "double blowjob-handjob-frontview/8.jpg" + ] + }, + { + "key": "double_blowjob_handjob_topview", + "folder": "double blowjob-handjob-topview", + "display_name": "double blowjob-handjob-topview", + "image_count": 1, + "action_family": "double_contact", + "camera_view": "top_view", + "camera_tokens": [ + "top_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Top-view folders are sparse but useful as high-elevation references. Elevation matters more than left/right azimuth.", + "prompt_cues": [ + "top-down normal camera view", + "overhead camera looking down", + "bodies arranged below the camera plane" + ], + "avoid_cues": [ + "eye-level camera claims", + "low-angle wording" + ], + "reference_images": [ + "double blowjob-handjob-topview/8.jpg" + ] + }, + { + "key": "double_penetration_back_view_3_4_angle", + "folder": "double penetration - back view - 3-4 angle", + "display_name": "double penetration - back view - 3-4 angle", + "image_count": 1, + "action_family": "double_contact", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "double penetration - back view - 3-4 angle/8.jpg" + ] + }, + { + "key": "double_penetration_bj_and_pen_back_view_3_4_angle", + "folder": "double penetration - BJ and Pen - back view - 3-4 angle", + "display_name": "double penetration - BJ and Pen - back view - 3-4 angle", + "image_count": 2, + "action_family": "double_contact", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "double penetration - BJ and Pen - back view - 3-4 angle/8.jpg", + "double penetration - BJ and Pen - back view - 3-4 angle/8_2.jpg" + ] + }, + { + "key": "double_penetration_side_view", + "folder": "double penetration - side view", + "display_name": "double penetration - side view", + "image_count": 2, + "action_family": "double_contact", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "double penetration - side view/8.jpg", + "double penetration - side view/8_2.jpg" + ] + }, + { + "key": "double_penetration_on_her_back_back_view_3_4_angle", + "folder": "double penetration on her back- back view - 3-4 angle", + "display_name": "double penetration on her back- back view - 3-4 angle", + "image_count": 1, + "action_family": "double_contact", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "double penetration on her back- back view - 3-4 angle/8.jpg" + ] + }, + { + "key": "face_sitting", + "folder": "face sitting", + "display_name": "face sitting", + "image_count": 4, + "action_family": "face_sitting", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "face sitting/0005.jpg", + "face sitting/354.jpg", + "face sitting/533.jpg" + ] + }, + { + "key": "face_sitting_front_view", + "folder": "face sitting - front view", + "display_name": "face sitting - front view", + "image_count": 1, + "action_family": "face_sitting", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "face sitting - front view/56.jpg" + ] + }, + { + "key": "fingering", + "folder": "fingering", + "display_name": "fingering", + "image_count": 15, + "action_family": "manual_or_toy", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "fingering/0001.jpg", + "fingering/195.jpg", + "fingering/603.jpg" + ] + }, + { + "key": "fist", + "folder": "fist", + "display_name": "fist", + "image_count": 1, + "action_family": "manual_or_toy", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "fist/337.jpg" + ] + }, + { + "key": "footjob", + "folder": "footjob", + "display_name": "footjob", + "image_count": 2, + "action_family": "manual_or_toy", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "footjob/265.jpg", + "footjob/265_2.jpg" + ] + }, + { + "key": "fuck_from_behind_side_view", + "folder": "fuck from behind - side view", + "display_name": "fuck from behind - side view", + "image_count": 16, + "action_family": "doggy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "fuck from behind - side view/0001.jpg", + "fuck from behind - side view/346.jpg", + "fuck from behind - side view/615.jpg" + ] + }, + { + "key": "fuck_from_behind_laying_back_view_3_4_angle", + "folder": "fuck from behind laying - back view - 3-4 angle", + "display_name": "fuck from behind laying - back view - 3-4 angle", + "image_count": 23, + "action_family": "doggy", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "fuck from behind laying - back view - 3-4 angle/0002.jpg", + "fuck from behind laying - back view - 3-4 angle/377.jpg", + "fuck from behind laying - back view - 3-4 angle/624.jpg" + ] + }, + { + "key": "fuck_from_behind_standing_side_view", + "folder": "fuck from behind standing - side view", + "display_name": "fuck from behind standing - side view", + "image_count": 16, + "action_family": "doggy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "fuck from behind standing - side view/0001.jpg", + "fuck from behind standing - side view/162_2.jpg", + "fuck from behind standing - side view/9.jpg" + ] + }, + { + "key": "fuck_from_behind_standing_woman_backside_side_view", + "folder": "fuck from behind standing - woman backside - side view", + "display_name": "fuck from behind standing - woman backside - side view", + "image_count": 47, + "action_family": "doggy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view", + "back_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "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" + ] + }, + { + "key": "fuck_from_front_front_view_low_angle", + "folder": "fuck from front - front view -low angle", + "display_name": "fuck from front - front view -low angle", + "image_count": 4, + "action_family": "front_penetration", + "camera_view": "front_view", + "camera_tokens": [ + "front_view", + "low_angle" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "fuck from front - front view -low angle/0008.jpg", + "fuck from front - front view -low angle/290.jpg", + "fuck from front - front view -low angle/304.jpg" + ] + }, + { + "key": "fuck_from_front_standing_side_view", + "folder": "fuck from front standing - side view", + "display_name": "fuck from front standing - side view", + "image_count": 36, + "action_family": "standing_penetration", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "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" + ] + }, + { + "key": "fuck_standing_woman_sideway", + "folder": "fuck standing - woman sideway", + "display_name": "fuck standing - woman sideway", + "image_count": 1, + "action_family": "standing_penetration", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "fuck standing - woman sideway/0008.jpg" + ] + }, + { + "key": "fuck_standing_woman_suspended_side_view", + "folder": "fuck standing - woman suspended - side view", + "display_name": "fuck standing - woman suspended - side view", + "image_count": 9, + "action_family": "standing_penetration", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "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" + ] + }, + { + "key": "handjob_both_sitting_front_view", + "folder": "handjob - both sitting - front view", + "display_name": "handjob - both sitting - front view", + "image_count": 4, + "action_family": "manual_or_toy", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "handjob - both sitting - front view/109.jpg", + "handjob - both sitting - front view/588.jpg", + "handjob - both sitting - front view/598.jpg" + ] + }, + { + "key": "handjob_laying_front_view", + "folder": "handjob - laying - front view", + "display_name": "handjob - laying - front view", + "image_count": 3, + "action_family": "manual_or_toy", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "handjob - laying - front view/119.jpg", + "handjob - laying - front view/56.jpg", + "handjob - laying - front view/95.jpg" + ] + }, + { + "key": "handjob_laying_front_view_3_4_angle", + "folder": "handjob - laying - front view - 3-4 angle", + "display_name": "handjob - laying - front view - 3-4 angle", + "image_count": 4, + "action_family": "manual_or_toy", + "camera_view": "front_three_quarter", + "camera_tokens": [ + "front_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front three-quarter label keeps the visible subject/front contact plane readable while the camera sits offset enough to show body depth.", + "prompt_cues": [ + "front three-quarter normal camera view", + "camera offset from the front", + "face, torso, and contact plane all readable" + ], + "avoid_cues": [ + "exact 45-degree claims without checking samples", + "POV foreground body cues" + ], + "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" + ] + }, + { + "key": "handjob_laying_side_view", + "folder": "handjob - laying -side view", + "display_name": "handjob - laying -side view", + "image_count": 11, + "action_family": "manual_or_toy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "handjob - laying -side view/0011.jpg", + "handjob - laying -side view/591.jpg", + "handjob - laying -side view/97.jpg" + ] + }, + { + "key": "handjob_sitting_side_view", + "folder": "handjob - sitting - side view", + "display_name": "handjob - sitting - side view", + "image_count": 11, + "action_family": "manual_or_toy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "handjob - sitting - side view/0007.jpg", + "handjob - sitting - side view/130.jpg", + "handjob - sitting - side view/94.jpg" + ] + }, + { + "key": "handjob_standing_low_angle", + "folder": "handjob - standing -low angle", + "display_name": "handjob - standing -low angle", + "image_count": 1, + "action_family": "manual_or_toy", + "camera_view": "low_angle", + "camera_tokens": [ + "low_angle" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Low-angle folders place the camera below the body/action line and look upward; keep them separate from eye-level front views.", + "prompt_cues": [ + "low-angle normal camera view", + "camera placed below the subject", + "upward view from near the body line" + ], + "avoid_cues": [ + "overhead wording", + "eye-level portrait wording" + ], + "reference_images": [ + "handjob - standing -low angle/552.jpg" + ] + }, + { + "key": "handjob_standing_side_view", + "folder": "handjob standing - side view", + "display_name": "handjob standing - side view", + "image_count": 63, + "action_family": "manual_or_toy", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "handjob standing - side view/0001.jpg", + "handjob standing - side view/260.jpg", + "handjob standing - side view/614.jpg" + ] + }, + { + "key": "mating_press_backview", + "folder": "mating press - backview", + "display_name": "mating press - backview", + "image_count": 0, + "action_family": "missionary", + "camera_view": "back_view", + "camera_tokens": [ + "back_view" + ], + "catalog_status": "empty", + "camera_geometry": "Back-view folders put the back, hips, or rear contact side closest to camera. Use rear-view language instead of first-person wording.", + "prompt_cues": [ + "rear normal camera view", + "back and hips closest to camera", + "rear contact side anchors the frame" + ], + "avoid_cues": [ + "front-facing camera wording", + "viewer/POV body cues" + ], + "reference_images": [] + }, + { + "key": "mating_press_front_view", + "folder": "mating press - front view", + "display_name": "mating press - front view", + "image_count": 2, + "action_family": "missionary", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "mating press - front view/0003.jpg", + "mating press - front view/0016.jpg" + ] + }, + { + "key": "mating_press_side_view", + "folder": "mating press - side view", + "display_name": "mating press - side view", + "image_count": 3, + "action_family": "missionary", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "mating press - side view/0018.jpg", + "mating press - side view/497.jpg", + "mating press - side view/597.jpg" + ] + }, + { + "key": "missionary_front_view", + "folder": "missionary - front view", + "display_name": "missionary - front view", + "image_count": 8, + "action_family": "missionary", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "missionary - front view/0011.jpg", + "missionary - front view/567.jpg", + "missionary - front view/72.jpg" + ] + }, + { + "key": "missionary_front_view_3_4_angle", + "folder": "missionary - front view - 3-4 angle", + "display_name": "missionary - front view - 3-4 angle", + "image_count": 1, + "action_family": "missionary", + "camera_view": "front_three_quarter", + "camera_tokens": [ + "front_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front three-quarter label keeps the visible subject/front contact plane readable while the camera sits offset enough to show body depth.", + "prompt_cues": [ + "front three-quarter normal camera view", + "camera offset from the front", + "face, torso, and contact plane all readable" + ], + "avoid_cues": [ + "exact 45-degree claims without checking samples", + "POV foreground body cues" + ], + "reference_images": [ + "missionary - front view - 3-4 angle/17.jpg" + ] + }, + { + "key": "missionary_leg_folded_back_view_3_4_angle", + "folder": "missionary - leg folded - back view 3-4 angle", + "display_name": "missionary - leg folded - back view 3-4 angle", + "image_count": 12, + "action_family": "missionary", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "missionary - leg folded - back view 3-4 angle/0002.jpg", + "missionary - leg folded - back view 3-4 angle/259.jpg", + "missionary - leg folded - back view 3-4 angle/62.jpg" + ] + }, + { + "key": "missionary_side_view", + "folder": "missionary - side view", + "display_name": "missionary - side view", + "image_count": 24, + "action_family": "missionary", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "missionary - side view/0003.jpg", + "missionary - side view/596.jpg", + "missionary - side view/627.jpg" + ] + }, + { + "key": "missionary_side_view_full_penis", + "folder": "missionary - side view - full penis", + "display_name": "missionary - side view - full penis", + "image_count": 9, + "action_family": "missionary", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "missionary - side view - full penis/0002.jpg", + "missionary - side view - full penis/550.jpg", + "missionary - side view - full penis/97.jpg" + ] + }, + { + "key": "missionary_top_view", + "folder": "missionary - top view", + "display_name": "missionary - top view", + "image_count": 1, + "action_family": "missionary", + "camera_view": "top_view", + "camera_tokens": [ + "top_view" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Top-view folders are sparse but useful as high-elevation references. Elevation matters more than left/right azimuth.", + "prompt_cues": [ + "top-down normal camera view", + "overhead camera looking down", + "bodies arranged below the camera plane" + ], + "avoid_cues": [ + "eye-level camera claims", + "low-angle wording" + ], + "reference_images": [ + "missionary - top view/0005.jpg" + ] + }, + { + "key": "missionary_anal_side_view", + "folder": "missionary anal - side view", + "display_name": "missionary anal - side view", + "image_count": 3, + "action_family": "missionary", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "missionary anal - side view/10.jpg", + "missionary anal - side view/16.jpg", + "missionary anal - side view/26.jpg" + ] + }, + { + "key": "penis_worship", + "folder": "penis worship", + "display_name": "penis worship", + "image_count": 49, + "action_family": "oral_other", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "penis worship/0001.jpg", + "penis worship/510.jpg", + "penis worship/618.jpg" + ] + }, + { + "key": "piledriver", + "folder": "piledriver", + "display_name": "piledriver", + "image_count": 27, + "action_family": "piledriver_or_pretzel", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "piledriver/0001.jpg", + "piledriver/0012_2.jpg", + "piledriver/617.jpg" + ] + }, + { + "key": "pretzel", + "folder": "pretzel", + "display_name": "pretzel", + "image_count": 2, + "action_family": "piledriver_or_pretzel", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "pretzel/0001.jpg", + "pretzel/0006.jpg" + ] + }, + { + "key": "pussy_licking_backv_iew", + "folder": "pussy licking - backv iew", + "display_name": "pussy licking - backv iew", + "image_count": 3, + "action_family": "oral_other", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "pussy licking - backv iew/220.jpg", + "pussy licking - backv iew/567.jpg", + "pussy licking - backv iew/614.jpg" + ] + }, + { + "key": "pussy_licking_front_view_3_4_angle", + "folder": "pussy licking - front view - 3-4 angle", + "display_name": "pussy licking - front view - 3-4 angle", + "image_count": 2, + "action_family": "oral_other", + "camera_view": "front_three_quarter", + "camera_tokens": [ + "front_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Front three-quarter label keeps the visible subject/front contact plane readable while the camera sits offset enough to show body depth.", + "prompt_cues": [ + "front three-quarter normal camera view", + "camera offset from the front", + "face, torso, and contact plane all readable" + ], + "avoid_cues": [ + "exact 45-degree claims without checking samples", + "POV foreground body cues" + ], + "reference_images": [ + "pussy licking - front view - 3-4 angle/0005.jpg", + "pussy licking - front view - 3-4 angle/532.jpg" + ] + }, + { + "key": "pussy_licking_side_view", + "folder": "pussy licking - side view", + "display_name": "pussy licking - side view", + "image_count": 28, + "action_family": "oral_other", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "pussy licking - side view/0003.jpg", + "pussy licking - side view/0016_2.jpg", + "pussy licking - side view/617.jpg" + ] + }, + { + "key": "pussy_licking_leg_up_back_view_3_4_angle", + "folder": "pussy licking leg up - back view - 3-4 angle", + "display_name": "pussy licking leg up - back view - 3-4 angle", + "image_count": 1, + "action_family": "oral_other", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "thin_sample", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "reference_images": [ + "pussy licking leg up - back view - 3-4 angle/0009.jpg" + ] + }, + { + "key": "pussy_licking_standing_woman", + "folder": "pussy licking standing woman", + "display_name": "pussy licking standing woman", + "image_count": 1, + "action_family": "oral_other", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "pussy licking standing woman/13.jpg" + ] + }, + { + "key": "pussy_licking_woman_standing_side_view", + "folder": "pussy licking woman standing - side view", + "display_name": "pussy licking woman standing - side view", + "image_count": 5, + "action_family": "oral_other", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "pussy licking woman standing - side view/0001.jpg", + "pussy licking woman standing - side view/16.jpg", + "pussy licking woman standing - side view/5.jpg" + ] + }, + { + "key": "pussy_spread", + "folder": "pussy spread", + "display_name": "pussy spread", + "image_count": 100, + "action_family": "display", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "pussy spread/0001.jpg", + "pussy spread/270.jpg", + "pussy spread/97.jpg" + ] + }, + { + "key": "removing_pants", + "folder": "removing pants", + "display_name": "removing pants", + "image_count": 3, + "action_family": "display", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "removing pants/0005.jpg", + "removing pants/0006.jpg", + "removing pants/0016.jpg" + ] + }, + { + "key": "reverse_congress_front_view", + "folder": "reverse congress - front view", + "display_name": "reverse congress - front view", + "image_count": 21, + "action_family": "reverse_congress", + "camera_view": "front_view", + "camera_tokens": [ + "front_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Front camera label usually means the main visible body or action plane faces camera. It is action-relative, not a guarantee of room-facing frontality.", + "prompt_cues": [ + "front-facing normal camera view", + "main subject faces the camera", + "contact plane readable from the front" + ], + "avoid_cues": [ + "POV wording", + "selfie camera wording unless the source image clearly uses it", + "calling this a scene-front view when only the subject-front is known" + ], + "reference_images": [ + "reverse congress - front view/0012.jpg", + "reverse congress - front view/289.jpg", + "reverse congress - front view/61.jpg" + ] + }, + { + "key": "reverse_cowgirl", + "folder": "reverse cowgirl", + "display_name": "reverse cowgirl", + "image_count": 240, + "action_family": "reverse_cowgirl", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "reverse cowgirl/0001.jpg", + "reverse cowgirl/288.jpg", + "reverse cowgirl/82.jpg" + ] + }, + { + "key": "reverse_cowgirl_back_view", + "folder": "reverse cowgirl - back view", + "display_name": "reverse cowgirl - back view", + "image_count": 6, + "action_family": "reverse_cowgirl", + "camera_view": "back_view", + "camera_tokens": [ + "back_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back-view folders put the back, hips, or rear contact side closest to camera. Use rear-view language instead of first-person wording.", + "prompt_cues": [ + "rear normal camera view", + "back and hips closest to camera", + "rear contact side anchors the frame" + ], + "avoid_cues": [ + "front-facing camera wording", + "viewer/POV body cues" + ], + "reference_images": [ + "reverse cowgirl - back view/267.jpg", + "reverse cowgirl - back view/64.jpg", + "reverse cowgirl - back view/80.jpg" + ] + }, + { + "key": "reverse_cowgirl_backview_3_4_angle", + "folder": "reverse cowgirl - backview - 3-4 angle", + "display_name": "reverse cowgirl - backview - 3-4 angle", + "image_count": 5, + "action_family": "reverse_cowgirl", + "camera_view": "back_three_quarter", + "camera_tokens": [ + "back_view", + "three_quarter" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back three-quarter folders combine rear-side emphasis with enough torso, face, or partner context to keep the action legible.", + "prompt_cues": [ + "rear three-quarter normal camera view", + "camera offset behind the action", + "rear/hip geometry stays closest while torso context remains visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "POV body cues" + ], + "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" + ] + }, + { + "key": "reverse_cowgirl_leg_up", + "folder": "reverse cowgirl - leg up", + "display_name": "reverse cowgirl - leg up", + "image_count": 2, + "action_family": "reverse_cowgirl", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "reverse cowgirl - leg up/266.jpg", + "reverse cowgirl - leg up/267.jpg" + ] + }, + { + "key": "reverse_cowgirl_side_view", + "folder": "reverse cowgirl - side view", + "display_name": "reverse cowgirl - side view", + "image_count": 8, + "action_family": "reverse_cowgirl", + "camera_view": "side_view", + "camera_tokens": [ + "side_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Side-view folders are the cleanest camera references: most samples use profile or near-profile framing with the body/action axis across the image.", + "prompt_cues": [ + "side-profile normal camera view", + "body axis runs horizontally across the frame", + "lateral contact line stays visible" + ], + "avoid_cues": [ + "front-facing eye-contact wording as the primary camera", + "overhead wording" + ], + "reference_images": [ + "reverse cowgirl - side view/0004.jpg", + "reverse cowgirl - side view/596.jpg", + "reverse cowgirl - side view/606_3.jpg" + ] + }, + { + "key": "reverse_cowgirl_pretzel", + "folder": "reverse cowgirl -pretzel", + "display_name": "reverse cowgirl -pretzel", + "image_count": 2, + "action_family": "reverse_cowgirl", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "reverse cowgirl -pretzel/0007.jpg", + "reverse cowgirl -pretzel/617.jpg" + ] + }, + { + "key": "rimjob", + "folder": "rimjob", + "display_name": "rimjob", + "image_count": 3, + "action_family": "oral_other", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "rimjob/0003.jpg", + "rimjob/0010.jpg", + "rimjob/0018.jpg" + ] + }, + { + "key": "under_desk", + "folder": "under desk", + "display_name": "under desk", + "image_count": 1, + "action_family": "oral_other", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "under desk/347.jpg" + ] + }, + { + "key": "wand", + "folder": "wand", + "display_name": "wand", + "image_count": 9, + "action_family": "manual_or_toy", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "wand/0005.jpg", + "wand/508.jpg", + "wand/75.jpg" + ] + }, + { + "key": "woman_ass_exposed", + "folder": "woman ass exposed", + "display_name": "woman ass exposed", + "image_count": 4, + "action_family": "display", + "camera_view": "mixed_or_unspecified", + "camera_tokens": [], + "catalog_status": "action_reference_only", + "camera_geometry": "Unspecified folders contain useful action examples but are not strict camera references. Use their samples to choose a camera before prompt tuning.", + "prompt_cues": [ + "normal third-person camera", + "inspect folder samples before locking a view", + "do not infer a strict azimuth from the folder name" + ], + "avoid_cues": [ + "using the folder as a locked camera preset without visual review", + "assuming all samples share one azimuth" + ], + "reference_images": [ + "woman ass exposed/40.jpg", + "woman ass exposed/52.jpg", + "woman ass exposed/58.jpg" + ] + }, + { + "key": "woman_solo_showing_her_hass_back_view", + "folder": "woman solo showing her hass - back view", + "display_name": "woman solo showing her hass - back view", + "image_count": 99, + "action_family": "display", + "camera_view": "back_view", + "camera_tokens": [ + "back_view" + ], + "catalog_status": "camera_reference", + "camera_geometry": "Back-view folders put the back, hips, or rear contact side closest to camera. Use rear-view language instead of first-person wording.", + "prompt_cues": [ + "rear normal camera view", + "back and hips closest to camera", + "rear contact side anchors the frame" + ], + "avoid_cues": [ + "front-facing camera wording", + "viewer/POV body cues" + ], + "reference_images": [ + "woman solo showing her hass - back view/0001.jpg", + "woman solo showing her hass - back view/248.jpg", + "woman solo showing her hass - back view/80.jpg" + ] + } + ] +} diff --git a/categories/normal_camera_variants.json b/categories/normal_camera_variants.json new file mode 100644 index 0000000..df20bc1 --- /dev/null +++ b/categories/normal_camera_variants.json @@ -0,0 +1,4066 @@ +{ + "version": 1, + "atlas_root": "/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted", + "purpose": "Curated pre-A/B normal-camera variant catalog. It narrows the folder-level normal-camera atlas into prompt-test candidates while making no generator, formatter, eval-log, or POV workflow changes.", + "source_inventory": "categories/normal_camera_atlas.json", + "scope": { + "included": "Non-POV normal third-person camera variants derived from the sorted pornpic atlas root.", + "excluded": "POV atlas variants, active POV A/B workflow files, Krea2 eval-log entries, and generator/default-prompt behavior changes.", + "testing_state": "Pre-A/B only: no fixed-seed test evidence is recorded in this catalog." + }, + "status_values": { + "pre_ab_candidate": "Compact geometry, cue phrases, avoid phrases, references, and future hook notes are ready for fixed-seed prompt A/B tests, but no A/B evidence has been recorded yet.", + "needs_samples": "The variant is useful, but source folders are thin, mixed, or need manual sample narrowing before a fixed-seed A/B test.", + "hold": "Cataloged for coverage only; do not queue as a normal prompt-only A/B candidate until split or expanded." + }, + "inventory": { + "variant_count": 86, + "status_counts": { + "hold": 0, + "needs_samples": 51, + "pre_ab_candidate": 35 + }, + "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" + ] + }, + "variants": [ + { + "key": "normal_doggy_all_fours_side_view_folder_pool", + "family": "doggy", + "status": "needs_samples", + "atlas_folders": [ + "doggy on all four - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "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.", + "prompt_cues": [ + "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" + ], + "avoid_cues": [ + "POV foreground body cues", + "standing from-behind wording", + "generic mixed doggy wording", + "front-facing or overhead camera wording" + ], + "reference_images": [ + "doggy on all four - side view/0004.jpg", + "doggy on all four - side view/270.jpg", + "doggy on all four - side view/99.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "all fours", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 70 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "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." + }, + "folder_pool": true + }, + { + "key": "normal_doggy_all_fours_side_view", + "family": "doggy", + "status": "pre_ab_candidate", + "source_variant": "normal_doggy_all_fours_side_view_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "doggy on all four - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "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.", + "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" + ], + "avoid_cues": [ + "POV foreground body cues", + "standing from-behind wording", + "seated or couch posture wording", + "front-facing or overhead camera wording" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 14 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed images inside a mixed all-fours side-view folder; ready as the precise all-fours side-view route while the full folder remains needs_samples." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "all fours", + "side view", + "reviewed subset" + ], + "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 reviewed images inside a mixed all-fours side-view folder; ready as the precise all-fours side-view route while the full folder remains needs_samples." + }, + { + "key": "normal_doggy_generic_side_view", + "family": "doggy", + "status": "pre_ab_candidate", + "atlas_folders": [ + "doggy - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "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.", + "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" + ], + "avoid_cues": [ + "POV foreground body cues", + "all-fours-only wording", + "standing from-behind wording", + "front-facing or overhead camera wording" + ], + "reference_images": [ + "doggy - side view/0014.jpg", + "doggy - side view/276.jpg", + "doggy - side view/541.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "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": "Split from the previous over-broad doggy side-profile grouping. This variant now maps only to the generic doggy side-view source folder. 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 12 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Small folder is mostly side/back-side normal-camera doggy material. Minor close/standing variation is acceptable for the generic side-view route." + } + }, + { + "key": "normal_doggy_from_behind_side_view_folder_pool", + "family": "doggy", + "status": "needs_samples", + "atlas_folders": [ + "fuck from behind - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "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.", + "prompt_cues": [ + "from-behind side-profile normal camera view", + "partner behind the woman", + "camera beside the action", + "rear-entry contact line visible from the side" + ], + "avoid_cues": [ + "POV foreground body cues", + "all-fours-only wording", + "standing from-behind wording", + "front-facing or overhead camera wording" + ], + "reference_images": [ + "fuck from behind - side view/0001.jpg", + "fuck from behind - side view/346.jpg", + "fuck from behind - side view/615.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "from behind", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 16 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "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." + }, + "folder_pool": true + }, + { + "key": "normal_doggy_standing_from_behind_side_view_folder_pool", + "family": "doggy", + "status": "needs_samples", + "split_from": "normal_doggy_side_profile_standing_from_behind", + "atlas_folders": [ + "fuck from behind standing - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "canonical_geometry": "Standing from-behind side-profile normal-camera view with the camera beside the action and the standing body line readable.", + "prompt_cues": [ + "standing from-behind side-profile normal camera view", + "camera beside the couple", + "upright body line visible", + "rear-entry side relation readable" + ], + "avoid_cues": [ + "POV foreground body cues", + "all-fours wording", + "front-facing portrait framing", + "cropping away the standing posture" + ], + "reference_images": [ + "fuck from behind standing - side view/0001.jpg", + "fuck from behind standing - side view/162_2.jpg", + "fuck from behind standing - side view/9.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "standing", + "from behind", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 16 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "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." + }, + "folder_pool": true + }, + { + "key": "normal_doggy_standing_from_behind_side_view", + "family": "doggy", + "status": "pre_ab_candidate", + "source_variant": "normal_doggy_standing_from_behind_side_view_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "fuck from behind standing - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "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.", + "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" + ], + "avoid_cues": [ + "POV foreground body cues", + "all-fours wording", + "reclined posture wording", + "front-facing portrait framing" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 7 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed standing side/back images inside a mixed standing source folder; ready as a precise standing from-behind side-view route." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "standing", + "from behind", + "side view", + "reviewed subset" + ], + "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 reviewed standing side/back images inside a mixed standing source folder; ready as a precise standing from-behind side-view route." + }, + { + "key": "normal_doggy_standing_backside_side_view_folder_pool", + "family": "doggy", + "status": "needs_samples", + "split_from": "normal_doggy_side_profile_standing_from_behind", + "atlas_folders": [ + "fuck from behind standing - woman backside - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "canonical_geometry": "Standing from-behind side-profile normal-camera view where the backside/hip orientation is the dominant folder cue.", + "prompt_cues": [ + "standing backside side-profile normal camera view", + "woman backside and hips readable in profile", + "camera beside the action", + "partner behind in the same side plane" + ], + "avoid_cues": [ + "POV foreground body cues", + "all-fours wording", + "generic standing wording that loses backside orientation", + "front-facing portrait framing" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "standing", + "woman backside", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 47 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "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." + }, + "folder_pool": true + }, + { + "key": "normal_doggy_standing_backside_side_view", + "family": "doggy", + "status": "pre_ab_candidate", + "source_variant": "normal_doggy_standing_backside_side_view_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "fuck from behind standing - woman backside - side view" + ], + "camera_view": "side_view", + "action_family": "doggy", + "canonical_geometry": "Reviewed image-selected standing backside side view: backside/hip orientation dominates and the camera is side or rear-lateral.", + "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" + ], + "avoid_cues": [ + "POV foreground body cues", + "all-fours wording", + "generic standing wording that loses backside orientation", + "front-facing portrait framing" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 16 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed standing backside side/rear-lateral images inside a mixed source folder; ready as a precise standing backside route." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "standing", + "backside", + "side view", + "reviewed subset" + ], + "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 reviewed standing backside side/rear-lateral images inside a mixed source folder; ready as a precise standing backside route." + }, + { + "key": "normal_doggy_all_fours_back_three_quarter", + "family": "doggy", + "status": "pre_ab_candidate", + "split_from": "normal_doggy_back_three_quarter_all_fours", + "atlas_folders": [ + "doggy on all four - back view - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "doggy", + "canonical_geometry": "Doggy all-fours rear three-quarter normal-camera view with the camera offset behind the action.", + "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" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "standing from-behind wording", + "POV viewer-body foreground cues" + ], + "reference_images": [ + "doggy on all four - back view - 3-4 angle/0002.jpg", + "doggy on all four - back view - 3-4 angle/267.jpg", + "doggy on all four - back view - 3-4 angle/97.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "all fours", + "back 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": "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.", + "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." + } + }, + { + "key": "normal_doggy_generic_back_three_quarter", + "family": "doggy", + "status": "pre_ab_candidate", + "split_from": "normal_doggy_back_three_quarter_all_fours", + "atlas_folders": [ + "doggy - back view - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "doggy", + "canonical_geometry": "Generic doggy rear three-quarter normal-camera view, separate from all-fours and laying from-behind source folders.", + "prompt_cues": [ + "generic doggy rear three-quarter normal camera view", + "camera offset behind the action", + "back and hips readable", + "third-person partner context visible" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "all-fours-only wording", + "POV viewer-body foreground cues" + ], + "reference_images": [ + "doggy - back view - 3-4 angle/0002.jpg", + "doggy - back view - 3-4 angle/185.jpg", + "doggy - back view - 3-4 angle/77.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "back 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": "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.", + "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." + } + }, + { + "key": "normal_doggy_laying_from_behind_back_three_quarter_folder_pool", + "family": "doggy", + "status": "needs_samples", + "split_from": "normal_doggy_back_three_quarter_all_fours", + "atlas_folders": [ + "fuck from behind laying - back view - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "doggy", + "canonical_geometry": "Laying from-behind rear three-quarter normal-camera view, with the camera offset behind the action rather than from POV.", + "prompt_cues": [ + "laying from-behind rear three-quarter normal camera view", + "camera offset behind the action", + "reclined body line visible", + "back-side contact plane readable" + ], + "avoid_cues": [ + "pure side-profile wording", + "front-facing camera wording", + "standing posture wording", + "POV viewer-body foreground cues" + ], + "reference_images": [ + "fuck from behind laying - back view - 3-4 angle/0002.jpg", + "fuck from behind laying - back view - 3-4 angle/377.jpg", + "fuck from behind laying - back view - 3-4 angle/624.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "laying", + "from behind", + "back 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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 23 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "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." + }, + "folder_pool": true + }, + { + "key": "normal_doggy_laying_from_behind_front_three_quarter", + "family": "doggy", + "status": "pre_ab_candidate", + "source_variant": "normal_doggy_laying_from_behind_back_three_quarter_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "fuck from behind laying - back view - 3-4 angle" + ], + "camera_view": "front_three_quarter", + "action_family": "doggy", + "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.", + "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" + ], + "avoid_cues": [ + "POV foreground body cues", + "standing posture wording", + "strict rear three-quarter wording", + "pure side-profile wording" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 23 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created because visual review showed the folder label overstates rear 3/4; the coherent reviewed subset is better named as laying from-behind front three-quarter." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "laying", + "from behind", + "front three-quarter", + "reviewed subset" + ], + "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files." + }, + "pre_ab_notes": "Created because visual review showed the folder label overstates rear 3/4; the coherent reviewed subset is better named as laying from-behind front three-quarter." + }, + { + "key": "normal_doggy_all_fours_front_view", + "family": "doggy", + "status": "pre_ab_candidate", + "split_from": "normal_doggy_front_all_fours", + "atlas_folders": [ + "doggy all four - front view" + ], + "camera_view": "front_view", + "action_family": "doggy", + "canonical_geometry": "Doggy all-fours front normal-camera view where the front subject plane faces the camera while the partner remains behind.", + "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" + ], + "avoid_cues": [ + "POV wording", + "rear-view wording as primary camera", + "generic doggy front wording that loses all-fours posture", + "cropping the face out" + ], + "reference_images": [ + "doggy all four - front view/0016.jpg", + "doggy all four - front view/290.jpg", + "doggy all four - front view/97.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "all fours", + "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": "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." + } + }, + { + "key": "normal_doggy_generic_front_view", + "family": "doggy", + "status": "pre_ab_candidate", + "split_from": "normal_doggy_front_all_fours", + "grouped_reason": "Trailing-space duplicate source folders for the same generic doggy front-view label.", + "atlas_folders": [ + "doggy - front view", + "doggy - front view " + ], + "camera_view": "front_view", + "action_family": "doggy", + "canonical_geometry": "Generic doggy front normal-camera view from the duplicate front-view source folders.", + "prompt_cues": [ + "generic doggy front normal camera view", + "front subject plane faces the camera", + "face and forearms readable", + "partner remains behind in third person" + ], + "avoid_cues": [ + "POV wording", + "rear-view wording as primary camera", + "all-fours-only wording unless the selected sample supports it", + "cropping the face out" + ], + "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 /41.jpg", + "doggy - front view /627.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "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": "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.", + "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." + } + }, + { + "key": "normal_doggy_under_view_low_camera", + "family": "doggy", + "status": "pre_ab_candidate", + "atlas_folders": [ + "doggy - underview" + ], + "camera_view": "under_view", + "action_family": "doggy", + "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.", + "prompt_cues": [ + "under-view normal camera angle", + "camera below the hips or legs", + "low camera looking upward through the pose", + "underside body geometry visible" + ], + "avoid_cues": [ + "overhead wording", + "eye-level side profile wording", + "first-person viewer-body cues" + ], + "reference_images": [ + "doggy - underview/0001.jpg", + "doggy - underview/0008.jpg", + "doggy - underview/614.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "doggy", + "under view", + "low camera" + ], + "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files." + }, + "pre_ab_notes": "Dedicated special-angle route; keep separate from ordinary side or rear doggy. 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 11 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Low/under-view camera angle is visually consistent and should remain a dedicated special-angle pre-A/B candidate." + } + }, + { + "key": "normal_cowgirl_side_profile", + "family": "cowgirl", + "status": "pre_ab_candidate", + "atlas_folders": [ + "cowgirl - side view" + ], + "camera_view": "side_view", + "action_family": "cowgirl", + "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.", + "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" + ], + "avoid_cues": [ + "POV reclined-viewer wording", + "front-facing portrait framing", + "rear-view reverse cowgirl wording" + ], + "reference_images": [ + "cowgirl - side view/0003.jpg", + "cowgirl - side view/280.jpg", + "cowgirl - side view/86_2.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "cowgirl", + "woman on top", + "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": "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.", + "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." + } + }, + { + "key": "normal_cowgirl_full_body_front_view", + "family": "cowgirl", + "status": "pre_ab_candidate", + "split_from": "normal_cowgirl_front_body_visible", + "atlas_folders": [ + "cowgirl full man body - front view" + ], + "camera_view": "front_view", + "action_family": "cowgirl", + "canonical_geometry": "Cowgirl front normal-camera view with the partner body visible beneath the woman.", + "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" + ], + "avoid_cues": [ + "POV recline framing", + "reverse-cowgirl back-facing wording", + "tight crop that loses partner placement", + "front three-quarter wording" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "cowgirl", + "full body", + "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": "Split from the cowgirl front grouping because full partner-body visibility is a distinct generator cue. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 17 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Front normal-camera cowgirl framing is clean enough, with partner body placement visible and no dominant POV foreground cue." + } + }, + { + "key": "normal_cowgirl_front_view", + "family": "cowgirl", + "status": "needs_samples", + "split_from": "normal_cowgirl_front_body_visible", + "atlas_folders": [ + "cowgirl - front view" + ], + "camera_view": "front_view", + "action_family": "cowgirl", + "canonical_geometry": "Thin generic cowgirl front normal-camera reference.", + "prompt_cues": [ + "cowgirl front normal camera view", + "woman on top facing camera", + "front torso and hips readable", + "normal third-person framing" + ], + "avoid_cues": [ + "POV recline framing", + "reverse-cowgirl back-facing wording", + "full-body wording unless selected sample supports it", + "front three-quarter wording" + ], + "reference_images": [ + "cowgirl - front view/68.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The single image matches the front cowgirl label, but the folder is too thin to graduate beyond needs_samples." + } + }, + { + "key": "normal_cowgirl_front_three_quarter", + "family": "cowgirl", + "status": "pre_ab_candidate", + "split_from": "normal_cowgirl_front_body_visible", + "atlas_folders": [ + "cowgirl - front view - 3-4 angle" + ], + "camera_view": "front_three_quarter", + "action_family": "cowgirl", + "canonical_geometry": "Cowgirl front three-quarter normal-camera view with the front contact plane readable from an offset camera.", + "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" + ], + "avoid_cues": [ + "POV recline framing", + "reverse-cowgirl back-facing wording", + "pure front-view wording", + "tight crop that loses partner placement" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "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": "Split from the cowgirl front grouping because the 3/4 camera folder needs separate wording. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 6 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Thin but semantically coherent front three-quarter cowgirl set; usable for first wording tests with the thin-source caveat." + } + }, + { + "key": "normal_cowgirl_back_three_quarter", + "family": "cowgirl", + "status": "pre_ab_candidate", + "atlas_folders": [ + "cowgirl - back view - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "cowgirl", + "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.", + "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" + ], + "avoid_cues": [ + "front-facing cowgirl wording", + "pure side profile wording", + "POV foreground body cues" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "cowgirl", + "back view", + "rear 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": "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.", + "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." + } + }, + { + "key": "normal_reverse_cowgirl_back_view", + "family": "reverse_cowgirl", + "status": "pre_ab_candidate", + "split_from": "normal_reverse_cowgirl_back_view", + "atlas_folders": [ + "reverse cowgirl - back view" + ], + "camera_view": "back_view", + "action_family": "reverse_cowgirl", + "canonical_geometry": "Reverse-cowgirl rear normal-camera view where the woman faces away and the back-facing orientation dominates.", + "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" + ], + "avoid_cues": [ + "POV reverse-cowgirl wording", + "front-facing cowgirl wording", + "rear three-quarter wording unless selected sample supports it", + "losing the back-facing orientation" + ], + "reference_images": [ + "reverse cowgirl - back view/267.jpg", + "reverse cowgirl - back view/64.jpg", + "reverse cowgirl - back view/80.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "reverse cowgirl", + "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": "Reduced to the exact back-view folder; the rear three-quarter folder is now a separate variant. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 6 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Small but coherent reverse-cowgirl back-view set; back-facing orientation is stable enough for a first wording test." + } + }, + { + "key": "normal_reverse_cowgirl_back_three_quarter", + "family": "reverse_cowgirl", + "status": "pre_ab_candidate", + "split_from": "normal_reverse_cowgirl_back_view", + "atlas_folders": [ + "reverse cowgirl - backview - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "reverse_cowgirl", + "canonical_geometry": "Reverse-cowgirl rear three-quarter normal-camera view from an offset back camera.", + "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" + ], + "avoid_cues": [ + "POV reverse-cowgirl wording", + "front-facing cowgirl wording", + "pure back-view wording", + "losing the back-facing orientation" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "reverse cowgirl", + "back 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": "Split from the reverse-cowgirl back grouping because back view and back 3/4 are different camera routes. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 5 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Thin and mildly varied, but remains within reverse-cowgirl back/offset geometry and is acceptable as a narrow pre-A/B candidate." + } + }, + { + "key": "normal_reverse_cowgirl_side_profile", + "family": "reverse_cowgirl", + "status": "pre_ab_candidate", + "atlas_folders": [ + "reverse cowgirl - side view" + ], + "camera_view": "side_view", + "action_family": "reverse_cowgirl", + "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.", + "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" + ], + "avoid_cues": [ + "front-facing cowgirl wording", + "POV wording", + "overhead camera wording" + ], + "reference_images": [ + "reverse cowgirl - side view/0004.jpg", + "reverse cowgirl - side view/596.jpg", + "reverse cowgirl - side view/606_3.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "reverse cowgirl", + "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": "Useful side-profile counterpart to the rear reverse-cowgirl candidate. Visual review confirmed this status from a full-folder cowgirl/reverse-cowgirl contact sheet.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 8 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Side-profile reverse-cowgirl framing is visually coherent and keeps the back-facing orientation readable from the side." + } + }, + { + "key": "normal_reverse_cowgirl_anal_front_view", + "family": "reverse_cowgirl", + "status": "needs_samples", + "split_from": "normal_reverse_cowgirl_front_anal_variant", + "grouped_reason": "Spacing-only duplicate source folders for the same reverse-cowgirl front-view label.", + "atlas_folders": [ + " anal reverse cowgirl - front view", + "anal reverse cowgirl - front view" + ], + "camera_view": "front_view", + "action_family": "reverse_cowgirl", + "canonical_geometry": "Thin reverse-cowgirl front-view reference group from duplicate front-view source labels.", + "prompt_cues": [ + "reverse-cowgirl front normal camera view", + "woman remains in reverse-cowgirl orientation", + "front contact plane readable", + "normal third-person view" + ], + "avoid_cues": [ + "treating the thin samples as proven", + "POV wording", + "generic cowgirl front view that loses reverse orientation", + "front three-quarter wording" + ], + "reference_images": [ + " anal reverse cowgirl - front view/26.jpg", + " anal reverse cowgirl - front view/49.jpg", + "anal reverse cowgirl - front view/59.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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 3 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "Front-view label is accurate, but the duplicate source folders remain very thin; keep needs_samples before fixed-seed A/B." + } + }, + { + "key": "normal_reverse_cowgirl_anal_front_three_quarter", + "family": "reverse_cowgirl", + "status": "needs_samples", + "split_from": "normal_reverse_cowgirl_front_anal_variant", + "grouped_reason": "Spacing-only duplicate source folders for the same reverse-cowgirl front three-quarter label.", + "atlas_folders": [ + "anal reverse cowgirl - front view - 3-4 angle", + "anal reverse cowgirl - front view - 3-4 angle" + ], + "camera_view": "front_three_quarter", + "action_family": "reverse_cowgirl", + "canonical_geometry": "Thin reverse-cowgirl front three-quarter reference group from duplicate 3/4 source labels.", + "prompt_cues": [ + "reverse-cowgirl front three-quarter normal camera view", + "woman remains in reverse-cowgirl orientation", + "front-offset contact plane readable", + "normal third-person view" + ], + "avoid_cues": [ + "treating the thin samples as proven", + "POV wording", + "generic cowgirl front view that loses reverse orientation", + "pure front-view wording" + ], + "reference_images": [ + "anal reverse cowgirl - front view - 3-4 angle/10.jpg", + "anal reverse cowgirl - front view - 3-4 angle/14.jpg", + "anal reverse cowgirl - front view - 3-4 angle/19.jpg", + "anal reverse cowgirl - front view - 3-4 angle/118.jpg", + "anal reverse cowgirl - front view - 3-4 angle/94.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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 5 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "Front three-quarter label is accurate, but the duplicate source folders remain thin and should not be promoted yet." + } + }, + { + "key": "normal_reverse_congress_front_view", + "family": "reverse_congress", + "status": "pre_ab_candidate", + "atlas_folders": [ + "reverse congress - front view" + ], + "camera_view": "front_view", + "action_family": "reverse_congress", + "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.", + "prompt_cues": [ + "reverse-congress front normal camera view", + "stacked bodies face the camera", + "folded seated geometry readable", + "contact plane visible from the front" + ], + "avoid_cues": [ + "POV wording", + "side-profile wording", + "generic sitting pose without stacked-body geometry" + ], + "reference_images": [ + "reverse congress - front view/0012.jpg", + "reverse congress - front view/289.jpg", + "reverse congress - front view/61.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "reverse congress", + "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": "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." + } + }, + { + "key": "normal_missionary_side_profile_folder_pool", + "family": "missionary", + "status": "needs_samples", + "split_from": "normal_missionary_side_profile", + "atlas_folders": [ + "missionary - side view" + ], + "camera_view": "side_view", + "action_family": "missionary", + "canonical_geometry": "Missionary side-profile normal-camera view with the stacked body line visible from the side.", + "prompt_cues": [ + "missionary side-profile normal camera view", + "reclined partner beneath", + "top partner above in profile", + "stacked body line visible from the side" + ], + "avoid_cues": [ + "front-facing bed portrait wording", + "overhead wording", + "POV body foreground cues", + "mating-press wording" + ], + "reference_images": [ + "missionary - side view/0003.jpg", + "missionary - side view/596.jpg", + "missionary - side view/627.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 24 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "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." + } + }, + { + "key": "normal_missionary_side_profile", + "family": "missionary", + "status": "pre_ab_candidate", + "source_variant": "normal_missionary_side_profile_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "missionary - side view" + ], + "camera_view": "side_view", + "action_family": "missionary", + "canonical_geometry": "Reviewed image-selected missionary side-profile normal-camera view with stacked body geometry readable from the side.", + "prompt_cues": [ + "reviewed missionary side-profile normal camera view", + "reclined partner beneath", + "top partner above in profile", + "stacked body line visible from the side" + ], + "avoid_cues": [ + "front-facing bed portrait wording", + "overhead wording", + "POV body foreground cues", + "mating-press wording" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 13 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed side-profile references inside a mixed missionary side-view folder; use this as the precise side-view route." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "side view", + "reviewed subset" + ], + "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 reviewed side-profile references inside a mixed missionary side-view folder; use this as the precise side-view route." + }, + { + "key": "normal_missionary_side_profile_full_visibility_folder_pool", + "family": "missionary", + "status": "needs_samples", + "split_from": "normal_missionary_side_profile", + "atlas_folders": [ + "missionary - side view - full penis" + ], + "camera_view": "side_view", + "action_family": "missionary", + "canonical_geometry": "Missionary side-profile normal-camera reference emphasizing full contact visibility from the side.", + "prompt_cues": [ + "missionary side-profile normal camera view with full contact visibility", + "reclined partner beneath", + "top partner above in profile", + "side contact line unobscured" + ], + "avoid_cues": [ + "front-facing bed portrait wording", + "overhead wording", + "POV body foreground cues", + "mating-press wording" + ], + "reference_images": [ + "missionary - side view - full penis/0002.jpg", + "missionary - side view - full penis/550.jpg", + "missionary - side view - full penis/97.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "side view", + "full visibility" + ], + "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files." + }, + "pre_ab_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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 9 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "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." + } + }, + { + "key": "normal_missionary_side_profile_full_visibility", + "family": "missionary", + "status": "pre_ab_candidate", + "source_variant": "normal_missionary_side_profile_full_visibility_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "missionary - side view - full penis" + ], + "camera_view": "side_view", + "action_family": "missionary", + "canonical_geometry": "Reviewed image-selected missionary side-profile normal-camera view emphasizing unobscured side contact visibility.", + "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" + ], + "avoid_cues": [ + "front-facing bed portrait wording", + "overhead wording", + "POV body foreground cues", + "mating-press wording" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 7 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed side/full-contact references inside a mixed full-visibility source folder; ready as the precise full-contact side-view route." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "side view", + "full contact visibility", + "reviewed subset" + ], + "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 reviewed side/full-contact references inside a mixed full-visibility source folder; ready as the precise full-contact side-view route." + }, + { + "key": "normal_missionary_anal_side_view_folder_pool", + "family": "missionary", + "status": "needs_samples", + "split_from": "normal_missionary_side_profile", + "atlas_folders": [ + "missionary anal - side view" + ], + "camera_view": "side_view", + "action_family": "missionary", + "canonical_geometry": "Thin missionary side-view anal reference; useful but not broad enough for default testing.", + "prompt_cues": [ + "missionary anal side-view normal camera reference", + "side-profile stacked body line", + "contact line visible laterally", + "normal third-person framing" + ], + "avoid_cues": [ + "front-facing bed portrait wording", + "overhead wording", + "POV body foreground cues", + "generic missionary wording that loses the anal cue" + ], + "reference_images": [ + "missionary anal - side view/10.jpg", + "missionary anal - side view/16.jpg", + "missionary anal - side view/26.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "anal", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 3 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples_folder_pool", + "notes": "The folder is thin and not consistently side-profile; keep as a source pool until a cleaner subset exists." + } + }, + { + "key": "normal_mating_press_side_view", + "family": "missionary", + "status": "needs_samples", + "split_from": "normal_missionary_side_profile", + "atlas_folders": [ + "mating press - side view" + ], + "camera_view": "side_view", + "action_family": "missionary", + "canonical_geometry": "Thin mating-press side-view normal-camera reference with folded/pressed posture cues.", + "prompt_cues": [ + "mating-press side-view normal camera reference", + "folded body posture readable from the side", + "stacked body line visible", + "normal third-person framing" + ], + "avoid_cues": [ + "generic missionary wording that loses the mating-press posture", + "front-facing bed portrait wording", + "overhead wording", + "POV body foreground cues" + ], + "reference_images": [ + "mating press - side view/0018.jpg", + "mating press - side view/497.jpg", + "mating press - side view/597.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "mating press", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 3 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "Mating-press side label is accurate, but only three samples are available; keep needs_samples." + } + }, + { + "key": "normal_missionary_front_view", + "family": "missionary", + "status": "pre_ab_candidate", + "split_from": "normal_missionary_front_view", + "atlas_folders": [ + "missionary - front view" + ], + "camera_view": "front_view", + "action_family": "missionary", + "canonical_geometry": "Missionary front normal-camera view where the reclined partner faces the camera and the top partner remains visible.", + "prompt_cues": [ + "missionary front normal camera view", + "reclined partner faces the camera", + "top partner visible above or between the legs", + "front contact plane readable" + ], + "avoid_cues": [ + "POV missionary wording", + "pure side-profile wording", + "front three-quarter wording unless selected sample supports it", + "cropping away the top partner" + ], + "reference_images": [ + "missionary - front view/0011.jpg", + "missionary - front view/567.jpg", + "missionary - front view/72.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "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": "Reduced to the exact missionary front-view source folder; related front/3/4 folders are now separate variants. Visual review confirmed this status from a full-folder missionary contact sheet.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 8 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Small but coherent front/top-contact normal-camera set; usable for first wording tests with a thin-source caveat." + } + }, + { + "key": "normal_anal_missionary_front_three_quarter", + "family": "missionary", + "status": "needs_samples", + "split_from": "normal_missionary_front_view", + "atlas_folders": [ + "anal missionary - front view - 3-4 angle" + ], + "camera_view": "front_three_quarter", + "action_family": "missionary", + "canonical_geometry": "Thin anal missionary front three-quarter normal-camera reference.", + "prompt_cues": [ + "anal missionary front three-quarter normal camera reference", + "front-offset contact plane readable", + "reclined partner visible", + "normal third-person framing" + ], + "avoid_cues": [ + "POV missionary wording", + "pure side-profile wording", + "generic missionary wording that loses the anal cue", + "pure front-view wording" + ], + "reference_images": [ + "anal missionary - front view - 3-4 angle/118.jpg", + "anal missionary - front view - 3-4 angle/124.jpg", + "anal missionary - front view - 3-4 angle/94.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "anal", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 4 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "Front three-quarter anal missionary label is visually accurate, but the source remains thin." + } + }, + { + "key": "normal_missionary_front_three_quarter", + "family": "missionary", + "status": "needs_samples", + "split_from": "normal_missionary_front_view", + "atlas_folders": [ + "missionary - front view - 3-4 angle" + ], + "camera_view": "front_three_quarter", + "action_family": "missionary", + "canonical_geometry": "Thin generic missionary front three-quarter normal-camera reference.", + "prompt_cues": [ + "missionary front three-quarter normal camera reference", + "front-offset contact plane readable", + "reclined partner visible", + "normal third-person framing" + ], + "avoid_cues": [ + "POV missionary wording", + "pure side-profile wording", + "pure front-view wording", + "cropping away the top partner" + ], + "reference_images": [ + "missionary - front view - 3-4 angle/17.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "Single sample matches the front three-quarter label but is too thin to promote." + } + }, + { + "key": "normal_mating_press_front_view", + "family": "missionary", + "status": "needs_samples", + "split_from": "normal_missionary_front_view", + "atlas_folders": [ + "mating press - front view" + ], + "camera_view": "front_view", + "action_family": "missionary", + "canonical_geometry": "Thin mating-press front normal-camera reference with folded/pressed posture cues.", + "prompt_cues": [ + "mating-press front normal camera reference", + "folded body posture readable from the front", + "front contact plane visible", + "normal third-person framing" + ], + "avoid_cues": [ + "generic missionary wording that loses the mating-press posture", + "POV missionary wording", + "pure side-profile wording", + "front three-quarter wording" + ], + "reference_images": [ + "mating press - front view/0003.jpg", + "mating press - front view/0016.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "mating press", + "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": "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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "Mating-press front label is accurate, but the source is only two near-duplicate samples." + } + }, + { + "key": "normal_missionary_folded_leg_mixed_camera_folder_pool", + "family": "missionary", + "status": "needs_samples", + "atlas_folders": [ + "missionary - leg folded - back view 3-4 angle" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "missionary", + "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.", + "prompt_cues": [ + "folded-leg missionary normal-camera source pool", + "compact folded body posture", + "select exact camera angle before testing", + "normal third-person framing" + ], + "avoid_cues": [ + "using as a locked back-three-quarter route", + "standard flat front missionary wording", + "POV high-leg wording", + "pure overhead camera wording" + ], + "reference_images": [ + "missionary - leg folded - back view 3-4 angle/0002.jpg", + "missionary - leg folded - back view 3-4 angle/259.jpg", + "missionary - leg folded - back view 3-4 angle/62.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary folded", + "high legs", + "rear 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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 12 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "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." + } + }, + { + "key": "normal_missionary_top_down", + "family": "missionary", + "status": "needs_samples", + "atlas_folders": [ + "missionary - top view" + ], + "camera_view": "top_view", + "action_family": "missionary", + "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.", + "prompt_cues": [ + "top-down normal camera view", + "overhead camera looking down", + "bodies arranged below the camera plane", + "missionary geometry visible from above" + ], + "avoid_cues": [ + "low-angle wording", + "eye-level side profile", + "POV viewer-body cues" + ], + "reference_images": [ + "missionary - top view/0005.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "missionary", + "top view", + "overhead" + ], + "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files." + }, + "pre_ab_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.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "Single sample matches a top/downward camera reference, but it remains too thin for A/B." + } + }, + { + "key": "normal_blowjob_laying_front_view", + "family": "blowjob", + "status": "pre_ab_candidate", + "atlas_folders": [ + "blowjob - laying - front view" + ], + "camera_view": "front_view", + "action_family": "blowjob", + "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.", + "prompt_cues": [ + "front-facing normal camera blowjob view", + "performing partner faces camera", + "mouth contact visible from the front", + "reclined partner placement readable" + ], + "avoid_cues": [ + "POV oral framing", + "side-profile wording", + "cropping the performer face out" + ], + "reference_images": [ + "blowjob - laying - front view/0001.jpg", + "blowjob - laying - front view/274.jpg", + "blowjob - laying - front view/94.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "laying", + "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": "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." + } + }, + { + "key": "normal_blowjob_sitting_front_view", + "family": "blowjob", + "status": "pre_ab_candidate", + "atlas_folders": [ + "blowjob - sitting - frontview" + ], + "camera_view": "front_view", + "action_family": "blowjob", + "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.", + "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" + ], + "avoid_cues": [ + "POV oral wording", + "low-angle underside framing", + "side-profile-only wording" + ], + "reference_images": [ + "blowjob - sitting - frontview/0003.jpg", + "blowjob - sitting - frontview/37.jpg", + "blowjob - sitting - frontview/81.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "sitting", + "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": "Visual review confirmed this as a pre-A/B candidate; keep wording as seated-context/front rather than assuming every sample has the performer fully sitting.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 12 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "The folder supports a seated/front oral-contact route. Some samples vary between upright, kneeling, and leaning posture, but the front-facing camera intent is clear enough for prompt A/B." + } + }, + { + "key": "normal_blowjob_laying_side_profile_folder_pool", + "family": "blowjob", + "status": "needs_samples", + "split_from": "normal_blowjob_side_profile", + "atlas_folders": [ + "blowjob - laying - side view" + ], + "camera_view": "side_view", + "action_family": "blowjob", + "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.", + "prompt_cues": [ + "laying oral-contact side-view source pool", + "select reviewed side-profile references before testing", + "keep participants visible in third-person frame" + ], + "avoid_cues": [ + "using the full folder as a locked side-profile preset", + "front-facing oral portrait wording as the side route", + "sitting or kneeling posture wording", + "POV viewer-thigh foreground cues", + "overhead oral wording" + ], + "reference_images": [ + "blowjob - laying - side view/0001.jpg", + "blowjob - laying - side view/36.jpg", + "blowjob - laying - side view/85.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "laying", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 24 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "Useful side-profile material is present, but the full folder is visually mixed enough that it should not be queued directly for fixed-seed A/B." + } + }, + { + "key": "normal_blowjob_laying_side_profile", + "family": "blowjob", + "status": "pre_ab_candidate", + "source_variant": "normal_blowjob_laying_side_profile_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "blowjob - laying - side view" + ], + "camera_view": "side_view", + "action_family": "blowjob", + "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.", + "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" + ], + "avoid_cues": [ + "front-facing oral portrait wording", + "sitting or kneeling posture wording", + "POV viewer-thigh foreground cues", + "overhead oral wording" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 13 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed side-profile references inside a mixed laying oral folder; frontal-drifting source images were excluded from this precise side-profile route." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "laying", + "side view", + "reviewed subset" + ], + "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 reviewed side-profile references inside a mixed laying oral folder; ready as the precise laying side-profile route while the full folder remains needs_samples." + }, + { + "key": "normal_blowjob_sitting_side_profile", + "family": "blowjob", + "status": "pre_ab_candidate", + "split_from": "normal_blowjob_side_profile", + "atlas_folders": [ + "blowjob - sitting - side view" + ], + "camera_view": "side_view", + "action_family": "blowjob", + "canonical_geometry": "Sitting oral-contact side-profile normal-camera view.", + "prompt_cues": [ + "sitting side-profile normal camera oral view", + "performer head and torso seen from the side", + "contact line visible laterally", + "seated posture readable" + ], + "avoid_cues": [ + "front-facing oral portrait wording", + "laying or kneeling posture wording", + "POV viewer-thigh foreground cues", + "overhead oral wording" + ], + "reference_images": [ + "blowjob - sitting - side view/0002.jpg", + "blowjob - sitting - side view/241.jpg", + "blowjob - sitting - side view/64.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "sitting", + "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": "Visual review confirmed this as a pre-A/B candidate with minor crop/camera drift; selected references keep the seated side-profile route clear.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 17 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Mostly supports a seated side-profile oral-contact route. A few samples drift toward frontal or close framing, but the selected references and folder majority keep this usable for pre-A/B." + } + }, + { + "key": "normal_blowjob_kneeling_side_profile_folder_pool", + "family": "blowjob", + "status": "needs_samples", + "split_from": "normal_blowjob_side_profile", + "atlas_folders": [ + "blowjob - kneeling - side view" + ], + "camera_view": "side_view", + "action_family": "blowjob", + "canonical_geometry": "Kneeling oral-contact side-view source pool with only a few samples and mixed side, front, and low/overhead framing.", + "prompt_cues": [ + "kneeling oral-contact side-view source pool", + "select exact side-profile samples before testing", + "kneeling posture should remain readable" + ], + "avoid_cues": [ + "using as a locked side-profile preset", + "front-facing oral portrait wording", + "laying or sitting posture wording", + "POV viewer-thigh foreground cues", + "overhead oral wording" + ], + "reference_images": [ + "blowjob - kneeling - side view/160.jpg", + "blowjob - kneeling - side view/64.jpg", + "blowjob - kneeling - side view/83.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "kneeling", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 6 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "Too thin and mixed for a clean kneeling side-profile pre-A/B route; no selected subvariant was created in this batch." + } + }, + { + "key": "normal_blowjob_front_low_angle", + "family": "blowjob", + "status": "needs_samples", + "split_from": "normal_blowjob_low_angle", + "atlas_folders": [ + "blowjob - front view - low angle" + ], + "camera_view": "front_view", + "action_family": "blowjob", + "canonical_geometry": "Thin front low-angle normal-camera oral reference.", + "prompt_cues": [ + "front low-angle normal camera oral reference", + "camera low but front-facing", + "upward scale emphasized", + "normal third-person framing" + ], + "avoid_cues": [ + "top-down wording", + "eye-level portrait framing", + "pure low-angle wording that loses front view", + "POV viewer-body cues" + ], + "reference_images": [ + "blowjob - front view - low angle/145.jpg", + "blowjob - front view - low angle/223.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "front view", + "low angle" + ], + "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 the label, but this remains needs_samples because the source folder contains only two examples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The front low-angle label is accurate, but two samples are not enough for a stable A/B candidate." + } + }, + { + "key": "normal_blowjob_low_angle", + "family": "blowjob", + "status": "needs_samples", + "split_from": "normal_blowjob_low_angle", + "atlas_folders": [ + "blowjob - low angle" + ], + "camera_view": "low_angle", + "action_family": "blowjob", + "canonical_geometry": "Thin generic low-angle normal-camera oral reference.", + "prompt_cues": [ + "low-angle normal camera oral reference", + "camera placed below the subject", + "upward view from near the body line", + "vertical scale emphasized" + ], + "avoid_cues": [ + "top-down wording", + "eye-level portrait framing", + "front-view wording unless selected sample supports it", + "POV viewer-body cues" + ], + "reference_images": [ + "blowjob - low angle/569.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "blowjob", + "low angle" + ], + "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 one-sample low-angle reference; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder contains one low-angle sample, so it remains a thin reference only." + } + }, + { + "key": "normal_ballsucking_standing_partner_mixed_camera_folder_pool", + "family": "ballsucking", + "status": "needs_samples", + "split_from": "normal_ballsucking_normal_camera_mixed", + "atlas_folders": [ + "ballsucking - standing" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "ballsucking", + "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.", + "prompt_cues": [ + "standing-partner oral-contact mixed-camera source pool", + "performer kneeling or low near standing partner", + "select exact camera sample before testing", + "keep participants visible in third-person frame" + ], + "avoid_cues": [ + "using as a locked camera preset", + "laying posture wording", + "POV oral wording", + "mixing standing and laying cues in one A/B prompt" + ], + "reference_images": [ + "ballsucking - standing/0014.jpg", + "ballsucking - standing/252.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", + "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 this as a standing-partner source pool, not a locked normal-camera route. Needs sample selection before A/B.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 12 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "notes": "The standing-partner context is consistent, but camera angle and crop vary too much for a preset route." + } + }, + { + "key": "normal_ballsucking_laying_close_reference_folder_pool", + "family": "ballsucking", + "status": "needs_samples", + "split_from": "normal_ballsucking_normal_camera_mixed", + "atlas_folders": [ + "ballsucking - laying" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "ballsucking", + "canonical_geometry": "Laying oral-contact close-reference source pool with only two samples and no stable camera azimuth.", + "prompt_cues": [ + "laying oral-contact close-reference source pool", + "select exact crop before testing", + "keep participants visible in third-person frame" + ], + "avoid_cues": [ + "using as a locked camera preset", + "standing posture wording", + "POV oral wording", + "mixing standing and laying cues in one A/B prompt" + ], + "reference_images": [ + "ballsucking - laying/271.jpg", + "ballsucking - laying/591.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "ballsucking", + "laying", + "close reference" + ], + "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 two-sample laying close-reference pool; keep needs_samples.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_close_reference_folder_pool", + "notes": "The two examples are useful references but too thin and camera-variable for A/B." + } + }, + { + "key": "normal_boobjob_front_close_mixed_camera_folder_pool", + "family": "boobjob", + "status": "needs_samples", + "atlas_folders": [ + "boobjob" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "boobjob", + "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.", + "prompt_cues": [ + "boobjob front-close mixed-camera source pool", + "performer faces camera or near camera in selected samples", + "select representative non-POV crop before testing", + "do not infer a single azimuth" + ], + "avoid_cues": [ + "using the full folder as a locked front preset", + "POV boobjob wording", + "assuming all samples are frontal", + "using without crop review" + ], + "reference_images": [ + "boobjob/0017.jpg", + "boobjob/259.jpg", + "boobjob/91.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "boobjob", + "front close", + "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 front-close material, but the full source folder is mixed. Keep as a folder_pool until a representative non-POV subset is selected.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 19 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "notes": "Mostly useful front-close material, but the folder includes enough side/standing/foreground-heavy crops that it should remain needs_samples." + } + }, + { + "key": "normal_breast_contact_front_view", + "family": "breast_contact", + "status": "pre_ab_candidate", + "atlas_folders": [ + "breast - touching - front view" + ], + "camera_view": "front_view", + "action_family": "breast_contact", + "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.", + "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" + ], + "avoid_cues": [ + "side-profile wording", + "POV touch wording", + "cropping to only detail texture" + ], + "reference_images": [ + "breast - touching - front view/0006.jpg", + "breast - touching - front view/248.jpg", + "breast - touching - front view/72.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "breast touching", + "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": "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." + } + }, + { + "key": "normal_breast_touching_side_view", + "family": "breast_contact", + "status": "pre_ab_candidate", + "split_from": "normal_breast_contact_side_view", + "atlas_folders": [ + "breast - touching - side view" + ], + "camera_view": "side_view", + "action_family": "breast_contact", + "canonical_geometry": "Side-profile breast-touching normal-camera view.", + "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" + ], + "avoid_cues": [ + "front-only body presentation", + "mouth-contact wording", + "POV touch language", + "overhead wording" + ], + "reference_images": [ + "breast - touching - side view/0010.jpg", + "breast - touching - side view/364.jpg", + "breast - touching - side view/97.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "breast contact", + "touching", + "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": "Visual review confirmed this as a side/near-side pre-A/B candidate with minor frontal drift.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 10 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "Most samples support side or near-side body-contact geometry; a few drift toward frontal or bed-level framing but do not break the route." + } + }, + { + "key": "normal_breast_sucking_side_view", + "family": "breast_contact", + "status": "pre_ab_candidate", + "split_from": "normal_breast_contact_side_view", + "atlas_folders": [ + "breast sucking - side view" + ], + "camera_view": "side_view", + "action_family": "breast_contact", + "canonical_geometry": "Side-profile breast mouth-contact normal-camera view.", + "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" + ], + "avoid_cues": [ + "front-only body presentation", + "hand-touch-only wording", + "POV touch language", + "overhead wording" + ], + "reference_images": [ + "breast sucking - side view/0003.jpg", + "breast sucking - side view/257.jpg", + "breast sucking - side view/99.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "breast contact", + "sucking", + "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": "Visual review confirmed this as a side/near-side pre-A/B candidate; 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." + } + }, + { + "key": "normal_handjob_standing_side_profile_folder_pool", + "family": "manual_or_toy", + "status": "needs_samples", + "split_from": "normal_handjob_side_profile", + "atlas_folders": [ + "handjob standing - side view" + ], + "camera_view": "side_view", + "action_family": "manual_or_toy", + "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.", + "prompt_cues": [ + "standing manual-contact side-view source pool", + "select reviewed standing side references before testing", + "participants stay third-person visible" + ], + "avoid_cues": [ + "using the full folder as a locked side-profile preset", + "sitting, kneeling, or laying posture wording as the standing route", + "front-facing portrait-only crop", + "POV manual-contact wording", + "overhead camera wording" + ], + "reference_images": [ + "handjob standing - side view/0001.jpg", + "handjob standing - side view/260.jpg", + "handjob standing - side view/614.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "handjob", + "standing", + "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": "Full source folder is visually over-broad. Renamed as a folder_pool; use the selected-reference standing side-profile subvariant for generator-ready wording.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 63 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "The folder mixes standing side references with kneeling/seated, close, front, and other camera frames. Do not queue the full folder directly for A/B." + } + }, + { + "key": "normal_handjob_standing_side_profile", + "family": "manual_or_toy", + "status": "pre_ab_candidate", + "source_variant": "normal_handjob_standing_side_profile_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "split_from": "normal_handjob_side_profile", + "atlas_folders": [ + "handjob standing - side view" + ], + "camera_view": "side_view", + "action_family": "manual_or_toy", + "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.", + "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" + ], + "avoid_cues": [ + "POV manual-contact wording", + "sitting, kneeling, or laying posture wording", + "front-facing portrait-only crop", + "overhead camera wording" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 7 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed standing/side references inside a mixed manual-contact source folder; kneeling, close, and front-drifting source images were excluded." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "handjob", + "standing", + "side view", + "reviewed subset" + ], + "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 reviewed standing/side references inside a mixed manual-contact source folder; use as the precise standing side-profile route." + }, + { + "key": "normal_handjob_sitting_side_profile_folder_pool", + "family": "manual_or_toy", + "status": "needs_samples", + "split_from": "normal_handjob_side_profile", + "atlas_folders": [ + "handjob - sitting - side view" + ], + "camera_view": "side_view", + "action_family": "manual_or_toy", + "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.", + "prompt_cues": [ + "sitting manual-contact side-view source pool", + "select reviewed seated side references before testing", + "participants stay third-person visible" + ], + "avoid_cues": [ + "using the full folder as a locked side-profile preset", + "standing or laying posture wording", + "front-facing portrait-only crop", + "POV manual-contact wording", + "overhead camera wording" + ], + "reference_images": [ + "handjob - sitting - side view/0007.jpg", + "handjob - sitting - side view/130.jpg", + "handjob - sitting - side view/94.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "handjob", + "sitting", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 11 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "The folder has a few useful seated/side references, but the candidate subset still mixed seated, standing/close, and front-facing frames. No selected pre-A/B subvariant is retained." + } + }, + { + "key": "normal_handjob_laying_side_profile_folder_pool", + "family": "manual_or_toy", + "status": "needs_samples", + "split_from": "normal_handjob_side_profile", + "atlas_folders": [ + "handjob - laying -side view" + ], + "camera_view": "side_view", + "action_family": "manual_or_toy", + "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.", + "prompt_cues": [ + "laying manual-contact side-view source pool", + "select exact side-profile samples before testing", + "reclined posture should remain readable" + ], + "avoid_cues": [ + "using as a locked side-profile preset", + "standing or sitting posture wording", + "front-facing portrait-only crop", + "POV manual-contact wording", + "overhead camera wording" + ], + "reference_images": [ + "handjob - laying -side view/0011.jpg", + "handjob - laying -side view/591.jpg", + "handjob - laying -side view/97.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "handjob", + "laying", + "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": "Downgraded after visual review: the folder contains useful laying references but not enough clean, consistent side-profile samples for a pre-A/B route.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 11 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "The folder mixes laying side, front, and close references; no selected pre-A/B subvariant was created because the clean side subset is too thin." + } + }, + { + "key": "normal_handjob_both_sitting_front_view", + "family": "manual_or_toy", + "status": "pre_ab_candidate", + "split_from": "normal_handjob_front_view", + "atlas_folders": [ + "handjob - both sitting - front view" + ], + "camera_view": "front_view", + "action_family": "manual_or_toy", + "canonical_geometry": "Both-sitting manual-contact front normal-camera view.", + "prompt_cues": [ + "both-sitting manual-contact front normal camera view", + "hand contact visible from the front", + "both participants readable", + "normal third-person camera" + ], + "avoid_cues": [ + "POV manual-contact wording", + "pure side-profile wording", + "laying posture wording", + "cropping away the performer" + ], + "reference_images": [ + "handjob - both sitting - front view/109.jpg", + "handjob - both sitting - front view/588.jpg", + "handjob - both sitting - front view/598.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "handjob", + "both sitting", + "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": "Visual review confirmed this as a thin but coherent both-sitting front pre-A/B candidate.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 4 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "The folder is thin but coherent enough for a both-sitting/front manual-contact route." + } + }, + { + "key": "normal_handjob_laying_front_view", + "family": "manual_or_toy", + "status": "needs_samples", + "split_from": "normal_handjob_front_view", + "atlas_folders": [ + "handjob - laying - front view" + ], + "camera_view": "front_view", + "action_family": "manual_or_toy", + "canonical_geometry": "Laying manual-contact front normal-camera view.", + "prompt_cues": [ + "laying manual-contact front normal camera view", + "hand contact visible from the front", + "both participants readable", + "normal third-person camera" + ], + "avoid_cues": [ + "POV manual-contact wording", + "pure side-profile wording", + "both-sitting posture wording", + "front three-quarter wording" + ], + "reference_images": [ + "handjob - laying - front view/119.jpg", + "handjob - laying - front view/56.jpg", + "handjob - laying - front view/95.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "handjob", + "laying", + "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": "Downgraded after visual review: only three samples, with posture/camera variation that is too thin for a front laying route.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 3 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples", + "notes": "The label is useful, but the source folder is too thin and posture-variable for pre-A/B." + } + }, + { + "key": "normal_handjob_laying_front_three_quarter", + "family": "manual_or_toy", + "status": "pre_ab_candidate", + "split_from": "normal_handjob_front_view", + "atlas_folders": [ + "handjob - laying - front view - 3-4 angle" + ], + "camera_view": "front_three_quarter", + "action_family": "manual_or_toy", + "canonical_geometry": "Laying manual-contact front three-quarter normal-camera view.", + "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" + ], + "avoid_cues": [ + "POV manual-contact wording", + "pure side-profile wording", + "both-sitting posture wording", + "pure front-view wording" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "handjob", + "laying", + "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": "Visual review confirmed this as a thin but coherent front-three-quarter pre-A/B candidate.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 4 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "The folder is thin but visually coherent for a laying front-three-quarter manual-contact route." + } + }, + { + "key": "normal_pussy_licking_side_profile_folder_pool", + "family": "oral_other", + "status": "needs_samples", + "split_from": "normal_pussy_licking_side_profile", + "atlas_folders": [ + "pussy licking - side view" + ], + "camera_view": "side_view", + "action_family": "oral_other", + "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.", + "prompt_cues": [ + "side-view oral-contact source pool", + "select reviewed side-profile references before testing", + "performer and receiving partner both visible" + ], + "avoid_cues": [ + "using the full folder as a locked side-profile preset", + "front-facing presentation wording as primary camera", + "standing posture wording", + "overhead view", + "POV oral wording" + ], + "reference_images": [ + "pussy licking - side view/0003.jpg", + "pussy licking - side view/0016_2.jpg", + "pussy licking - side view/617.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "oral contact", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 28 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "The folder has enough clean side-profile material to support a selected subvariant, but the full folder is visually mixed and should not be queued directly." + } + }, + { + "key": "normal_pussy_licking_side_profile", + "family": "oral_other", + "status": "pre_ab_candidate", + "source_variant": "normal_pussy_licking_side_profile_folder_pool", + "subset_selection": { + "type": "review_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "atlas_folders": [ + "pussy licking - side view" + ], + "camera_view": "side_view", + "action_family": "oral_other", + "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.", + "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" + ], + "avoid_cues": [ + "POV oral wording", + "front-facing presentation wording as primary camera", + "standing posture wording", + "overhead 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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 15 JPGs selected from mixed source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed side-profile references inside a mixed oral-contact side-view folder; use this as the precise side-profile route." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "oral contact", + "side view", + "reviewed subset" + ], + "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 reviewed side-profile references inside a mixed oral-contact side-view folder; ready as the precise side-profile route while the full folder remains needs_samples." + }, + { + "key": "normal_pussy_licking_leg_up_mixed_camera_folder_pool", + "family": "oral_other", + "status": "needs_samples", + "split_from": "normal_pussy_licking_side_profile", + "atlas_folders": [ + "pussy licking woman standing - side view" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "oral_other", + "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.", + "prompt_cues": [ + "leg-up oral-contact mixed-camera source pool", + "select exact posture and camera sample before testing", + "do not assume standing posture from the folder name" + ], + "avoid_cues": [ + "using as a locked standing side-profile preset", + "POV oral wording", + "front-facing presentation wording as primary camera", + "overhead view" + ], + "reference_images": [ + "pussy licking woman standing - side view/0001.jpg", + "pussy licking woman standing - side view/14.jpg", + "pussy licking woman standing - side view/16.jpg", + "pussy licking woman standing - side view/170.jpg", + "pussy licking woman standing - side view/5.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "oral contact", + "leg up", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 5 JPGs across atlas_folders plus representative references.", + "decision": "renamed_and_downgraded_to_needs_samples_folder_pool", + "notes": "The reviewed images do not consistently support the original standing side-profile name; catalog key now reflects a leg-up mixed-camera pool." + } + }, + { + "key": "normal_pussy_licking_front_three_quarter", + "family": "oral_other", + "status": "needs_samples", + "atlas_folders": [ + "pussy licking - front view - 3-4 angle" + ], + "camera_view": "front_three_quarter", + "action_family": "oral_other", + "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.", + "prompt_cues": [ + "front three-quarter oral-contact normal camera view", + "front contact plane readable", + "camera offset enough to show body depth", + "performer and receiving partner both visible" + ], + "avoid_cues": [ + "treating the two images as proven", + "POV oral wording", + "pure side-profile wording" + ], + "reference_images": [ + "pussy licking - front view - 3-4 angle/0005.jpg", + "pussy licking - front view - 3-4 angle/532.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "pussy licking", + "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": "Visual review confirmed the label, but this remains needs_samples because the source folder contains only two examples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The front three-quarter label is plausible, but the folder has only two samples and remains too thin for A/B." + } + }, + { + "key": "normal_display_rear_body_view_folder_pool", + "family": "display", + "status": "needs_samples", + "split_from": "normal_display_rear_body_view", + "atlas_folders": [ + "woman solo showing her hass - back view" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "display", + "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.", + "prompt_cues": [ + "solo rear-body display source pool", + "select reviewed back/rear references before testing", + "normal third-person display composition" + ], + "avoid_cues": [ + "using the full folder as a locked back-view preset", + "front-facing portrait wording", + "partner-contact wording", + "POV body inspection wording" + ], + "reference_images": [ + "woman solo showing her hass - back view/0001.jpg", + "woman solo showing her hass - back view/248.jpg", + "woman solo showing her hass - back view/80.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "display", + "rear body", + "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": "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 99 JPGs across atlas_folders plus paged review of representative sections.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "The folder contains many clean rear references but is too broad to queue directly as a locked back-view candidate." + } + }, + { + "key": "normal_display_rear_body_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-06-29", + "source_folder_note": "Source folder remains broad; this variant is defined by the selected reference_images rather than the full folder contents." + }, + "split_from": "normal_display_rear_body_view", + "atlas_folders": [ + "woman solo showing her hass - back view" + ], + "camera_view": "back_view", + "action_family": "display", + "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.", + "prompt_cues": [ + "reviewed solo rear body-display normal camera view", + "subject faces away or turns back", + "rear body closest to camera", + "solo display composition" + ], + "avoid_cues": [ + "POV body inspection wording", + "front-facing portrait wording", + "partner-contact wording", + "mixed camera wording" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Review-selected image subset: 15 JPGs selected from broad source folder(s).", + "decision": "created_pre_ab_subvariant", + "notes": "Created from reviewed rear/back-facing references inside a broad rear-display source folder; side, seated, close, and front-drifting source images were excluded." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "display", + "rear body", + "back view", + "reviewed subset" + ], + "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 reviewed rear/back-facing references inside a broad rear-display source folder; use as the precise rear body-display route." + }, + { + "key": "normal_display_rear_exposed_body_folder_pool", + "family": "display", + "status": "needs_samples", + "split_from": "normal_display_rear_body_view", + "atlas_folders": [ + "woman ass exposed" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "display", + "canonical_geometry": "Rear exposed-body display source pool with only four mixed rear/side samples and no locked camera preset.", + "prompt_cues": [ + "rear body-display action reference", + "select exact camera sample before testing", + "solo display composition", + "normal third-person framing" + ], + "avoid_cues": [ + "using as a locked back-view preset", + "front-facing portrait wording", + "partner-contact wording", + "POV body inspection wording" + ], + "reference_images": [ + "woman ass exposed/40.jpg", + "woman ass exposed/52.jpg", + "woman ass exposed/58.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "display", + "rear body exposed" + ], + "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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 4 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples_folder_pool", + "notes": "The folder is useful rear/side display coverage but too thin and camera-variable for A/B." + } + }, + { + "key": "normal_display_rear_close_reference_folder_pool", + "family": "display", + "status": "needs_samples", + "split_from": "normal_display_rear_body_view", + "atlas_folders": [ + "anus exposed - back view" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "display", + "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.", + "prompt_cues": [ + "rear close display source pool", + "select exact rear/back close sample before testing", + "solo display composition" + ], + "avoid_cues": [ + "using as a locked back-view preset", + "front-facing close wording as the rear route", + "partner-contact wording", + "POV body inspection wording" + ], + "reference_images": [ + "anus exposed - back view/0017.jpg", + "anus exposed - back view/607.jpg", + "anus exposed - back view/614.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "display", + "rear close", + "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": "Downgraded after visual review: only one of four samples is a clear rear/back close reference; keep as a mixed close-reference pool.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 4 JPGs across atlas_folders plus representative references.", + "decision": "downgraded_to_needs_samples_folder_pool", + "notes": "The folder label says back view, but the reviewed samples mix rear, front, and oblique close references." + } + }, + { + "key": "normal_display_front_open_leg_mixed_camera_folder_pool", + "family": "display", + "status": "needs_samples", + "atlas_folders": [ + "pussy spread" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "display", + "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.", + "prompt_cues": [ + "front open-leg normal camera display", + "subject faces camera", + "legs open or raised toward frame", + "inspect sample before locking camera angle" + ], + "avoid_cues": [ + "POV spread wording", + "assuming every sample has the same camera height", + "partner-contact wording" + ], + "reference_images": [ + "pussy spread/0001.jpg", + "pussy spread/270.jpg", + "pussy spread/97.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "open-leg display", + "spread", + "front display" + ], + "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 large useful display pool, but it needs subset selection before A/B because camera geometry varies.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 100 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "notes": "The folder is mostly front/open display material but too mixed in crop and camera height for a locked route." + } + }, + { + "key": "normal_display_breasts_exposed_mixed_camera_folder_pool", + "family": "display", + "status": "needs_samples", + "atlas_folders": [ + "breasts exposed" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "display", + "canonical_geometry": "Upper-body display mixed-camera source pool: the folder combines standing, seated, side, front, close, and full-body display crops.", + "prompt_cues": [ + "normal-camera upper-body display", + "subject presents chest or torso", + "inspect crop and camera angle before testing", + "avoid mixing tight crop and full body in one test" + ], + "avoid_cues": [ + "using as one locked camera preset", + "POV touch wording", + "assuming consistent crop distance" + ], + "reference_images": [ + "breasts exposed/0001.jpg", + "breasts exposed/280.jpg", + "breasts exposed/97.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "breasts exposed", + "display", + "upper body" + ], + "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 broad mixed-camera display pool; keep needs_samples until a camera-specific subset is selected.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 168 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "notes": "The folder is broad display coverage, not a precise camera variant." + } + }, + { + "key": "normal_standing_from_front_side_view", + "family": "standing_penetration", + "status": "pre_ab_candidate", + "split_from": "normal_standing_penetration_side_profile", + "atlas_folders": [ + "fuck from front standing - side view" + ], + "camera_view": "side_view", + "action_family": "standing_penetration", + "canonical_geometry": "Standing from-front side-profile normal-camera view with the upright body line readable.", + "prompt_cues": [ + "standing from-front side-profile normal camera view", + "upright body line visible", + "camera beside the couple", + "standing posture readable" + ], + "avoid_cues": [ + "front-only portrait wording", + "POV wording", + "suspended posture wording", + "cropping out the full standing posture" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "standing penetration", + "from front", + "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": "Visual review confirmed this as a standing from-front side pre-A/B candidate with minor crop/posture drift.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 36 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "The folder mostly supports the standing from-front side route, with some couch or close-crop drift that selected references avoid." + } + }, + { + "key": "normal_standing_suspended_side_view", + "family": "standing_penetration", + "status": "pre_ab_candidate", + "split_from": "normal_standing_penetration_side_profile", + "atlas_folders": [ + "fuck standing - woman suspended - side view" + ], + "camera_view": "side_view", + "action_family": "standing_penetration", + "canonical_geometry": "Suspended standing side-profile normal-camera view where lift posture is part of the cue.", + "prompt_cues": [ + "suspended standing side-profile normal camera view", + "vertical lift posture readable", + "camera beside the couple", + "full standing body line visible" + ], + "avoid_cues": [ + "front-only portrait wording", + "POV wording", + "ordinary standing wording that loses suspended posture", + "cropping out the full standing posture" + ], + "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" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "standing penetration", + "suspended", + "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": "Visual review confirmed this as a small but coherent suspended standing side pre-A/B candidate.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 9 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_pre_ab_candidate", + "notes": "The folder is small but consistent enough for the suspended standing side route." + } + }, + { + "key": "normal_standing_sideway_side_view", + "family": "standing_penetration", + "status": "needs_samples", + "split_from": "normal_standing_penetration_side_profile", + "atlas_folders": [ + "fuck standing - woman sideway" + ], + "camera_view": "side_view", + "action_family": "standing_penetration", + "canonical_geometry": "Thin standing sideway normal-camera reference.", + "prompt_cues": [ + "standing sideway normal camera reference", + "upright body line visible", + "camera beside the couple", + "sideway posture cue retained" + ], + "avoid_cues": [ + "front-only portrait wording", + "POV wording", + "suspended posture wording", + "treating the single sample as proven" + ], + "reference_images": [ + "fuck standing - woman sideway/0008.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "standing penetration", + "sideway" + ], + "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 one-sample reference; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The one image is useful as coverage but cannot prove a route." + } + }, + { + "key": "normal_front_penetration_low_angle", + "family": "front_penetration", + "status": "needs_samples", + "atlas_folders": [ + "fuck from front - front view -low angle" + ], + "camera_view": "front_view", + "action_family": "front_penetration", + "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.", + "prompt_cues": [ + "front-entry low normal camera view", + "front contact plane readable", + "camera sits low near the body line", + "upward scale emphasized" + ], + "avoid_cues": [ + "overhead wording", + "side-profile wording", + "POV viewer-body foreground cues" + ], + "reference_images": [ + "fuck from front - front view -low angle/0008.jpg", + "fuck from front - front view -low angle/290.jpg", + "fuck from front - front view -low angle/304.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "front penetration", + "front view", + "low angle" + ], + "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 front/low-angle reference; keep needs_samples until narrowed or expanded.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 4 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder contains plausible low/front references but not enough consistent coverage for A/B." + } + }, + { + "key": "normal_double_penetration_back_three_quarter", + "family": "double_contact", + "status": "needs_samples", + "split_from": "normal_double_contact_back_three_quarter", + "atlas_folders": [ + "double penetration - back view - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "double_contact", + "canonical_geometry": "Thin double-contact rear three-quarter normal-camera reference.", + "prompt_cues": [ + "double-contact rear three-quarter normal camera reference", + "multiple bodies visible", + "camera offset behind the action", + "contact lines remain separated" + ], + "avoid_cues": [ + "single-contact wording", + "POV multi-partner wording", + "testing before selecting exact layout", + "front or side camera wording" + ], + "reference_images": [ + "double penetration - back view - 3-4 angle/8.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "double contact", + "back 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": "Visual review confirmed the label as plausible, but the folder has only one rear three-quarter reference; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder label is plausible, but it has only one rear three-quarter reference; keep as needs_samples." + } + }, + { + "key": "normal_double_contact_bj_pen_back_three_quarter", + "family": "double_contact", + "status": "needs_samples", + "split_from": "normal_double_contact_back_three_quarter", + "atlas_folders": [ + "double penetration - BJ and Pen - back view - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "double_contact", + "canonical_geometry": "Thin mixed double-contact rear three-quarter normal-camera reference with distinct layout cues.", + "prompt_cues": [ + "mixed double-contact rear three-quarter normal camera reference", + "multiple bodies visible", + "camera offset behind the action", + "separate contact lines remain readable" + ], + "avoid_cues": [ + "single-contact wording", + "POV multi-partner wording", + "generic double-contact wording that loses layout", + "front or side camera wording" + ], + "reference_images": [ + "double penetration - BJ and Pen - back view - 3-4 angle/8.jpg", + "double penetration - BJ and Pen - back view - 3-4 angle/8_2.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "double contact", + "mixed layout", + "back 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": "Visual review confirmed the label as plausible, but the folder has only two mixed-layout rear three-quarter references; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder label is plausible, but it has only two mixed-layout rear three-quarter references; keep as needs_samples." + } + }, + { + "key": "normal_double_penetration_on_back_back_three_quarter", + "family": "double_contact", + "status": "needs_samples", + "split_from": "normal_double_contact_back_three_quarter", + "atlas_folders": [ + "double penetration on her back- back view - 3-4 angle" + ], + "camera_view": "back_three_quarter", + "action_family": "double_contact", + "canonical_geometry": "Thin double-contact on-back rear three-quarter normal-camera reference.", + "prompt_cues": [ + "on-back double-contact rear three-quarter normal camera reference", + "multiple bodies visible", + "camera offset behind the action", + "reclined layout cue retained" + ], + "avoid_cues": [ + "single-contact wording", + "POV multi-partner wording", + "generic double-contact wording that loses reclined layout", + "front or side camera wording" + ], + "reference_images": [ + "double penetration on her back- back view - 3-4 angle/8.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "double contact", + "on back", + "back 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": "Visual review confirmed the label as plausible, but the folder has only one on-back rear three-quarter reference; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder label is plausible, but it has only one on-back rear three-quarter reference; keep as needs_samples." + } + }, + { + "key": "normal_double_blowjob_handjob_front_view", + "family": "double_contact", + "status": "needs_samples", + "split_from": "normal_double_contact_front_or_top", + "atlas_folders": [ + "double blowjob-handjob-frontview" + ], + "camera_view": "front_view", + "action_family": "double_contact", + "canonical_geometry": "Thin double-contact front normal-camera reference.", + "prompt_cues": [ + "double-contact front normal camera reference", + "front camera view", + "multiple contact lines visible", + "select more samples before testing" + ], + "avoid_cues": [ + "using as a proven prompt variant", + "POV wording", + "top-view wording", + "side-view wording" + ], + "reference_images": [ + "double blowjob-handjob-frontview/8.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "double contact", + "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": "Visual review confirmed the label as plausible, but the folder has only one front-view double-contact reference; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder label is plausible, but it has only one front-view double-contact reference; keep as needs_samples." + } + }, + { + "key": "normal_double_blowjob_handjob_top_view", + "family": "double_contact", + "status": "needs_samples", + "split_from": "normal_double_contact_front_or_top", + "atlas_folders": [ + "double blowjob-handjob-topview" + ], + "camera_view": "top_view", + "action_family": "double_contact", + "canonical_geometry": "Thin double-contact top-view normal-camera reference.", + "prompt_cues": [ + "double-contact top-view normal camera reference", + "overhead camera view", + "multiple contact lines visible", + "select more samples before testing" + ], + "avoid_cues": [ + "using as a proven prompt variant", + "POV wording", + "front-view wording", + "side-view wording" + ], + "reference_images": [ + "double blowjob-handjob-topview/8.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "double contact", + "top view" + ], + "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 the label as plausible, but the folder has only one top-view double-contact reference; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 1 JPG across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder label is plausible, but it has only one top-view double-contact reference; keep as needs_samples." + } + }, + { + "key": "normal_double_penetration_side_view", + "family": "double_contact", + "status": "needs_samples", + "split_from": "normal_double_contact_front_or_top", + "atlas_folders": [ + "double penetration - side view" + ], + "camera_view": "side_view", + "action_family": "double_contact", + "canonical_geometry": "Thin double-contact side-view normal-camera reference.", + "prompt_cues": [ + "double-contact side-view normal camera reference", + "lateral camera view", + "multiple contact lines visible", + "select more samples before testing" + ], + "avoid_cues": [ + "using as a proven prompt variant", + "POV wording", + "front-view wording", + "top-view wording" + ], + "reference_images": [ + "double penetration - side view/8.jpg", + "double penetration - side view/8_2.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "double contact", + "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": "Visual review confirmed the label as plausible, but the folder has only two side-view double-contact references; keep needs_samples.", + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.", + "decision": "confirmed_needs_samples", + "notes": "The folder label is plausible, but it has only two side-view double-contact references; keep as needs_samples." + } + }, + { + "key": "normal_couple_kissing_mixed_camera_folder_pool", + "family": "couple", + "status": "needs_samples", + "atlas_folders": [ + "couple kissing" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "couple", + "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.", + "prompt_cues": [ + "normal third-person couple kissing view", + "two-person contact readable", + "select crop and angle before A/B", + "avoid assuming one camera azimuth" + ], + "avoid_cues": [ + "using as a locked camera preset", + "POV wording", + "mixing close-up and full-body samples in one test" + ], + "reference_images": [ + "couple kissing/0001.jpg", + "couple kissing/258.jpg", + "couple kissing/96.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "couple kissing", + "normal camera", + "soft contact" + ], + "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 mixed normal-camera couple-contact pool across standing, seated, bed, close, side, and front crops; keep needs_samples.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 88 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "notes": "The action family is coherent, but camera and posture vary too much for a locked route." + } + }, + { + "key": "normal_piledriver_mixed_camera_folder_pool", + "family": "piledriver_or_pretzel", + "status": "needs_samples", + "split_from": "normal_piledriver_pretzel_mixed", + "atlas_folders": [ + "piledriver" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "piledriver_or_pretzel", + "canonical_geometry": "Piledriver folded-body action reference with camera not locked enough for a preset.", + "prompt_cues": [ + "piledriver folded-body normal-camera reference", + "compact stacked bodies", + "legs folded high", + "select exact camera angle before testing" + ], + "avoid_cues": [ + "treating as one locked camera angle", + "pretzel layout wording", + "POV folded-leg wording", + "testing before selecting camera angle" + ], + "reference_images": [ + "piledriver/0001.jpg", + "piledriver/0012_2.jpg", + "piledriver/617.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "piledriver" + ], + "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 a coherent piledriver action pool, but camera angle varies across top, front, close, and inverted views; keep needs_samples.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 27 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "notes": "The pose/action is coherent, but the camera is mixed and should be narrowed before A/B." + } + }, + { + "key": "normal_pretzel_mixed_camera_folder_pool", + "family": "piledriver_or_pretzel", + "status": "needs_samples", + "split_from": "normal_piledriver_pretzel_mixed", + "atlas_folders": [ + "pretzel" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "piledriver_or_pretzel", + "canonical_geometry": "Pretzel folded-body action reference with camera not locked enough for a preset.", + "prompt_cues": [ + "pretzel folded-body normal-camera reference", + "compact crossed or folded body layout", + "select exact camera angle before testing", + "normal third-person framing" + ], + "avoid_cues": [ + "treating as one locked camera angle", + "piledriver layout wording", + "POV folded-leg wording", + "testing before selecting camera angle" + ], + "reference_images": [ + "pretzel/0001.jpg", + "pretzel/0006.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "pretzel" + ], + "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 two-sample pretzel mixed-camera pool; keep needs_samples.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 2 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_mixed_folder_pool", + "notes": "The folder is too thin and camera-variable for a locked route." + } + }, + { + "key": "normal_penis_worship_foreground_close_reference_folder_pool", + "family": "oral_other", + "status": "needs_samples", + "atlas_folders": [ + "penis worship" + ], + "camera_view": "mixed_or_unspecified", + "action_family": "oral_other", + "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.", + "prompt_cues": [ + "foreground-heavy close-reference source pool", + "performer face and contact object readable in selected samples", + "select crop before A/B", + "do not infer a single azimuth" + ], + "avoid_cues": [ + "using as a fixed normal-camera preset", + "POV worship wording", + "mixing close-up and wider samples", + "queueing without foreground/POV review" + ], + "reference_images": [ + "penis worship/0001.jpg" + ], + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "penis worship", + "foreground close reference", + "oral_other" + ], + "notes": "Future hook only. This catalog does not change generator defaults, prompt routes, formatters, eval logs, or POV workflow files." + }, + "pre_ab_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.", + "folder_pool": true, + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "Full-folder contact sheet covering 49 JPGs across atlas_folders plus representative references.", + "decision": "renamed_to_foreground_close_reference_folder_pool", + "notes": "Most samples are foreground-heavy close references. Top-view and side-view anchors have been split into user-selected subvariants; this residual pool should not be treated as a normal-camera route without manual non-POV filtering." + } + }, + { + "key": "normal_penis_worship_top_view", + "family": "oral_other", + "status": "needs_samples", + "source_variant": "normal_penis_worship_foreground_close_reference_folder_pool", + "subset_selection": { + "type": "user_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the user-provided top-view anchor images rather than the full folder contents." + }, + "atlas_folders": [ + "penis worship" + ], + "camera_view": "top_view", + "action_family": "oral_other", + "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.", + "prompt_cues": [ + "penis worship top-down normal camera view", + "camera looking down from above", + "overhead contact geometry", + "use selected top-view anchor images only" + ], + "avoid_cues": [ + "foreground-heavy close-reference wording", + "side-profile oral wording", + "front-facing portrait wording", + "treating the full mixed folder as top view" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "User-provided top-view anchor subset: 6 JPGs selected from the mixed penis worship source folder.", + "decision": "created_needs_samples_subvariant", + "notes": "Created after user correction that 510, 517, 519, 520, 603_4, and 607_2 are top-view penis-worship examples. Keep needs_samples until the rest of the folder is visually split or more top-view anchors are added." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "penis worship", + "top view", + "overhead", + "user anchored subset" + ], + "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 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." + }, + { + "key": "normal_penis_worship_side_view", + "family": "oral_other", + "status": "needs_samples", + "source_variant": "normal_penis_worship_foreground_close_reference_folder_pool", + "subset_selection": { + "type": "user_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the user-provided side-view anchor images rather than the full folder contents." + }, + "atlas_folders": [ + "penis worship" + ], + "camera_view": "side_view", + "action_family": "oral_other", + "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.", + "prompt_cues": [ + "penis worship side-view normal camera view", + "lateral camera angle", + "side-readable contact geometry", + "use selected side-view anchor images only" + ], + "avoid_cues": [ + "top-down oral wording", + "foreground-heavy close-reference wording", + "front-facing portrait wording", + "treating the full mixed folder as side view" + ], + "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" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "User-provided side-view anchor subset: 8 JPGs selected from the mixed penis worship source folder.", + "decision": "created_needs_samples_subvariant", + "notes": "Created after user correction that 618, 566_2, 566, 505, 0016, 0008_2, 0004, and 0003 are side-view penis-worship examples. Keep needs_samples until the rest of the folder is visually split or more side-view anchors are added." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "penis worship", + "side view", + "lateral", + "user anchored subset" + ], + "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 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." + }, + { + "key": "normal_penis_worship_laying_partner_vertical_side_view", + "family": "oral_other", + "status": "needs_samples", + "source_variant": "normal_penis_worship_foreground_close_reference_folder_pool", + "subset_selection": { + "type": "user_selected_reference_images", + "selection_date": "2026-06-29", + "source_folder_note": "Source folder remains mixed; this variant is defined by the user-provided laying-partner vertical side-view anchor images rather than the full folder contents." + }, + "atlas_folders": [ + "penis worship" + ], + "camera_view": "side_view", + "action_family": "oral_other", + "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.", + "prompt_cues": [ + "penis worship side-view normal camera view", + "receiving partner laying down", + "vertical contact alignment in frame", + "use selected laying-partner vertical side-view anchors only" + ], + "avoid_cues": [ + "top-down oral wording", + "generic standing or seated side-view wording", + "foreground-heavy close-reference wording", + "treating the full mixed folder as this posture" + ], + "reference_images": [ + "penis worship/0002_2.jpg", + "penis worship/0006.jpg", + "penis worship/0011.jpg", + "penis worship/608.jpg", + "penis worship/609.jpg" + ], + "visual_review": { + "reviewed_at": "2026-06-29", + "scope": "User-provided laying-partner vertical side-view anchor subset: 5 JPGs selected from the mixed penis worship source folder.", + "decision": "created_needs_samples_subvariant", + "notes": "Created after user correction that 609, 608, 0011, 0006, and 0002_2 are side-view examples with the receiving partner laying down and vertical contact alignment. Keep needs_samples until the rest of the folder is visually split or more anchors are added." + }, + "generator_hook": { + "module": "future normal-camera routing; likely camera_config.py / row_camera.py / krea_format_route.py", + "route_terms": [ + "penis worship", + "side view", + "laying partner", + "vertical alignment", + "user anchored subset" + ], + "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 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." + } + ] +} diff --git a/docs/normal-camera-atlas.md b/docs/normal-camera-atlas.md new file mode 100644 index 0000000..9b22f8a --- /dev/null +++ b/docs/normal-camera-atlas.md @@ -0,0 +1,404 @@ +# Normal Camera Atlas + +Local reference root: + +`/media/unraid/davinci/Qwen_edit_lora/pornpic/sorted` + +Use this dataset as the non-POV camera-geometry reference for normal third-person +prompt and camera tuning. This atlas is intentionally separate from +`docs/krea2-pov-pose-atlas.md`: POV-specific folders belong to the POV atlas, +while this document tracks normal camera views such as front, side, rear, +three-quarter, top-down, low-angle, and mixed action references. + +Machine-readable folder metadata lives in +`categories/normal_camera_atlas.json`. That catalog is a folder inventory and +future hook only; it does not change generator defaults, prompt routes, Krea2 +formatting, or ComfyUI node behavior. + +## Scope + +- Included source: top-level non-POV folders currently under the local reference + root. +- Excluded source: POV-specific folders that were moved out of this sorted + non-POV root before the atlas was generated. +- Repo scope: documentation plus a catalog JSON hook only. +- Explicit non-goals: unrelated prompt-map audit drift, POV/Krea2 eval work, + generator behavior changes, and formatter behavior changes. + +## Inventory Summary + +| Metric | Count | +| --- | ---: | +| Top-level folders | 104 | +| JPG reference images | 1979 | +| Empty folders | 3 | + +Empty folders: `blowjob - standing - side view`, `blowjob - standing close up - side view`, `mating press - backview` + +6 folder keys have numeric suffixes because source folder names normalize to the same key. The catalog preserves the exact `folder` value and relative `reference_images` path for lookup. + +### Camera Views + +| Camera view | Folders | Geometry note | +| --- | ---: | --- | +| `side_view` | 28 | Profile or near-profile camera, with the body/action axis running across the frame. | +| `front_view` | 19 | Camera faces the main visible subject or contact plane from the front. | +| `front_three_quarter` | 7 | Camera faces the main visible subject from a front-offset quarter angle. | +| `back_view` | 5 | Rear-facing camera where the back, hips, or rear contact side is closest to frame. | +| `back_three_quarter` | 12 | Rear-offset quarter camera, usually showing the rear/action side plus enough torso/face context. | +| `top_view` | 2 | Overhead or high downward camera where elevation matters more than azimuth. | +| `low_angle` | 2 | Low camera looking upward or from below the action plane. | +| `under_view` | 1 | Under-view camera from below hips/legs or below the body line. | +| `mixed_or_unspecified` | 28 | Folder name does not lock camera geometry; inspect samples before using as a camera reference. | + +### Action Families + +| Action family | Folders | +| --- | ---: | +| `anal` | 1 | +| `ballsucking` | 2 | +| `blowjob` | 10 | +| `boobjob` | 1 | +| `breast_contact` | 3 | +| `couple` | 1 | +| `cowgirl` | 6 | +| `display` | 6 | +| `doggy` | 15 | +| `double_contact` | 6 | +| `face_sitting` | 2 | +| `front_penetration` | 1 | +| `manual_or_toy` | 11 | +| `missionary` | 11 | +| `oral_other` | 11 | +| `piledriver_or_pretzel` | 2 | +| `reverse_congress` | 2 | +| `reverse_cowgirl` | 10 | +| `standing_penetration` | 3 | + +### Catalog Status + +| Catalog status | Folders | +| --- | ---: | +| `action_reference_only` | 28 | +| `camera_reference` | 49 | +| `empty` | 3 | +| `thin_sample` | 24 | + +## Pre-A/B Variant Catalog + +Curated normal-camera variants live in +`categories/normal_camera_variants.json`. This catalog is intentionally smaller +than the folder inventory: it only includes variants with compact geometry, +prompt cues, avoid cues, representative references, source-folder coverage, and +future generator-hook notes. It is a planning artifact for later fixed-seed A/B +tests and does not record test evidence. + +Status values: + +- `pre_ab_candidate`: ready to queue for a first fixed-seed wording A/B test. +- `needs_samples`: useful, but thin, mixed, or needs a narrower sample subset + before testing. +- `hold`: cataloged for coverage only; split or expand before testing. + +Current variant inventory: + +| Metric | Count | +| --- | ---: | +| Curated variants | 86 | +| Pre-A/B candidates | 35 | +| Needs samples | 51 | +| Hold | 0 | +| Covered non-empty source folders | 76 | +| Uncovered non-empty source folders | 25 | + +Catalog review notes: + +- 2026-06-29 doggy side-view correction: the previous + `normal_doggy_side_profile_all_fours` entry was over-broad because it grouped + three clearly named source subcategories. It has been split into + `normal_doggy_all_fours_side_view`, `normal_doggy_generic_side_view`, and + `normal_doggy_from_behind_side_view`, each mapped to its own source folder. +- 2026-06-29 multi-folder normalization: remaining over-broad multi-folder + variants were split when folder names implied distinct posture, camera, or + layout wording. The only variants that still group multiple folders are + spacing/label aliases, and each now includes `grouped_reason`. +- 2026-06-29 doggy visual-review batch: full-folder doggy variants were checked + with contact sheets. Mixed folders are now named with `folder_pool`, and + clean generator-style names are reserved for visually reviewed source folders + or image-selected subvariants. Four doggy subvariants were created from + selected references inside mixed folders. +- 2026-06-29 cowgirl/reverse-cowgirl visual-review batch: all ten variants in + these families were checked with contact sheets. Existing names held; no new + subvariants were created. Thin front/front-three-quarter reverse-cowgirl + variants remain `needs_samples`. +- 2026-06-29 missionary visual-review batch: all ten original missionary-family + variants were checked with contact sheets. Mixed side-view folders are now + named with `folder_pool`, two selected-reference side subvariants were + created, and the misleading folded-leg back-three-quarter entry was renamed as + a mixed-camera folder pool. +- 2026-06-29 oral visual-review batch: blowjob, ballsucking, boobjob, and + oral-other variants were checked with contact sheets. Mixed oral side/close + source folders are now named with `folder_pool`, two reviewed side-profile + subvariants were created from selected references, and weak kneeling/leg-up + oral routes were downgraded to `needs_samples`. +- 2026-06-29 final normalized-variant visual-review batch: all remaining + normalized variants were checked with contact sheets. Manual-contact side + folders and the large rear-display folder are now explicit `folder_pool` + entries; selected-reference subvariants were retained only where the visual + subset stayed clean. Broad display, couple, piledriver/pretzel, and thin + double-contact folders remain `needs_samples`. Every current variant now has + visual-review metadata. +- 2026-06-29 penis-worship orientation corrections: user-provided anchors 510, + 517, 519, 520, 603_4, and 607_2 were split out as + `normal_penis_worship_top_view`; anchors 618, 566_2, 566, 505, 0016, 0008_2, + 0004, and 0003 were split out as `normal_penis_worship_side_view`; anchors + 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. + +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. + +## Camera Geometry Notes + +### Side View + +Side-view folders are the cleanest normal-camera references in this dataset. +Most samples use a profile or near-profile camera with the body/action axis +running horizontally across the frame. Use side-view wording when the prompt +must preserve lateral body geometry and visible contact alignment. + +Useful cues: + +- `side-profile normal camera view` +- `body axis runs across the frame` +- `lateral contact line stays visible` + +Avoid treating side-view folders as front-facing eye-contact compositions unless +the selected sample clearly does that. + +### Front View And Front Three-Quarter + +Front labels are action-relative. They usually mean the main visible body or +contact plane faces the camera, not that the room or whole scene is globally +front-facing. Front three-quarter folders keep the front contact plane readable +while adding body depth through an offset camera. + +Useful cues: + +- `front-facing normal camera view` +- `front three-quarter normal camera view` +- `main subject faces the camera` +- `face, torso, and contact plane all readable` + +Avoid POV body-cue language and avoid exact-degree claims unless the individual +sample supports them. + +### Back View And Back Three-Quarter + +Back labels usually mean the back, hips, or rear contact side is closest to the +camera. Back three-quarter folders are useful when the prompt needs the rear +geometry to dominate while keeping torso, face, or partner context readable. + +Useful cues: + +- `rear normal camera view` +- `rear three-quarter normal camera view` +- `camera offset behind the action` +- `back and hips closest to camera` + +Avoid front-facing camera wording and avoid first-person/POV framing. + +### Top, Low, And Under View + +Special-elevation folders are sparse but important. Top view and low angle are +not interchangeable: top-view folders look down from above, low-angle folders +look upward from below, and under-view folders place the camera below the hips +or legs. + +Useful cues: + +- `top-down normal camera view` +- `low-angle normal camera view` +- `under-view normal camera angle` + +Keep these as special camera routes rather than folding them into generic front, +side, or rear views. + +### Mixed Or Unspecified + +Mixed or unspecified folders are still useful action references, but they are +not stable camera presets. Inspect the sample images before deriving camera +wording. Large folders such as `reverse cowgirl`, `breasts exposed`, +`pussy spread`, `anal random`, and `couple kissing` should be treated as action +or presentation pools until a narrower camera subset is selected. + +## Folder Inventory + +### Side View + +Profile or near-profile camera, with the body/action axis running across the frame. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `anal_doggy_side_view` | `anal doggy - side view` | 1 | `doggy` | `thin_sample` | `anal doggy - side view/16.jpg` | +| `blowjob_kneeling_side_view` | `blowjob - kneeling - side view` | 6 | `blowjob` | `camera_reference` | `blowjob - kneeling - side view/160.jpg` | +| `blowjob_laying_side_view` | `blowjob - laying - side view` | 24 | `blowjob` | `camera_reference` | `blowjob - laying - side view/0001.jpg` | +| `blowjob_sitting_side_view` | `blowjob - sitting - side view` | 17 | `blowjob` | `camera_reference` | `blowjob - sitting - side view/0002.jpg` | +| `blowjob_standing_side_view` | `blowjob - standing - side view` | 0 | `blowjob` | `empty` | | +| `blowjob_standing_close_up_side_view` | `blowjob - standing close up - side view` | 0 | `blowjob` | `empty` | | +| `breast_touching_side_view` | `breast - touching - side view` | 10 | `breast_contact` | `camera_reference` | `breast - touching - side view/0010.jpg` | +| `breast_sucking_side_view` | `breast sucking - side view` | 43 | `breast_contact` | `camera_reference` | `breast sucking - side view/0003.jpg` | +| `cowgirl_side_view` | `cowgirl - side view` | 34 | `cowgirl` | `camera_reference` | `cowgirl - side view/0003.jpg` | +| `doggy_side_view` | `doggy - side view` | 12 | `doggy` | `camera_reference` | `doggy - side view/0014.jpg` | +| `doggy_on_all_four_side_view` | `doggy on all four - side view` | 70 | `doggy` | `camera_reference` | `doggy on all four - side view/0004.jpg` | +| `double_penetration_side_view` | `double penetration - side view` | 2 | `double_contact` | `thin_sample` | `double penetration - side view/8.jpg` | +| `fuck_from_behind_side_view` | `fuck from behind - side view` | 16 | `doggy` | `camera_reference` | `fuck from behind - side view/0001.jpg` | +| `fuck_from_behind_standing_side_view` | `fuck from behind standing - side view` | 16 | `doggy` | `camera_reference` | `fuck from behind standing - side view/0001.jpg` | +| `fuck_from_behind_standing_woman_backside_side_view` | `fuck from behind standing - woman backside - side view` | 47 | `doggy` | `camera_reference` | `fuck from behind standing - woman backside - side view/0008.jpg` | +| `fuck_from_front_standing_side_view` | `fuck from front standing - side view` | 36 | `standing_penetration` | `camera_reference` | `fuck from front standing - side view/0001.jpg` | +| `fuck_standing_woman_sideway` | `fuck standing - woman sideway` | 1 | `standing_penetration` | `thin_sample` | `fuck standing - woman sideway/0008.jpg` | +| `fuck_standing_woman_suspended_side_view` | `fuck standing - woman suspended - side view` | 9 | `standing_penetration` | `camera_reference` | `fuck standing - woman suspended - side view/0005.jpg` | +| `handjob_laying_side_view` | `handjob - laying -side view` | 11 | `manual_or_toy` | `camera_reference` | `handjob - laying -side view/0011.jpg` | +| `handjob_sitting_side_view` | `handjob - sitting - side view` | 11 | `manual_or_toy` | `camera_reference` | `handjob - sitting - side view/0007.jpg` | +| `handjob_standing_side_view` | `handjob standing - side view` | 63 | `manual_or_toy` | `camera_reference` | `handjob standing - side view/0001.jpg` | +| `mating_press_side_view` | `mating press - side view` | 3 | `missionary` | `camera_reference` | `mating press - side view/0018.jpg` | +| `missionary_side_view` | `missionary - side view` | 24 | `missionary` | `camera_reference` | `missionary - side view/0003.jpg` | +| `missionary_side_view_full_penis` | `missionary - side view - full penis` | 9 | `missionary` | `camera_reference` | `missionary - side view - full penis/0002.jpg` | +| `missionary_anal_side_view` | `missionary anal - side view` | 3 | `missionary` | `camera_reference` | `missionary anal - side view/10.jpg` | +| `pussy_licking_side_view` | `pussy licking - side view` | 28 | `oral_other` | `camera_reference` | `pussy licking - side view/0003.jpg` | +| `pussy_licking_woman_standing_side_view` | `pussy licking woman standing - side view` | 5 | `oral_other` | `camera_reference` | `pussy licking woman standing - side view/0001.jpg` | +| `reverse_cowgirl_side_view` | `reverse cowgirl - side view` | 8 | `reverse_cowgirl` | `camera_reference` | `reverse cowgirl - side view/0004.jpg` | + +### Front View + +Camera faces the main visible subject or contact plane from the front. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `anal_reverse_cowgirl_front_view_1` | ` anal reverse cowgirl - front view` | 2 | `reverse_cowgirl` | `thin_sample` | ` anal reverse cowgirl - front view/26.jpg` | +| `anal_reverse_cowgirl_front_view_2` | `anal reverse cowgirl - front view` | 1 | `reverse_cowgirl` | `thin_sample` | `anal reverse cowgirl - front view/59.jpg` | +| `blowjob_front_view_low_angle` | `blowjob - front view - low angle` | 2 | `blowjob` | `thin_sample` | `blowjob - front view - low angle/145.jpg` | +| `blowjob_laying_front_view` | `blowjob - laying - front view` | 26 | `blowjob` | `camera_reference` | `blowjob - laying - front view/0001.jpg` | +| `blowjob_sitting_frontview` | `blowjob - sitting - frontview` | 12 | `blowjob` | `camera_reference` | `blowjob - sitting - frontview/0003.jpg` | +| `breast_touching_front_view` | `breast - touching - front view` | 25 | `breast_contact` | `camera_reference` | `breast - touching - front view/0006.jpg` | +| `cowgirl_front_view` | `cowgirl - front view` | 1 | `cowgirl` | `thin_sample` | `cowgirl - front view/68.jpg` | +| `cowgirl_full_man_body_front_view` | `cowgirl full man body - front view` | 17 | `cowgirl` | `camera_reference` | `cowgirl full man body - front view/0005.jpg` | +| `doggy_front_view_1` | `doggy - front view` | 3 | `doggy` | `camera_reference` | `doggy - front view/11.jpg` | +| `doggy_front_view_2` | `doggy - front view ` | 13 | `doggy` | `camera_reference` | `doggy - front view /0003.jpg` | +| `doggy_all_four_front_view` | `doggy all four - front view` | 28 | `doggy` | `camera_reference` | `doggy all four - front view/0016.jpg` | +| `double_blowjob_handjob_frontview` | `double blowjob-handjob-frontview` | 1 | `double_contact` | `thin_sample` | `double blowjob-handjob-frontview/8.jpg` | +| `face_sitting_front_view` | `face sitting - front view` | 1 | `face_sitting` | `thin_sample` | `face sitting - front view/56.jpg` | +| `fuck_from_front_front_view_low_angle` | `fuck from front - front view -low angle` | 4 | `front_penetration` | `camera_reference` | `fuck from front - front view -low angle/0008.jpg` | +| `handjob_both_sitting_front_view` | `handjob - both sitting - front view` | 4 | `manual_or_toy` | `camera_reference` | `handjob - both sitting - front view/109.jpg` | +| `handjob_laying_front_view` | `handjob - laying - front view` | 3 | `manual_or_toy` | `camera_reference` | `handjob - laying - front view/119.jpg` | +| `mating_press_front_view` | `mating press - front view` | 2 | `missionary` | `thin_sample` | `mating press - front view/0003.jpg` | +| `missionary_front_view` | `missionary - front view` | 8 | `missionary` | `camera_reference` | `missionary - front view/0011.jpg` | +| `reverse_congress_front_view` | `reverse congress - front view` | 21 | `reverse_congress` | `camera_reference` | `reverse congress - front view/0012.jpg` | + +### Front Three Quarter + +Camera faces the main visible subject from a front-offset quarter angle. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `anal_reverse_cowgirl_front_view_3_4_angle_1` | `anal reverse cowgirl - front view - 3-4 angle` | 3 | `reverse_cowgirl` | `camera_reference` | `anal reverse cowgirl - front view - 3-4 angle/10.jpg` | +| `anal_missionary_front_view_3_4_angle` | `anal missionary - front view - 3-4 angle` | 4 | `missionary` | `camera_reference` | `anal missionary - front view - 3-4 angle/118.jpg` | +| `anal_reverse_cowgirl_front_view_3_4_angle_2` | `anal reverse cowgirl - front view - 3-4 angle` | 2 | `reverse_cowgirl` | `thin_sample` | `anal reverse cowgirl - front view - 3-4 angle/118.jpg` | +| `cowgirl_front_view_3_4_angle` | `cowgirl - front view - 3-4 angle` | 6 | `cowgirl` | `camera_reference` | `cowgirl - front view - 3-4 angle/588.jpg` | +| `handjob_laying_front_view_3_4_angle` | `handjob - laying - front view - 3-4 angle` | 4 | `manual_or_toy` | `camera_reference` | `handjob - laying - front view - 3-4 angle/39.jpg` | +| `missionary_front_view_3_4_angle` | `missionary - front view - 3-4 angle` | 1 | `missionary` | `thin_sample` | `missionary - front view - 3-4 angle/17.jpg` | +| `pussy_licking_front_view_3_4_angle` | `pussy licking - front view - 3-4 angle` | 2 | `oral_other` | `thin_sample` | `pussy licking - front view - 3-4 angle/0005.jpg` | + +### Back View + +Rear-facing camera where the back, hips, or rear contact side is closest to frame. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `anus_exposed_back_view` | `anus exposed - back view` | 4 | `display` | `camera_reference` | `anus exposed - back view/0017.jpg` | +| `doggy_press_back_side` | `doggy press - back side` | 1 | `doggy` | `thin_sample` | `doggy press - back side/0011.jpg` | +| `mating_press_backview` | `mating press - backview` | 0 | `missionary` | `empty` | | +| `reverse_cowgirl_back_view` | `reverse cowgirl - back view` | 6 | `reverse_cowgirl` | `camera_reference` | `reverse cowgirl - back view/267.jpg` | +| `woman_solo_showing_her_hass_back_view` | `woman solo showing her hass - back view` | 99 | `display` | `camera_reference` | `woman solo showing her hass - back view/0001.jpg` | + +### Back Three Quarter + +Rear-offset quarter camera, usually showing the rear/action side plus enough torso/face context. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `anal_fuck_from_behind_laying_back_view_3_4_angle` | `anal fuck from behind laying - back view - 3-4 angle` | 1 | `doggy` | `thin_sample` | `anal fuck from behind laying - back view - 3-4 angle/14.jpg` | +| `blowjob_laying_back_view_3_4_angle` | `blowjob laying - back view - 3-4 angle` | 1 | `blowjob` | `thin_sample` | `blowjob laying - back view - 3-4 angle/14.jpg` | +| `cowgirl_back_view_3_4_angle` | `cowgirl - back view - 3-4 angle` | 129 | `cowgirl` | `camera_reference` | `cowgirl - back view - 3-4 angle/0002.jpg` | +| `doggy_back_view_3_4_angle` | `doggy - back view - 3-4 angle` | 35 | `doggy` | `camera_reference` | `doggy - back view - 3-4 angle/0002.jpg` | +| `doggy_on_all_four_back_view_3_4_angle` | `doggy on all four - back view - 3-4 angle` | 69 | `doggy` | `camera_reference` | `doggy on all four - back view - 3-4 angle/0002.jpg` | +| `double_penetration_back_view_3_4_angle` | `double penetration - back view - 3-4 angle` | 1 | `double_contact` | `thin_sample` | `double penetration - back view - 3-4 angle/8.jpg` | +| `double_penetration_bj_and_pen_back_view_3_4_angle` | `double penetration - BJ and Pen - back view - 3-4 angle` | 2 | `double_contact` | `thin_sample` | `double penetration - BJ and Pen - back view - 3-4 angle/8.jpg` | +| `double_penetration_on_her_back_back_view_3_4_angle` | `double penetration on her back- back view - 3-4 angle` | 1 | `double_contact` | `thin_sample` | `double penetration on her back- back view - 3-4 angle/8.jpg` | +| `fuck_from_behind_laying_back_view_3_4_angle` | `fuck from behind laying - back view - 3-4 angle` | 23 | `doggy` | `camera_reference` | `fuck from behind laying - back view - 3-4 angle/0002.jpg` | +| `missionary_leg_folded_back_view_3_4_angle` | `missionary - leg folded - back view 3-4 angle` | 12 | `missionary` | `camera_reference` | `missionary - leg folded - back view 3-4 angle/0002.jpg` | +| `pussy_licking_leg_up_back_view_3_4_angle` | `pussy licking leg up - back view - 3-4 angle` | 1 | `oral_other` | `thin_sample` | `pussy licking leg up - back view - 3-4 angle/0009.jpg` | +| `reverse_cowgirl_backview_3_4_angle` | `reverse cowgirl - backview - 3-4 angle` | 5 | `reverse_cowgirl` | `camera_reference` | `reverse cowgirl - backview - 3-4 angle/207.jpg` | + +### Top View + +Overhead or high downward camera where elevation matters more than azimuth. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `double_blowjob_handjob_topview` | `double blowjob-handjob-topview` | 1 | `double_contact` | `thin_sample` | `double blowjob-handjob-topview/8.jpg` | +| `missionary_top_view` | `missionary - top view` | 1 | `missionary` | `thin_sample` | `missionary - top view/0005.jpg` | + +### Low Angle + +Low camera looking upward or from below the action plane. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `blowjob_low_angle` | `blowjob - low angle` | 1 | `blowjob` | `thin_sample` | `blowjob - low angle/569.jpg` | +| `handjob_standing_low_angle` | `handjob - standing -low angle` | 1 | `manual_or_toy` | `thin_sample` | `handjob - standing -low angle/552.jpg` | + +### Under View + +Under-view camera from below hips/legs or below the body line. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `doggy_underview` | `doggy - underview` | 11 | `doggy` | `camera_reference` | `doggy - underview/0001.jpg` | + +### Mixed Or Unspecified + +Folder name does not lock camera geometry; inspect samples before using as a camera reference. + +| Key | Folder | Images | Family | Status | First sample | +| --- | --- | ---: | --- | --- | --- | +| `69` | `69` | 10 | `oral_other` | `action_reference_only` | `69/0002.jpg` | +| `anal_cowgirl` | `anal cowgirl` | 1 | `cowgirl` | `action_reference_only` | `anal cowgirl/49.jpg` | +| `anal_random` | `anal random` | 99 | `anal` | `action_reference_only` | `anal random/0001.jpg` | +| `anal_reverse_congress` | `anal reverse congress` | 1 | `reverse_congress` | `action_reference_only` | `anal reverse congress/160.jpg` | +| `anus_lickiing` | `anus lickiing` | 1 | `oral_other` | `action_reference_only` | `anus lickiing/0004.jpg` | +| `ballsucking_laying` | `ballsucking - laying` | 2 | `ballsucking` | `action_reference_only` | `ballsucking - laying/271.jpg` | +| `ballsucking_standing` | `ballsucking - standing` | 12 | `ballsucking` | `action_reference_only` | `ballsucking - standing/0014.jpg` | +| `boobjob` | `boobjob` | 19 | `boobjob` | `action_reference_only` | `boobjob/0017.jpg` | +| `breasts_exposed` | `breasts exposed` | 168 | `display` | `action_reference_only` | `breasts exposed/0001.jpg` | +| `couple_kissing` | `couple kissing` | 88 | `couple` | `action_reference_only` | `couple kissing/0001.jpg` | +| `face_sitting` | `face sitting` | 4 | `face_sitting` | `action_reference_only` | `face sitting/0005.jpg` | +| `fingering` | `fingering` | 15 | `manual_or_toy` | `action_reference_only` | `fingering/0001.jpg` | +| `fist` | `fist` | 1 | `manual_or_toy` | `action_reference_only` | `fist/337.jpg` | +| `footjob` | `footjob` | 2 | `manual_or_toy` | `action_reference_only` | `footjob/265.jpg` | +| `penis_worship` | `penis worship` | 49 | `oral_other` | `action_reference_only` | `penis worship/0001.jpg` | +| `piledriver` | `piledriver` | 27 | `piledriver_or_pretzel` | `action_reference_only` | `piledriver/0001.jpg` | +| `pretzel` | `pretzel` | 2 | `piledriver_or_pretzel` | `action_reference_only` | `pretzel/0001.jpg` | +| `pussy_licking_backv_iew` | `pussy licking - backv iew` | 3 | `oral_other` | `action_reference_only` | `pussy licking - backv iew/220.jpg` | +| `pussy_licking_standing_woman` | `pussy licking standing woman` | 1 | `oral_other` | `action_reference_only` | `pussy licking standing woman/13.jpg` | +| `pussy_spread` | `pussy spread` | 100 | `display` | `action_reference_only` | `pussy spread/0001.jpg` | +| `removing_pants` | `removing pants` | 3 | `display` | `action_reference_only` | `removing pants/0005.jpg` | +| `reverse_cowgirl` | `reverse cowgirl` | 240 | `reverse_cowgirl` | `action_reference_only` | `reverse cowgirl/0001.jpg` | +| `reverse_cowgirl_leg_up` | `reverse cowgirl - leg up` | 2 | `reverse_cowgirl` | `action_reference_only` | `reverse cowgirl - leg up/266.jpg` | +| `reverse_cowgirl_pretzel` | `reverse cowgirl -pretzel` | 2 | `reverse_cowgirl` | `action_reference_only` | `reverse cowgirl -pretzel/0007.jpg` | +| `rimjob` | `rimjob` | 3 | `oral_other` | `action_reference_only` | `rimjob/0003.jpg` | +| `under_desk` | `under desk` | 1 | `oral_other` | `action_reference_only` | `under desk/347.jpg` | +| `wand` | `wand` | 9 | `manual_or_toy` | `action_reference_only` | `wand/0005.jpg` | +| `woman_ass_exposed` | `woman ass exposed` | 4 | `display` | `action_reference_only` | `woman ass exposed/40.jpg` | diff --git a/tools/prompt_smoke.py b/tools/prompt_smoke.py index e02b4fd..ca34553 100644 --- a/tools/prompt_smoke.py +++ b/tools/prompt_smoke.py @@ -6862,6 +6862,102 @@ def smoke_krea2_pov_pose_variant_catalog() -> None: _expect(required_keys.issubset(seen_keys), "Krea2 POV pose-variant catalog lost a proven starter variant") +def smoke_normal_camera_atlas_catalog() -> None: + atlas_path = ROOT / "categories" / "normal_camera_atlas.json" + variants_path = ROOT / "categories" / "normal_camera_variants.json" + doc_path = ROOT / "docs" / "normal-camera-atlas.md" + _expect(atlas_path.is_file(), "Normal camera atlas inventory is missing") + _expect(variants_path.is_file(), "Normal camera variant catalog is missing") + _expect(doc_path.is_file(), "Normal camera atlas docs are missing") + + atlas = json.loads(atlas_path.read_text(encoding="utf-8")) + variants_catalog = json.loads(variants_path.read_text(encoding="utf-8")) + _expect(atlas.get("version") == 1, "Normal camera atlas inventory version changed unexpectedly") + _expect(variants_catalog.get("version") == 1, "Normal camera variant catalog version changed unexpectedly") + _expect_text("normal_camera_atlas.atlas_root", atlas.get("atlas_root"), 20) + atlas_scope = atlas.get("scope") if isinstance(atlas.get("scope"), dict) else {} + variant_scope = variants_catalog.get("scope") if isinstance(variants_catalog.get("scope"), dict) else {} + _expect("non-POV" in atlas_scope.get("included", ""), "Normal camera atlas scope lost non-POV inclusion note") + _expect( + "No generator defaults" in atlas_scope.get("generator_behavior", ""), + "Normal camera atlas scope should stay behavior-neutral", + ) + _expect( + "Pre-A/B only" in variant_scope.get("testing_state", ""), + "Normal camera variant catalog should stay pre-A/B only", + ) + + 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") + 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") + + folder_keys: set[str] = set() + folder_names: set[str] = set() + camera_views = set((atlas.get("camera_view_values") or {}).keys()) + action_families = set((atlas.get("action_family_values") or {}).keys()) + catalog_statuses = set((atlas.get("catalog_status_values") or {}).keys()) + for folder in folders: + key = _expect_text("normal_camera_atlas.folder.key", folder.get("key"), 2) + _expect(key not in folder_keys, f"Normal camera atlas has duplicate folder key {key!r}") + folder_keys.add(key) + folder_name = str(folder.get("folder") or "") + _expect(folder_name.strip(), f"{key}.folder is empty") + folder_names.add(folder_name) + _expect(folder.get("camera_view") in camera_views, f"{key} has unknown camera view {folder.get('camera_view')!r}") + _expect(folder.get("action_family") in action_families, f"{key} has unknown action family {folder.get('action_family')!r}") + _expect(folder.get("catalog_status") in catalog_statuses, f"{key} has unknown catalog status {folder.get('catalog_status')!r}") + for ref in folder.get("reference_images") or []: + ref_text = str(ref or "").strip() + _expect(ref_text, f"{key}.reference_image is empty") + _expect(".." not in Path(ref_text).parts, f"{key} reference escapes atlas root: {ref_text!r}") + + variant_statuses = set((variants_catalog.get("status_values") or {}).keys()) + seen_variant_keys: set[str] = set() + required_variants = { + "normal_doggy_all_fours_side_view", + "normal_cowgirl_side_profile", + "normal_missionary_side_profile", + "normal_blowjob_laying_front_view", + "normal_penis_worship_top_view", + "normal_penis_worship_side_view", + "normal_penis_worship_laying_partner_vertical_side_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) + _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") + avoid_cues = variant.get("avoid_cues") + refs = variant.get("reference_images") + _expect(isinstance(prompt_cues, list) and prompt_cues, f"{key} has no prompt cues") + _expect(isinstance(avoid_cues, list) and avoid_cues, f"{key} has no avoid cues") + _expect(isinstance(refs, list) and refs, f"{key} has no reference images") + for folder_name in variant.get("atlas_folders") or []: + _expect(folder_name in folder_names, f"{key} references unknown atlas folder {folder_name!r}") + for ref in refs: + ref_text = str(ref or "").strip() + _expect(ref_text, f"{key}.reference_image is empty") + _expect(".." not in Path(ref_text).parts, f"{key} reference escapes atlas root: {ref_text!r}") + hook = variant.get("generator_hook") or {} + _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") + + 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("penis-worship orientation corrections" in doc, "Normal camera docs lost user-corrected orientation note") + + def _atlas_variant_include_key(variant_key: str) -> str: key = "".join(char if char.isalnum() else "_" for char in str(variant_key).lower().removeprefix("pov_")).strip("_") while "__" in key: @@ -17161,6 +17257,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [ ("insta_pair_camera_split", smoke_insta_pair_camera_split), ("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), ("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),