{
  "version": "screenplay_product_quality_closeout.v1",
  "generated_at": "2026-04-10T04:37:19.087331Z",
  "inputs": {
    "run_dir": "/wwwb/aitools/writer/outputs/screenplay_expansion_exec/primary/xiyouji_now11_contract_smoke_recheck_live_deepseek_v2",
    "acceptance_path": "/wwwb/aitools/writer/outputs/quality_gates/screenplay_real_sample_acceptance_current.json"
  },
  "summary": {
    "status": "pass",
    "run_present_in_acceptance": true,
    "product_quality_status": "pass",
    "selected_acceptance_status": "pass",
    "platform_acceptance_status": "pass",
    "run_gate_status": "pass",
    "run_upload_ready_status": "pass",
    "run_storyboard_ready_status": "pass",
    "blocking_reason_count": 0,
    "warning_reason_count": 0,
    "block_fail_count": 0,
    "block_warn_count": 0
  },
  "acceptance_snapshot": {
    "summary": {
      "candidate_run_count": 57,
      "selected_run_count": 12,
      "latest_series_run_count": 38,
      "superseded_run_count": 19,
      "source_count": 13,
      "selected_source_count": 10,
      "gate_fail_count": 5,
      "gate_warn_count": 32,
      "latest_series_gate_fail_count": 1,
      "latest_series_gate_warn_count": 18,
      "superseded_gate_fail_count": 4,
      "superseded_gate_warn_count": 14,
      "selected_gate_fail_count": 0,
      "selected_gate_warn_count": 0,
      "latest_series_asset_ready_fail_count": 0,
      "latest_series_asset_ready_warn_count": 3,
      "selected_asset_ready_fail_count": 0,
      "selected_asset_ready_warn_count": 0,
      "latest_series_upload_ready_fail_count": 0,
      "latest_series_upload_ready_warn_count": 0,
      "selected_upload_ready_fail_count": 0,
      "selected_upload_ready_warn_count": 0,
      "latest_series_storyboard_ready_fail_count": 0,
      "latest_series_storyboard_ready_warn_count": 4,
      "latest_series_unresolved_identity_binding_count": 94,
      "latest_series_review_only_identity_binding_count": 4,
      "selected_storyboard_ready_coverage_count": 12,
      "selected_storyboard_ready_fail_count": 0,
      "selected_storyboard_ready_warn_count": 0,
      "selected_unresolved_identity_binding_count": 7,
      "selected_review_only_identity_binding_count": 0,
      "manual_feedback_run_count": 26,
      "block_feedback_run_count": 16,
      "selected_block_feedback_run_count": 9,
      "selected_block_feedback_count": 29,
      "selected_block_needs_rewrite_count": 0,
      "selected_legacy_pressure_run_count": 3,
      "platform_candidate_run_count": 34,
      "platform_latest_series_run_count": 26,
      "platform_selected_run_count": 12,
      "platform_source_count": 13,
      "platform_selected_source_count": 10,
      "platform_selected_gate_fail_count": 0,
      "platform_selected_gate_warn_count": 0,
      "platform_selected_asset_ready_fail_count": 0,
      "platform_selected_asset_ready_warn_count": 0,
      "platform_selected_upload_ready_fail_count": 0,
      "platform_selected_upload_ready_warn_count": 0,
      "platform_selected_storyboard_ready_coverage_count": 12,
      "platform_selected_storyboard_ready_fail_count": 0,
      "platform_selected_storyboard_ready_warn_count": 0,
      "platform_selected_unresolved_identity_binding_count": 7,
      "platform_selected_review_only_identity_binding_count": 0,
      "platform_selected_block_feedback_run_count": 9,
      "platform_selected_block_feedback_count": 29,
      "cross_source_coverage_ready": true,
      "manual_review_ready": true,
      "latest_broad_fail_count": 1,
      "latest_broad_warn_count": 18,
      "latest_legacy_pressure_run_count": 5
    },
    "readiness": {
      "structure_gate_ready": true,
      "asset_ready_gate_ready": true,
      "upload_ready_gate_ready": true,
      "storyboard_ready_gate_ready": true,
      "cross_source_ready": true,
      "manual_review_ready": true,
      "block_spotcheck_ready": true,
      "identity_hygiene_ready": false,
      "platform_cross_source_ready": true,
      "platform_storyboard_ready_gate_ready": true,
      "platform_identity_hygiene_ready": false,
      "platform_acceptance_ready": true,
      "selected_delivery_ready": true,
      "broad_baseline_clear": false
    },
    "matched_run": {
      "run_name": "xiyouji_now11_contract_smoke_recheck_live_deepseek_v2",
      "run_dir": "outputs/xiyouji_now11_contract_smoke_recheck_live_deepseek_v2",
      "selected": false,
      "latest_in_series": true,
      "superseded": false,
      "source_key": "7d629dc9a5cf237966935cbbc7140db4c341e5f08be33f21ead2c26ca64c9025",
      "series_key": "xiyouji_now11_contract_smoke_recheck_live_deepseek",
      "input_path": "input/西游记前十回.txt",
      "created_at": "2026-04-07T17:49:32.426916Z",
      "status": "ok",
      "chunk_count": 0,
      "episode_count": 9,
      "block_count": 57,
      "upload_char_count": 33006,
      "profile": {
        "source_key": "7d629dc9a5cf237966935cbbc7140db4c341e5f08be33f21ead2c26ca64c9025",
        "chunk_bucket": "chunk_xs",
        "episode_bucket": "ep9p",
        "block_bucket": "blk21_60",
        "upload_bucket": "up20kp",
        "series_key": "xiyouji_now11_contract_smoke_recheck_live_deepseek"
      },
      "gate": {
        "status": "pass",
        "broad_status": "pass",
        "failure_count": 0,
        "warning_count": 0,
        "delivery_failure_count": 0,
        "delivery_warning_count": 0,
        "baseline_failure_count": 0,
        "baseline_warning_count": 0,
        "top_issues": [],
        "failure_buckets": {
          "delivery": {},
          "baseline": {}
        },
        "metrics": {
          "adaptation_item_count": 68,
          "retained_scene_group_count": 55,
          "beat_count": 55,
          "drop_from_script_count": 11,
          "hard_merge_count": 21,
          "episode_count": 9,
          "block_count": 57,
          "episode_summary_count": 9,
          "source_scene_ref_count": 57,
          "source_group_ref_count": 57,
          "source_beat_ref_count": 57,
          "character_binding_count": 258,
          "location_binding_count": 121,
          "merge_suspect_binding_count": 5,
          "high_risk_merge_binding_count": 5,
          "unresolved_identity_binding_count": 5,
          "review_only_identity_binding_count": 0,
          "identity_issue_block_count": 5,
          "identity_issue_block_ratio": 0.087719,
          "identity_review_only_block_count": 0,
          "identity_review_only_block_ratio": 0.0,
          "unique_character_entity_count": 37,
          "unique_location_entity_count": 22,
          "missing_episode_source_ref_count": 0,
          "missing_block_source_ref_count": 0,
          "missing_block_group_ref_count": 0,
          "missing_block_beat_ref_count": 0,
          "missing_time_mode_count": 0,
          "empty_block_text_count": 0,
          "avg_block_char_count": 373.982,
          "short_block_count": 0,
          "short_block_ratio": 0.0,
          "summary_like_block_count": 0,
          "summary_like_block_ratio": 0.0,
          "dialogue_block_count": 51,
          "dialogue_block_ratio": 0.894737,
          "dialogue_eligible_block_count": 57,
          "dialogue_sparse_block_count": 6,
          "dialogue_sparse_block_ratio": 0.105263,
          "dialogue_guard_block_count": 57,
          "dialogue_guard_miss_count": 6,
          "dialogue_guard_miss_ratio": 0.105263,
          "continuity_guard_block_count": 46,
          "narration_overload_block_count": 2,
          "narration_overload_block_ratio": 0.035088,
          "chronicle_tone_block_count": 0,
          "chronicle_tone_block_ratio": 0.0,
          "summary_tone_block_count": 0,
          "summary_tone_block_ratio": 0.0,
          "weak_performable_tension_block_count": 0,
          "weak_performable_tension_block_ratio": 0.0,
          "delayed_scene_entry_block_count": 0,
          "delayed_scene_entry_block_ratio": 0.0,
          "event_bundle_summary_block_count": 0,
          "event_bundle_summary_block_ratio": 0.0,
          "excerpt_summary_lead_block_count": 0,
          "excerpt_summary_lead_block_ratio": 0.0,
          "fallback_placeholder_block_count": 0,
          "fallback_placeholder_block_ratio": 0.0,
          "template_leak_block_count": 0,
          "template_leak_block_ratio": 0.0,
          "title_card_meta_block_count": 0,
          "title_card_meta_block_ratio": 0.0,
          "expository_voiceover_lead_block_count": 0,
          "expository_voiceover_lead_block_ratio": 0.0,
          "scene_element_stacking_block_count": 0,
          "scene_element_stacking_block_ratio": 0.0,
          "character_bio_count": 37,
          "missing_character_bio_count": 0,
          "missing_character_bio_ratio": 0.0,
          "episode_summary_missing_character_bio_count": 0,
          "upload_script_char_count": 33006,
          "package_contract_present": true,
          "content_policy_version": "dramart_package_scope.v1",
          "content_policy_roles_valid": 1,
          "content_policy_source_truth_valid": 1,
          "episode_summary_source_ref_missing_count": 0,
          "episode_summary_source_ref_invalid_count": 0,
          "upload_bundle_source_ref_present": 1,
          "upload_bundle_source_ref_valid": 1,
          "upload_episode_source_ref_missing_count": 0,
          "upload_episode_source_ref_invalid_count": 0,
          "upload_part_count": 1,
          "upload_part_source_ref_missing_count": 0,
          "upload_part_source_ref_invalid_count": 0,
          "asset_contract_item_count": 106,
          "asset_missing_init_action_count": 0,
          "asset_invalid_init_action_count": 0,
          "asset_missing_risk_summary_count": 0,
          "asset_missing_source_ref_count": 0,
          "asset_invalid_source_ref_count": 0,
          "asset_review_required_count": 4,
          "asset_review_required_ratio": 0.037736,
          "package_risk_summary_present": 1,
          "package_risk_item_count": 366,
          "package_risk_flag_count": 6,
          "asset_ready_summary_present": true,
          "asset_ready_summary_inferred": 0,
          "asset_ready_status": "pass",
          "asset_ready_issue_count": 0,
          "asset_ready_fail_count": 0,
          "asset_ready_warn_count": 0,
          "upload_ready_summary_present": true,
          "upload_ready_summary_inferred": 0,
          "upload_ready_status": "pass",
          "upload_ready_issue_count": 1,
          "upload_ready_fail_count": 0,
          "upload_ready_warn_count": 0,
          "upload_ready_info_count": 1,
          "upload_has_global_preface": 1,
          "upload_time_layer_annotation_recommended": 1,
          "storyboard_ready_summary_present": true,
          "storyboard_ready_status": "pass",
          "storyboard_ready_issue_count": 0,
          "storyboard_ready_fail_count": 0,
          "storyboard_ready_warn_count": 0,
          "storyboard_ready_shot_count": 223,
          "storyboard_ready_episode_mapped_count": 223,
          "storyboard_ready_block_mapped_count": 223,
          "asset_suggestion_character_count": 37,
          "asset_suggestion_location_count": 24,
          "asset_suggestion_prop_count": 8,
          "asset_suggestion_voice_count": 37,
          "missing_visual_card_count": 0,
          "missing_visual_card_ratio": 0.0,
          "missing_voice_card_count": 0,
          "missing_voice_card_ratio": 0.0,
          "missing_asset_binding_count": 0,
          "missing_asset_binding_ratio": 0.0,
          "missing_identity_summary_count": 0,
          "missing_identity_summary_ratio": 0.0,
          "expected_min_upload_script_chars": 2000,
          "time_mode_distribution": {
            "mainline": 32,
            "rumor": 6,
            "flashback": 10,
            "insertion": 2,
            "dream": 7
          },
          "manual_review_present": false,
          "manual_review_event_count": 0,
          "manual_review_run_status": "unreviewed",
          "manual_review_episode_total": 0,
          "manual_review_episode_unreviewed_count": 0,
          "manual_review_episode_accepted_count": 0,
          "manual_review_episode_needs_rewrite_count": 0,
          "manual_review_episode_open_count": 0,
          "manual_review_block_total": 0,
          "manual_review_block_unreviewed_count": 0,
          "manual_review_block_accepted_count": 0,
          "manual_review_block_needs_rewrite_count": 0,
          "manual_review_block_open_count": 0,
          "manual_review_continuity_issue_count": 0,
          "manual_review_summary_tone_count": 0,
          "manual_review_weak_dialogue_count": 0,
          "manual_review_bad_episode_boundary_count": 0,
          "writing_strategy_status": "pass",
          "writing_strategy_checked_block_count": 57,
          "subject_anchor_gap_count": 0,
          "dialogue_attribution_gap_count": 0,
          "location_anchor_gap_count": 0,
          "action_anchor_gap_count": 0,
          "abstract_prose_risk_count": 0,
          "writing_strategy_next_fix_focus": []
        },
        "asset_ready_status": "pass",
        "asset_ready_fail_count": 0,
        "asset_ready_warn_count": 0,
        "upload_ready_status": "pass",
        "upload_ready_fail_count": 0,
        "upload_ready_warn_count": 0,
        "storyboard_ready_present": true,
        "storyboard_ready_status": "pass",
        "storyboard_ready_fail_count": 0,
        "storyboard_ready_warn_count": 0,
        "legacy_only": false
      },
      "coverage_profile": {
        "source_key": "7d629dc9a5cf237966935cbbc7140db4c341e5f08be33f21ead2c26ca64c9025",
        "character_density_bucket": "char_dense",
        "exposition_bucket": "expo_mixed",
        "risk_bucket": "risk_mixed",
        "identity_bucket": "identity_mixed"
      },
      "review": {
        "present": false,
        "has_feedback": false,
        "has_episode_feedback": false,
        "has_block_feedback": false,
        "run_status": "unreviewed",
        "event_count": 0,
        "episode_feedback_count": 0,
        "episode_accepted_count": 0,
        "episode_needs_rewrite_count": 0,
        "block_feedback_count": 0,
        "block_accepted_count": 0,
        "block_needs_rewrite_count": 0
      }
    },
    "review": {
      "present": false,
      "has_feedback": false,
      "has_episode_feedback": false,
      "has_block_feedback": false,
      "run_status": "unreviewed",
      "event_count": 0,
      "episode_feedback_count": 0,
      "episode_accepted_count": 0,
      "episode_needs_rewrite_count": 0,
      "block_feedback_count": 0,
      "block_accepted_count": 0,
      "block_needs_rewrite_count": 0
    }
  },
  "product_quality": {
    "version": "screenplay_product_quality.v1",
    "generated_at": "2026-04-10T04:37:19.079497Z",
    "meta": {
      "run_dir": "/wwwb/aitools/writer/outputs/screenplay_expansion_exec/primary/xiyouji_now11_contract_smoke_recheck_live_deepseek_v2",
      "source_paths": {
        "screenplay": "03d_screenplay.json",
        "dramart_package": "03e_dramart_package.json",
        "prompt_guard": "05b_storyboard_guard.json"
      },
      "thresholds": {
        "screenplay": {
          "max_multi_scene_source_block_count": 0,
          "max_multi_time_mode_block_count": 0,
          "max_special_label_missing_block_count": 0,
          "max_scene_element_stacking_block_count": 0,
          "max_purity_warn_block_count": 1,
          "max_fallback_placeholder_block_count": 0,
          "max_template_leak_block_count": 0,
          "max_summary_tone_block_count": 0,
          "max_chronicle_tone_block_count": 0,
          "max_weak_performable_tension_block_count": 0,
          "max_delayed_scene_entry_block_count": 0,
          "max_event_bundle_summary_block_count": 0,
          "max_excerpt_summary_lead_block_count": 0,
          "max_expository_voiceover_lead_block_count": 0,
          "max_adaptation_meta_leakage_block_count": 0
        },
        "writing_strategy": {
          "max_subject_anchor_gap_count": 0,
          "max_dialogue_attribution_gap_count": 0,
          "max_action_anchor_gap_count": 0,
          "max_location_anchor_gap_count": 0,
          "max_abstract_prose_risk_count": 0
        },
        "dramart_upload": {
          "min_upload_script_char_count": 600,
          "max_semi_structured_line_ratio_warn": 0.18,
          "max_semi_structured_line_ratio_fail": 0.35
        },
        "prompt_guard": {
          "require_text_quality_status": "pass",
          "require_tri_layer_status": "pass",
          "require_dramart_delivery_status": "pass"
        },
        "spot_check": {
          "risk_block_limit": 4,
          "normal_block_limit": 2
        }
      }
    },
    "screenplay": {
      "episode_count": 9,
      "block_count": 57,
      "blocked_block_count": 0,
      "purity_warn_block_count": 0,
      "overlong_block_count": 0,
      "multi_scene_source_block_count": 0,
      "multi_time_mode_block_count": 0,
      "special_label_missing_block_count": 0,
      "scene_element_stacking_block_count": 0,
      "flashback_tag_block_count": 10,
      "montage_tag_block_count": 3,
      "template_leak_block_count": 0,
      "fallback_placeholder_block_count": 0,
      "summary_tone_block_count": 0,
      "chronicle_tone_block_count": 0,
      "weak_performable_tension_block_count": 0,
      "delayed_scene_entry_block_count": 0,
      "adaptation_meta_leakage_block_count": 0,
      "event_bundle_summary_block_count": 0,
      "excerpt_summary_lead_block_count": 0,
      "expository_voiceover_lead_block_count": 0,
      "risk_blocks": [
        {
          "episode_id": "EP0005",
          "block_id": "EP0005B002",
          "title": "【闪回】【蒙太奇】孙悟空与众猴开仙酒会",
          "lead_scene_id": "S0033",
          "presentation_mode": "montage",
          "time_modes": [
            "flashback"
          ],
          "reason_count": 2,
          "reasons": [
            "special_tag:闪回",
            "special_tag:蒙太奇"
          ],
          "screenplay_preview": "（花果山，水帘洞内，孙悟空逃回后不久）\n孙悟空一个筋斗翻进水帘洞，将怀里揣着的仙酒、蟠桃一股脑倒在石桌上。他满面红光，得意地拍着胸脯：“孩儿们！俺老孙今日在天庭，好生快活！那蟠桃会上的琼浆玉液，全被我搬回来了！”众猴欢呼雀跃，争抢着仙酒痛饮。孙悟空自己也抱起酒坛，仰头痛饮，酒液顺着嘴角流下。他醉眼朦胧，又掏出几粒金丹，像吃炒豆般丢进嘴里，嘎嘣作响。洞内一片…"
        },
        {
          "episode_id": "EP0009",
          "block_id": "EP0009B004",
          "title": "【闪回】【蒙太奇】太宗目睹十八层地狱惨状",
          "lead_scene_id": "S0068",
          "presentation_mode": "montage",
          "time_modes": [
            "flashback"
          ],
          "reason_count": 2,
          "reasons": [
            "special_tag:闪回",
            "special_tag:蒙太奇"
          ],
          "screenplay_preview": "（幽冥界·奈河桥边）\n太宗随崔判官前行，忽闻桥下传来凄厉哭嚎。太宗驻足，循声望去，只见桥下血水翻涌，无数罪魂在其中沉浮挣扎，受尽铜蛇铁狗撕咬。太宗面色煞白，惊问：判官，此是何地？崔判官：陛下，此乃奈河桥，桥下便是十八层地狱入口。太宗再望，见远处另有金桥、银桥，有善人、神佛安稳通过，与这奈河惨状形成鲜明对比。太宗：为何有此分别？崔判官：善恶有报，功过自分。陛…"
        },
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B002",
          "title": "【传闻】石猴带领众猴进入水帘洞",
          "lead_scene_id": "S0003",
          "presentation_mode": "dialogue",
          "time_modes": [
            "rumor"
          ],
          "reason_count": 1,
          "reasons": [
            "special_tag:传闻"
          ],
          "screenplay_preview": "（花果山，水帘洞内，数年后）\n洞内石桌石椅俱全，众猴正簇拥着石猴，将一盘盘鲜果美酒奉上。一只老猴高声提议：“大王今日带我等寻得这洞天福地，免受风雨之苦，我等愿拜大王为‘美猴王’！”众猴齐声欢呼，纷纷跪拜。美猴王端坐石座，满面春风，与众猴宴饮作乐。酒过三巡，他却忽然放下酒杯，眉头紧锁，眼中竟滚下泪来。众猴惊问：“大王为何烦恼？”美猴王长叹一声：“今日虽在此称…"
        },
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B003",
          "title": "【蒙太奇】众猴饯行盛宴",
          "lead_scene_id": "S0004",
          "presentation_mode": "montage",
          "time_modes": [
            "mainline"
          ],
          "reason_count": 1,
          "reasons": [
            "special_tag:蒙太奇"
          ],
          "screenplay_preview": "（花果山，次日清晨）\n水帘洞外，众猴已备好木筏与瓜果。美猴王立于岸边，众猴围着他，有的递上鲜果，有的抹着眼泪。一只老猴上前，声音哽咽：“大王此去，不知何日能归？”美猴王接过一个桃子，目光坚定：“待我寻得长生不老之法，必回花果山，与尔等同享！”说罢，他转身跃上木筏，撑起竹篙。众猴齐声呼喊，目送木筏缓缓驶入茫茫大海。\n（蒙太奇）\n木筏在波涛中起伏，美猴王的身影…"
        }
      ],
      "normal_blocks": [
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B001",
          "title": "仙石迸裂、石猴诞生",
          "lead_scene_id": "S0002",
          "presentation_mode": "action",
          "time_modes": [
            "mainline"
          ],
          "reason_count": 0,
          "reasons": [],
          "screenplay_preview": "（东胜神洲，花果山巅，黄昏）\n天地混沌初开，山顶一块受日月精华的仙石骤然迸裂，一只石猴从中跳出，双目射出两道金光，直冲云霄。金光惊动天庭灵霄宝殿，玉皇大天尊端坐宝座，被金光晃了眼，皱眉问道：“下界何事喧哗？”千里眼与顺风耳领命出列探查。千里眼望向花果山，顺风耳侧耳倾听，片刻后回禀：“启奏陛下，乃东胜神洲花果山一仙石产一石猴，在那里拜四方，眼运金光，射冲斗府…"
        },
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B004",
          "title": "美猴王在山中听到歌声，循声发现一砍柴樵夫。",
          "lead_scene_id": "S0005",
          "presentation_mode": "dialogue",
          "time_modes": [
            "mainline"
          ],
          "reason_count": 0,
          "reasons": [],
          "screenplay_preview": "（西牛贺洲，山林中，数日后）\n美猴王在林间穿行，忽闻远处传来悠扬歌声：“观棋柯烂，伐木丁丁……相逢处，非仙即道，静坐讲《黄庭》。”他精神一振，循声疾步而去。只见一樵夫正挥斧砍柴，口中唱着歌谣。美猴王从树后跳出，拱手便拜：“老神仙！弟子稽首了！”樵夫吓了一跳，连忙放下斧头：“不当人！不当人！我拙汉衣食不全，怎敢当‘神仙’二字？”美猴王急切道：“你唱‘相逢处，…"
        }
      ]
    },
    "writing_strategy": {
      "status": "pass",
      "block_count": 57,
      "pass_block_count": 57,
      "warn_block_count": 0,
      "fail_block_count": 0,
      "subject_anchor_gap_count": 0,
      "dialogue_attribution_gap_count": 0,
      "action_anchor_gap_count": 0,
      "location_anchor_gap_count": 0,
      "abstract_prose_risk_count": 0,
      "next_fix_focus": []
    },
    "dramart_upload": {
      "platform_status": "pass",
      "upload_ready": true,
      "asset_ready": true,
      "storyboard_ready": "unknown",
      "upload_script_char_count": 29066,
      "upload_script_line_count": 449,
      "semi_structured_line_count": 0,
      "semi_structured_line_ratio": 0.0,
      "status": "pass",
      "semi_structured_line_samples": [],
      "upload_script_preview": "# 西游记前十回\n\n## 故事大纲\n故事核心：花果山仙石迸裂，石猴诞生。他勇探水帘洞称王，却因恐惧死亡而踏上寻仙之路，最终拜入菩提祖师门下，三次追问“可得长生么？”，展现其坚定不移的求道之心。\n核心钩子：花果山顶，仙石迸裂，一道金光直冲霄汉，惊动天庭。这石中诞生的灵猴，将如何搅动三界？\n\n## 主要人物\n- 石猴（剧本中亦作：齐天大圣 / 美猴王 / 猴王）：后称齐天大圣\n- 玉皇大天尊（剧本中亦作：玉帝 / 大天尊 / 玄穹高上帝）：亦称玉皇大帝\n- 哪吒三太子（剧本中亦作：哪吒 / 哪吒太子 / 惠岸行者）：…"
    },
    "prompt_guard": {
      "shot_count": 223,
      "issue_count": 0,
      "delivery_fix_queue_size": 0,
      "text_quality_acceptance_status": "pass",
      "tri_layer_acceptance_status": "pass",
      "dramart_delivery_acceptance_status": "pass"
    },
    "spot_check": {
      "risk_blocks": [
        {
          "episode_id": "EP0005",
          "block_id": "EP0005B002",
          "title": "【闪回】【蒙太奇】孙悟空与众猴开仙酒会",
          "lead_scene_id": "S0033",
          "presentation_mode": "montage",
          "time_modes": [
            "flashback"
          ],
          "reason_count": 2,
          "reasons": [
            "special_tag:闪回",
            "special_tag:蒙太奇"
          ],
          "screenplay_preview": "（花果山，水帘洞内，孙悟空逃回后不久）\n孙悟空一个筋斗翻进水帘洞，将怀里揣着的仙酒、蟠桃一股脑倒在石桌上。他满面红光，得意地拍着胸脯：“孩儿们！俺老孙今日在天庭，好生快活！那蟠桃会上的琼浆玉液，全被我搬回来了！”众猴欢呼雀跃，争抢着仙酒痛饮。孙悟空自己也抱起酒坛，仰头痛饮，酒液顺着嘴角流下。他醉眼朦胧，又掏出几粒金丹，像吃炒豆般丢进嘴里，嘎嘣作响。洞内一片…"
        },
        {
          "episode_id": "EP0009",
          "block_id": "EP0009B004",
          "title": "【闪回】【蒙太奇】太宗目睹十八层地狱惨状",
          "lead_scene_id": "S0068",
          "presentation_mode": "montage",
          "time_modes": [
            "flashback"
          ],
          "reason_count": 2,
          "reasons": [
            "special_tag:闪回",
            "special_tag:蒙太奇"
          ],
          "screenplay_preview": "（幽冥界·奈河桥边）\n太宗随崔判官前行，忽闻桥下传来凄厉哭嚎。太宗驻足，循声望去，只见桥下血水翻涌，无数罪魂在其中沉浮挣扎，受尽铜蛇铁狗撕咬。太宗面色煞白，惊问：判官，此是何地？崔判官：陛下，此乃奈河桥，桥下便是十八层地狱入口。太宗再望，见远处另有金桥、银桥，有善人、神佛安稳通过，与这奈河惨状形成鲜明对比。太宗：为何有此分别？崔判官：善恶有报，功过自分。陛…"
        },
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B002",
          "title": "【传闻】石猴带领众猴进入水帘洞",
          "lead_scene_id": "S0003",
          "presentation_mode": "dialogue",
          "time_modes": [
            "rumor"
          ],
          "reason_count": 1,
          "reasons": [
            "special_tag:传闻"
          ],
          "screenplay_preview": "（花果山，水帘洞内，数年后）\n洞内石桌石椅俱全，众猴正簇拥着石猴，将一盘盘鲜果美酒奉上。一只老猴高声提议：“大王今日带我等寻得这洞天福地，免受风雨之苦，我等愿拜大王为‘美猴王’！”众猴齐声欢呼，纷纷跪拜。美猴王端坐石座，满面春风，与众猴宴饮作乐。酒过三巡，他却忽然放下酒杯，眉头紧锁，眼中竟滚下泪来。众猴惊问：“大王为何烦恼？”美猴王长叹一声：“今日虽在此称…"
        },
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B003",
          "title": "【蒙太奇】众猴饯行盛宴",
          "lead_scene_id": "S0004",
          "presentation_mode": "montage",
          "time_modes": [
            "mainline"
          ],
          "reason_count": 1,
          "reasons": [
            "special_tag:蒙太奇"
          ],
          "screenplay_preview": "（花果山，次日清晨）\n水帘洞外，众猴已备好木筏与瓜果。美猴王立于岸边，众猴围着他，有的递上鲜果，有的抹着眼泪。一只老猴上前，声音哽咽：“大王此去，不知何日能归？”美猴王接过一个桃子，目光坚定：“待我寻得长生不老之法，必回花果山，与尔等同享！”说罢，他转身跃上木筏，撑起竹篙。众猴齐声呼喊，目送木筏缓缓驶入茫茫大海。\n（蒙太奇）\n木筏在波涛中起伏，美猴王的身影…"
        }
      ],
      "normal_blocks": [
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B001",
          "title": "仙石迸裂、石猴诞生",
          "lead_scene_id": "S0002",
          "presentation_mode": "action",
          "time_modes": [
            "mainline"
          ],
          "reason_count": 0,
          "reasons": [],
          "screenplay_preview": "（东胜神洲，花果山巅，黄昏）\n天地混沌初开，山顶一块受日月精华的仙石骤然迸裂，一只石猴从中跳出，双目射出两道金光，直冲云霄。金光惊动天庭灵霄宝殿，玉皇大天尊端坐宝座，被金光晃了眼，皱眉问道：“下界何事喧哗？”千里眼与顺风耳领命出列探查。千里眼望向花果山，顺风耳侧耳倾听，片刻后回禀：“启奏陛下，乃东胜神洲花果山一仙石产一石猴，在那里拜四方，眼运金光，射冲斗府…"
        },
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B004",
          "title": "美猴王在山中听到歌声，循声发现一砍柴樵夫。",
          "lead_scene_id": "S0005",
          "presentation_mode": "dialogue",
          "time_modes": [
            "mainline"
          ],
          "reason_count": 0,
          "reasons": [],
          "screenplay_preview": "（西牛贺洲，山林中，数日后）\n美猴王在林间穿行，忽闻远处传来悠扬歌声：“观棋柯烂，伐木丁丁……相逢处，非仙即道，静坐讲《黄庭》。”他精神一振，循声疾步而去。只见一樵夫正挥斧砍柴，口中唱着歌谣。美猴王从树后跳出，拱手便拜：“老神仙！弟子稽首了！”樵夫吓了一跳，连忙放下斧头：“不当人！不当人！我拙汉衣食不全，怎敢当‘神仙’二字？”美猴王急切道：“你唱‘相逢处，…"
        }
      ],
      "recommended_manual_sample_count": 6
    },
    "summary": {
      "status": "pass",
      "fail_count": 0,
      "warn_count": 0,
      "issue_count": 0,
      "top_issues": []
    },
    "checks": [
      {
        "id": "artifacts.screenplay",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "screenplay 工件必须存在",
        "actual": true,
        "expected": true
      },
      {
        "id": "artifacts.dramart_package",
        "stage": "dramart_upload",
        "status": "pass",
        "severity": "info",
        "message": "dramart_upload 工件必须存在",
        "actual": true,
        "expected": true
      },
      {
        "id": "artifacts.prompt_guard",
        "stage": "prompt_guard",
        "status": "pass",
        "severity": "info",
        "message": "prompt_guard 工件必须存在",
        "actual": true,
        "expected": true
      },
      {
        "id": "screenplay.multi_scene_source_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "screenplay block 必须保持单场景来源纯度",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.multi_time_mode_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "screenplay block 不得混装多个时间模式",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.special_label_missing_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "特殊时间/表现块必须显式标记 flashback / montage 等标签",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.scene_element_stacking_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "screenplay block 开头不能把多个场景元素硬堆在一起，导致场面失焦",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.purity_warn_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "screenplay purity warn block 数必须保持在冻结阈值内",
        "actual": 0,
        "expected": 1
      },
      {
        "id": "screenplay.fallback_placeholder_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "canonical screenplay 不能重新出现 fallback placeholder 正文污染",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.template_leak_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "canonical screenplay 不能重新出现模板句泄漏",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.summary_tone_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "canonical screenplay 不能重新滑回摘要式概述正文",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.chronicle_tone_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "canonical screenplay 不能重新滑回章回/编年串讲口吻",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.weak_performable_tension_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "高人物密度 block 不能只剩抽象压力总结，必须落回可表演张力",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.delayed_scene_entry_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "正文开头不能先承接前场或长句过桥，真正场面入点必须尽快出现",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.event_bundle_summary_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "多个事件不能被打包成流程说明书式梗概，必须保留可拍现场",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.excerpt_summary_lead_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "正文首句不能退化成摘录式概述导语",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.expository_voiceover_lead_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "正文起笔不能退化成全知说明式旁白导语",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "screenplay.adaptation_meta_leakage_block_count",
        "stage": "screenplay",
        "status": "pass",
        "severity": "info",
        "message": "adaptation 元信息不能泄漏到最终 screenplay 正文",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "writing_strategy.subject_anchor_gap_count",
        "stage": "writing_strategy",
        "status": "pass",
        "severity": "info",
        "message": "正文必须保留清晰主体锚点，不能退化到只剩无主体描述",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "writing_strategy.dialogue_attribution_gap_count",
        "stage": "writing_strategy",
        "status": "pass",
        "severity": "info",
        "message": "对白必须具备可归属说话人，不能回退到无归属发言",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "writing_strategy.action_anchor_gap_count",
        "stage": "writing_strategy",
        "status": "pass",
        "severity": "info",
        "message": "正文应保持动作落点，避免滑回只讲结果不见动作的说明写法",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "writing_strategy.location_anchor_gap_count",
        "stage": "writing_strategy",
        "status": "pass",
        "severity": "info",
        "message": "正文应保留可见空间锚点，避免场面悬空",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "writing_strategy.abstract_prose_risk_count",
        "stage": "writing_strategy",
        "status": "pass",
        "severity": "info",
        "message": "正文不能退化成抽象解释或总结式 prose，必须回到可拍信息",
        "actual": 0,
        "expected": 0
      },
      {
        "id": "dramart_upload.upload_script_char_count",
        "stage": "dramart_upload",
        "status": "pass",
        "severity": "info",
        "message": "Dramart 上传正文不能短到失去分集可读性",
        "actual": 29066,
        "expected": 600
      },
      {
        "id": "dramart_upload.semi_structured_line_ratio",
        "stage": "dramart_upload",
        "status": "pass",
        "severity": "info",
        "message": "Dramart 上传正文不能滑回半结构化说明书写法",
        "actual": 0.0,
        "expected": {
          "warn_at": 0.18,
          "fail_at": 0.35
        }
      },
      {
        "id": "prompt_guard.text_quality_status",
        "stage": "prompt_guard",
        "status": "pass",
        "severity": "info",
        "message": "prompt_guard 必须保持 text_quality 为 pass",
        "actual": "pass",
        "expected": "pass"
      },
      {
        "id": "prompt_guard.tri_layer_status",
        "stage": "prompt_guard",
        "status": "pass",
        "severity": "info",
        "message": "prompt_guard 必须保持 tri_layer 为 pass",
        "actual": "pass",
        "expected": "pass"
      },
      {
        "id": "prompt_guard.dramart_delivery_status",
        "stage": "prompt_guard",
        "status": "pass",
        "severity": "info",
        "message": "prompt_guard 必须保持 dramart_delivery 为 pass",
        "actual": "pass",
        "expected": "pass"
      }
    ]
  },
  "blocking_reasons": [],
  "warning_reasons": [],
  "next_stage_hint": {
    "id": "s5_step6_ready_for_next_stage_selection",
    "title": "当前真实样本通过 S5-Step-6 验收基线",
    "rationale": "当前单 run product-quality 与批量 acceptance 基线同时保持通过，可进入下一阶段选择或扩大样本覆盖。"
  }
}