{
  "run_id": "20260328T080705943352Z",
  "generated_at": "2026-04-02T03:52:19.251161Z",
  "stages": [
    {
      "ts_start": "2026-03-28T08:07:10.729691Z",
      "ts_end": "2026-03-28T08:09:28.638914Z",
      "duration_sec": 137.909,
      "stage": "script",
      "status": "ok",
      "run_id": "20260328T080705943352Z",
      "agent": "Script & Shot Agent",
      "inputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03_scenes.json",
          "kind": "scenes"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03b_chronology.json",
          "kind": "chronology"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03c_adaptation.json",
          "kind": "adaptation"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02j_kg_deep.json",
          "kind": "kg_deep"
        }
      ],
      "outputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/04_scripts.json",
          "kind": "scripts"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/logs/stage_artifacts/script/20260328T080705943352Z__04_scripts.json",
          "kind": "scripts_snapshot"
        }
      ],
      "metrics": {
        "scripts": 4,
        "shots": 14,
        "dialogue_lines": 3,
        "narration_shots": 9,
        "chronology_bound_scripts": 4,
        "chronology_non_mainline_scripts": 1,
        "chronology_reordered_scripts": 2,
        "adaptation_bound_scripts": 4,
        "script_source_scenes": 4,
        "script_skipped_by_adaptation": 2,
        "kg_context_layer": "kg_deep",
        "script_concurrency": 1,
        "resumed": false
      }
    },
    {
      "ts_start": "2026-03-28T14:44:07.960790Z",
      "ts_end": "2026-03-28T14:44:51.090204Z",
      "duration_sec": 43.129,
      "stage": "screenplay",
      "status": "ok",
      "run_id": "20260328T080705943352Z",
      "agent": "Screenplay & Dramart Packaging Agent",
      "inputs": [
        {
          "path": "outputs/adaptation_round2_script_smoke_20260328_v1/03c_adaptation.json",
          "kind": "adaptation"
        },
        {
          "path": "outputs/adaptation_round2_script_smoke_20260328_v1/02e_entity_registry.json",
          "kind": "entity_registry"
        }
      ],
      "outputs": [
        {
          "path": "outputs/adaptation_round2_script_smoke_20260328_v1/03d_screenplay.json",
          "kind": "screenplay"
        },
        {
          "path": "outputs/adaptation_round2_script_smoke_20260328_v1/logs/stage_artifacts/screenplay/20260328T080705943352Z__03d_screenplay.json",
          "kind": "screenplay_snapshot"
        }
      ],
      "metrics": {
        "episodes": 1,
        "blocks": 3,
        "source_scene_refs": 4,
        "character_bindings": 4,
        "screenplay_concurrency": 1,
        "target_units_per_episode": 6,
        "resumed": false
      }
    },
    {
      "ts_start": "2026-03-28T15:44:39.138233Z",
      "ts_end": "2026-03-28T15:44:39.143741Z",
      "duration_sec": 0.006,
      "stage": "dramart_package",
      "status": "ok",
      "run_id": "20260328T080705943352Z",
      "agent": "Screenplay & Dramart Packaging Agent",
      "inputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03d_screenplay.json",
          "kind": "screenplay"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02e_entity_registry.json",
          "kind": "entity_registry"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02f_entity_visual_cards.json",
          "kind": "entity_visual_cards"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02g_entity_voice_cards.json",
          "kind": "entity_voice_cards"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02h_entity_assets.json",
          "kind": "entity_assets"
        }
      ],
      "outputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03e_dramart_package.json",
          "kind": "dramart_package"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/logs/stage_artifacts/dramart_package/20260328T080705943352Z__03e_dramart_package.json",
          "kind": "dramart_package_snapshot"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03e_dramart_upload_script.md",
          "kind": "dramart_upload_script"
        }
      ],
      "metrics": {
        "episodes": 1,
        "character_bios": 4,
        "location_assets": 3,
        "prop_assets": 8,
        "voice_suggestions": 4,
        "checklist_items": 20,
        "upload_script_chars": 1616,
        "resumed": false
      }
    },
    {
      "ts_start": "2026-04-02T03:40:35.701413Z",
      "ts_end": "2026-04-02T03:40:35.739303Z",
      "duration_sec": 0.038,
      "stage": "storyboard",
      "status": "ok",
      "run_id": "20260328T080705943352Z",
      "agent": "Storyboard & Prompt Agent",
      "inputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/04_scripts.json",
          "kind": "scripts"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03_scenes.json",
          "kind": "scenes"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03b_chronology.json",
          "kind": "chronology"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02e_entity_registry.json",
          "kind": "entity_registry"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02f_entity_visual_cards.json",
          "kind": "entity_visual_cards"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02h_entity_assets.json",
          "kind": "entity_assets"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/04b_style_bible.json",
          "kind": "style_bible"
        }
      ],
      "outputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/05_storyboard.json",
          "kind": "storyboard"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/05c_dramart_storyboard.json",
          "kind": "dramart_storyboard"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/logs/stage_artifacts/storyboard/20260328T080705943352Z__05_storyboard.json",
          "kind": "storyboards_snapshot"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/logs/stage_artifacts/storyboard/20260328T080705943352Z__05c_dramart_storyboard.json",
          "kind": "dramart_storyboard_snapshot"
        }
      ],
      "metrics": {
        "storyboards": 14,
        "duration_seconds": 65.4,
        "non_mainline_storyboards": 4,
        "visual_noted_storyboards": 14,
        "style_locked_storyboards": 14,
        "dynamic_content_storyboards": 14,
        "bound_entity_uids": 13,
        "bound_visual_card_ids": 13,
        "bound_asset_binding_ids": 13,
        "storyboard_ready_status": "warn",
        "storyboard_ready_pass_count": 0,
        "storyboard_ready_warn_count": 14,
        "storyboard_ready_fail_count": 0,
        "storyboard_ready_issue_count": 17,
        "storyboard_ready_episode_mapped_count": 14,
        "storyboard_ready_block_mapped_count": 14,
        "storyboard_ready_reference_media_count": 0,
        "storyboard_ready_voice_count": 14,
        "top_shot_roles": {
          "character": 4,
          "dialogue_or_action": 4,
          "opening": 4,
          "closing": 2
        },
        "top_characters": {
          "李凡": 11,
          "老道": 11,
          "修士": 4,
          "童子": 4
        },
        "storyboard_concurrency": 1,
        "resumed": true
      }
    },
    {
      "ts_start": "2026-04-02T03:52:19.070545Z",
      "ts_end": "2026-04-02T03:52:19.148606Z",
      "duration_sec": 0.078,
      "stage": "storyboard",
      "status": "ok",
      "run_id": "20260328T080705943352Z",
      "agent": "Storyboard & Prompt Agent",
      "inputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/04_scripts.json",
          "kind": "scripts"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03_scenes.json",
          "kind": "scenes"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/03b_chronology.json",
          "kind": "chronology"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02e_entity_registry.json",
          "kind": "entity_registry"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02f_entity_visual_cards.json",
          "kind": "entity_visual_cards"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/02h_entity_assets.json",
          "kind": "entity_assets"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/04b_style_bible.json",
          "kind": "style_bible"
        }
      ],
      "outputs": [
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/05_storyboard.json",
          "kind": "storyboard"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/05c_dramart_storyboard.json",
          "kind": "dramart_storyboard"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/logs/stage_artifacts/storyboard/20260328T080705943352Z__05_storyboard.json",
          "kind": "storyboards_snapshot"
        },
        {
          "path": "/wwwb/aitools/writer/outputs/adaptation_round2_script_smoke_20260328_v1/logs/stage_artifacts/storyboard/20260328T080705943352Z__05c_dramart_storyboard.json",
          "kind": "dramart_storyboard_snapshot"
        }
      ],
      "metrics": {
        "storyboards": 14,
        "duration_seconds": 65.4,
        "non_mainline_storyboards": 4,
        "visual_noted_storyboards": 14,
        "style_locked_storyboards": 14,
        "dynamic_content_storyboards": 14,
        "bound_entity_uids": 13,
        "bound_visual_card_ids": 13,
        "bound_asset_binding_ids": 13,
        "storyboard_ready_status": "pass",
        "storyboard_ready_pass_count": 14,
        "storyboard_ready_warn_count": 0,
        "storyboard_ready_fail_count": 0,
        "storyboard_ready_issue_count": 0,
        "storyboard_ready_episode_mapped_count": 14,
        "storyboard_ready_block_mapped_count": 14,
        "storyboard_ready_reference_media_count": 14,
        "storyboard_ready_voice_count": 14,
        "top_shot_roles": {
          "character": 4,
          "dialogue_or_action": 4,
          "opening": 4,
          "closing": 2
        },
        "top_characters": {
          "李凡": 11,
          "老道": 11,
          "修士": 4,
          "童子": 4
        },
        "storyboard_concurrency": 1,
        "resumed": true
      }
    }
  ],
  "stage_items": {
    "total": 5,
    "ok": 5,
    "partial": 0,
    "error": 0
  },
  "llm_calls": {
    "total": 5,
    "ok": 5,
    "error": 0
  },
  "run_errors": 0
}