标题(20-200 字符) 描述(背景/上下文) 【发现场景】为新作品 renaud-crusade(第一次十字军)建 work 时,发现两处同源的"作品级数据硬编码进通用管线"违规。 【实例A — 历史锚点(待架构决策)】`_seed_historical_anchors_from_constants`(及 story_time_anchor / chapter_time_boundaries 回退)把 holy_city 的第一次十字军历史事件逐字硬编码进通用管线,作为"缺 history.yaml 时"的回退,带 `护栏 R1 不得改动` 注释。holy_city 自身无 history.yaml,依赖这些常量。修复建议:①抽出到 works/holy_city/history.yaml;②回退改 fail-loud。**因触及 holy_city 存量依赖 + R1 护栏,留待架构平台决策。** 【实例B — recipe_movement 幕名(已就地修复 2026-07-11,作先例)】`seed_generation_recipes` 的 three_act_movements 把 sword-and-vine 的三幕主题 `剑/犁/灯` + place_filter 地名(山谷/耶路撒冷/家园)硬编码,污染所有用 BLAKE_SNYDER_15 的作品。**已按"config 驱动 + 通用回退"模式修复**:新增 `_load_config_movements(work_name)` 读 config.novel.movements,缺失回退通用结构名(第一幕:建置/第二幕:对抗/第三幕:解决,零作品级数据);剑/犁/灯 迁至 works/sword-and-vine/config.yaml 保留原行为;renaud 用自己的 剑/裂缝/放下。对抗式复核 [] 无缺陷,191 测试通过,sword-and-vine 行为逐字节保留,holy_city 不受损(空 place_filter 最宽松 + 其库表本空)。 【意义】实例B 为实例A 提供了**已验证的修复模式**:作品级数据外置到 work config/yaml + 通用回退,通用管线零污染。建议实例A 照此办理。 【违反原则】CLAUDE.md 定位稳定性 / pipeline 纯净性。 【关联】发现于 renaud-crusade 生成流程。 用户故事 验收标准(JSON,数组,每项 given/when/then) [] 支持 JSON 数组格式。空数组表示无 AC。 非功能需求(JSON 对象,key/value 字符串) {} 优先级 P0 P1 P2 P3 负责人 截止日期 标签(逗号分隔) 保存修改 取消