{
 "status": "ready-with-notes",
 "user_story": "A player on a phone opens Star Catch, taps to play, and restyles the running game Pixel Art → Low-Poly → Neon Synth with one click each.",
 "requested_outcome": "Type 「用像素风做个小游戏」 → get a playable mini-game → switch Pixel / Low-Poly / Neon in one click each",
 "entry_url": "https://game-art-style-switch.pages.dev/",
 "funnel_url": "https://game-art-style-switch-rec.pages.dev/",
 "funnel_checks": [
  {
   "url": "https://game-art-style-switch-rec.pages.dev/",
   "status": 200
  },
  {
   "url": "https://game-art-style-switch-rec.pages.dev/demo.mp4",
   "status": 200
  },
  {
   "url": "https://game-art-style-switch-rec.pages.dev/demo.gif",
   "status": 200
  },
  {
   "url": "https://game-art-style-switch-rec.pages.dev/cues.json",
   "status": 200
  },
  {
   "url": "https://game-art-style-switch-rec.pages.dev/handoff.json",
   "status": 200
  }
 ],
 "mp4": "game-art-style-switch/ux-demo/outputs/demo.mp4",
 "gif": "game-art-style-switch/ux-demo/outputs/demo.gif",
 "cues": "game-art-style-switch/ux-demo/outputs/cues.json",
 "format": {
  "w": 390,
  "h": 844,
  "codec": "h264",
  "pix_fmt": "yuv420p",
  "fps": 30,
  "duration_s": 26.13,
  "frames": 784
 },
 "commit": "2fe42f61d8232165c895506255b52d2963359e65",
 "branch": "main",
 "pr": null,
 "story_scores": [
  {
   "id": "A",
   "story": "Phone player switches one running game across 3 art styles with one click each (what the site really does)",
   "total": "winner"
  },
  {
   "id": "B",
   "story": "One Chinese sentence → game → styles (requested; the site has no prompt input, so it can't be filmed)",
   "total": "not recordable"
  }
 ],
 "winner": "A",
 "shot_list": [
  {
   "id": "S1",
   "t_start": 0.0,
   "t_end": 3.0,
   "beat": "context",
   "framing": "wide",
   "zoom": 1.0,
   "content": "Live site, Pixel Art ready screen 'STAR CATCH / TAP TO START'; caption 'A playable web mini-game: Star Catch'",
   "legibility_px": {
    "caption_cap": 21.9
   }
  },
  {
   "id": "S2",
   "t_start": 3.0,
   "t_end": 9.05,
   "beat": "play pixel",
   "framing": "wide",
   "zoom": 1.0,
   "content": "Real tap starts game; real drag steers basket catching pixel stars; caption 'Pixel Art: tap & drag to catch stars'",
   "legibility_px": {
    "caption_cap": 21.9
   }
  },
  {
   "id": "S3",
   "t_start": 9.05,
   "t_end": 11.15,
   "beat": "switch 1",
   "framing": "close-up 2x on style switch",
   "zoom": 2.0,
   "content": "Pointer clicks Low-Poly (f290); UI flips to Low-Poly (f300); caption 'One click: Low-Poly'",
   "legibility_px": {
    "control_label_cap": 19,
    "caption_cap": 21.9
   }
  },
  {
   "id": "S4",
   "t_start": 11.15,
   "t_end": 15.4,
   "beat": "play lowpoly",
   "framing": "wide",
   "zoom": 1.0,
   "content": "Same running game continues in Low-Poly (score carries over); caption 'Same game, now Low-Poly'",
   "legibility_px": {
    "caption_cap": 21.9
   }
  },
  {
   "id": "S5",
   "t_start": 15.4,
   "t_end": 17.55,
   "beat": "switch 2",
   "framing": "close-up 2x on style switch",
   "zoom": 2.0,
   "content": "Pointer clicks Neon Synth (f481); UI flips to neon (f491); caption 'One click: Neon Synth'",
   "legibility_px": {
    "control_label_cap": 18,
    "caption_cap": 21.9
   }
  },
  {
   "id": "S6",
   "t_start": 17.55,
   "t_end": 22.3,
   "beat": "play neon",
   "framing": "wide",
   "zoom": 1.0,
   "content": "Gameplay in Neon Synth; caption 'Same game, now Neon Synth'",
   "legibility_px": {
    "caption_cap": 21.9
   }
  },
  {
   "id": "S7",
   "t_start": 22.3,
   "t_end": 26.13,
   "beat": "result hold",
   "framing": "wide",
   "zoom": 1.0,
   "content": "Neon game held 3.8s; caption 'One game. 3 art styles. 1 click each.'",
   "legibility_px": {
    "caption_cap": 21.9
   }
  }
 ],
 "qa": {
  "verdict": "pass-with-notes",
  "hold_s": 3.8,
  "cjk_frames": 0,
  "notes": "Captions 21.9px cap and zoomed control labels ~18-19px cap meet the 16px key-text gate. Small in-app text in wide shots (Score, footer) is ~9-12px and is not key text. Close-ups clamp to the top edge, so they are off-centre vertically. Cold-viewer check is provisional (self-review) and needs an independent re-read."
 },
 "deviations": [
  "Live site has no text/prompt input: the 「用像素风做个小游戏」 → game generation step does not exist, so it was not shown or faked. The film starts on the existing game.",
  "Added a fingertip ring (pointer-events:none) to the page during capture so taps are visible. It is not part of the site UI.",
  "Captured with CDP screencast at 1x CSS px (DPR2 is not honoured), so the 2x close-ups are upscaled and a little soft.",
  "Gameplay is driven by real mouse drags. Their target comes from reading the live game state (window.__game) to steer toward stars.",
  "GIF is 10fps/96 colours, 4.4 MiB."
 ],
 "known_weaknesses": [
  "cold-viewer provisional",
  "close-up ROI not vertically centred"
 ],
 "issues_for": {},
 "next": "Get an independent cold-viewer read, then hand UI_MP4 + CUES_JSON to the picture/SFX pipeline if wanted.",
 "funnel_checks_note": "curl GET 200 + byte-equal vs repo files, 2026-10-20 22:41 UTC+8"
}