# $cm-prd 模式文件 — 二开模式（B2–B5）

> 由 $cm-prd Step 4 判定「存量项目且本次需求会修改存量代码」时读取本文件。B1(加载参考文档)保留在主文件 Step 4。规则内容与主文件同源拆分,语义未变。

**二开模式追加规则（GREENFIELD=false 且本次需求会修改存量代码时生效）**：

- **B2 波及面分析**：对每个将被修改的存量模块，基于参考文档（03-architecture 模块关系 / 04-api-routes 调用方 / 07-business-logic 线路）+ 代码搜索核实，在 design.md 写「波及面」段：改哪里 → 谁调用它 → 哪些老功能可能受影响。**波及面是 QA 回归范围的数据源**
- **B3 防护网任务**：凡 tasks.md 中包含"修改存量模块"的 feature，第一个任务固定为**防护网基线**。**项目已有测试资产**（jest/vitest 等且可运行）→ 基线 = 跑通存量全量测试并记录结果，**不重复造快照**（实跑验证：184 用例的成熟项目直接复用，前后各跑一次）；**无测试资产** → 才写现状快照测试锁住将被修改模块的当前行为（不判断对错，只锁现状）。开发后复跑基线，变红即为碰坏老行为的信号
- **B4 specs 只覆盖增量**：不为整个存量系统补规格；只为本次改动涉及的模块建规格，存量行为"用到哪、记到哪"（记进参考文档 07，而不是 specs）
- **B5 拆分锚定地图**：feature 与任务的边界对齐业务地图，不凭感觉切——
  - **feature 沿业务线路拆**（07-business-logic 的线路）：需求同时触及多条线路（如"行情展示"+"导出"）→ 按线路切成多个 feature，一条线路一个 feature
  - **任务尽量单模块**（03-architecture 的模块关系）：一个任务的改动落在一个模块内；确需跨模块的任务，描述中显式列出涉及模块清单（审查与波及面据此聚焦）
  - **地图盲区检测**：需求涉及的逻辑在 07 中找不到对应线路 → 说明地图有盲区，先对该区域增量补扫（scan 只读相关目录）再拆分——拆错边界的成本远高于补扫
