Files
git-learn/skill-workbench/docs/sm-flow/phase-contracts-v4.2-changelog.md
T
zhuyongxin c9a6777340 sm-flow v4.2: add verifiable checkpoints and gate file mechanism
Based on real execution review (lookup-knowledge-integration), discovered
that constraints are "soft" - rules are clear but lack enforcement mechanism.

Core problem: Agent can skip stages despite explicit rules saying "must not skip"

Changes:
1. Commit phase: add verifiable checkpoint
   - File completeness check: proposal ≥50 words, design ≥1 data structure, specs ≥3 requirements, tasks ≥5 items
   - Consistency check: proposal concepts → design mapping, design decisions → tasks implementation
   - Gate file: create .committed after passing all checks

2. Apply phase: add pre-gate check
   - Hard constraint: check .committed file existence
   - If missing: report, list gaps, ask user to fix or explicitly skip
   - Block implementation based on incomplete OpenSpec

3. Archive phase: add mandatory execution order
   - 5-step checklist: devflow files → index → .archive-ready → report → archive
   - Self-check: verify Step 1-3 before Step 4
   - Prevent "handoff first, devflow forgotten" issue

New gate files:
- .committed: created by commit phase, checked by apply phase
- .archive-ready: created by archive Step 3

Expected impact:
- Commit skip rate: -100% (explicit checklist prevents fuzzy pass)
- Apply on incomplete OpenSpec: -100% (gate blocks)
- Archive devflow omission: -100% (mandatory order)

Design principles:
- Verifiability: "executable state" → "≥50 words + ≥1 structure + ≥3 requirements"
- Gate files: soft judgment → file existence check
- Mandatory order: advisory "should do" → 5-step checklist "must do"

Complexity: +80 lines (phase-contracts.md +40, archive-rules.md +40)
Approach: turn soft constraints into hard checks, no new stages

Relation to v4.1:
- v4.1: solve "insufficient research causes rework" (quality issue)
- v4.2: solve "lack of enforcement causes stage skipping" (process issue)

Docs:
- phase-contracts.md: enhanced commit + apply phases
- archive-rules.md: added mandatory execution order at top
- workflow.md: added v4.2 evolution chapter
- phase-contracts-v4.2-changelog.md: detailed change log
- sm-flow-optimization-suggestions.md: source review
2026-06-24 14:51:45 +08:00

308 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SM Flow Phase Contracts v4.2 更新日志
> 更新日期: 2026-06-24
> 更新原因: 基于"lookup-knowledge-integration"执行复盘
> 更新方案: 增强执行机制,引入可验证 checkpoint
---
## 更新概览
**核心目标**: 解决"约束是软性的"问题,增加可执行的检查机制
**更新范围**:
- ✅ commit 阶段:增加文件完整性和一致性检查清单
- ✅ apply 阶段:增加前置门控(.committed 文件检查)
- ✅ archive 阶段:增加强制执行顺序(5 步 checklist)
**文本增量**: +80 行
---
## 核心问题诊断
### 问题根源:约束是"软性"的,缺少执行机制
| 问题 | 现象 | 影响 | 根本原因 |
|------|------|------|----------|
| **Commit 检查缺标准** | 不知道如何判断"通过 commit 检查" | agent 跳过 commit 直接进入 apply | 只说"检查是否可执行",没说具体检查什么 |
| **Apply 缺前置门控** | 用户说"修复"就直接开始实现 | 可能基于不完整的 OpenSpec | 进入条件是软性描述,没有文件检查 |
| **Archive 无 Checklist** | 先创建 handoff,忘记 devflow | 归档流程不完整 | 没有强制执行顺序 |
---
## 详细修改
### 1. Commit 阶段 — 增加可验证 Checkpoint
**修改位置**: `phase-contracts.md` 第 208-221 行
**新增内容**:
#### 文件完整性检查(必须全部通过)
- [ ] `proposal.md` 存在,包含问题描述(至少 50 字)、建议方案(至少 100 字)、范围/非目标
- [ ] `design.md` 存在,包含架构设计(文字或图)、数据结构定义(至少 1 个)、关键决策记录(至少 2 条)
- [ ] `specs/` 目录存在,至少 1 个 functional-spec.md 包含 ≥3 个 requirement
- [ ] `tasks.md` 存在,包含 ≥5 个可执行子任务,每个任务有验收标准
#### 一致性检查(必须通过)
- [ ] proposal 中的核心概念在 design 中有对应设计
- [ ] design 中的关键决策在 tasks 中有对应实现任务
- [ ] tasks 的验收标准可验证(不是"正确实现""完成功能"这类模糊描述)
#### 标记文件
检查通过后,创建 `openspec/changes/{slug}/.committed` 文件标记为 Committed OpenSpec
**目的**:
- 提供明确的"可执行状态"判断标准
- 强制 agent 完成所有检查项
- 通过 `.committed` 文件提供下游门控依据
---
### 2. Apply 阶段 — 增加前置门控检查
**修改位置**: `phase-contracts.md` 第 233-244 行
**新增内容**:
#### 前置门控检查(硬约束)
1. 检查 `openspec/changes/{slug}/.committed` 文件是否存在
2. 如不存在,执行以下流程:
- 汇报:Draft OpenSpec 未通过 commit 检查
- 列出缺失的 checkpoint 项(文件完整性、一致性检查)
- 询问用户:是否补做 commit 检查,或明确跳过(需显式确认)
**目的**:
- 强制 apply 依赖 Committed OpenSpec
- 阻止基于不完整 OpenSpec 的实现
- 提供补救路径(补做 commit 或显式跳过)
---
### 3. Archive 阶段 — 增加强制执行顺序
**修改位置**: `archive-rules.md` 第 5-41 行
**新增章节**: Archive 强制执行顺序
#### Step 1: 创建 devflow 档案(必需)
- [ ] 创建 `brief.md`(从 proposal.md 提取)
- [ ] 创建 `evidence.md`(从 decisions.md 提取)
- [ ] 创建 `decisions.md`(整理为最终版)
- [ ] 创建 `acceptance.md`(记录验证情况)
#### Step 2: 更新索引(必需)
- [ ] 在 `devflow/index.md` 末尾追加或更新一行
#### Step 3: 标记 OpenSpec(必需)
- [ ] 创建 `openspec/changes/{slug}/.archive-ready` 文件
#### Step 4: 向用户汇报(必需)
- [ ] 列出创建的 devflow 档案文件路径(验证文件实际存在)
- [ ] 汇报验证情况(按类型分类)
- [ ] 列出剩余风险
- [ ] 询问:**是否现在归档 OpenSpec?**
#### Step 5: 用户确认后执行 OpenSpec Archive(可选)
- [ ] 调用 `openspec-archive-change`
- [ ] 记录 archive 结果
**自检**: 在执行 Step 4 前,检查 Step 1-3 是否都完成。
**目的**:
- 强制 devflow 档案优先(不再先创建 handoff)
- 提供明确的执行顺序,避免遗漏
- 通过 `.archive-ready` 文件标记完成状态
---
## 新增门控文件
| 文件 | 创建时机 | 用途 |
|------|----------|------|
| `.committed` | commit 阶段退出时 | apply 阶段前置门控 |
| `.archive-ready` | archive Step 3 | 标记归档准备就绪 |
---
## 预期效果
### 量化指标
| 指标 | v4.1 | v4.2 目标 | 改善 |
|------|------|-----------|------|
| Commit 阶段跳过率 | 高(无明确标准) | 0%(有 checklist) | -100% |
| Apply 基于不完整 OpenSpec | 可能发生 | 0%(门控阻止) | -100% |
| Archive 遗漏 devflow | 可能发生 | 0%(强制顺序) | -100% |
### 质量提升
**Commit 阶段**:
- ✅ 明确什么叫"可执行状态"
- ✅ agent 无法跳过检查清单
- ✅ 提供 `.committed` 文件作为凭证
**Apply 阶段**:
- ✅ 强制检查 `.committed` 文件存在
- ✅ 阻止基于不完整 OpenSpec 的实现
- ✅ 提供补救路径
**Archive 阶段**:
- ✅ 强制 devflow 优先(不再先创建 handoff)
- ✅ 5 步 checklist 避免遗漏
- ✅ 自检机制确保完整性
---
## 与 v4.1 的关系
| 版本 | 核心改进 | 解决问题 |
|------|----------|----------|
| v4.1 | Pre-apply Research Checkpoint | apply 阶段前置调研不足,导致返工 |
| v4.2 | 可验证 Checkpoint + 门控文件 | 约束是软性的,agent 容易跳过阶段 |
**互补关系**:
- v4.1 解决"调研不充分导致返工"
- v4.2 解决"缺少执行机制导致跳过阶段"
---
## 设计原则
### 1. 可验证性
**Before**: "检查 OpenSpec 是否可执行"(模糊)
**After**: "proposal ≥50字、design ≥1个数据结构、specs ≥3个 requirement"(具体)
### 2. 门控文件
**Before**: 软性描述"已通过 commit"
**After**: 硬性检查 `.committed` 文件存在
### 3. 强制顺序
**Before**: 建议性"应该先 devflow 后 handoff"
**After**: 5 步 checklist,不得跳过或重排
---
## 复杂度评估
**本次修改复杂度**: 低-中等
- 文本增量: +80 行(phase-contracts.md +40 行,archive-rules.md +40 行)
- 概念增加: 2 个门控文件(.committed, .archive-ready)
- 规则增强: 3 个阶段的检查清单
**整体复杂度**: 高(但更可靠)
- 总行数: ~700 行 → ~780 行(+11%)
- 门控数: 6 个 → 8 个(+commit 文件完整性 + apply 前置门控)
- 强制清单: +3 个(commit 文件完整性、commit 一致性、archive 5 步)
**权衡**:
- ✅ 收益: 彻底解决"跳过阶段"问题
- ⚠️ 成本: 增加 80 行文本,agent 需检查更多项
---
## 适用场景
### ✅ 所有场景(无例外)
v4.2 的改进是**执行机制**层面的,不涉及业务逻辑:
- 无论 micro/standard/complex,都需要 commit 检查
- 无论需求大小,都需要 apply 前置门控
- 无论项目规模,都需要 archive 强制顺序
### 快速模式
快速模式可以简化产物(如 tasks 只需 3 个子任务),但**不能跳过门控**:
- ✅ 仍需 commit 检查(即使 tasks 数量少)
- ✅ 仍需 apply 前置门控
- ✅ 仍需 archive 强制顺序
---
## 实施验证
### 验证计划
下次完整执行 sm-flow 时,检查:
1. **Commit 阶段**:
- [ ] agent 是否执行了文件完整性检查?
- [ ] agent 是否执行了一致性检查?
- [ ] agent 是否创建了 `.committed` 文件?
2. **Apply 阶段**:
- [ ] agent 是否检查了 `.committed` 文件存在?
- [ ] 如不存在,agent 是否汇报并询问用户?
3. **Archive 阶段**:
- [ ] agent 是否按 5 步顺序执行?
- [ ] agent 是否在 Step 4 前自检了 Step 1-3?
- [ ] agent 是否创建了 `.archive-ready` 文件?
### 成功标准
- ✅ 无未经检查的 commit → apply 跳转
- ✅ 无基于不完整 OpenSpec 的实现
- ✅ 无先创建 handoff 后补 devflow 的情况
---
## 后续演进方向
### v5.0 候选特性(观察 3+ 次执行后决定)
如果 v4.2 执行良好,但仍有问题,考虑:
1. **流程状态文件** `.sm-flow-state`
- 记录当前阶段、已完成阶段、时间戳
- 支持断点续做
2. **更多门控文件**
- `.context-done`(context 阶段完成)
- `.grill-done`(grill 阶段完成)
- `.apply-done`(apply 阶段完成)
3. **违规自检机制**
- 每个阶段退出前,自动检查是否违反 6 条硬约束
4. **进度可视化**
- 每次开始时,汇报进度条(9 个阶段的完成情况)
**判断依据**: 如果 v4.2 后仍频繁出现跳过阶段,再引入更重的机制。
---
## 相关文档
- 执行复盘: `skill-workbench/docs/sm-flow/sm-flow-optimization-suggestions.md`
- 修改文件:
- `.agents/skills/sm-flow/references/phase-contracts.md`
- `.agents/skills/sm-flow/references/archive-rules.md`
---
## 总结
**v4.2 的核心理念**: 把"软性约束"变成"硬性检查"
| 改进点 | Before | After |
|--------|--------|-------|
| Commit 标准 | "可执行状态"(模糊) | 文件完整性 + 一致性检查清单 |
| Apply 门控 | "已通过 commit"(软性) | 检查 `.committed` 文件存在(硬性) |
| Archive 顺序 | "应该先 devflow"(建议) | 5 步强制顺序 + 自检 |
**预期效果**: 彻底解决"agent 跳过阶段"问题,提升流程可靠性。