{
  "version": "screenplay_writing_strategy.v1",
  "generated_at": "2026-04-11T16:30:21.106930Z",
  "meta": {
    "candidate_run_dir": "/wwwb/aitools/writer/outputs/ershinian_acceptance_smoke_20260401_v2",
    "screenplay_path": "/wwwb/aitools/writer/outputs/ershinian_acceptance_smoke_20260401_v2/03d_screenplay.json",
    "consultant_path": "",
    "screenplay_contract_version": "screenplay.v2"
  },
  "strategy_contract": [
    {
      "rule_id": "retain_subject_anchor",
      "layer": "screenplay_text",
      "severity": "fail",
      "description": "当 block 已绑定角色时，正文应显式保留至少一个角色主体锚点，避免主体在前链即被抹平。"
    },
    {
      "rule_id": "retain_action_anchor",
      "layer": "screenplay_text",
      "severity": "warn",
      "description": "正文应包含可表演的动作锚点，而不是只有抽象结果或背景说明。"
    },
    {
      "rule_id": "retain_location_anchor",
      "layer": "screenplay_text_or_stage_direction",
      "severity": "warn",
      "description": "当 block 已绑定地点时，正文或短舞台提示应保留地点锚点，支撑下游空间理解。"
    },
    {
      "rule_id": "dialogue_attribution_ready",
      "layer": "screenplay_text",
      "severity": "fail",
      "description": "当正文写入直接引语时，必须保留可识别的说话人归属，避免对白内容可读但说话者不清。"
    },
    {
      "rule_id": "avoid_abstract_summary_prose",
      "layer": "precheck",
      "severity": "warn",
      "description": "避免把正文写成编年摘要、流程梗概、模板占位句或抽象压力标签，降低后续 prompt retention 修补压力。"
    }
  ],
  "consultant_focus": {
    "used": false,
    "source_path": "",
    "confidence": "unknown",
    "writing_direction": [],
    "writing_method": [],
    "next_actions": []
  },
  "summary": {
    "status": "pass",
    "block_count": 6,
    "pass_block_count": 6,
    "warn_block_count": 0,
    "fail_block_count": 0,
    "pass_ratio": 1.0,
    "warn_ratio": 0.0,
    "fail_ratio": 0.0,
    "subject_anchor_gap_count": 0,
    "action_anchor_gap_count": 0,
    "location_anchor_gap_count": 0,
    "dialogue_attribution_gap_count": 0,
    "abstract_prose_risk_count": 0,
    "consultant_used": false,
    "consultant_confidence": "unknown",
    "next_fix_focus": [],
    "status_reason": "anchor_contract_basically_healthy"
  },
  "checks": [
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B001",
      "status": "pass",
      "source_scene_ids": [
        "S0001"
      ],
      "character_names": [
        "死裡逃生",
        "少年",
        "中年",
        "九死一生",
        "漢子"
      ],
      "location_names": [
        "上海",
        "四馬路",
        "邑廟豫園"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（上海）\n死裡逃生在豫园从神秘汉子手中获赠手稿，并看到作者署名‘九死一生’时，内心受到巨大触动，决定担负起传播之责。\n死裡逃生抬头盯住眼前动静，脚下已经往前迈了出去。\n死裡逃生：九死一生。\n死裡逃生决定将手稿寄往横滨《新小说》发表。\n死裡逃生在豫园从神秘汉子手中获赠手稿，并看到作者署名‘九死一生’时。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B002",
      "status": "pass",
      "source_scene_ids": [
        "S0004"
      ],
      "character_names": [
        "尤雲岫",
        "尤公",
        "雲岫",
        "姓尤的",
        "張鼎臣",
        "世伯",
        "鼎臣",
        "九死一生",
        "伯父",
        "死裡逃生",
        "母親",
        "廣東人",
        "買辦"
      ],
      "location_names": [
        "南京",
        "上海",
        "杭州"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": false,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（南京）\n主角听从母亲建议，独自前往南京寻伯父，尤云岫受托伴行，九死一生决定请伯父，尤云岫带走一百三十二元去上海未归，伯父评讣帖。\n主角听从母亲建议，独自前往南京寻伯父。\n尤云岫受托伴行。\n张鼎臣询问后事主意并暗示尤云岫不可靠。\n表面秩序与潜在混乱的暗示性对立。\n小说第二回标题：守常经不使疏逾戚。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B003",
      "status": "pass",
      "source_scene_ids": [
        "S0007"
      ],
      "character_names": [
        "伯父",
        "令伯",
        "李氏",
        "大嫂",
        "藩臺",
        "土老兒",
        "吳景曾",
        "繼之",
        "太太",
        "伯母",
        "候補道",
        "夫人",
        "桂花",
        "黃魚"
      ],
      "location_names": [
        "南京",
        "江寧",
        "上海",
        "客棧",
        "四馬路",
        "會香裡"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（南京）\n吴继之邀请主角搬入公馆，土老儿打野鸡结识桂花，桂花嫁土老儿改称太太。\n街头偶遇吴继之的惊喜与识别，吴继之邀请主角搬入公馆，继之讲述的框架，土老儿打野鸡结识桂花，桂花嫁土老儿改称太太。\n伯父：只要你娶了我做填房，不許再娶別人。\n桂花盘问家境劝其捐官。\n吴继之邀请主角搬入公馆。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B004",
      "status": "pass",
      "source_scene_ids": [
        "S0008"
      ],
      "character_names": [
        "藩臺",
        "制臺",
        "土老兒",
        "桂花",
        "撫臺",
        "吳景曾",
        "繼之",
        "候補道",
        "夫人"
      ],
      "location_names": [
        "南京",
        "江寧",
        "京城",
        "京裡",
        "會香裡",
        "蘇州"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（南京）\n桂花：野鸡道台的历史。\n候補道：话已经压到这里，“野鸡道台的历史”总该给我一句准信。\n桂花为土老儿捐官谋差。\n藩台识破真相。\n藩台接到京城回电，识破桂花与土老儿的底细。\n桂花成为诰封夫人。\n候補道：野鸡道台的历史。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B005",
      "status": "pass",
      "source_scene_ids": [
        "S0009"
      ],
      "character_names": [
        "候補道",
        "尊夫人",
        "婦人",
        "夫人",
        "太太",
        "姨太太",
        "制臺",
        "吳景曾",
        "繼之",
        "候補縣太爺",
        "老班子",
        "藩臺",
        "總督大帥",
        "買辦"
      ],
      "location_names": [
        "南京",
        "京城",
        "客棧"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（南京）\n按摩丑事被姨太太们发现，继之讲述候补道夫人受辱反得升迁的丑闻，继之讲述候补县太爷沦为盗贼的丑闻，继之揭露伯父故意回避主人公的真相，继之对主人公的劝诫与世情险诈的告诫。\n太太：令伯这种行径，不定是有意回避你的了。\n按摩丑事被姨太太们发现。\n候補道：令伯这种行径，不定是有意回避你的了。\n繼之講述前兩年制臺生病，一位候補道獻上妻子為其按摩，結果被姨太太們發現。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B006",
      "status": "pass",
      "source_scene_ids": [
        "S0012"
      ],
      "character_names": [
        "伯父",
        "令伯",
        "藩臺",
        "主人",
        "客人",
        "母親",
        "家母",
        "尊堂",
        "吳景曾",
        "繼之",
        "太太",
        "伯母"
      ],
      "location_names": [
        "上海"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（上海）\n继之告知主角将接办大关差使，继之为主角安排书启职位并借银，主角前往伯父公馆打听行踪未果，主角偶遇神秘客人及主人恭敬送客的场面，主角目睹神秘客人被恭敬送出的时刻。\n伯父：你先站住，把眼前最要紧的一句听清。\n继之告知主角将接办大关差使。\n继之为主角安排书启职位并借银。\n主角前往伯父公馆打听行踪未果。"
    }
  ]
}