你是网络小说拆解编辑。下面是一段连续章节的“单章事实卡”。请从窗口开头开始识别已经自然闭合的故事情节片段。

【上一次拆解的末尾故事片段】
{previous_tail_context}

如果这里提供了旧末片段，说明作者后来更新了后续章节。你必须结合旧末片段与本窗口新增章节，
重新判断旧边界是否过早：可以保留原边界，也可以延后边界或重新拆分，但必须从窗口第一章连续输出。

故事片段不是固定章数：它应围绕一个相对完整的目标、冲突或阶段性结果组织。一个窗口可以输出 0 个、1 个或多个片段。若窗口末尾仍在铺垫、对抗或转折中，必须保留为未闭合尾部，不能为了凑数截断。

【窗口范围】第 {window_start}-{window_end} 章
【单个片段最大章节数】{max_chapters}
【这是当前可用范围的最终窗口】{is_final_window}

【边界判断】
1. 片段必须从窗口第一章连续开始；多个片段之间也必须首尾相接，不能跳章、重叠。
2. 片段通常以阶段目标达成/失败、核心冲突收束、身份或关系明显改变、危机升级并切换到新问题、或场景任务结束为边界。
3. 如果“最终窗口”为“否”，对尚缺收束的尾部输出到 `carryover_reason`，不要写进 `completed_segments`。
4. 如果“最终窗口”为“是”，请尽可能给末尾形成合理阶段收束；只有明显未完成的尾部才保留。
5. 只能依据事实卡；不要引入正文中未出现的设定或解释。
6. `structure` 用“触发 -> 推进/加压 -> 转折 -> 收束或新困境”梳理片段。
7. 只返回合法 JSON 对象，不要 Markdown、注释或额外说明。

【输出 JSON 结构】
{{
  "completed_segments": [
    {{
      "title": "概括该片段的短标题",
      "start_chapter": {window_start},
      "end_chapter": {window_end},
      "narrative_function": "该片段在全书中的功能",
      "boundary_reason": "为什么在此处可以自然收束",
      "structure": "触发 -> 推进/加压 -> 转折 -> 收束或新困境",
      "protagonist_action": "主角的目标、行动、受阻与结果",
      "emotion_rhythm": "情绪变化链",
      "satisfaction_point": "爽点、反转、兑现或主要张力点",
      "character_changes": "人物关系、身份或立场变化",
      "gains_costs": "得到的资源/认知与付出的代价",
      "foreshadowing": "保留到后续的线索、危机或任务"
    }}
  ],
  "carryover_reason": "未闭合尾部为何仍需等待后续章节；没有则写无"
}}

【单章事实卡窗口】
{chapter_cards_json}
