# Meatsuit recipe.json — the data contract

Every saved meatsuit persists a *recipe*, not just a flat picture, so one build
serves all three outputs (downloadable PNG, game/sprite feed, profile image) and
can re-render at any size. This is the seam between the generator and the game.

```json
{
  "meatsuit": "stal-captain-jax",     // <house>-<slug(name)>, the stable id
  "name": "Captain Jax",
  "house": "stal",                    // primary house = the torso's house
  "layers": {                          // one entry per filled slot; parts may
    "torso": { "house": "stal", "file": "torso-1.png" },   //   mix across houses
    "head":  { "house": "stal", "file": "head-1.png" },
    "nose":  { "house": "stal", "file": "nose-1.png" },
    "mouth": { "house": "stal", "file": "mouth-1.png" },
    "eyes":  { "house": "stal", "file": "eyes-2.png" },
    "hair":  { "house": "stal", "file": "hair-1.png" }
  },
  "z_order": ["head","torso","nose","mouth","eyes","hair"],  // bottom -> top
  "skin_palette": "medium",           // palette id from palettes.json (or null)
  "hair_palette": null,
  "eyes_palette": null,
  "detail": 0,                         // despeckle/detail level
  "canvas": [64, 64],                  // every part composites onto this grid
  "created": "2026-07-07T00:00:00+00:00"
}
```

Alongside recipe.json, a save writes `meatsuit.png` (flat 64x64) and
`meatsuit-profile.png` (8x = 512x512, nearest-neighbor). Compositing z-order puts
HEAD behind the torso so the neck/shoulders overlap the head base; facial parts
and hair paint on top.

Slots: torso, head, nose, mouth, eyes, hair (single-select, at most one each).
Eyes carry a companion `<stem>.iris.png` mask beside them for iris tinting.
