{
  "version": "screenplay_quality_gate_baseline.v1",
  "generated_at": "2026-03-30T13:03:15.654555Z",
  "runs_root": "/wwwb/aitools/writer/outputs",
  "report_prefix": "screenplay_gate",
  "summary": {
    "report_count": 15,
    "pass_count": 8,
    "warn_count": 7,
    "fail_count": 0
  },
  "median_metrics": {
    "episode_count": 2.0,
    "block_count": 11.0,
    "upload_script_char_count": 4508.0,
    "short_block_ratio": 0.031579,
    "summary_like_block_ratio": 0.0,
    "dialogue_sparse_block_ratio": 0.0,
    "narration_overload_block_ratio": 0.2,
    "missing_character_bio_ratio": 0.0
  },
  "cohort_summary": [
    {
      "cohort_key": "ep1__blk1_5__up0_2k",
      "report_count": 6,
      "median_metrics": {
        "episode_count": 1.0,
        "block_count": 3.0,
        "upload_script_char_count": 1616.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      }
    },
    {
      "cohort_key": "ep4_8__blk21_60__up8k_20k",
      "report_count": 5,
      "median_metrics": {
        "episode_count": 7.0,
        "block_count": 44.0,
        "upload_script_char_count": 12659.0,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      }
    },
    {
      "cohort_key": "ep9p__blk61p__up20kp",
      "report_count": 2,
      "median_metrics": {
        "episode_count": 15.5,
        "block_count": 95.0,
        "upload_script_char_count": 36918.5,
        "short_block_ratio": 0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.173684,
        "missing_character_bio_ratio": 0.041173
      }
    },
    {
      "cohort_key": "ep2_3__blk6_20__up2k_8k",
      "report_count": 2,
      "median_metrics": {
        "episode_count": 2.0,
        "block_count": 10.5,
        "upload_script_char_count": 4489.5,
        "short_block_ratio": 0.090909,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.236364,
        "missing_character_bio_ratio": 0.0
      }
    }
  ],
  "reports": [
    {
      "run_dir": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1",
      "run_name": "adaptation_round2_script_smoke_20260328_v1",
      "series_key": "adaptation_round2_script_smoke",
      "cohort_key": "ep1__blk1_5__up0_2k",
      "status": "warn",
      "failure_count": 0,
      "warning_count": 1,
      "report_json": "outputs/quality_gates/screenplay_gate_adaptation_round2_script_smoke_20260328_v1__20260328T080705943352Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_adaptation_round2_script_smoke_20260328_v1__20260328T080705943352Z.md",
      "key_metrics": {
        "episode_count": 1,
        "block_count": 3,
        "upload_script_char_count": 1616,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": -1.0,
        "block_count": -8.0,
        "upload_script_char_count": -2892.0,
        "short_block_ratio": -0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.133333,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 1.0,
        "block_count": 3.0,
        "upload_script_char_count": 1616.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/daozu_mainline_full50_20260329_v1",
      "run_name": "daozu_mainline_full50_20260329_v1",
      "series_key": "daozu_mainline_full50",
      "cohort_key": "ep9p__blk61p__up20kp",
      "status": "warn",
      "failure_count": 0,
      "warning_count": 5,
      "report_json": "outputs/quality_gates/screenplay_gate_daozu_mainline_full50_20260329_v1__20260329T093553124488Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_daozu_mainline_full50_20260329_v1__20260329T093553124488Z.md",
      "key_metrics": {
        "episode_count": 15,
        "block_count": 95,
        "upload_script_char_count": 36050,
        "short_block_ratio": 0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.147368,
        "missing_character_bio_ratio": 0.060606
      },
      "delta_from_median": {
        "episode_count": 13.0,
        "block_count": 84.0,
        "upload_script_char_count": 31542.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": -0.052632,
        "missing_character_bio_ratio": 0.060606
      },
      "cohort_median_metrics": {
        "episode_count": 15.5,
        "block_count": 95.0,
        "upload_script_char_count": 36918.5,
        "short_block_ratio": 0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.173684,
        "missing_character_bio_ratio": 0.041173
      },
      "delta_from_cohort_median": {
        "episode_count": -0.5,
        "block_count": 0.0,
        "upload_script_char_count": -868.5,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": -0.026316,
        "missing_character_bio_ratio": 0.019433
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/entity_registry_dramart_alignment_smoke_20260329_v1",
      "run_name": "entity_registry_dramart_alignment_smoke_20260329_v1",
      "series_key": "entity_registry_dramart_alignment_smoke",
      "cohort_key": "ep1__blk1_5__up0_2k",
      "status": "warn",
      "failure_count": 0,
      "warning_count": 1,
      "report_json": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_alignment_smoke_20260329_v1__20260328T170722535384Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_alignment_smoke_20260329_v1__20260328T170722535384Z.md",
      "key_metrics": {
        "episode_count": 1,
        "block_count": 3,
        "upload_script_char_count": 1616,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": -1.0,
        "block_count": -8.0,
        "upload_script_char_count": -2892.0,
        "short_block_ratio": -0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.133333,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 1.0,
        "block_count": 3.0,
        "upload_script_char_count": 1616.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/entity_registry_dramart_assets_smoke_20260329_v1",
      "run_name": "entity_registry_dramart_assets_smoke_20260329_v1",
      "series_key": "entity_registry_dramart_assets_smoke",
      "cohort_key": "ep1__blk1_5__up0_2k",
      "status": "warn",
      "failure_count": 0,
      "warning_count": 1,
      "report_json": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_assets_smoke_20260329_v1__20260328T165426211184Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_assets_smoke_20260329_v1__20260328T165426211184Z.md",
      "key_metrics": {
        "episode_count": 1,
        "block_count": 3,
        "upload_script_char_count": 1616,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": -1.0,
        "block_count": -8.0,
        "upload_script_char_count": -2892.0,
        "short_block_ratio": -0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.133333,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 1.0,
        "block_count": 3.0,
        "upload_script_char_count": 1616.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/entity_registry_dramart_smoke_20260329_v1",
      "run_name": "entity_registry_dramart_smoke_20260329_v1",
      "series_key": "entity_registry_dramart_smoke",
      "cohort_key": "ep1__blk1_5__up0_2k",
      "status": "warn",
      "failure_count": 0,
      "warning_count": 1,
      "report_json": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_smoke_20260329_v1__20260328T163554545115Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_smoke_20260329_v1__20260328T163554545115Z.md",
      "key_metrics": {
        "episode_count": 1,
        "block_count": 3,
        "upload_script_char_count": 1616,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": -1.0,
        "block_count": -8.0,
        "upload_script_char_count": -2892.0,
        "short_block_ratio": -0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.133333,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 1.0,
        "block_count": 3.0,
        "upload_script_char_count": 1616.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/review_overlay_contract_smoke_20260329_v2",
      "run_name": "review_overlay_contract_smoke_20260329_v2",
      "series_key": "review_overlay_contract_smoke",
      "cohort_key": "ep1__blk1_5__up0_2k",
      "status": "warn",
      "failure_count": 0,
      "warning_count": 1,
      "report_json": "outputs/quality_gates/screenplay_gate_review_overlay_contract_smoke_20260329_v2__20260328T213633735807Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_review_overlay_contract_smoke_20260329_v2__20260328T213633735807Z.md",
      "key_metrics": {
        "episode_count": 1,
        "block_count": 3,
        "upload_script_char_count": 1470,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": -1.0,
        "block_count": -8.0,
        "upload_script_char_count": -3038.0,
        "short_block_ratio": -0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": -0.2,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 1.0,
        "block_count": 3.0,
        "upload_script_char_count": 1616.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": -146.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": -0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/screenplay_upload_contract_smoke_20260329_v1",
      "run_name": "screenplay_upload_contract_smoke_20260329_v1",
      "series_key": "screenplay_upload_contract_smoke",
      "cohort_key": "ep1__blk1_5__up0_2k",
      "status": "warn",
      "failure_count": 0,
      "warning_count": 1,
      "report_json": "outputs/quality_gates/screenplay_gate_screenplay_upload_contract_smoke_20260329_v1__20260328T180200756920Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_screenplay_upload_contract_smoke_20260329_v1__20260328T180200756920Z.md",
      "key_metrics": {
        "episode_count": 1,
        "block_count": 3,
        "upload_script_char_count": 1503,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": -1.0,
        "block_count": -8.0,
        "upload_script_char_count": -3005.0,
        "short_block_ratio": -0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.133333,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 1.0,
        "block_count": 3.0,
        "upload_script_char_count": 1616.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.333333,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": -113.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/adaptation_regression_20260328_v2",
      "run_name": "adaptation_regression_20260328_v2",
      "series_key": "adaptation_regression",
      "cohort_key": "ep4_8__blk21_60__up8k_20k",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_adaptation_regression_20260328_v2__20260328T042627371173Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_adaptation_regression_20260328_v2__20260328T042627371173Z.md",
      "key_metrics": {
        "episode_count": 7,
        "block_count": 44,
        "upload_script_char_count": 12659,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": 5.0,
        "block_count": 33.0,
        "upload_script_char_count": 8151.0,
        "short_block_ratio": 0.104785,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": -0.109091,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 7.0,
        "block_count": 44.0,
        "upload_script_char_count": 12659.0,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/daozu_conflict_downstream_full50_20260330_v1",
      "run_name": "daozu_conflict_downstream_full50_20260330_v1",
      "series_key": "daozu_conflict_downstream_full50",
      "cohort_key": "ep9p__blk61p__up20kp",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_daozu_conflict_downstream_full50_20260330_v1__20260329T091113689911Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_daozu_conflict_downstream_full50_20260330_v1__20260329T091113689911Z.md",
      "key_metrics": {
        "episode_count": 16,
        "block_count": 95,
        "upload_script_char_count": 37787,
        "short_block_ratio": 0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.2,
        "missing_character_bio_ratio": 0.021739
      },
      "delta_from_median": {
        "episode_count": 14.0,
        "block_count": 84.0,
        "upload_script_char_count": 33279.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.021739
      },
      "cohort_median_metrics": {
        "episode_count": 15.5,
        "block_count": 95.0,
        "upload_script_char_count": 36918.5,
        "short_block_ratio": 0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.173684,
        "missing_character_bio_ratio": 0.041173
      },
      "delta_from_cohort_median": {
        "episode_count": 0.5,
        "block_count": 0.0,
        "upload_script_char_count": 868.5,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.026316,
        "missing_character_bio_ratio": -0.019434
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/daozu_conflict_downstream_smoke_20260329_v2",
      "run_name": "daozu_conflict_downstream_smoke_20260329_v2",
      "series_key": "daozu_conflict_downstream_smoke",
      "cohort_key": "ep2_3__blk6_20__up2k_8k",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_daozu_conflict_downstream_smoke_20260329_v2__20260329T093817197697Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_daozu_conflict_downstream_smoke_20260329_v2__20260329T093817197697Z.md",
      "key_metrics": {
        "episode_count": 2,
        "block_count": 10,
        "upload_script_char_count": 4508,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.2,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": 0.0,
        "block_count": -1.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": -0.031579,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 2.0,
        "block_count": 10.5,
        "upload_script_char_count": 4489.5,
        "short_block_ratio": 0.090909,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.236364,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": -0.5,
        "upload_script_char_count": 18.5,
        "short_block_ratio": -0.090909,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": -0.036364,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/daozu_conflict_downstream_trim8_20260329_v1",
      "run_name": "daozu_conflict_downstream_trim8_20260329_v1",
      "series_key": "daozu_conflict_downstream_trim8",
      "cohort_key": "ep2_3__blk6_20__up2k_8k",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_daozu_conflict_downstream_trim8_20260329_v1__20260329T094151678728Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_daozu_conflict_downstream_trim8_20260329_v1__20260329T094151678728Z.md",
      "key_metrics": {
        "episode_count": 2,
        "block_count": 11,
        "upload_script_char_count": 4471,
        "short_block_ratio": 0.181818,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.272727,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": -37.0,
        "short_block_ratio": 0.150239,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.072727,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 2.0,
        "block_count": 10.5,
        "upload_script_char_count": 4489.5,
        "short_block_ratio": 0.090909,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.236364,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.5,
        "upload_script_char_count": -18.5,
        "short_block_ratio": 0.090909,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.036363,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/entity_registry_dramart_alignment_regression_20260329_v1",
      "run_name": "entity_registry_dramart_alignment_regression_20260329_v1",
      "series_key": "entity_registry_dramart_alignment_regression",
      "cohort_key": "ep4_8__blk21_60__up8k_20k",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_alignment_regression_20260329_v1__20260328T170722671643Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_alignment_regression_20260329_v1__20260328T170722671643Z.md",
      "key_metrics": {
        "episode_count": 7,
        "block_count": 44,
        "upload_script_char_count": 12659,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": 5.0,
        "block_count": 33.0,
        "upload_script_char_count": 8151.0,
        "short_block_ratio": 0.104785,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": -0.109091,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 7.0,
        "block_count": 44.0,
        "upload_script_char_count": 12659.0,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/entity_registry_dramart_assets_regression_20260329_v1",
      "run_name": "entity_registry_dramart_assets_regression_20260329_v1",
      "series_key": "entity_registry_dramart_assets_regression",
      "cohort_key": "ep4_8__blk21_60__up8k_20k",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_assets_regression_20260329_v1__20260328T165605891929Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_assets_regression_20260329_v1__20260328T165605891929Z.md",
      "key_metrics": {
        "episode_count": 7,
        "block_count": 44,
        "upload_script_char_count": 12659,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": 5.0,
        "block_count": 33.0,
        "upload_script_char_count": 8151.0,
        "short_block_ratio": 0.104785,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": -0.109091,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 7.0,
        "block_count": 44.0,
        "upload_script_char_count": 12659.0,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/entity_registry_dramart_regression_20260329_v1",
      "run_name": "entity_registry_dramart_regression_20260329_v1",
      "series_key": "entity_registry_dramart_regression",
      "cohort_key": "ep4_8__blk21_60__up8k_20k",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_regression_20260329_v1__20260328T163718164874Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_entity_registry_dramart_regression_20260329_v1__20260328T163718164874Z.md",
      "key_metrics": {
        "episode_count": 7,
        "block_count": 44,
        "upload_script_char_count": 12659,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": 5.0,
        "block_count": 33.0,
        "upload_script_char_count": 8151.0,
        "short_block_ratio": 0.104785,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": -0.109091,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 7.0,
        "block_count": 44.0,
        "upload_script_char_count": 12659.0,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 0.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.0,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    },
    {
      "run_dir": "/wwwb/aitools/writer/outputs/screenplay_upload_contract_regression_20260329_v1",
      "run_name": "screenplay_upload_contract_regression_20260329_v1",
      "series_key": "screenplay_upload_contract_regression",
      "cohort_key": "ep4_8__blk21_60__up8k_20k",
      "status": "pass",
      "failure_count": 0,
      "warning_count": 0,
      "report_json": "outputs/quality_gates/screenplay_gate_screenplay_upload_contract_regression_20260329_v1__20260328T180200825648Z.json",
      "report_md": "outputs/quality_gates/screenplay_gate_screenplay_upload_contract_regression_20260329_v1__20260328T180200825648Z.md",
      "key_metrics": {
        "episode_count": 7,
        "block_count": 44,
        "upload_script_char_count": 13454,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": 0.113636,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_median": {
        "episode_count": 5.0,
        "block_count": 33.0,
        "upload_script_char_count": 8946.0,
        "short_block_ratio": 0.104785,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.0,
        "narration_overload_block_ratio": -0.086364,
        "missing_character_bio_ratio": 0.0
      },
      "cohort_median_metrics": {
        "episode_count": 7.0,
        "block_count": 44.0,
        "upload_script_char_count": 12659.0,
        "short_block_ratio": 0.136364,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": 0.041667,
        "narration_overload_block_ratio": 0.090909,
        "missing_character_bio_ratio": 0.0
      },
      "delta_from_cohort_median": {
        "episode_count": 0.0,
        "block_count": 0.0,
        "upload_script_char_count": 795.0,
        "short_block_ratio": 0.0,
        "summary_like_block_ratio": 0.0,
        "dialogue_sparse_block_ratio": -0.041667,
        "narration_overload_block_ratio": 0.022727,
        "missing_character_bio_ratio": 0.0
      },
      "series_history": {
        "series_count": 1,
        "series_position": 1,
        "previous_run_dir": "",
        "previous_status": "",
        "delta_from_previous_series": {}
      }
    }
  ],
  "status": "warn"
}