{
  "character_asset_id": "char_godfortune_boy_dosa",
  "created_at": "2026-05-20T07:43:24Z",
  "updated_at": "2026-05-20T08:12:46Z",
  "status": "mouth_shape_puppet_proof_generated",
  "reference_image": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/reference/openrouter_selected/main_animation_ready_reference.png",
  "passes": {
    "first_pass": {
      "path": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/first_pass",
      "method": "txt2img with IPAdapter reference guidance",
      "assessment": "Generated successfully but character identity drifted too much. Keep only as technical baseline/history."
    },
    "second_pass": {
      "path": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/second_pass",
      "method": "img2img with VAEEncode reference latent and IPAdapter guidance",
      "assessment": "Character identity is much more stable. Expression variation is still weak and needs a stronger expression strategy."
    },
    "face_pass": {
      "path": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/face_pass",
      "method": "face-focused img2img from cropped head and upper-body reference",
      "assessment": "Expression variation improved slightly, but the model still does not separate deadpan, shock, verdict, and singing strongly enough."
    },
    "puppet_pass_v2": {
      "path": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2",
      "method": "deterministic SVG mouth/eyebrow overlays composited onto a fixed face reference",
      "assessment": "Best current path for controllable TTS/singing mouth shapes. Visual polish needs refinement, but identity is fully stable and timing can be automated."
    },
    "puppet_pass_v4": {
      "path": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v4",
      "method": "cleanup original brows and mouth, then composite new mouth/eyebrow controls",
      "assessment": "Reduces double mouth artifacts, but eyebrow cleanup patches are still visually noticeable."
    },
    "puppet_mouth_pass_v1": {
      "path": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1",
      "method": "cleanup original mouth only, preserve original eyes and eyebrows, then composite deterministic mouth shapes",
      "assessment": "Best current baseline for TTS/singing mouth control. It avoids duplicate eyebrows and duplicate mouth artifacts."
    }
  },
  "face_reference": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/reference/face_focus/main_face_reference.png",
  "puppet_pass_v2_outputs": {
    "contact_sheet": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2/puppet_expression_contact_sheet.png",
    "preview_loop": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2/puppet_expression_loop.mp4",
    "big_smile": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2/godfortune_boy_dosa_puppet_big_smile.png",
    "shock": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2/godfortune_boy_dosa_puppet_shock.png",
    "deadpan": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2/godfortune_boy_dosa_puppet_deadpan.png",
    "singing_a": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2/godfortune_boy_dosa_puppet_singing_a.png",
    "verdict": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_pass_v2/godfortune_boy_dosa_puppet_verdict.png"
  },
  "puppet_mouth_pass_v1_outputs": {
    "contact_sheet": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/mouth_shape_contact_sheet.png",
    "preview_loop": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/mouth_shape_loop.mp4",
    "closed": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/godfortune_boy_dosa_mouth_closed.png",
    "a": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/godfortune_boy_dosa_mouth_a.png",
    "e": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/godfortune_boy_dosa_mouth_e.png",
    "o": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/godfortune_boy_dosa_mouth_o.png",
    "u": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/godfortune_boy_dosa_mouth_u.png",
    "smile": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/puppet_mouth_pass_v1/godfortune_boy_dosa_mouth_smile.png"
  },
  "second_pass_outputs": {
    "contact_sheet": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/second_pass/expression_second_pass_contact_sheet.png",
    "blank_stare": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/second_pass/godfortune_boy_dosa_expr2_blank_stare_00001_.png",
    "final_verdict": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/second_pass/godfortune_boy_dosa_expr2_final_verdict_00001_.png",
    "singing_mouth_open": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/second_pass/godfortune_boy_dosa_expr2_singing_mouth_open_00001_.png",
    "smile": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/second_pass/godfortune_boy_dosa_expr2_smile_00001_.png",
    "surprised": "/data/studio-core/artifacts/character_assets/char_godfortune_boy_dosa/expressions/second_pass/godfortune_boy_dosa_expr2_surprised_00001_.png"
  },
  "workflow_files": [
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression-smile.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression-surprised.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression-blank-stare.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression-singing-mouth-open.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression-final-verdict.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression2-smile.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression2-surprised.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression2-blank-stare.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression2-singing-mouth-open.json",
    "/data/studio-core/tmp/comfyui-workflows/godfortune-boy-dosa-expression2-final-verdict.json"
  ],
  "performance_logs": [
    "/data/studio-core/logs/perf/20260520T074017Z-godfortune-expression-smile",
    "/data/studio-core/logs/perf/20260520T074025Z-godfortune-expression-surprised",
    "/data/studio-core/logs/perf/20260520T074031Z-godfortune-expression-blank-stare",
    "/data/studio-core/logs/perf/20260520T074037Z-godfortune-expression-singing-mouth-open",
    "/data/studio-core/logs/perf/20260520T074044Z-godfortune-expression-final-verdict",
    "/data/studio-core/logs/perf/20260520T074204Z-godfortune-expression2-smile",
    "/data/studio-core/logs/perf/20260520T074215Z-godfortune-expression2-surprised",
    "/data/studio-core/logs/perf/20260520T074225Z-godfortune-expression2-blank-stare",
    "/data/studio-core/logs/perf/20260520T074235Z-godfortune-expression2-singing-mouth-open",
    "/data/studio-core/logs/perf/20260520T074245Z-godfortune-expression2-final-verdict"
  ],
  "next_recommendation": "Use puppet_mouth_pass_v1 as the safe baseline for TTS/music timing. Keep eyebrow/emotion changes separate until a better masked cleanup or inpaint workflow is available."
}
