{
  "config": {
    "pace_min": 4.6,
    "pace_max": 5.2,
    "dialogue_min": 0.35,
    "dialogue_max": 0.48,
    "tension_gap_max": 45.0,
    "numeric_coverage_min": 0.6,
    "aphorism_max": 3,
    "hook_lead_seconds": 3.0,
    "hook_lead_chars_min": 12
  },
  "reports": [
    {
      "story": "episodes/production/career-wife/upper-v5-vertical-klein4b.json",
      "project_id": "life-series-002-female-embalmer-upper-v5-vertical-klein4b",
      "part": "upper",
      "scenes": 43,
      "seconds": 300.0,
      "checks": [
        {
          "gate": "字速密度",
          "level": "fail",
          "passed": true,
          "actual": {
            "chars": 1382,
            "seconds": 300.0,
            "cps": 4.61
          },
          "expected": "4.6–5.2 字/秒",
          "fix": "低于下限=画面在空转，补写台词或压缩镜头；高于上限=TTS 会赶，拆镜。"
        },
        {
          "gate": "冷开钩子",
          "level": "fail",
          "passed": true,
          "actual": {
            "lead_chars": 14,
            "consequence_hits": [
              "对着"
            ],
            "text": "新娘在交换戒指前接了个电话。她说，有两家人明早会对着别人的父亲，磕最后一个头。"
          },
          "expected": "前 3.0s ≥ 12 字，且命中后果词",
          "fix": "把行业术语翻译成普通人 1 秒能懂的后果；后果必须落在前 3 秒，不能拖到第 6 秒。"
        },
        {
          "gate": "对白占比",
          "level": "fail",
          "passed": true,
          "actual": {
            "dialogue_chars": 579,
            "narration_chars": 803,
            "char_ratio": 0.419,
            "scene_ratio": 0.442
          },
          "expected": "字数口径 35%–48%",
          "fix": "对白过高=滑成第三人称剧，丢掉第二人称代入；对白过低=没有正面交锋，情绪起不来。注意 config 的 dialogue_scene_ratio_target 是镜头口径，与此处字数口径不可直接比较。"
        },
        {
          "gate": "无钩子空窗",
          "level": "fail",
          "passed": true,
          "actual": {
            "worst_seconds": 24.6,
            "gaps": []
          },
          "expected": "最长连续低张力 ≤ 45.0s",
          "fix": "空窗落在 60–150 秒区间等于把第二流失高峰让出去；插一次小危机或反派伏笔。"
        },
        {
          "gate": "反派在场",
          "level": "fail",
          "passed": true,
          "actual": {
            "name": "周伟东",
            "appears_in": [
              "upper-s06b",
              "v5-end-03"
            ],
            "speaks_in": []
          },
          "expected": "上集至少出场 1 次；下集至少有 1 句正面台词",
          "fix": "只在调查结论里被念名字的反派，观众恨不起来，也就不会评论和转发。"
        },
        {
          "gate": "物件回环",
          "level": "fail",
          "passed": true,
          "actual": {
            "head": [
              "二十六万",
              "停住的戒指",
              "退款单"
            ],
            "tail": [
              "停住的戒指",
              "银灰反光袖"
            ],
            "shared": [
              "停住的戒指"
            ]
          },
          "expected": "开头物件必须在末 3 镜之一变义回收",
          "fix": "回环缺失=结尾只剩口号；把开头那件最锋利的道具还回观众手里。"
        },
        {
          "gate": "代价换算",
          "level": "fail",
          "passed": true,
          "actual": {
            "scenes": [
              "upper-s18"
            ]
          },
          "expected": "每集 ≥ 1 次",
          "fix": "把金额换算成劳动时长/动作次数/身体成本；'六十八万'是抽象的，'连着两年每个周末凌晨四点起来拍接亲'才是戏。标 cost_conversion=true。"
        },
        {
          "gate": "数字锚点",
          "level": "warn",
          "passed": true,
          "actual": {
            "coverage": 0.86,
            "scenes": 43
          },
          "expected": "≥ 60%",
          "fix": "每 2–3 镜一个可核对数字，夸张情节才像发生过。"
        },
        {
          "gate": "格言体配额",
          "level": "warn",
          "passed": true,
          "actual": {
            "count": 3,
            "lines": [
              {
                "id": "upper-s15b",
                "line": "别人敢不敢请我，是我的本事。徐宁做得正、站得直，不该先向闲话认输。我替她站出来。"
              },
              {
                "id": "upper-s21b",
                "line": "不让她出现、不让她说职业，还不让她进我的店。你签的是我，还是一个假的家庭？"
              },
              {
                "id": "v5-end-02",
                "line": "你按认定的对错选。我来承担职业的后果。"
              }
            ]
          },
          "expected": "每集 ≤ 3 句",
          "fix": "金句超配 = 人人都在讲道理，没人在生活。其余改成'动作→物件→感官→数字'的行为化台词。"
        },
        {
          "gate": "片尾可选项",
          "level": "warn",
          "passed": true,
          "actual": {
            "found": [
              "抢工期的转运工",
              "罗经理",
              "服务中心里的第三个人"
            ],
            "declared": [
              "抢工期的转运工",
              "罗经理",
              "服务中心里的第三个人"
            ]
          },
          "expected": "片尾引导必须给 ≥ 2 个具名选项",
          "fix": "'真凶是谁？评论区留下选择'——观众连名字都没听过就没法选，评论区拉不动。"
        }
      ],
      "failed": [],
      "warned": []
    },
    {
      "story": "episodes/production/career-wife/lower.json",
      "project_id": "life-series-002-female-embalmer-lower",
      "part": "lower",
      "scenes": 44,
      "seconds": 300.0,
      "checks": [
        {
          "gate": "字速密度",
          "level": "fail",
          "passed": true,
          "actual": {
            "chars": 1459,
            "seconds": 300.0,
            "cps": 4.86
          },
          "expected": "4.6–5.2 字/秒",
          "fix": "低于下限=画面在空转，补写台词或压缩镜头；高于上限=TTS 会赶，拆镜。"
        },
        {
          "gate": "冷开钩子",
          "level": "fail",
          "passed": true,
          "actual": {
            "lead_chars": 12,
            "consequence_hits": [
              "对着",
              "磕头"
            ],
            "text": "明早，两家人就真的差点对着别人的父亲磕头。上一集，林川暂停婚礼；七秒原片证明，换标签的人不是徐宁。"
          },
          "expected": "前 3.0s ≥ 12 字，且命中后果词",
          "fix": "把行业术语翻译成普通人 1 秒能懂的后果；后果必须落在前 3 秒，不能拖到第 6 秒。"
        },
        {
          "gate": "对白占比",
          "level": "fail",
          "passed": true,
          "actual": {
            "dialogue_chars": 677,
            "narration_chars": 782,
            "char_ratio": 0.464,
            "scene_ratio": 0.5
          },
          "expected": "字数口径 35%–48%",
          "fix": "对白过高=滑成第三人称剧，丢掉第二人称代入；对白过低=没有正面交锋，情绪起不来。注意 config 的 dialogue_scene_ratio_target 是镜头口径，与此处字数口径不可直接比较。"
        },
        {
          "gate": "无钩子空窗",
          "level": "fail",
          "passed": true,
          "actual": {
            "worst_seconds": 13.8,
            "gaps": []
          },
          "expected": "最长连续低张力 ≤ 45.0s",
          "fix": "空窗落在 60–150 秒区间等于把第二流失高峰让出去；插一次小危机或反派伏笔。"
        },
        {
          "gate": "反派在场",
          "level": "fail",
          "passed": true,
          "actual": {
            "name": "周伟东",
            "appears_in": [
              "lower-s23a",
              "lower-s23b",
              "lower-s23c"
            ],
            "speaks_in": [
              "lower-s23a"
            ]
          },
          "expected": "上集至少出场 1 次；下集至少有 1 句正面台词",
          "fix": "只在调查结论里被念名字的反派，观众恨不起来，也就不会评论和转发。"
        },
        {
          "gate": "物件回环",
          "level": "fail",
          "passed": true,
          "actual": {
            "head": [
              "三组记录",
              "收起的头纱",
              "旧存折",
              "旧手表",
              "暂停婚礼",
              "最后一面",
              "账户负数"
            ],
            "tail": [
              "同款动作",
              "旧存折",
              "网约车女司机"
            ],
            "shared": [
              "旧存折"
            ]
          },
          "expected": "开头物件必须在末 3 镜之一变义回收",
          "fix": "回环缺失=结尾只剩口号；把开头那件最锋利的道具还回观众手里。"
        },
        {
          "gate": "代价换算",
          "level": "fail",
          "passed": true,
          "actual": {
            "scenes": [
              "lower-s20"
            ]
          },
          "expected": "每集 ≥ 1 次",
          "fix": "把金额换算成劳动时长/动作次数/身体成本；'六十八万'是抽象的，'连着两年每个周末凌晨四点起来拍接亲'才是戏。标 cost_conversion=true。"
        },
        {
          "gate": "数字锚点",
          "level": "warn",
          "passed": true,
          "actual": {
            "coverage": 0.98,
            "scenes": 44
          },
          "expected": "≥ 60%",
          "fix": "每 2–3 镜一个可核对数字，夸张情节才像发生过。"
        },
        {
          "gate": "格言体配额",
          "level": "warn",
          "passed": true,
          "actual": {
            "count": 3,
            "lines": [
              {
                "id": "lower-s12",
                "line": "今天真正出错的不是你的职业，是有人想把责任，推给一个最容易被偏见围住的人。"
              },
              {
                "id": "lower-s21",
                "line": "视频不发网上。我把原始卡号、备份记录和拍摄时间都交调查组。我要的不是流量，是证据。"
              },
              {
                "id": "lower-s23c",
                "line": "周伟东擅换束带、抄反顺序。撤销徐宁停岗，责任移交追究。"
              }
            ]
          },
          "expected": "每集 ≤ 3 句",
          "fix": "金句超配 = 人人都在讲道理，没人在生活。其余改成'动作→物件→感官→数字'的行为化台词。"
        },
        {
          "gate": "片尾可选项",
          "level": "warn",
          "passed": true,
          "actual": {
            "found": [
              "还是同一个人",
              "只是长得相像"
            ],
            "declared": [
              "还是同一个人",
              "只是长得相像"
            ]
          },
          "expected": "片尾引导必须给 ≥ 2 个具名选项",
          "fix": "'真凶是谁？评论区留下选择'——观众连名字都没听过就没法选，评论区拉不动。"
        }
      ],
      "failed": [],
      "warned": []
    }
  ]
}