{
  "version": "screenplay_reserve_repair.v1",
  "generated_at": "2026-04-15T16:16:38.180018Z",
  "run_dir": "/wwwb/aitools/writer/outputs/quality_gates/s6_step11_focus_recheck_v2/xiyouji_first10_now11_scriptfresh_20260406_v2_recheck_v2",
  "changed_block_count": 18,
  "changed_blocks": [
    {
      "block_id": "EP0001B004",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（南赡部洲）\n石猴闻歌寻声，樵夫歌唱《满庭芳》，石猴误认樵夫为神仙，樵夫解释歌谣来源。\n美猴王：神仙。\n石猴闻歌寻声。\n樵夫歌唱《满庭芳》。\n石猴误认樵夫为神仙。\n樵夫解释歌谣来源。",
      "after_preview": "（南赡部洲）\n美猴王：神仙。\n石猴闻歌寻声。\n樵夫歌唱《满庭芳》。\n石猴误认樵夫为神仙。\n樵夫解释歌谣来源。\n美猴王在山中听到歌声。"
    },
    {
      "block_id": "EP0001B006",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（水帘洞）\n须菩提祖师盯住石猴不放，非要追问出悟空。\n须菩提祖师看了石猴一眼，终于松口应下了传法这件事。\n仙童开门引路。\n猴王虔诚跪拜。\n祖师登坛讲道。\n祖师赐姓‘孙’。\n石猴：可得长生么。",
      "after_preview": "（水帘洞）\n须菩提祖师看了石猴一眼，当面把名字定了下来。\n仙童开门引路。\n猴王虔诚跪拜。\n祖师登坛讲道。\n祖师赐姓‘孙’。\n猴王自述石生经历。"
    },
    {
      "block_id": "EP0002B001",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（水帘洞）\n须菩提祖师：打破盘中暗谜。\n祖师：话已经压到这里，“打破盘中暗谜”总该给我一句准信。\n祖师怒打悟空三下并倒背手关门。\n祖师站在人堆里，脸色一下子就绷住了。\n悟空跪在榻前，说出“师父昨日坛前对众相允，教弟子三更时候，从后门里传我道理”",
      "after_preview": "（水帘洞）\n祖师：长生之妙道。\n须菩提祖师看了祖师一眼，抬手示意他近前听道。\n祖师：打破盘中暗谜。\n祖师吟诗与悟空应声。\n祖师怒打悟空三下并倒背手关门。\n悟空夜半独自赴约。"
    },
    {
      "block_id": "EP0002B003",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（水帘洞）\n祖师警示三灾及其原理，悟空选择并习得七十二变，祖师传授口诀，悟空求教躲避之法，悟空初试爬云，祖师传授筋斗云。\n祖师：我只想求个明白，躲避之法到底是什么？\n祖师盯住须菩提祖师不放，非要追问出躲避之法。\n须菩提祖师看了祖师一眼，终于点头：“后面的门道，我传你。”\n祖师警示三灾及其原理。\n悟空选择并习得七十二变。",
      "after_preview": "（水帘洞）\n须菩提祖师：躲避之法先听清，后面的路才走得下去。\n祖师：我只想求个明白，躲避之法到底是什么？\n祖师警示三灾及其原理。\n须菩提祖师看了祖师一眼，抬手示意他近前听道。\n悟空选择并习得七十二变。"
    },
    {
      "block_id": "EP0002B005",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（水帘洞）\n混世魔王：眼前这层门道，我先给你说清。\n魔王：魔王详情到底该怎么办？\n魔王盯住混世魔王不放，非要追问出魔王详情。\n悟空驾筋斗云回到花果山。\n众猴围聚诉苦，报告混世魔王侵占水帘洞。\n悟空闻讯大怒，询问魔王详情。\n悟空安抚众猴，独自前往水脏洞寻仇。\n悟空在水脏洞外叫阵，与魔王对峙。\n悟空从听闻诉苦的愤怒，转变为决定独自前往水脏洞寻仇的行动。",
      "after_preview": "（水帘洞）\n悟空驾筋斗云回到花果山。\n悟空闻讯大怒。\n悟空在水脏洞外叫阵，与魔王对峙。\n悟空安抚众猴，独自前往水脏洞寻仇。\n众猴围聚诉苦，报告混世魔王侵占水帘洞。\n悟空从听闻诉苦的愤怒。\n悟空从听闻诉苦的愤怒，转变为决定独自前往水脏洞寻仇的行动。"
    },
    {
      "block_id": "EP0003B002",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（东海龙宫）\n悟空前往海藏观看神针铁。\n悟空挥舞金箍棒震慑龙宫。\n神针铁随悟空心意变化大小。\n龙婆/龙女提示神针铁的存在与异象。\n悟空嫌弃大刀、钢叉、画戟等兵器太轻。\n悟空对兵器的极致要求与龙王所能提供的凡兵之间的矛盾。\n龙王：如意金箍棒。",
      "after_preview": "（东海龙宫）\n悟空前往海藏观看神针铁。\n悟空挥舞金箍棒震慑龙宫。\n神针铁随悟空心意变化大小。\n龙婆/龙女提示神针铁的存在与异象。\n悟空嫌弃大刀、钢叉、画戟等兵器太轻。"
    },
    {
      "block_id": "EP0003B004",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（幽冥界）\n悟空酒醉于铁板桥下，悟空 vs. 幽冥界/生死簿规则，悟空打杀勾魂使者。\n悟空酒醉于铁板桥下。\n勾魂使者出示带有“孙悟空”的批文。\n悟空在幽冥界牌楼下觉醒并质问。\n石猴：超出三界外，不在五行中。\n石猴：幽冥界。\n悟空 vs. 幽冥界/生死簿规则。",
      "after_preview": "（幽冥界）\n勾魂使者出示带有“孙悟空”的批文。\n勾魂使者：超出三界外，不在五行中。\n悟空酒醉于铁板桥下。\n悟空在幽冥界牌楼下觉醒并质问。\n悟空打杀勾魂使者。\n悟空 vs. 幽冥界/生死簿规则。"
    },
    {
      "block_id": "EP0003B006",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（幽冥界）\n石猴：你先站住，把眼前最要紧的一句听清。\n孙悟空：那我该怎么避开眼前这层险处？\n孙悟空梦醒后向众猴讲述销名之事，太白金星提出招安建议的完整逻辑，玉帝从震怒到采纳建议的决策转变，太白金星提出招安策略，玉帝采纳，孙悟空梦醒告知众猴。\n孙悟空梦醒后向众猴讲述销名之事。\n东海龙王与秦广王上表告状的具体内容与姿态。\n太白金星提出招安建议的完整逻辑。\n玉帝从震怒到采纳建议的决策转变。\n太白金星提出招安策略，玉帝采纳。\n孙悟空梦醒告知众猴",
      "after_preview": "（幽冥界）\n孙悟空梦醒后向众猴讲述销名之事。\n太白金星提出招安建议的完整逻辑。\n东海龙王与秦广王上表告状的具体内容与姿态。\n太白金星提出招安策略。\n孙悟空梦醒告知众猴。\n太白金星提出招安策略，玉帝采纳。"
    },
    {
      "block_id": "EP0004B001",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（花果山）\n孙悟空在灵霄殿不拜玉帝的桀骜姿态，武曲星君提议弼马温官职，孙悟空在御马监尽职养马，孙悟空怒推公案、打出南天门。\n孙悟空在灵霄殿不拜玉帝的桀骜姿态。\n武曲星君提议弼马温官职。\n孙悟空在御马监尽职养马。\n孙悟空：未入流。\n孙悟空：弼马温。\n孙悟空怒推公案、打出南天门。",
      "after_preview": "（花果山）\n孙悟空：未入流。\n武曲星君提议弼马温官职。\n孙悟空在御马监尽职养马。\n孙悟空怒推公案、打出南天门。\n孙悟空在灵霄殿不拜玉帝的桀骜姿态。\n孙悟空：弼马温。"
    },
    {
      "block_id": "EP0004B002",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（水帘洞）\n玉帝闻奏，派李天王、哪吒率天兵下界，巨灵神至水帘洞外挑战，猴王披挂迎战，巨灵神与猴王对峙，要求猴王受降，天庭权威 vs. 个人尊严与野心。\n玉帝闻奏，派李天王、哪吒率天兵下界。\n巨灵神至水帘洞外挑战，猴王披挂迎战。\n巨灵神与猴王对峙，要求猴王受降。\n哪吒三太子：齐天大圣。\n天庭权威 vs. 个人尊严与野心。\n玉帝一听猴王反下天宫，当场脸色一沉，转身就往外冲。",
      "after_preview": "（水帘洞）\n孙悟空展示“齐天大圣”旌旗。\n巨灵神与猴王对峙，要求猴王受降。\n玉帝闻奏。\n巨灵神至水帘洞外挑战，猴王披挂迎战。\n天庭权威 vs. 个人尊严与野心。\n玉帝一听猴王反下天宫，当场脸色一沉，转身就往外冲。\n天庭权威（玉帝/李天王） vs. 个人尊严与野心（孙悟空）"
    },
    {
      "block_id": "EP0004B003",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（水帘洞）\n猴王轻松击败巨灵神，斧柄断裂，哪吒请战，与猴王各变三头六臂激斗，猴王用毫毛分身术打伤哪吒，哪吒败回，猴王使用毫毛分身术智取哪吒。\n猴王轻松击败巨灵神，斧柄断裂。\n哪吒请战，与猴王各变三头六臂激斗。\n猴王用毫毛分身术打伤哪吒，哪吒败回。\n石猴：齐天大圣。\n猴王使用毫毛分身术智取哪吒。\n猴王轻松击败巨灵神。",
      "after_preview": "（水帘洞）\n石猴：齐天大圣。\n猴王轻松击败巨灵神，斧柄断裂。\n哪吒请战，与猴王各变三头六臂激斗。\n猴王用毫毛分身术打伤哪吒，哪吒败回。"
    },
    {
      "block_id": "EP0007B004",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（灵台方寸山）\n沙悟净：门道先听清，后面的路才走得下去。\n猪悟能：我不是逞强，只是不肯糊里糊涂退下去。\n观音抛莲花隔开战斗。\n猪妖自述天蓬元帅身份及被贬原因。\n沙悟净：弟子这话不是逞强，只想把门道听个分明。\n猪悟能：似梦方觉。\n猪悟能：怪物闻言，似梦方觉。",
      "after_preview": "（灵台方寸山）\n观音抛莲花隔开战斗。\n沙悟净看了猪悟能一眼，当面把名字定了下来。\n猪妖自述天蓬元帅身份及被贬原因。\n沙悟净：弟子这话不是逞强，只想把门道听个分明。\n“怪物闻言。\n观音与木吒遇另一妖魔，乃天蓬元帅下凡，观音劝其皈依，收为猪悟能。"
    },
    {
      "block_id": "EP0007B005",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（五行山）\n玉皇大天尊：这一步，我今天一定要问个分明。\n玉皇大天尊盯住玉龙不放，非要追问出获罪于天。\n猪悟能‘获罪于天’的忏悔与皈依。\n玉龙看了玉皇大天尊一眼，终于点头：“后面的门道，我传你。”\n玉龙悬吊求救及观音向玉帝求情。\n观音与孙悟空在五行山下。",
      "after_preview": "（五行山）\n猪悟能‘获罪于天’的忏悔与皈依。\n孙悟空‘已知悔了，但愿大慈悲指条门路’的恳求。\n玉龙看了玉皇大天尊一眼，当面把名字定了下来。\n玉龙悬吊求救及观音向玉帝求情。\n观音与孙悟空在五行山下。\n孙悟空明确表示悔过并恳求观音指条门路，标志其从反抗者向修行者转变的起点。"
    },
    {
      "block_id": "EP0007B006",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（长安城）\n观音与孙悟空，观音与木吒抵达长安，师徒变作疥癫游僧，进入土地庙，孙悟空接受法名‘悟空’。\n唐太宗：悟空。\n观音与孙悟空。\n观音与木吒抵达长安。\n师徒变作疥癫游僧。\n进入土地庙。\n唐太宗：长安城。\n争论中提及“长安城”及“唐太宗贞观十三年”，将镜头从个人闲趣拉向宏大的时代背景，暗示天下太平的表象下即将风波骤起。",
      "after_preview": "（长安城）\n唐太宗：悟空。\n进入土地庙。\n土地及众神参见。\n师徒变作疥癫游僧。\n观音与孙悟空。\n观音与木吒抵达长安。"
    },
    {
      "block_id": "EP0008B006",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（皇宫宫门）\n唐太宗：眼前这层门道，我先给你说清。\n秦叔宝主动请缨守门，秦、胡二将披甲执锐彻夜守卫，太宗因二将辛苦而心生不忍，画像贴于门上镇鬼成功。\n唐太宗抬手拦住秦叔宝，先把说，在紧张鬼祟威胁与温情君说开。\n秦叔宝主动请缨守门。\n秦、胡二将披甲执锐彻夜守卫。\n太宗因二将辛苦而心生不忍。\n画像贴于门上镇鬼成功。\n太宗受鬼祟侵扰需要保护与不忍忠臣彻夜辛劳之间的内心矛盾。",
      "after_preview": "（皇宫宫门）\n唐太宗抬手拦住秦叔宝，先把说，在紧张鬼祟威胁与温情君说开。\n秦叔宝主动请缨守门。\n画像贴于门上镇鬼成功。\n太宗因二将辛苦而心生不忍。\n秦、胡二将披甲执锐彻夜守卫。\n太宗提出画像替代真人的想法并获得成功。"
    },
    {
      "block_id": "EP0009B001",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（幽冥界）\n太宗病逝魂灵出窍，崔珪接驾并解释缘由，魏征书信内容，崔珪承诺送太宗还阳。\n崔珪：三曹对案。\n太宗病逝魂灵出窍。\n崔珪接驾并解释缘由。\n魏征书信内容。\n崔珪阅读魏征书信后，承诺送太宗还阳，将危机转化为希望。\n崔珪承诺送太宗还阳。",
      "after_preview": "（幽冥界）\n崔珪：三曹对案。\n魏征书信内容。\n太宗病逝魂灵出窍。\n崔珪承诺送太宗还阳。\n崔珪接驾并解释缘由。"
    },
    {
      "block_id": "EP0009B002",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（幽冥界）\n鬼门关遇李渊父子索命。\n森罗殿十王审问泾河龙王案。\n崔判官私改生死簿添寿。\n泾河龙王：一十三。\n太宗作为阳间人王，在阴间地府接受审判，其个人道德与龙王案责任交织。\n太宗随崔珪入地府，遇先人索命，后至森罗殿与十代阎王对质泾河龙王案，崔珪。",
      "after_preview": "（幽冥界）\n鬼门关遇李渊父子索命。\n崔判官私改生死簿添寿。\n森罗殿十王审问泾河龙王案。\n崔珪：一十三。\n太宗作为阳间人王，在阴间地府接受审判，其个人道德与龙王案责任交织。"
    },
    {
      "block_id": "EP0009B003",
      "issue_codes": [
        "abstract:residual_fallback_noise"
      ],
      "before_preview": "（幽冥界）\n十代冥王：你先站住，把眼前最要紧的一句听清。\n唐太宗：宫中安否到底该怎么办？\n十王提及御妹寿短，太宗许诺送南瓜，崔判官、朱太尉引路，太宗发现路非旧路及判官解释，初见幽冥背阴山及其恐怖景象描述。\n唐太宗盯住十代冥王不放，非要追问出宫中安否。\n太宗辞谢十王并询问宫中安否。\n十王提及御妹寿短。\n太宗许诺送南瓜。\n崔判官、朱太尉引路。",
      "after_preview": "（幽冥界）\n太宗许诺送南瓜。\n十王提及御妹寿短。\n崔判官、朱太尉引路。\n太宗辞谢十王并询问宫中安否。\n太宗发现路非旧路及判官解释。\n初见幽冥背阴山及其恐怖景象描述。"
    }
  ],
  "downstream": {
    "dramart_package": {
      "run_dir": "/wwwb/aitools/writer/outputs/quality_gates/s6_step11_focus_recheck_v2/xiyouji_first10_now11_scriptfresh_20260406_v2_recheck_v2",
      "package_path": "/wwwb/aitools/writer/outputs/quality_gates/s6_step11_focus_recheck_v2/xiyouji_first10_now11_scriptfresh_20260406_v2_recheck_v2/03e_dramart_package.json",
      "upload_script_path": "/wwwb/aitools/writer/outputs/quality_gates/s6_step11_focus_recheck_v2/xiyouji_first10_now11_scriptfresh_20260406_v2_recheck_v2/03e_dramart_upload_script.md",
      "content_policy_version": "dramart_package_scope.v1",
      "risk_summary_present": true,
      "asset_action_summary_present": true
    },
    "dramart_storyboard": {
      "run_dir": "/wwwb/aitools/writer/outputs/quality_gates/s6_step11_focus_recheck_v2/xiyouji_first10_now11_scriptfresh_20260406_v2_recheck_v2",
      "storyboard_path": "/wwwb/aitools/writer/outputs/quality_gates/s6_step11_focus_recheck_v2/xiyouji_first10_now11_scriptfresh_20260406_v2_recheck_v2/05c_dramart_storyboard.json",
      "status": "pass",
      "shot_count": 223,
      "prompt_guard_status": "fail"
    }
  },
  "before": {
    "quality_gate": {
      "status": "pass",
      "broad_status": "warn",
      "top_issues": [
        {
          "id": "text_quality.abstract_prose_risk_count",
          "stage": "screenplay",
          "status": "warn",
          "severity": "warn",
          "failure_type": "legacy_pressure_only",
          "track_view": "baseline",
          "message": "abstract prose risk count exceeds threshold",
          "actual": 21,
          "expected": {
            "max_abstract_prose_risk_count": 0
          }
        }
      ]
    },
    "product_quality": {
      "status": "fail",
      "fail_count": 2,
      "warn_count": 2,
      "issue_count": 4,
      "top_issues": [
        {
          "id": "writing_strategy.abstract_prose_risk_count",
          "stage": "writing_strategy",
          "status": "warn",
          "message": "正文不能退化成抽象解释或总结式 prose，必须回到可拍信息",
          "actual": 21,
          "expected": 0
        },
        {
          "id": "prompt_guard.text_quality_status",
          "stage": "prompt_guard",
          "status": "fail",
          "message": "prompt_guard 必须保持 text_quality 为 pass",
          "actual": "fail",
          "expected": "pass"
        },
        {
          "id": "prompt_guard.tri_layer_status",
          "stage": "prompt_guard",
          "status": "warn",
          "message": "prompt_guard 必须保持 tri_layer 为 pass",
          "actual": "warning",
          "expected": "pass"
        },
        {
          "id": "prompt_guard.dramart_delivery_status",
          "stage": "prompt_guard",
          "status": "fail",
          "message": "prompt_guard 必须保持 dramart_delivery 为 pass",
          "actual": "fail",
          "expected": "pass"
        }
      ]
    }
  },
  "after": {
    "quality_gate": {
      "status": "warn",
      "broad_status": "warn",
      "top_issues": [
        {
          "id": "text_quality.short_block_ratio",
          "stage": "screenplay",
          "status": "warn",
          "severity": "warn",
          "failure_type": "text_quality_regression",
          "track_view": "delivery",
          "message": "short block ratio exceeds threshold",
          "actual": 0.368421,
          "expected": {
            "max_short_block_ratio": 0.2
          }
        },
        {
          "id": "text_quality.abstract_prose_risk_count",
          "stage": "screenplay",
          "status": "warn",
          "severity": "warn",
          "failure_type": "legacy_pressure_only",
          "track_view": "baseline",
          "message": "abstract prose risk count exceeds threshold",
          "actual": 10,
          "expected": {
            "max_abstract_prose_risk_count": 0
          }
        },
        {
          "id": "text_quality.action_anchor_gap_count",
          "stage": "screenplay",
          "status": "warn",
          "severity": "warn",
          "failure_type": "legacy_pressure_only",
          "track_view": "baseline",
          "message": "action anchor gap count exceeds threshold",
          "actual": 1,
          "expected": {
            "max_action_anchor_gap_count": 0
          }
        }
      ]
    },
    "product_quality": {
      "status": "fail",
      "fail_count": 2,
      "warn_count": 3,
      "issue_count": 5,
      "top_issues": [
        {
          "id": "writing_strategy.action_anchor_gap_count",
          "stage": "writing_strategy",
          "status": "warn",
          "message": "正文应保持动作落点，避免滑回只讲结果不见动作的说明写法",
          "actual": 1,
          "expected": 0
        },
        {
          "id": "writing_strategy.abstract_prose_risk_count",
          "stage": "writing_strategy",
          "status": "warn",
          "message": "正文不能退化成抽象解释或总结式 prose，必须回到可拍信息",
          "actual": 10,
          "expected": 0
        },
        {
          "id": "prompt_guard.text_quality_status",
          "stage": "prompt_guard",
          "status": "fail",
          "message": "prompt_guard 必须保持 text_quality 为 pass",
          "actual": "fail",
          "expected": "pass"
        },
        {
          "id": "prompt_guard.tri_layer_status",
          "stage": "prompt_guard",
          "status": "warn",
          "message": "prompt_guard 必须保持 tri_layer 为 pass",
          "actual": "warning",
          "expected": "pass"
        },
        {
          "id": "prompt_guard.dramart_delivery_status",
          "stage": "prompt_guard",
          "status": "fail",
          "message": "prompt_guard 必须保持 dramart_delivery 为 pass",
          "actual": "fail",
          "expected": "pass"
        }
      ]
    }
  }
}