{
  "version": "screenplay_product_quality_closeout.v1",
  "generated_at": "2026-04-10T09:54:55.430604Z",
  "inputs": {
    "run_dir": "/wwwb/aitools/writer/outputs/xiyouji_now11_s5_step7_frontload_live_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": 58,
      "selected_run_count": 12,
      "latest_series_run_count": 39,
      "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": 9,
      "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": 35,
      "platform_latest_series_run_count": 27,
      "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_s5_step7_frontload_live_v2",
      "run_dir": "outputs/xiyouji_now11_s5_step7_frontload_live_v2",
      "selected": false,
      "latest_in_series": true,
      "superseded": false,
      "source_key": "7d629dc9a5cf237966935cbbc7140db4c341e5f08be33f21ead2c26ca64c9025",
      "series_key": "xiyouji_now11_s5_step7_frontload_live",
      "input_path": "input/西游记前十回.txt",
      "created_at": "2026-04-10T07:45:45.883936Z",
      "status": "partial",
      "chunk_count": 0,
      "episode_count": 9,
      "block_count": 57,
      "upload_char_count": 28244,
      "profile": {
        "source_key": "7d629dc9a5cf237966935cbbc7140db4c341e5f08be33f21ead2c26ca64c9025",
        "chunk_bucket": "chunk_xs",
        "episode_bucket": "ep9p",
        "block_bucket": "blk21_60",
        "upload_bucket": "up20kp",
        "series_key": "xiyouji_now11_s5_step7_frontload_live"
      },
      "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": 0,
          "unresolved_identity_binding_count": 0,
          "review_only_identity_binding_count": 5,
          "identity_issue_block_count": 0,
          "identity_issue_block_ratio": 0.0,
          "identity_review_only_block_count": 5,
          "identity_review_only_block_ratio": 0.087719,
          "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": 298.491,
          "short_block_count": 0,
          "short_block_ratio": 0.0,
          "summary_like_block_count": 0,
          "summary_like_block_ratio": 0.0,
          "dialogue_block_count": 48,
          "dialogue_block_ratio": 0.842105,
          "dialogue_eligible_block_count": 57,
          "dialogue_sparse_block_count": 9,
          "dialogue_sparse_block_ratio": 0.157895,
          "dialogue_guard_block_count": 57,
          "dialogue_guard_miss_count": 9,
          "dialogue_guard_miss_ratio": 0.157895,
          "continuity_guard_block_count": 46,
          "narration_overload_block_count": 1,
          "narration_overload_block_ratio": 0.017544,
          "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": 28244,
          "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": 105,
          "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.038095,
          "package_risk_summary_present": 1,
          "package_risk_item_count": 364,
          "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": 7,
          "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_clean"
      },
      "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-10T09:54:55.423171Z",
    "meta": {
      "run_dir": "/wwwb/aitools/writer/outputs/xiyouji_now11_s5_step7_frontload_live_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众猴簇拥着美猴王来到海边，石桌上摆满瓜果美酒，一场饯行盛宴正酣。一只老猴举杯上前，声音哽咽：“大王，此去山高水远，不知何日能归？”美猴王接过酒杯一饮而尽，目光坚定地望向茫茫大海：“我此去，定要寻得长生不老之术，回来与你们共享！”说罢，他转身走向岸边简陋的木筏。众猴齐声高呼：“大王保重！”美猴王独自登筏，撑篙离岸。木筏在波涛中渐行渐…"
        }
      ],
      "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": "（开篇诗视觉化呈现：混沌初开，天地分判，镜头掠过四大部洲，最终聚焦于东胜神洲傲来国的花果山。山顶一块受日月精华的仙石，在黄昏时分骤然迸裂，产出一只石卵，见风化作一个五官俱备、四肢皆全的石猴。石猴眼中射出两道金光，直冲霄汉。金光惊动了天庭灵霄宝殿。殿内，玉皇大天尊端坐宝座，被金光惊扰。玉帝：千里眼、顺风耳何在？速去南天门，看是何方下界妖物作祟。千里眼与顺风耳…"
        },
        {
          "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": 28244,
      "upload_script_line_count": 348,
      "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- 哪吒三太子（剧本中亦作：哪吒 / 哪吒太子 / 惠岸行者）：哪吒三太子为三坛海会大神；托塔天王二太子\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众猴簇拥着美猴王来到海边，石桌上摆满瓜果美酒，一场饯行盛宴正酣。一只老猴举杯上前，声音哽咽：“大王，此去山高水远，不知何日能归？”美猴王接过酒杯一饮而尽，目光坚定地望向茫茫大海：“我此去，定要寻得长生不老之术，回来与你们共享！”说罢，他转身走向岸边简陋的木筏。众猴齐声高呼：“大王保重！”美猴王独自登筏，撑篙离岸。木筏在波涛中渐行渐…"
        }
      ],
      "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": "（开篇诗视觉化呈现：混沌初开，天地分判，镜头掠过四大部洲，最终聚焦于东胜神洲傲来国的花果山。山顶一块受日月精华的仙石，在黄昏时分骤然迸裂，产出一只石卵，见风化作一个五官俱备、四肢皆全的石猴。石猴眼中射出两道金光，直冲霄汉。金光惊动了天庭灵霄宝殿。殿内，玉皇大天尊端坐宝座，被金光惊扰。玉帝：千里眼、顺风耳何在？速去南天门，看是何方下界妖物作祟。千里眼与顺风耳…"
        },
        {
          "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": 28244,
        "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 基线同时保持通过，可进入下一阶段选择或扩大样本覆盖。"
  }
}