68 lines
4.0 KiB
Markdown
68 lines
4.0 KiB
Markdown
# SM Flow Execution Hardening PRD
|
||
|
||
## 问题陈述
|
||
|
||
`sm-flow` 已经定义了较完整的阶段、规则和 reference 文件,但在真实项目执行中,代理仍然会把它当成“有帮助的流程建议”,而不是“必须逐阶段满足的执行协议”。结果是:
|
||
|
||
- Phase 0 没有形成入口摘要和已知影响区域。
|
||
- Phase 0.5 没有及时初始化和维护 `devflow/` 项目档案。
|
||
- Phase 1 没有显式声明 skill 或 fallback,Draft / Committed OpenSpec 的边界不稳定。
|
||
- Phase 1.5 被跳过,导致 proposal / design / research / specs / tasks 之间的一致性缺口直到用户 review 才暴露。
|
||
- Phase 2 虽然收集了证据,但没有以结构化问题池和 one-at-a-time 的方式稳定执行。
|
||
- Phase 2.5 被跳过,架构链路和接口影响没有提前暴露。
|
||
- Phase 2.9 缺少强制自检,无法可靠发现 cross-artifact 遗漏。
|
||
|
||
这说明当前痛点不是缺少理念,而是缺少“执行时自检”和“阶段切换门禁”的产品化机制。
|
||
|
||
## 解决方案
|
||
|
||
为 `sm-flow` 增加一轮“执行硬化”需求,目标是让代理在实际使用中更难偏离阶段协议。重点不是新增更多解释,而是把现有规则压缩成更可执行、更可检查、更可暴露偏差的约束,例如:
|
||
|
||
- 每个阶段结束必须有简短 checklist / checkpoint。
|
||
- 未显式声明 skill 或 fallback 视为该阶段未完成。
|
||
- Phase 2 先生成问题池,再按 one-at-a-time 消费。
|
||
- Phase 1.5 / 2.9 引入更明确的 cross-artifact diff 检查。
|
||
- `micro` 明确只能压缩产物,不得跳过关键 gate。
|
||
- devflow 产物默认在过程内同步更新,而不是拖到 Phase 4 补写。
|
||
|
||
## 用户故事
|
||
|
||
1. 作为使用 `sm-flow` 的开发者,我希望代理在进入下一阶段前自动暴露“已满足/未满足”的条件,这样我能尽早发现流程偏差。
|
||
2. 作为使用 `sm-flow` 的开发者,我希望 `micro` 模式仍然保留关键 gate,这样小改动不会因为“看起来简单”而漏掉重要检查。
|
||
3. 作为使用 `sm-flow` 的开发者,我希望 Phase 2 先形成问题池,再逐个提问,这样既符合 human-in-the-loop 约束,也能避免只问了少数问题就错误收尾。
|
||
4. 作为使用 `sm-flow` 的开发者,我希望 Phase 1.5 和 2.9 能可靠检查 proposal / design / specs / tasks / evidence / decisions 的一致性,这样问题能在 apply 前暴露,而不是等我 review。
|
||
|
||
## 实现决策
|
||
|
||
- 决策:本轮先把“执行硬化”提炼成需求,而不是直接进入文档改造。
|
||
- 原因:当前已掌握足够多的真实使用反馈,需要先明确问题边界和验收标准,再决定是否开新 OpenSpec change。
|
||
- 影响:下一步可以更顺畅地进入 `sm-flow` 的正式改造,而不是边讨论边补规则。
|
||
|
||
- 决策:把重点放在 phase gate、自检、问题池和一致性检查,而不是继续扩展 `sm-flow` 的理念层说明。
|
||
- 原因:复盘显示失真主要来自执行习惯和缺少检查,而不是原则方向错误。
|
||
- 影响:后续改动应优先落在 `SKILL.md`、`phase-contracts.md` 和模板/检查清单,而不是重写 workflow 长文。
|
||
|
||
## 测试决策
|
||
|
||
- 好测试应该通过审查 `sm-flow` 协议文本和执行产物,验证代理是否被强制带到正确的阶段检查点。
|
||
- 必须覆盖:
|
||
- `micro` 模式下 gate 不可跳过
|
||
- Phase 2 问题池与 one-at-a-time 提问
|
||
- skill/fallback 显式声明要求
|
||
- Phase 1.5 / 2.9 cross-artifact 检查
|
||
- devflow 过程内同步更新
|
||
- 不测试:
|
||
- 业务代码实现结果
|
||
- OpenSpec CLI 本身的功能正确性
|
||
|
||
## 非目标
|
||
|
||
- 不在本轮定义新的业务流程。
|
||
- 不在本轮替换 OpenSpec-first / Devflow-assisted 主设计。
|
||
- 不要求为所有小改动增加更重的文档负担。
|
||
|
||
## 补充说明
|
||
|
||
- 这轮需求直接来源于一次真实项目执行复盘,因此它比理念讨论更贴近代理实际失真模式。
|
||
- 如果后续进入 OpenSpec,建议 change 名可沿用 `sm-flow-execution-hardening`。
|