Skip to content

目标

实现 remote head revalidation、PR rework(behavior/refactor)完整流程和 coverage 解析。

实现要点

  1. Remote head revalidation (src/flowrun/pr.ts 扩展)

    • flow_pr verify 实现:
      • gh pr view --json headRefOid,headRepository 查询 remote head
      • SHA 不同但 tree SHA 相同:在隔离 checkout 重新执行 regression/verification,绑定新 head
      • tree SHA 不同:将摘要置为 pending,要求先执行 flow_pr rework
    • flow_pr rework 实现:
      • behavior: 声明 affected criterionIds → 增加 reworkRevision → 要求新 cycle
      • refactor: 不制造 RED → 但必须重跑 regression → 需要 reviewer 批准
    • flow_pr rework-complete:验证新 committed-head regression/verification → Task 回 reviewing
  2. Coverage 解析 (src/flowrun/coverage.ts)

    • parseCoverageReport(reportPath: string): CoverageEvidence
    • 安全检查:report path 在隔离 checkout 内,拒绝 ..、逃逸 symlink
    • 运行前删除旧 report;运行后要求本次新建
    • 解析 istanbul-json-summarylines.pct
    • 拒绝缺字段、NaN、Unknown、范围外数值
    • 保存 actual、threshold、metric、report digest、head SHA
  3. Rework 流程

    • rework(kind="behavior"):声明 affected criterion,每个受影响的 TDD criterion 需要新 cycle
    • rework(kind="refactor"):不制造虚假 RED,但需要 reviewer 批准(binding reworkRevision + head/tree SHA + policyDigest)
    • rework 后沿用现有 PR,不创建新 PR
    • pr-rework-complete 验证后恢复 Task 为 reviewing

验收标准

  • [ ] push/rebase 后 remote head 变化测试
  • [ ] stale report(PR tree 变化但未 rework)测试
  • [ ] behavior rework + 新 cycle 测试
  • [ ] refactor rework + reviewer 批准测试
  • [ ] coverage 路径穿越/NaN/旧文件拒绝测试

Worktree

  • 路径: .worktree/tdd-d3-reval-coverage/
  • 分支: feat/tdd-d3-reval-coverage