# Malin FC Avatar — Eyebrow / Emotion Spec (`brow_spec_v1`)
**Author: Calypso · 6/6 · Research → executable spec for making the FC expressions READ**

Jun's brief: research the function of eyebrow movement and implement it to optimize emotional communication in the FC. The expression layers were rendering too *flat/subtle*; the brow is the fix.

## The science (FACS — Facial Action Coding System)
Three brow Action Units carry most emotional signal (muscles: **frontalis** raises, **corrugator supercilii** pulls inward+down):
- **AU1 — Inner-brow raise** → sadness, concern, surprise, interest. Inner corners up.
- **AU2 — Outer-brow raise** → openness; **ONE side only = knowing / amused / skeptical.**
- **AU4 — Brow lower + draw-together** (the furrow) → focus, concentration, anger.

**THE BIG LEVER = ASYMMETRY.** One brow raised reads instantly as knowing/skeptical/amused; **symmetric brows read flat** — the exact readability failure on the contact sheets. **Oblique brows (inner corners UP + drawn together) = the most reliable *sadness* signal there is, louder than any mouth.**

## Per-expression brow spec (bake into each expression's prompt + brow-mask render)
| expression | brow action | prompt language |
|---|---|---|
| neutral_warm | rest | brows relaxed at rest |
| soft_smile | slight raise, open | brows softly raised, relaxed and open |
| amused_smirk | ONE outer-raise (asymmetric) | one eyebrow raised on the smirk side, knowing |
| deadpan | flat, level, still | brows flat and level, completely still, unimpressed |
| skeptical | one HIGH + other level (strong asymmetry) | one eyebrow raised high, the other level — sharp skeptical arch |
| regretful_soft | AU1 oblique | inner brow corners raised and drawn together (oblique sad brows) |
| focused_thoughtful | AU4 furrow | brows drawn together and slightly lowered, concentrated |
| smartass_tongue → **smartass_smirk** | ONE cocked HIGH + sharp smirk, **NO TONGUE** | one eyebrow cocked high + a sharp one-sided smirk; mouth closed or barely parted |

## Key implementation notes
1. **Brows carry more than the mouth** for these emotions — the brow-mask render is as important as the mouth-mask. Push the brow-mask denoise so the brow actually MOVES (it was too static).
2. **Lean into asymmetry** (one brow up) for amused / skeptical / smartass — highest-impact single change for readability.
3. **★ DROP THE TONGUE on smartass (Jun, 6/6):** the tongue fought us the whole way — first no tongue, then at high denoise it rendered out the SIDE of the mouth ("terrifying… *vomit*"). A smartass reads from the BROW + smirk, not the tongue. Rename intent to **smartass_smirk**: one cocked brow + sharp one-sided smirk, zero tongue. Reliable, readable, no body-horror.
4. Keep the masks TIGHT (brow/forehead region only, no eyes — eyes belong to the blink layer; no nose — it warps at high denoise) so the freckles/skin stay locked per [[project_malin_look]] freckle guard.

## CHEEKS (added 6/6, Jun's 2nd research ask) — the genuine-warmth channel
**The genuine-smile marker is the CHEEK + EYE, not the mouth (FACS):**
- Real (Duchenne) smile = **AU12 lip-corner pull + AU6 cheek-raise** (orbicularis oculi) → cheeks lift, outer eyes crinkle (crow's-feet).
- Fake/social smile = AU12 only → mouth smiles, cheeks + eyes stay flat → reads insincere/flat.
- (Caveat from the lit: some argue AU6 is partly an artifact of smile *intensity* — practically irrelevant for us; the cheek-raise is what makes a smile read warm.)

**THE UNIFYING THESIS (why the layers were flat):** mouth-alone = flat. Real expression = **BROW + CHEEK + MOUTH together.**
- **CHEEKS** carry the *warm/positive* emotions (smile reads real).
- **BROWS** carry the *cognitive/negative* ones (sad/skeptical/focused) + asymmetry for knowing/amused.

**Per-expression cheek spec:**
| expression | cheek |
|---|---|
| neutral_warm | soft, relaxed |
| soft_smile | **cheek-raise + slight outer-eye crinkle** (critical — the warmth marker) |
| amused_smirk | asymmetric cheek-raise (smirk side) + slight crinkle |
| deadpan | flat, NO raise (flatness reads unimpressed) |
| skeptical | neutral, faint one-sided tension |
| regretful_soft | soft/slack, no raise |
| focused_thoughtful | neutral |
| smartass_smirk | asymmetric cheek-raise + cocked brow |

## ★★ REFERENCE-CONFIRMED PER-EXPRESSION SPEC (from Jun's OWN expression photos, 6/6 — AUTHORITATIVE)
Jun posted reference photos of himself making each expression ("his expression, her face"). These SUPERSEDE the research-guesses above where they differ — the photos corrected several of my calls (noted ⚠️):
- **neutral_warm** — relaxed, soft warmth. ✅ already works.
- **soft_smile** — [awaiting Jun's ref] cheek-raise + eye-crinkle + warm relaxed brow (genuine Duchenne, NOT mouth-only — that's why it read "reluctant/whatever").
- **amused_smirk** — [awaiting ref] asymmetric one-sided cheek/lip raise + slight brow, knowing (read flat = mouth-only).
- **deadpan** — fully RELAXED face, zero tension. Eyes level + relaxed (open, NOT wide — ⚠️ wide = the "alert observation" bug). Mouth at rest, no press. Brows neutral. = neutral_warm minus the warmth.
- **judging/unimpressed** (deadpan variant) — deadpan + slightly HOODED eyes + faint mouth press. Cool disapproval.
- **skeptical** — ⚠️ NOT a big one-brow raise (my research overshot). It's NARROWED eyes (lids lowered/tightened, appraising) + lips PRESSED + pushed to one side (asymmetric, corners faint-down) + only a SUBTLE brow draw. Carried by eyes+mouth, not the brow.
- **regretful** — ⚠️ barely a muscle pull; it's GAZE DOWN + away (averted) + heavy lowered lids + slack/relaxed face + lips parted (barely → soft sigh) + faint inner-brow. **Uses the avatar's gaze system** (eyes look down+away), not just muscle layers.
- **focused_thoughtful** (= eager LISTENING) — ⚠️ NOT a concentration furrow (my research said furrow → reads confused). It's OPEN: eyes wide + bright, engaged direct gaze + brows slightly RAISED (light) + mouth closed/relaxed, faint almost-smile. She's *listening to him* → open-engaged is right.
- **smartass** — ⚠️ the tongue WORKS done right (I killed it too fast): tongue out + STRAIGHT DOWN + centered (playful blep), NEVER out the side (sideways = the body-horror bug). Add head tilt + eyes rolled up-and-side + cocked brow. **Live-avatar motion idea (Jun): head-swivel pendulum + eye-roll up-and-across** = the dynamic smartass.

**META-LESSON (the photo-reference approach earned this):** real human references beat FACS-from-memory — they corrected my brow-overshoot (skeptical), my furrow call (focused), and my premature tongue-kill (smartass). When an expression "doesn't read," check a real reference before guessing harder. Reference photos archived in the telegram inbox (epoch ~1780708855–1780709394).

Sources: neurolaunch.com/eyebrow-emotions · biopac.com/facial-action-units (FACS, brows) · imotions.com Duchenne-smile (cheeks/AU6) · Jun's own reference photos (6/6, authoritative). Links: [[project_malin_avatar]], [[malin_avatar_control_layer_pack]] (mouth layers).
