{
  "status": "ready-with-notes",
  "film": "A",
  "user_story": "【原型师】以前【烧掉 Claude/GPT 额度发明基础 3D 动画步骤】→ 用【Mesh2Motion 浏览器（unofficial tip）】现在【mesh→rig(snake)→export GLB，$0，无 LLM】",
  "funnel_url": "https://mesh2motion-showcase-rec.pages.dev/",
  "funnel_checks": [
    {
      "url": "https://mesh2motion-showcase-rec.pages.dev/",
      "status": 200,
      "role": "page"
    },
    {
      "url": "https://mesh2motion-showcase-rec.pages.dev/desktop/demo.gif",
      "status": 200,
      "role": "gif"
    },
    {
      "url": "https://mesh2motion-showcase-rec.pages.dev/desktop/demo.mp4",
      "status": 200,
      "role": "mp4"
    },
    {
      "url": "https://mesh2motion-showcase-rec.pages.dev/handoff.json",
      "status": 200,
      "role": "handoff"
    },
    {
      "url": "https://mesh2motion-showcase-rec.pages.dev/desktop/cues.json",
      "status": 200,
      "role": "cues"
    },
    {
      "url": "https://mesh2motion-showcase-rec.pages.dev/mobile/demo.mp4",
      "status": 200,
      "role": "mp4"
    },
    {
      "url": "https://mesh2motion-showcase-rec.pages.dev/mobile/cues.json",
      "status": 200,
      "role": "cues"
    }
  ],
  "gif": "https://mesh2motion-showcase-rec.pages.dev/desktop/demo.gif",
  "mp4": "https://mesh2motion-showcase-rec.pages.dev/desktop/demo.mp4",
  "poster": "",
  "gif_mobile": "https://mesh2motion-showcase-rec.pages.dev/mobile/demo.gif",
  "mp4_mobile": "https://mesh2motion-showcase-rec.pages.dev/mobile/demo.mp4",
  "commit": "43be4b6",
  "branch": "feature/mesh2motion-showcase-film-a",
  "pr": "",
  "product_url": "https://mesh2motion-showcase.pages.dev/",
  "product_commit": "fdd3cdf",
  "product_pr": 35,
  "story_scores": [
    {
      "candidate": "S1",
      "R1": 16,
      "R2": 12,
      "R3": 16,
      "R4": 12,
      "R5": 12,
      "R6": 8,
      "R7": 3,
      "total": 79
    },
    {
      "candidate": "S2",
      "R1": 20,
      "R2": 15,
      "R3": 20,
      "R4": 15,
      "R5": 12,
      "R6": 10,
      "R7": 4,
      "total": 96,
      "winner": true
    },
    {
      "candidate": "S3",
      "R1": 16,
      "R2": 12,
      "R3": 16,
      "R4": 12,
      "R5": 15,
      "R6": 8,
      "R7": 3,
      "total": 82
    }
  ],
  "winner": "S2",
  "shot_list": [
    {
      "id": "S1",
      "t_start": 1.0,
      "t_end": 3.6,
      "beat": "B0 hook",
      "framing": "full",
      "zoom": 1.0,
      "focus": "H1 Stop burning…",
      "pointer": "idle",
      "text_expected": [
        "Stop burning model credits",
        "$0",
        "no LLM",
        "@maxt3chno"
      ],
      "hold_s": 2.4,
      "purpose": "Establish credit-burn problem + free promise"
    },
    {
      "id": "S2",
      "t_start": 3.6,
      "t_end": 8.2,
      "beat": "B1 compare",
      "framing": "medium",
      "zoom": 1.45,
      "focus": "Compare Burn vs $0",
      "pointer": "scan",
      "text_expected": [
        "Burn credits",
        "$0 in browser",
        "GLB"
      ],
      "hold_s": 2.8,
      "purpose": "Cannot→can contrast"
    },
    {
      "id": "S3",
      "t_start": 8.2,
      "t_end": 15.4,
      "beat": "B2 pipeline",
      "framing": "medium",
      "zoom": 1.45,
      "focus": "Rig snake step",
      "pointer": "point",
      "text_expected": [
        "Mesh",
        "Rig",
        "snake",
        "Export GLB"
      ],
      "hold_s": 2.8,
      "purpose": "Show free browser pipeline incl snake"
    },
    {
      "id": "S4",
      "t_start": 15.4,
      "t_end": 18.1,
      "beat": "B3 facts",
      "framing": "full",
      "zoom": 1.0,
      "focus": "Facts checklist",
      "pointer": "idle",
      "text_expected": [
        "browser",
        "Snake",
        "No LLMs",
        "MIT"
      ],
      "hold_s": 2.2,
      "purpose": "Evidence checklist"
    },
    {
      "id": "S5",
      "t_start": 18.1,
      "t_end": 24.3,
      "beat": "B4 CTA",
      "framing": "medium",
      "zoom": 1.4,
      "focus": "Open Mesh2Motion app",
      "pointer": "hover+click",
      "text_expected": [
        "Open Mesh2Motion app"
      ],
      "hold_s": 2.61,
      "purpose": "CTA without deep third-party UI"
    },
    {
      "id": "S6",
      "t_start": 24.3,
      "t_end": 26.6,
      "beat": "B5 credit",
      "framing": "full",
      "zoom": 1.0,
      "focus": "footer @maxt3chno",
      "pointer": "idle",
      "text_expected": [
        "Unofficial",
        "@maxt3chno"
      ],
      "hold_s": 1.8,
      "purpose": "Credit + unofficial disclaimer"
    }
  ],
  "legibility": {
    "verdict": "pass-with-notes",
    "file": "outputs/verify/verify.json",
    "readable_result_s": 2.8,
    "centering_pass": true,
    "story_test": {
      "independent": false,
      "pass": true,
      "answer": "Landing tip: stop burning Claude/GPT credits; use Mesh2Motion in browser for mesh→rig(snake)→export GLB at $0 / no LLM; CTA to official app. For prototyper/creator."
    }
  },
  "qa": {
    "verdict": "pass-with-notes",
    "hold_s": 2.8,
    "cjk_frames": 0,
    "notes": "Product verify PASS; Film A desktop+mobile; holds ≥2.5s on Compare/Rig/CTA; desktop letterbox noted; cold-viewer provisional"
  },
  "deviations": [
    "record_machine=box (Playwright headless; auto)",
    "Desktop letterboxes ~420 tip at 1280×800 (by design)",
    "CTA click prevented from navigating to third-party app UI (brief)",
    "Mild body-transform zoom vs Screen-Studio-style ROI crop",
    "Mobile GIF downscaled 280px/6fps to ~2.4MB",
    "story HITL locked by remix-ship (no new 55m wait)"
  ],
  "artifacts": [
    "mesh2motion-showcase/outputs/desktop/{demo.mp4,demo.gif,cues.json,shotlist.json}",
    "mesh2motion-showcase/outputs/mobile/{demo.mp4,demo.gif,cues.json}",
    "mesh2motion-showcase/outputs/raw/A-{desktop,mobile}-take1/",
    "mesh2motion-showcase/outputs/verify/",
    "mesh2motion-showcase/outputs/handoff.json",
    "mesh2motion-showcase/outputs/B1_SEND_TO_REMIX_SHIP.txt",
    "mesh2motion-showcase/story/{story.md,shots.md,research.md}"
  ],
  "known_weaknesses": [
    "Zoom intensity mild on letterboxed tip",
    "Cold-viewer is provisional (same agent context)",
    "Pointer may be small on 520px GIF"
  ],
  "issues_for": {
    "f28cb932-9806-46f4-a18b-b076705795f8": [
      "Accept UI_MP4 + cues + preview; unlock huashu/earshot only after your review",
      "Film A only; do not deep-record official app as our surface",
      "Credit @maxt3chno — FR does not post X"
    ]
  },
  "next": "remix-ship review; pipeline HOLD for huashu/earshot/X until unlocked. Parent delivers B1.",
  "credit": "@maxt3chno",
  "reply_to": "f28cb932-9806-46f4-a18b-b076705795f8",
  "do_not_send": [
    "huashu",
    "earshot",
    "X-manager"
  ]
}
