# Phase 4:需求反向验收规程 **问题意识**:Phase 4 检查的不是"文档漂不漂亮",而是**需求是否明确到足以形成规格**。核心一问: > "一个完全没有参与讨论的资深工程师现在接手开发,哪些重要产品行为仍然需要他自己猜测?哪些必须回头找需求负责人确认?" ## 执行方式(按优先级) 1. **子代理独立审查(首选)**:用 Agent 工具派 fresh-context 子代理(general-purpose 或 Explore)。提示词要点: - 角色:资深开发工程师,第一次见到这个项目; - 输入:只给 state.md 路径(+ 已有 openspec specs 路径,如有)——**不给会话历史、不给 Le SPEC 的阶段叙事**,确保视角独立; - 任务:逐条检查下列清单,输出"我会被迫猜测/必须确认"的清单,每条注明影响哪个功能点与后果严重度; - 产出格式:问题列表(问题/影响/严重度建议/建议澄清方式)。 2. **无子代理能力时的降级**:自审前显式重置角色("放下前文立场,作为首次接手的工程师仅凭 state.md 判断"),只允许引用 state.md 与项目文件内容。**必须在产出中声明"本轮为同上下文自审,独立性弱于子代理审查"**——不装作独立。 ## 检查清单 - [ ] 用户流程有断点(走不到下一步/回不去) - [ ] 功能之间缺关联规则(A 发生时 B 如何) - [ ] 数据关系歧义(谁拥有谁、一对多还是多对多、删除级联) - [ ] 状态机不完整(缺状态、缺转换、缺终态) - [ ] 权限与业务边界不明(谁能做什么、越界怎样) - [ ] 异常场景缺处理原则(失败/超时/并发/空数据) - [ ] 需求间冲突(同一对象两种定义) - [ ] 未经确认的重要默认假设(state.md 里的 [默认] 项逐条复核用户知情度) - [ ] 验收判据缺失(做完了怎么算"对") ## 分级与处置 | 级别 | 判定 | 处置 | |---|---|---| | blocking | 不澄清就无法实现核心行为 / 两种理解导致完全不同的产品 | 终止回合向用户澄清(用 grilling 单轮格式,记账本) | | major | 影响正确性但可从已确认决策推导 | 推导入 state.md 并标注依据;推导不了升 blocking | | minor | 边缘场景、可延后 | 记开放问题,进 SPEC 的"非阻塞事项" | 更新后**只复核受影响项**,不重跑全清单。清零 blocking → 进 Phase 5。