Skip to content

目标

实现 tdd_checkpoint 工具的状态机(内存存储),管理 RED→GREEN cycle 的完整生命周期。

实现要点

  1. Evidence 状态机 (src/flowrun/state.ts)

    • createTaskEvidence() — 初始化空 evidence
    • startCycle(taskEvidence, cycleId, criterionId, testPaths, selector, workspaceDigest) — 验证 Task running + criterion 存在 + testPaths 匹配
    • recordRed(taskEvidence, cycleId, evidence) — 验证:有测试变化、RED 分类有效
    • recordGreen(taskEvidence, cycleId, evidence) — 验证:已有 RED、RED 输入 digest 不变、有实现变化
    • recordFinalRegression(taskEvidence, headSha, treeSha, runs) — 验证 worktree clean
    • recordFinalVerification(taskEvidence, headSha, treeSha, runs) — 执行 verifyCommands
    • abandonCycle(taskEvidence, cycleId, reason) — 仅允许未通过 cycle
    • 所有函数纯函数,输入 state → 输出 new state
  2. Tool handler (src/plugin/tdd-tool.ts)

    • handleTddCheckpoint(req: TddCheckpointRequest): TddCheckpointResponse
    • 从 ToolContext 提取 repo/worktree/session
    • 验证 Task 分支绑定(executionBinding)
    • 不接受自报 cwd 或 shell command
    • 根据 op 分发到 state.ts 各函数
    • 返回结构化 response(ok: true/false + evidence revision)
  3. 错误码

    • TASK_NOT_FOUND, TASK_NOT_RUNNING, CRITERION_NOT_FOUND
    • RED_EXPECTED_FAILURE, RED_INFRASTRUCTURE_FAILURE
    • GREEN_EXPECTED_PASS, IMPLEMENTATION_CHANGE_REQUIRED, TEST_CHANGED_AFTER_RED
    • CYCLE_CONFLICT, REGRESSION_FAILED, COMMAND_TIMEOUT

验收标准

  • [ ] Cycle 生命周期测试通过(创建→RED→GREEN→abandon 全部路径)
  • [ ] 边界条件测试:RED 直接 pass、infrastructure 错误、测试被修改、无实现变化
  • [ ] 幂等测试:相同参数返回原结果
  • [ ] final-regression/verification 测试

Worktree

  • 路径: .worktree/tdd-c2-checkpoint-sm/
  • 分支: feat/tdd-c2-checkpoint-sm