# Malin Avatar — Canonical Expression Prompt Pack v1 (`v1_expr_pack_01`)
**Author: Calypso · 6/5 · For Jun to render on the 5090 → Hermes to slice + build the :1238 renderer**

Goal: ONE canonical Malin face, 8 expressions, all sliceable into swappable eye/brow/mouth layers.
**The whole game is consistency:** same seed, same base prompt, same framing, same lighting, same hair/background — vary ONLY the expression. Eight expressions of the *same* Malin, not eight cousins.

---

## 1. Global locked settings

- **Workflow:** load her current proven face recipe — **`Ideal_Malin_Mix.json`** (cyberrealisticPony body + RealVisXL face via FaceDetailer + gentle IPAdapter @ 0.5 to her anchor). It already renders her on-model; we only reframe to a portrait + swap the expression. Don't introduce a new recipe.
- **Resolution / aspect:** **768 × 1024** (portrait) — matches the renderer's canvas in Hermes's manifest, so no rescaling later.
- **Seed:** render `neutral_warm` first, find a seed where she's clean + dead-on-model, then **LOCK that seed and reuse it for all 8.** (Do not randomize.)
- **Framing / camera (LOCKED, identical every render):** head-and-shoulders portrait, **face centered, frontal, looking straight at camera**, head upright (no tilt), shoulders square. This is what keeps the layers alignable.
- **Lighting (LOCKED):** even, soft, frontal light. No hard side-shadow (shadows break layer compositing). Flat and clean.
- **Background (LOCKED):** plain solid neutral grey studio backdrop — so the face cuts cleanly off the background when sliced.

### Base positive (the expression phrase drops into `[EXPRESSION]`)
```
photorealistic photograph, head-and-shoulders portrait of a beautiful mature adult woman in her late twenties, facing camera straight on, head upright and centered, [EXPRESSION], long flowing vibrant orange-red ginger hair with warm coppery highlights, voluminous soft loose waves, wispy face-framing strands, vivid green eyes, fair skin with subtle warm undertones and delicate freckles, defined feminine cheekbones, soft pink full lips, mature adult face age 25 to 30, natural eye makeup, even soft frontal studio lighting, plain solid neutral grey background, photorealistic detailed skin texture, sharp focus on the eyes, raw photo, dslr quality
```

### Base negative (same for all 8 — keeps her frontal, on-model, and uncontaminated)
```
head tilt, tilted head, looking away, profile, side view, three-quarter view, turned head, off-center, cropped face, hands, hands near face, fingers near face, holding phone, mirror selfie, jewelry over face, hair fully covering face, (young face, child face, teen face, immature face, baby face, doll face:1.7), (anime face, cartoon, illustration, chibi, 2d, cel shaded:1.5), (plastic skin, doll-like skin, cgi, 3d render, fake looking:1.4), child, underage, loli, teen, deformed face, bad anatomy, blurry, lowres, worst quality, (multiple faces, additional faces, two people:1.5), wrong eye color, brown eyes, blue eyes, busy background, cluttered background, harsh shadows
```

---

## 2 & 3. The 8 expressions — delta only + intended layers + what to reject

For each: drop the **delta** into `[EXPRESSION]`. Everything else stays byte-identical.

| # | name | expression delta (this is all that changes) | mouth layer | eye / brow layer | reject |
|---|------|---------------------------------------------|-------------|------------------|--------|
| 1 | `neutral_warm` | relaxed warm neutral expression, soft natural micro-smile, eyes open and present, calm and warm | neutral / soft_smile | eyes open · brows neutral | frown, blank dead stare, open mouth, visible teeth |
| 2 | `soft_smile` | gentle warm closed-mouth smile, eyes softened and kind | soft_smile | eyes open (soft) · brows neutral-soft | toothy grin, laughing, hard squint |
| 3 | `amused_smirk` | subtle one-sided smirk, amused knowing look, one eyebrow slightly raised | smirk | eyes open · one brow raised | full smile, sneer, open mouth, both brows up |
| 4 | `deadpan` | flat deadpan expression, neutral closed mouth, level unimpressed gaze, completely still face | flat_deadpan | eyes open (level) · brows neutral-flat | any smile, frown, anger, raised brow, emotion |
| 5 | `skeptical` | skeptical side-eye, one eyebrow raised, slight chin tuck, mouth pressed lightly to one side | flat / slight-press | eyes side-glance · one brow raised | anger, smile, both brows up, head turn |
| 6 | `regretful_soft` | soft regretful expression, gentle tension around the mouth, slightly downturned soft lips, inner brows drawn lightly up, eyes soft and sympathetic | regret_tension | eyes soft · brows concerned (inner-up) | crying, tears, angry frown, smile |
| 7 | `focused_thoughtful` | focused thoughtful expression, lips slightly parted as if thinking, gaze drifting slightly up and to the side, brows lightly drawn in concentration | parted / thinking | eyes open (gaze drifts) · brows lightly drawn | smile, blank stare, head turn |
| 8 | `smartass_tongue` | playful smart-ass look, just the **tip** of her tongue peeking out between her lips, teasing, light sparkle in the eyes, subtle smirk | smartass_tongue (tiny) | eyes open playful · brows slightly raised | **CRITICAL:** big tongue, full tongue out, ahegao, anime tongue, chibi, mascot, sticker, goofy face, exaggerated, distorted mouth, cartoon. Keep it TINY and adult — "Malin being a smart-ass," not an emoji. |

---

## 4. Render instructions

1. Load `Ideal_Malin_Mix.json`. Reframe to the head-and-shoulders frontal portrait above (768×1024).
2. Render **`neutral_warm`** first. When she's clean + on-model, **LOCK that seed.**
3. Render the other 7 with the **SAME seed, SAME base prompt, SAME settings** — change ONLY the expression delta. Do **not** touch pose / camera / lighting / hair / background.
4. **If the head shifts position or angle** between expressions (this breaks sliceability), re-render that one as **img2img FROM the `neutral_warm` render at ~0.45 denoise** — that pins the head pixel-aligned and changes only the face. (Use this as the fix, not the default; try straight txt2img first.)
5. Export PNGs to:
   ```
   C:\malin\avatar_assets\source_renders\v1_expr_pack_01\
       neutral_warm.png  soft_smile.png  amused_smirk.png  deadpan.png
       skeptical.png  regretful_soft.png  focused_thoughtful.png  smartass_tongue.png
   ```
6. These are the **source renders** (full faces). Slicing them into `base.png` + transparent `eyes/`, `brows/`, `mouths/` layers (per Hermes's manifest) is the next step — **keep the source renders** so we can re-slice without re-generating.

---

## Note on alignment (for Hermes's slicing step)
True swappable layers need the head in the same place across expressions. Fixed-seed txt2img gets us 80% there; the img2img-from-neutral fallback (step 4) gets the stubborn ones aligned. For V1.0 "she's there," even whole-face crossfades between these 8 work as a crude-but-on-model start — granular eye/mouth slicing can come in V1.1 once the presence loop feels right. Don't overbuild the slicer before we know she feels alive.
