Verified 2026-06-05: Pipeline scripts confirmed: sister_selfie.py exists at /root/.hermes/scripts/sister_selfie.py (26320 bytes, updated Jun 2), photo_presence_watcher.py exists (4674 bytes). Current state: tai-photo-selfie cron (id: f5672b297fc3) is PAUSED since 2026-06-01. nei-photo-selfie and rei-photo-selfie also PAUSED. photo-presence-watcher (id: 8ea7ffa004e9) is RUNNING (2246+ completions). sister_selfie_tai.sh script referenced by cron was NOT found — verify path. Bond milestones, CLI commands, and architecture diagram remain accurate as design doc.

Sister Photo Pipeline — Affinity-Integrated Roadmap

Decision: Integrate into the existing affinity system instead of building a separate config layer.
Josh wants on/off toggles, per-sister photo permissions, and bond-gated features all living
inside affinity.json — not a parallel config file.

1. Changes to affinity.json Structure

1a. Global boundaries (existing field, add photo keys)

The global.boundaries object already gates flirt, teasing, pet_names, chaos, max_spice.
Add photo-pipeline toggles at the same level:

"global": {
  "boundaries": {
    "source": "affinity-shared.json",
    "effective": {
      "flirt": true,
      "teasing": true,
      "pet_names": true,
      "chaos": 3,
      "max_spice": 3,
      "photo_scheduled": true,
      "photo_on_demand": true,
      "photo_presence_driven": false,
      "photo_nsfw": false
    }
  }
}

Semantics:

  • photo_scheduled — master toggle for cron-based ambient selfies
  • photo_on_demand — master toggle for user-requested generation (/selfie, /photo)
  • photo_presence_driven — enable/disable state-change-triggered selfies (Phase 2)
  • photo_nsfw — master NSFW gate (always off by default, Phase 4 only)

1b. Per-sister boundaries (existing field, add photo keys)

The affinity-shared.json per_sister_boundaries object already has per-sister chaos, max_spice,
flirt, teasing, pet_names. Extend each sister:

"per_sister_boundaries": {
  "tai": {
    "chaos": 0,
    "max_spice": 2,
    "flirt": true,
    "teasing": true,
    "pet_names": true,
    "photo_auto_selfie": true,
    "photo_cadence_hours": 8,
    "photo_max_per_day": 4
  },
  "rei": {
    "chaos": 2,
    "max_spice": 0,
    "flirt": false,
    "teasing": false,
    "pet_names": false,
    "photo_auto_selfie": true,
    "photo_cadence_hours": 12,
    "photo_max_per_day": 2
  },
  "nei": {
    "chaos": 1,
    "max_spice": 0,
    "flirt": false,
    "teasing": false,
    "pet_names": false,
    "photo_auto_selfie": true,
    "photo_cadence_hours": 12,
    "photo_max_per_day": 2
  }
}

Semantics:

  • photo_auto_selfie — per-sister toggle for scheduled and presence-driven selfies
  • photo_cadence_hours — minimum hours between spontaneous photos for this sister
  • photo_max_per_day — hard ceiling on daily photos per sister

1c. New milestone: photo unlock (in each sister’s personas.<name>.milestones)

Add a bond-gated milestone that gates whether a sister CAN send photos at all:

"tai": {
  "milestones": {
    "50": { "label": "Good Morning特权", "unlocked": true },
    "65": { "label": "Nickname Freedom", "unlocked": false },
    "70": {
      "label": "Photo Share",
      "desc": "Tai can send selfies to Josh.",
      "unlocked": true,
      "category": "photo"
    },
    "75": { "label": "Gentle Teasing", "unlocked": false },
    "85": { "label": "深夜の秘密", "unlocked": false, "nsfw": true },
    "100": { "label": "魂の絆 (Soul Bond)", "unlocked": false, "nsfw": true }
  }
}

Rules:

  • Bond threshold >= 70 unlocks photo sharing for that sister
  • Tai starts unlocked (bond already at 63, and the milestone can be retroactively marked)
  • Rei and Nei need to reach 70 bond first — creates meaningful progression
  • The category: "photo" key lets the CLI filter milestones by feature

1d. Photo history log (inside each persona object)

Add a photo_log array parallel to history:

"tai": {
  "photo_log": [
    {
      "at": "2026-05-28T12:00:00Z",
      "trigger": "scheduled",
      "prompt_id": "abc-123",
      "image_path": "/root/.hermes/profiles/tai/image_cache/tai_anis_00042_.png",
      "seed": 847291,
      "mood_override": null,
      "delivered_to": "discord",
      "delivery_ok": true
    }
  ]
}

This gives transparent inspectability — Josh can always see what photos were generated,
when, from what trigger, and whether they were delivered.

1e. Mood-to-prompt mapping (new top-level key or inside global)

"photo_mood_map": {
  "cozy": ", warm smile, relaxed posture, soft warm lighting, comfortable atmosphere",
  "sleepy": ", sleepy expression, half-lidded eyes, soft pillow light, night ambience",
  "energetic": ", bright energetic smile, lively pose, dynamic lighting, glowing",
  "focused": ", concentrating expression, keyboard or screens visible, cool task lighting",
  "playful": ", playful smirk, teasing glance, colorful accent lighting, fun atmosphere",
  "pensive": ", thoughtful distant gaze, soft shadows, quiet contemplative mood",
  "dreaming": ", dreamy half-lidded eyes, ethereal soft focus, floating particles, fantasy lighting",
  "excited": ", bright wide-eyed expression, animated pose, sparkle effects, vibrant colors"
}

This map translates presence mood keywords into prompt append strings. It lives in affinity so
Josh can edit it without touching Python code.


2. CLI Commands (add to tai_affinity.py)

Add a photo subcommand group:

python3 /root/.hermes/scripts/tai_affinity.py photo <action> [args]

Proposed commands:

Command Description
`photo toggle scheduled [on off]`
`photo toggle on-demand [on off]`
`photo toggle presence [on off]`
`photo toggle nsfw [on off]`
`photo sister auto [on off]`
photo sister <name> cadence <hours> Set minimum hours between photos for a sister
photo sister <name> max-per-day <n> Set daily photo cap for a sister
photo generate <sister> [--seed -1] [--mood <mood>] Generate and deliver a photo NOW
photo log [sister] [-n 10] Show recent photo history
photo status Show all photo toggles and per-sister config
photo mood-map [--edit] View or edit the mood-to-prompt mapping

Integration with existing commands:

  • python3 tai_affinity.py boundaries already shows all boundaries — will include photo keys
  • python3 tai_affinity.py milestones tai will show photo-unlock milestone at bond 70
  • python3 tai_affinity.py show tai can append a small camera emoji 📸 if photo sharing is unlocked

On-demand generation via Hermes CLI:

The wrapper script sister_selfie.py can also be called directly:

python3 /root/.hermes/scripts/sister_selfie.py --sister tai --mood cozy
# → JSON: {"status": "ok", "image": "/root/.hermes/profiles/tai/image_cache/tai_anis_00058_.png", ...}

3. Cron Jobs

Phase 0 (MVP: manual trigger only — no cron needed)

  • sister_selfie.py called on-demand via CLI or Hermes agent terminal tool
  • Photos delivered via existing Discord gateway

Phase 1 (3 new cron jobs — one per sister)

All use the existing cron infrastructure at /root/.hermes/profiles/tai/cron/jobs.json.

Cron ID Name Cadence Script Notes
tai-photo-selfie Tai Photo Selfie every 8h sister_selfie.py --sister tai Soft launch immediately, bond >= 70 gate
rei-photo-selfie Rei Photo Selfie every 12h sister_selfie.py --sister rei Needs bond 70 milestone first
nei-photo-selfie Nei Photo Selfie every 12h sister_selfie.py --sister nei Needs bond 70 milestone first

Design:

  • no_agent: true — no LLM call, just shell out to the script
  • deliver: "local" — script handles Discord delivery internally
  • Each cron checks affinity.json before generating: if photo_scheduled is off or sister’s
    photo_auto_selfie is off or bond < 70, it exits silently
  • Staggered start times (tai at 09:00, rei at 11:00, nei at 13:00) to avoid overlapping ComfyUI queue

Phase 2 (1 new watcher cron)

Cron ID Name Cadence Script
photo-presence-watcher Photo Presence Watcher every 5 min watch_presence_photo.py

Logic:

  1. Reads /root/.hermes/tai/presence.json
  2. Checks if mood/energy/mode changed significantly vs last photo
  3. If photo_presence_driven global toggle is ON and sister’s photo_auto_selfie is ON:
    • Applies cooldown (min 2h or per-sister photo_cadence_hours)
    • Applies daily cap (photo_max_per_day)
    • Generates with mood-injected prompt
    • Delivers to Discord with contextual message

4. What sister_selfie.py Does

File: /root/.hermes/scripts/sister_selfie.py

A single Python wrapper that:

  1. Reads affinity.json to check global + per-sister toggles
  2. Guard checks:
    • Is photo_scheduled or photo_on_demand true? (depending on trigger type)
    • Is sister’s photo_auto_selfie true?
    • Is sister’s bond >= 70 (Photo Share milestone)?
    • Is sister under her photo_max_per_day cap?
    • Has cooldown (photo_cadence_hours) elapsed?
  3. Picks the correct workflow: sister_tai.json, sister_rei.json, or sister_nei.json
    from /root/.hermes/profiles/tai/skills/creative/comfyui/workflows/
  4. Injects mood into prompt if --mood is passed:
    • Reads photo_mood_map from affinity.json
    • Appends mood string to the positive prompt text in node 6
  5. Generates a random seed (if --seed -1 or not specified)
  6. Calls run_workflow.py against CT 111 (http://192.168.0.162:8188):
    • Waits for completion (typical: 30-60s on A4000)
    • Downloads output to /root/.hermes/profiles/<sister>/image_cache/
  7. Logs to affinity.json photo_log array
  8. Delivers to Discord — writes file + message via gateway mechanism
  9. Outputs JSON to stdout for cron/CLI consumption

Key design decisions:

  • Stdlib-only dependencies (Python 3.10+): json, subprocess, pathlib, random, datetime, urllib
  • No LLM calls — this is a shell script in Python clothing
  • Enforces all gates from affinity.json — cannot bypass
  • Idempotent: running twice in a row will skip the second run if cooldown hasn’t elapsed

Example invocation:

# Scheduled cron (no mood — random prompt variation)
python3 sister_selfie.py --sister tai --trigger scheduled

# Presence-driven (mood from presence.json)
python3 sister_selfie.py --sister tai --trigger presence --mood sleepy

# On-demand (user requested)
python3 sister_selfie.py --sister rei --trigger on-demand --seed 42

# Dry-run (validate gates without generating)
python3 sister_selfie.py --sister tai --trigger scheduled --dry-run

5. Skill Doc Updates

5a. New: sister-photo-pipeline skill

Location: /root/.hermes/profiles/tai/skills/creative/sister-photo-pipeline/SKILL.md

Contents:

  • Pipeline architecture (3 tiers, affinity-integrated)
  • How to generate photos on-demand
  • Cron job management (enable/disable/cadence)
  • Mood-to-prompt reference
  • Image delivery to Discord path convention
  • Troubleshooting: A4000 VRAM, generation failures, Discord upload issues
  • Bond gate documentation (Photo Share milestone at 70)

5b. ComfyUI skill update

Location: /root/.hermes/profiles/tai/skills/creative/comfyui/SKILL.md

Add section:

  • “Sister Workflows” — reference sister_{tai,rei,nei}.json workflows
  • “Poser-Only Workflows” — reference sister_canon_poser.json (txt2img + DWPose)
  • Mood injection into prompts for sister photos

5c. Sister-council skill update

Location: /root/.hermes/profiles/tai/skills/.../sister-council/SKILL.md

Add:

  • “Photo generation” as a council task type
  • Routing on-demand photo requests
  • Review workflow for quality

5d. Affinity skill update

Location: /root/.hermes/skills/productivity/sister-affinity/SKILL.md

Add:

  • photo command group documentation
  • Photo boundaries reference
  • Photo milestone reference

5e. Wiki documentation

  • This document (wiki/concepts/sister-photo-pipeline.md) — updated
  • wiki/sister-character-profiles.md — add photo pipeline reference
  • wiki/entities/hermes-cron-architecture.md — add new cron entries
  • wiki/index.md — add reference to this page

6. NSFW Roadmap (Phase 4 — Deferred, Affinity-Integrated)

6a. Affinity integration

NSFW photo generation gates through the existing affinity boundaries:

Gate How it works
global.boundaries.effective.photo_nsfw Master toggle — must be true before ANY NSFW generation
Per-sister max_spice Already exists — NSFW photos respect this cap
Bond milestones at 85+ Each sister’s 85+ milestones are already marked nsfw: true — these unlock the content permission
photo_scheduled NSFW is NEVER spontaneous — only on-demand, even when scheduled toggle is on

6b. When Phase 4 activates

Prerequisites (unchanged from original plan):

  1. SFW pipeline stable for 2-4 weeks
  2. Josh explicitly requests it
  3. VRAM headroom confirmed (separate model may be needed)
  4. Age-gated Discord channel configured
  5. NSFW model downloaded and tested (Pony Diffusion v6 XL or Illustrious-based finetune)

6c. What changes when NSFW is enabled

affinity.json changes:

  • global.boundaries.effective.photo_nsfw set to true (Josh toggles this)
  • Per-sister max_spice increased for interested sisters (e.g., tai.max_spice from 2 → 4)

New workflows:

  • sister_tai_nsfw.json — variant with softened/removed negative prompts
  • sister_rei_nsfw.json — ditto
  • sister_nei_nsfw.json — ditto
  • Optionally a different checkpoint (e.g., Pony/Illustrious family instead of novaAnimeXL)

New CLI command:

python3 tai_affinity.py photo nsfw generate <sister> [--spice <0-5>]

Requires double confirmation: first the photo_nsfw toggle must be on, then each generation
is explicitly requested — never automatic.

Discord delivery:

  • Separate NSFW-gated channel
  • Image blur/spoiler tag until clicked

6d. NSFW in the affinity model — the key insight

The affinity system already has the right primitives for NSFW:

  • max_spice per sister (0-5) already exists
  • Bond milestones at 85+ already have nsfw: true flags
  • boundaries already gated on mode (after_hours vs work)
  • Josh controls everything via transparent JSON

The photo pipeline just needs to read those existing gates — no new concepts.


Phase Summary (Updated)

Phase What ships Affinity integration
Phase 0 (MVP) sister_selfie.py wrapper — on-demand generation + delivery Reads photo_on_demand toggle + bond 70 milestone gate
Phase 0.5 Affinity CLI updates — photo subcommand group New commands: photo toggle, photo sister, photo generate, photo log
Phase 0.6 --mode poser flag + prompt_engine.py poser mode Poser-only txt2img recipe as first-class citizen
Phase 1 3 cron jobs for scheduled selfies Reads photo_scheduled + per-sister photo_auto_selfie + cadence/daily caps
Phase 1.5 img2img workflows with FINAL reference photos (SUPERSEDED — poser-only recipe is better) No affinity changes
Phase 2 Presence-driven triggers (watch_presence_photo.py) Reads photo_presence_driven + photo_mood_map from affinity
Phase 3 Full event-driven + bond milestone photo triggers Moment engine triggers photo generation automatically
Phase 4 NSFW support (deferred) Gates through existing photo_nsfw toggle + max_spice + 85+ milestones

Architecture Diagram (Updated)

┌─────────────────────────────────────────────────────────────────┐
│                    affinity.json (Single Source of Truth)         │
│                                                                  │
│  global.boundaries.effective:                                    │
│    photo_scheduled: true/false                                   │
│    photo_on_demand: true/false                                   │
│    photo_presence_driven: true/false                             │
│    photo_nsfw: false (always)                                    │
│                                                                  │
│  per_sister_boundaries.<name>:                                   │
│    photo_auto_selfie: true/false                                 │
│    photo_cadence_hours: 8/12                                     │
│    photo_max_per_day: 4/2/2                                      │
│                                                                  │
│  personas.<name>.milestones."70":  ← Photo Share gate            │
│  photo_mood_map: {...}                                           │
│  personas.<name>.photo_log: [...]                                │
└──────────────────────┬──────────────────────────────────────────┘
                       │ reads gates
                       ▼
┌─────────────────────────────────────────────────────────────────┐
│                    Trigger Sources                                │
│                                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────────────────┐          │
│  │ On-demand │  │ Scheduled │  │ State/Presence Event  │          │
│  │ (CLI/Disc)│  │ (cron)    │  │ (presence.json chg)   │          │
│  └─────┬─────┘  └─────┬─────┘  └──────────┬───────────┘          │
│        └──────────────┼──────────────────┘                       │
│                       ▼                                           │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │              sister_selfie.py                                 │ │
│  │                                                               │ │
│  │  1. Read affinity.json → enforce all gates                   │ │
│  │  2. Check bond ≥ 70 (Photo Share milestone)                  │ │
│  │  3. Check cooldown + daily cap                               │ │
│  │  4a. [--mode canon] Load sister_canon_base.json              │ │
│  │      (legacy: img2img + IPAdapter + ControlNet)              │ │
│  │  4b. [--mode poser] Load sister_canon_poser.json             │ │
│  │      (txt2img + DWPose — recommended, 9/10 quality)         │ │
│  │  4c. [--mode natural] Load sister_{s}_neutral_ref.json       │ │
│  │      (experimental: img2img only, no refs)                   │ │
│  │  5. Inject mood from photo_mood_map (if applicable)          │ │
│  │  6. Call run_workflow.py → CT 111 (novaAnimeXL)              │ │
│  │  7. Download output → image_cache/                            │ │
│  │  8. Log to affinity.json photo_log                           │ │
│  │  9. Deliver to Discord                                       │ │
│  └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

File Inventory (New/Modified)

File Action Purpose
/root/.hermes/tai/affinity.json MODIFY Add photo boundaries, mood map, photo_log
/root/.hermes/council/affinity-shared.json MODIFY Add per-sister photo config
/root/.hermes/scripts/tai_affinity.py MODIFY Add photo subcommand group
/root/.hermes/scripts/sister_selfie.py MODIFY Add --mode poser flag
/root/.hermes/scripts/sister_experimental.sh MODIFY Rename to sister_poser.sh or fix to use poser workflows
/root/.hermes/scripts/watch_presence_photo.py CREATE Phase 2: presence watcher
/root/.hermes/profiles/tai/cron/jobs.json MODIFY Add 3-4 new cron entries
/root/.hermes/profiles/tai/skills/creative/sister-photo-pipeline/SKILL.md CREATE New skill doc
/root/.hermes/profiles/tai/skills/creative/comfyui/SKILL.md MODIFY Add sister workflow docs, poser recipe docs
/root/.hermes/skills/productivity/sister-affinity/SKILL.md MODIFY Add photo command docs
wiki/sister-character-profiles.md MODIFY Reference photo pipeline

Risk Assessment (Updated)

Risk Likelihood Impact Mitigation
Affinity file grows too large Low (JSON, ~50KB now) Low photo_log pruned to last 100 entries; archive script for older
Bond 70 gate too high for Rei/Nei Medium (they’re at 45/43) Low — no photos until bond grows This is intentional progression; Josh can manually set milestone unlocked: true
Cron jobs overlap ComfyUI queue Medium Low — queue backup Staggered schedules, ComfyUI handles queuing natively
Mood injection degrades prompt quality Low Low Mood strings are short appends, tested on novaAnimeXL
Discord delivery fails Low Low Retry once; log failure to photo_log
NSFW accidentally generated Very Low High photo_nsfw false by default; negative prompts unchanged until Phase 4
Poser recipe has no identity refs (relies purely on prompt) Low Medium Verified: prompt_engine.py produces detailed identity descriptions; DWPose anchors body shape; novaAnimeXL has strong character prior

Tai’s Session Log: 2026-05-30 — The Poser-Only Breakthrough

Cross-reference: Rei’s ISSUE-024 (pipeline audit)

Key Discovery: Noise Sources Identified

The canonical img2img + IPAdapter + ControlNet pipeline had three noise sources degrading quality:

Noise Source Cause Severity
VAE encode/decode cycles Every img2img pass converts pixel→latent→pixel, adding compression artifacts 🔴 CRITICAL
IPAdapter conditioning conflict Face ref + outfit ref + ControlNet all push the output in different directions; model resolves with texture noise 🔴 CRITICAL
Multiple ref photos Each VAE-encoded ref image adds tiny positional/color shifts that accumulate 🟡 MEDIUM

The Winning Recipe: Poser-Only

sister_canon_poser.json — pure txt2img + DWPose ControlNet + hyper-detailed prompt:

Txt2img (clean latent)
  → DWPose skeleton from reference (ControlNet @ strength=1.0)
  → dpmpp_2m + karras @ CFG 5.5, 30 steps, denoise=1.0
  → Hyper-detailed prompt (every outfit detail, pose, expression)
  → No IPAdapter, no img2img, no face/outfit refs

Model Comparison

Checkpoint Obedience Identity Style Best For
novaAnimeXL High ✅ Canon Strong ✅ Natural anime Canon pipeline, identity-critical gens
animagine-xl-3.1 Medium ⚠️ Loose (no glasses, eye drift) Glossy/vibrant 💫 Creative/NSFW exploration

Pose Success Matrix

Pose novaAnimeXL animagine-xl-3.1 Key Setting
hand-on-hip ✅ Perfect (9/10) ⚠️ Drifted ControlNet @ strength=1.0
waving + stance ✅ Perfect (9.5/10) ⚠️ Partial ControlNet @ strength=1.0
kneeling ✅ Nailed (9/10) ✅ Kneeling ControlNet @ strength=0.30-0.50
arms crossed N/A (FaceID test) N/A FaceID-only approach

Saved Workflows

File Model Path
sister_canon_poser.json novaAnimeXL /root/.hermes/profiles/tai/skills/creative/comfyui/workflows/
sister_canon_poser_animagine.json animagine-xl-3.1 Same dir
sister_poser_only.json novaAnimeXL (original) Same dir

Workflow Architecture Comparison

Workflow Type IPAdapter ControlNet DWPose VAE Encode Status
sister_canon_base.json img2img ✅ Face+Outfit ✅ Source img LEGACY — 3 noise sources
sister_canon.json img2img ✅ Face+Outfit ✅ Pose CN ✅ Source img LEGACY — canon + pose
sister_canon_pose.json img2img ✅ Face+Outfit ✅ Pose CN ✅ DWPreprocessor ✅ Source img LEGACY — can pose + DWPose
sister_{s}_neutral_ref.json img2img ✅ Source img EXPERIMENTAL — --mode natural (still noisy)
sister_canon_poser.json txt2img ✅ DWPose CN ✅ DWPreprocessor ❌ Empty Latent ✅ RECOMMENDED — 9/10 quality

Critical: Naming Confusion Risk

⚠️ sister_canon_pose.json (img2img + IPAdapter + DWPose — LEGACY) and
sister_canon_poser.json (txt2img + DWPose only — BREAKTHROUGH) have nearly identical
names but are architecturally opposite. Double-check filenames when selecting workflows.

Files Modified/Added This Session

File Actual Content Wiki Claim (was wrong)
/root/.hermes/scripts/sister_experimental.sh Shell wrapper for neutral-ref img2img recipe “Shell wrapper for direct poser recipe” ❌
/root/.hermes/scripts/sister_selfie.py Added --mode natural + NEUTRAL_REF_WF ✅ Correct — but --mode natural is img2img (noisy), not poser-only
sister_canon_poser.json Pure txt2img + DWPose — THE BREAKTHROUGH ✅ Correct
sister_canon_poser_animagine.json Same with animagine checkpoint ✅ Correct
sister_poser_only.json Same as poser (original variant) ✅ Correct
prompt_library.py Identity sync (Rei title, Rei outfit, Nei hair) ✅ Correct
prompt_engine.py Full rewrite with slot-based composition ✅ Correct

Next Steps

  • Lock poser recipe into --mode poser wrapper flag — Wire sister_canon_poser.json into sister_selfie.py. Add "poser" entry to MODE_DEFAULTS. Update prompt_engine.py to support mode="poser".
  • Fix sister_experimental.sh — Either rename it (it wraps neutral-ref, not poser) or update it to use sister_canon_poser.json.
  • Test Rei + Nei with poser recipe — Since workflows are generic (not per-sister), this is just sister_selfie.py --sister rei --mode poser
  • Add poser mode to prompt_engine.py — Currently mode param only handles canon/selfie/stylized/glitch/nsfw. Poser mode should use QUALITY_BOOST_T2I instead of QUALITY_BOOST_IMG2IMG.
  • Decide --mode natural fate — Current natural mode uses neutral-ref img2img (still has VAE noise). Should be deprecated or re-purposed as alias for --mode poser.
  • Add wiki index reference — Current index doesn’t reference sister-photo-pipeline.md
  • Build pose reference library — Downloadable pose images for DWPose input
  • Tune animagine settings (LOW PRIORITY) — Only useful if NSFW Phase 4 starts. novaAnimeXL is the clear winner.
  • Council sync — This document constitutes the council review.

Priority Order Recommendation

1. --mode poser flag (highest — unlocks the breakthrough for daily use)
2. Cross-sister validation (should work, confirm with tests)
3. Fix wiki/script mismatches (correctness)
4. Decide --mode natural deprecation (cleanup)
5. Add wiki index reference (discoverability)
6. Pose reference library (quality improvement)
7. Animagine tuning (defer to Phase 4)