@openprd/cli 0.1.10 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/.openprd/benchmarks/index.md +17 -15
  2. package/.openprd/benchmarks/sources.yaml +53 -1
  3. package/.openprd/changes/adaptive-project-framing/.openprd.yaml +2 -0
  4. package/.openprd/changes/adaptive-project-framing/design.md +47 -0
  5. package/.openprd/changes/adaptive-project-framing/proposal.md +35 -0
  6. package/.openprd/changes/adaptive-project-framing/specs/agent-requirements/spec.md +16 -0
  7. package/.openprd/changes/adaptive-project-framing/task-events.jsonl +20 -0
  8. package/.openprd/changes/adaptive-project-framing/tasks.md +340 -0
  9. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/.openprd.yaml +2 -0
  10. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/design.md +34 -0
  11. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/proposal.md +23 -0
  12. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/specs/agent-requirements/spec.md +16 -0
  13. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/task-events.jsonl +14 -0
  14. package/.openprd/changes/docs-anti-pollution-and-design-direction-review/tasks.md +238 -0
  15. package/.openprd/changes/loop-isolated-worktree-commit/.openprd.yaml +2 -0
  16. package/.openprd/changes/loop-isolated-worktree-commit/design.md +53 -0
  17. package/.openprd/changes/loop-isolated-worktree-commit/proposal.md +38 -0
  18. package/.openprd/changes/loop-isolated-worktree-commit/specs/agent-requirements/spec.md +16 -0
  19. package/.openprd/changes/loop-isolated-worktree-commit/task-events.jsonl +22 -0
  20. package/.openprd/changes/loop-isolated-worktree-commit/tasks.md +357 -0
  21. package/.openprd/changes/openprd/.openprd.yaml +2 -0
  22. package/.openprd/changes/openprd/design.md +46 -0
  23. package/.openprd/changes/openprd/proposal.md +36 -0
  24. package/.openprd/changes/openprd/specs/agent-requirements/spec.md +16 -0
  25. package/.openprd/changes/openprd/task-events.jsonl +23 -0
  26. package/.openprd/changes/openprd/tasks.md +242 -0
  27. package/.openprd/changes/pm-human-in-the-loop/.openprd.yaml +2 -0
  28. package/.openprd/changes/pm-human-in-the-loop/design.md +38 -0
  29. package/.openprd/changes/pm-human-in-the-loop/proposal.md +29 -0
  30. package/.openprd/changes/pm-human-in-the-loop/specs/agent-requirements/spec.md +16 -0
  31. package/.openprd/changes/pm-human-in-the-loop/task-events.jsonl +18 -0
  32. package/.openprd/changes/pm-human-in-the-loop/tasks.md +306 -0
  33. package/.openprd/changes/test-strategy-router/.openprd.yaml +2 -0
  34. package/.openprd/changes/test-strategy-router/design.md +65 -0
  35. package/.openprd/changes/test-strategy-router/proposal.md +45 -0
  36. package/.openprd/changes/test-strategy-router/specs/agent-requirements/spec.md +16 -0
  37. package/.openprd/changes/test-strategy-router/task-events.jsonl +1 -0
  38. package/.openprd/changes/test-strategy-router/tasks.md +132 -0
  39. package/.openprd/changes/verify-boundaries-and-historical-refresh/.openprd.yaml +2 -0
  40. package/.openprd/changes/verify-boundaries-and-historical-refresh/design.md +28 -0
  41. package/.openprd/changes/verify-boundaries-and-historical-refresh/proposal.md +23 -0
  42. package/.openprd/changes/verify-boundaries-and-historical-refresh/specs/agent-requirements/spec.md +16 -0
  43. package/.openprd/changes/verify-boundaries-and-historical-refresh/task-events.jsonl +11 -0
  44. package/.openprd/changes/verify-boundaries-and-historical-refresh/tasks.md +66 -0
  45. package/.openprd/changes/vibe-coding-dev-check/.openprd.yaml +2 -0
  46. package/.openprd/changes/vibe-coding-dev-check/design.md +37 -0
  47. package/.openprd/changes/vibe-coding-dev-check/proposal.md +28 -0
  48. package/.openprd/changes/vibe-coding-dev-check/specs/agent-requirements/spec.md +16 -0
  49. package/.openprd/changes/vibe-coding-dev-check/task-events.jsonl +18 -0
  50. package/.openprd/changes/vibe-coding-dev-check/tasks.md +306 -0
  51. package/.openprd/design/README.md +11 -6
  52. package/.openprd/design/README_EN.md +4 -1
  53. package/.openprd/design/active/asset-spec.md +6 -0
  54. package/.openprd/design/active/direction-plan.md +5 -5
  55. package/.openprd/design/active/selected-direction.md +2 -0
  56. package/.openprd/design/anti-slop.md +26 -1
  57. package/.openprd/design/assets/surface-presets.md +6 -0
  58. package/.openprd/design/checklists/ui-quality-gate.md +7 -0
  59. package/.openprd/design/lenses/frontend-lenses.md +28 -0
  60. package/.openprd/design/recipes/content-experience.md +8 -1
  61. package/.openprd/design/recipes/operational-tool.md +7 -0
  62. package/.openprd/design/recipes/product-launch.md +8 -1
  63. package/.openprd/design/templates/README.md +6 -3
  64. package/.openprd/design/templates/README_EN.md +6 -3
  65. package/.openprd/design/templates/ops-dashboard.html +8 -1
  66. package/.openprd/design/templates/product-launch.html +2 -1
  67. package/.openprd/design/themes/theme-catalog.json +23 -5
  68. package/.openprd/engagements/active/prd.md +103 -100
  69. package/.openprd/schema/prd.schema.yaml +15 -0
  70. package/.openprd/standards/config.json +7 -1
  71. package/.openprd/templates/base/intake.md +13 -0
  72. package/.openprd/templates/base/prd.md +15 -0
  73. package/AGENTS.md +14 -4
  74. package/README.md +107 -14
  75. package/README_EN.md +131 -13
  76. package/package.json +1 -1
  77. package/scripts/dev-check-wrapup-copy.mjs +46 -21
  78. package/skills/openprd-benchmark-router/SKILL.md +2 -1
  79. package/skills/openprd-diagram-review/SKILL.md +27 -2
  80. package/skills/openprd-diagram-review/references/explanation-svg-patterns.md +131 -0
  81. package/skills/openprd-discovery-loop/SKILL.md +2 -2
  82. package/skills/openprd-frontend-design/SKILL.md +44 -20
  83. package/skills/openprd-frontend-design/references/design-asset-contract.md +6 -0
  84. package/skills/openprd-frontend-design/references/direction-engine.md +29 -4
  85. package/skills/openprd-harness/SKILL.md +22 -16
  86. package/skills/openprd-quality/SKILL.md +10 -8
  87. package/skills/openprd-requirement-intake/SKILL.md +5 -3
  88. package/skills/openprd-requirement-intake/references/prd-template-lenses.md +2 -2
  89. package/skills/openprd-requirement-intake/references/startup-validation-lens.md +98 -13
  90. package/skills/openprd-router/SKILL.md +2 -1
  91. package/skills/openprd-shared/SKILL.md +27 -17
  92. package/skills/openprd-standards/SKILL.md +4 -2
  93. package/src/agent-canonical-content.js +808 -0
  94. package/src/agent-integration.js +259 -778
  95. package/src/brainstorm-artifacts.js +156 -8
  96. package/src/brainstorm-presentation.js +14 -4
  97. package/src/brainstorm.js +165 -2
  98. package/src/canvas-app.html.js +2910 -0
  99. package/src/canvas-i18n.js +274 -0
  100. package/src/canvas-workspace.js +2271 -0
  101. package/src/cli/args.js +72 -4
  102. package/src/cli/basic-print.js +3 -0
  103. package/src/cli/canvas-print.js +106 -0
  104. package/src/cli/doctor-print.js +20 -0
  105. package/src/cli/print.js +2 -0
  106. package/src/cli/quality-commands.js +222 -0
  107. package/src/cli/quality-print.js +37 -5
  108. package/src/cli/run-print.js +5 -0
  109. package/src/cli/workflow-print.js +3 -0
  110. package/src/codex-app-server-relay.js +251 -0
  111. package/src/codex-hook-runner-template.mjs +963 -65
  112. package/src/design-starter-support.js +2 -2
  113. package/src/design-starter.js +39 -3
  114. package/src/dev-standards.js +125 -10
  115. package/src/diagram-core.js +390 -171
  116. package/src/discovery.js +2 -8
  117. package/src/docs-compact.js +125 -0
  118. package/src/execution-strategy.js +1 -1
  119. package/src/fleet.js +9 -3
  120. package/src/guide.js +227 -0
  121. package/src/html-artifacts.js +825 -51
  122. package/src/knowledge.js +101 -20
  123. package/src/language-policy.js +63 -3
  124. package/src/learning-review.js +1 -1
  125. package/src/loop.js +1 -1
  126. package/src/openprd.js +68 -131
  127. package/src/openspec/change-validate.js +2 -2
  128. package/src/openspec/constants.js +6 -7
  129. package/src/openspec/execute.js +2 -2
  130. package/src/openspec/generate.js +318 -102
  131. package/src/openspec/migration.js +168 -0
  132. package/src/openspec/paths.js +1 -22
  133. package/src/prd-core.js +102 -3
  134. package/src/quality-html-artifact.js +30 -5
  135. package/src/quality-visual-review.js +257 -14
  136. package/src/quality.js +66 -18
  137. package/src/review-presentation.js +60 -0
  138. package/src/run-harness.js +41 -3
  139. package/src/session-evidence.js +363 -0
  140. package/src/standards.js +64 -0
  141. package/src/test-strategy.js +7 -4
  142. package/src/visual-compare-centering.js +622 -0
  143. package/src/visual-compare-core.js +1123 -0
  144. package/src/visual-compare.js +620 -698
  145. package/src/workspace-core.js +132 -4
  146. package/src/workspace-workflow.js +172 -10
@@ -0,0 +1,23 @@
1
+ # 文档反污染治理与界面需求3方向交互稿评审
2
+
3
+ ## 背景与原因
4
+
5
+ OpenPrd 长期项目出现文档污染:docs/basic 巨行追加膨胀且顶层 PRD 失真(moticlaw backend-structure.md 57KB/119行、prd.md 落后约170个需求版本),.openprd 内部产物无保留策略(quality/reports 5118 份 5.2GB、active 280 个版本目录从未归档);同时 L1/L2 界面类需求的 3 方向效果图只散落在聊天里,评审结果不可回溯、不进固定评审界面。
6
+
7
+ ## 变更内容
8
+
9
+ - A1 standards verify 增加 docs/basic 巨行与 stale 质量检查;A2 quality/reports 与 harness 证据 retention 清理;A3 docs-compact 压缩建议工具与 change 收口默认归档;B1 review-presentation 合同新增 designDirections 区块(3 方向图 + 审美主张 + 避开项 + 选择状态);B2 review.html 渲染 3 方向评审卡片并支持选定/驳回回写;同步更新 skills 生成源与 docs/basic 文档。
10
+ - standards verify 新增 docsQuality 检查(巨行、平均行长、prd.md 版本落后);新增 openprd docs-compact 命令输出压缩重写建议稿;quality verify 后按 retention 策略清理旧报告(保留 latest + 最近 N);change --archive 在收口路径默认执行;review-presentation --template 输出含 designDirections 的模板;review.html 渲染 3 方向卡片区块。
11
+ - 在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据。
12
+
13
+ ## 能力范围
14
+
15
+ - `agent-requirements`: 文档反污染治理与界面需求3方向交互稿评审 需求。
16
+
17
+ ## 影响范围
18
+
19
+ - 主要用户: 使用 OpenPrd 管理项目的产品经理和 Agent(Codex / Claude Code / Cursor),尤其是长生命周期重度项目的维护者。
20
+ - 成本来源: imagegen 每方向一次调用,共 3 次;报告清理为本地文件操作无外部成本。
21
+ - 额度限制: docs-compact 单次只处理 docs/basic 下的标准文档;retention 默认保留最近 30 份报告可配置。
22
+ - 依赖: Codex 原生 imagegen(生成 3 方向交互稿图片);现有 review artifact 渲染与 hash 校验管线。
23
+ - 风险: 存量污染项目首次 verify 会出现大量报警,需要以 warning 分级而非 error 硬阻塞;retention 清理属于删除类动作,默认 dry-run 并只在 verify/doctor 提示,实际清理需要显式命令。
@@ -0,0 +1,16 @@
1
+ ## 新增需求
2
+
3
+ ### 需求:文档反污染治理与界面需求3方向交互稿评审
4
+ OpenPrd 长期项目出现文档污染:docs/basic 巨行追加膨胀且顶层 PRD 失真(moticlaw backend-structure.md 57KB/119行、prd.md 落后约170个需求版本),.openprd 内部产物无保留策略(quality/reports 5118 份 5.2GB、active 280 个版本目录从未归档);同时 L1/L2 界面类需求的 3 方向效果图只散落在聊天里,评审结果不可回溯、不进固定评审界面。
5
+
6
+ #### 场景:主流程成功
7
+ - **当** 文档治理流:Agent 改代码 -> dev-check/standards verify 报巨行与 stale -> docs-compact 给出压缩重写建议 -> change 收口自动归档 active 版本目录并按 retention 清理报告。设计评审流:L2 界面需求 -> design brief -> imagegen 3 方向交互稿 -> 登记 designDirections -> review-presentation 校验写入 -> review.html 展示 3 方向卡片 -> 用户选定 -> user-confirmed 写回 selected-direction.md -> 实现阶段 visual-compare 用选定方向做 reference。
8
+ - **则** 在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据。
9
+
10
+ #### 场景:边界情况保持可见
11
+ - **当** 非界面类 L2 需求不触发 designDirections 且 review 校验不因缺失阻塞;imagegen 不可用或限流时评审可先出文字方向卡占位并明确标注待补图;旧版本快照没有 designDirections 字段时渲染保持向后兼容;docs/basic 文件本来就短小的年轻项目不误报膨胀。
12
+ - **则** 产品应保持该情况明确可见,以支持实现和验证
13
+
14
+ #### 场景:失败模式得到处理
15
+ - **当** retention 误删 latest 指针或在途报告导致 quality verify 失败;归档把进行中的 change 移走导致状态断裂;巨行检查阈值过严导致老项目 verify 永远红灯阻塞正常工作;review.html 选择回写通道失败导致方向确认丢失。
16
+ - **则** 产品应提供有边界且可评审的结果
@@ -0,0 +1,14 @@
1
+ {"version":1,"at":"2026-07-03 15:44:55","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.01","taskTitle":"评审生成的 spec 覆盖","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
2
+ {"version":1,"at":"2026-07-03 15:44:55","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.02","taskTitle":"接通界面入口、导航与页面挂载","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
3
+ {"version":1,"at":"2026-07-03 15:44:55","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.03","taskTitle":"补齐日志、诊断与可观测性信号","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
4
+ {"version":1,"at":"2026-07-03 15:44:55","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.04","taskTitle":"实现standards verify 新增 docsQuality 检查(巨行、平均行长、prd.md 版本落后);新增 openprd docs-compact 命令输出压缩重写建议稿;quality verify 后按 retention 策略清理旧报告(保留 latest + 最近 N);change --archive 在收口路径默认执行;review-presentation --template 输出含 designDirections 的模板;review.html 渲染 3 方向卡片区块","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
5
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.05","taskTitle":"打通主流程闭环:文档治理流:Agent 改代码 -> dev-check/standards verify 报巨行与 stale","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
6
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.06","taskTitle":"验证在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
7
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.07","taskTitle":"回归非功能约束:所有新检查默认 warning 级不阻塞存量项目,可通过 config 升级为 error;retention","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
8
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.08","taskTitle":"回归边界条件与失败处理:边界情况:非界面类 L2 需求不触发 designDirections 且 review 校验不因缺失阻塞;im 等 2 项","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
9
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.09","taskTitle":"验证成本与额度护栏","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
10
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.10","taskTitle":"验证滥用与越权路径","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
11
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.11","taskTitle":"验证成本监控、报警和止损","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
12
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.12","taskTitle":"维护 docs/basic 项目基础文档","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
13
+ {"version":1,"at":"2026-07-03 15:44:56","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.13","taskTitle":"更新文件说明书和文件夹 README","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
14
+ {"version":1,"at":"2026-07-03 15:44:57","changeId":"docs-anti-pollution-and-design-direction-review","action":"advance","taskId":"T001.14","taskTitle":"运行 OpenPrd spec 校验","ok":true,"verify":null,"evidence":".openprd/harness/test-reports/docs-anti-pollution-and-design-direction-review-tasks.md","notes":"实现与验证详见任务级测试报告;npm test 236 pass,standards/quality verify 通过"}
@@ -0,0 +1,238 @@
1
+ # 任务
2
+
3
+ - [x] T001.01 评审生成的 spec 覆盖
4
+ - type: governance
5
+ - done: 生成的 agent-requirements spec 符合 PRD 意图
6
+ - verify: openprd change . --validate --change docs-anti-pollution-and-design-direction-review
7
+ - test-layer: manual
8
+ - test-size: manual
9
+ - test-scope: governance
10
+ - evidence-plan: openprd change . --validate --change docs-anti-pollution-and-design-direction-review
11
+ - upgrade-reason: 治理任务以结构校验、评审确认和变更状态证据为主
12
+ - execution-mode: serial
13
+ - parallel-group: governance
14
+ - write-scope: .openprd/changes/**, .openprd/**
15
+ - owner-role: main-agent
16
+ - local-verify: openprd change . --validate --change docs-anti-pollution-and-design-direction-review
17
+ - integration-owner: main-agent
18
+
19
+ - [x] T001.02 接通界面入口、导航与页面挂载
20
+ - type: implementation
21
+ - deps: T001.01
22
+ - done: 用户可以从正确入口进入对应界面,页面挂载与状态收尾已经接通。 涉及: 改动集中在 src/standards.js、src/quality.js、src/openspec/change-lifecycle.js、s 等 2 项。
23
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.02 --evidence-required
24
+ - test-layer: integration, e2e
25
+ - test-size: large
26
+ - test-scope: visual-flow
27
+ - evidence-plan: 主流程自动化、截图或 visual-compare 证据 + 本任务 verify 命令;轻量 UI 可视优化也需要 before/after、verification-board 或 alignment-board 证据,同构卡片/列表要覆盖内部内容槽位
28
+ - upgrade-reason: 触达用户可见路径,需要端到端或视觉级证据;轻量 UI 可视优化不能只用构建或 dev-check 收口
29
+ - execution-mode: parallel-workers
30
+ - parallel-group: surface
31
+ - write-scope: src/cli/**, src/**, test/**
32
+ - owner-role: worker
33
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.02 --evidence-required
34
+ - integration-owner: main-agent
35
+
36
+ - [x] T001.03 补齐日志、诊断与可观测性信号
37
+ - type: implementation
38
+ - deps: T001.02
39
+ - done: 关键阶段日志和诊断信号已经保留,后续排查可以直接定位到断点。 涉及: 改动集中在 src/standards.js、src/quality.js、src/openspec/change-lifecycle.js、s。
40
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.03 --evidence-required
41
+ - test-layer: unit, integration
42
+ - test-size: medium
43
+ - test-scope: cli-contract
44
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
45
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
46
+ - execution-mode: parallel-workers
47
+ - parallel-group: implementation
48
+ - write-scope: src/**, test/**
49
+ - owner-role: worker
50
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.03 --evidence-required
51
+ - integration-owner: main-agent
52
+
53
+ - [x] T001.04 实现standards verify 新增 docsQuality 检查(巨行、平均行长、prd.md 版本落后);新增 openprd docs-compact 命令输出压缩重写建议稿;quality verify 后按 retention 策略清理旧报告(保留 latest + 最近 N);change --archive 在收口路径默认执行;review-presentation --template 输出含 designDirections 的模板;review.html 渲染 3 方向卡片区块
54
+ - type: implementation
55
+ - deps: T001.03
56
+ - done: 已完成:standards verify 新增 docsQuality 检查(巨行、平均行长、prd.md 版本落后);新增 openprd docs-compact 命令输出压缩重写建议稿;quality verify 后按 retention 策略清理旧报告(保留 latest + 最近 N);change --archive 在收口路径默认执行;review-presentation --template 输出含 designDirections 的模板;review.html 渲染 3 方向卡片区块
57
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.04 --evidence-required
58
+ - test-layer: manual
59
+ - test-size: manual
60
+ - test-scope: docs
61
+ - evidence-plan: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.04 --evidence-required
62
+ - upgrade-reason: 文档任务以标准校验和人工审查证据为主
63
+ - execution-mode: parallel-workers
64
+ - parallel-group: docs
65
+ - write-scope: docs/basic/**, README*.md
66
+ - owner-role: worker
67
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.04 --evidence-required
68
+ - integration-owner: main-agent
69
+
70
+ - [x] T001.05 打通主流程闭环:文档治理流:Agent 改代码 -> dev-check/standards verify 报巨行与 stale
71
+ - type: implementation
72
+ - deps: T001.04
73
+ - done: 主流程关键节点已经打通,用户可以按预期从入口走到结果收尾。 涉及: 文档治理流:Agent 改代码 -> dev-check/standards verify 报巨行与 stale -> docs-compact。
74
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.05 --evidence-required
75
+ - test-layer: manual
76
+ - test-size: manual
77
+ - test-scope: docs
78
+ - evidence-plan: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.05 --evidence-required
79
+ - upgrade-reason: 文档任务以标准校验和人工审查证据为主
80
+ - execution-mode: parallel-workers
81
+ - parallel-group: docs
82
+ - write-scope: docs/basic/**, README*.md
83
+ - owner-role: worker
84
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.05 --evidence-required
85
+ - integration-owner: main-agent
86
+
87
+ - [x] T001.06 验证在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据
88
+ - type: verification
89
+ - deps: T001.05
90
+ - done: 已验证:在 openprd 自身仓库通过单元测试与 standards/quality/run verify;用 Codex CLI 在本地跑一个桌面任务实测新流程效果并留下证据
91
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.06 --evidence-required
92
+ - test-layer: unit, integration
93
+ - test-size: medium
94
+ - test-scope: cli-contract
95
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
96
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
97
+ - execution-mode: parallel-workers
98
+ - parallel-group: verification
99
+ - write-scope: test/**, .openprd/harness/test-reports/**
100
+ - owner-role: worker
101
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.06 --evidence-required
102
+ - integration-owner: main-agent
103
+
104
+ - [x] T001.07 回归非功能约束:所有新检查默认 warning 级不阻塞存量项目,可通过 config 升级为 error;retention
105
+ - type: verification
106
+ - deps: T001.06
107
+ - done: 非功能约束已经回归确认。 涉及: 所有新检查默认 warning 级不阻塞存量项目,可通过 config 升级为 error;retention 清理幂等且不删 latest.j。
108
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.07 --evidence-required
109
+ - test-layer: unit, integration
110
+ - test-size: medium
111
+ - test-scope: cli-contract
112
+ - evidence-plan: 单元测试锁定规则 + 集成或命令行契约验证
113
+ - upgrade-reason: 触达 CLI/API/Agent 契约或生成物,需要中间层验证
114
+ - execution-mode: parallel-workers
115
+ - parallel-group: verification
116
+ - write-scope: test/**, .openprd/harness/test-reports/**
117
+ - owner-role: worker
118
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.07 --evidence-required
119
+ - integration-owner: main-agent
120
+
121
+ - [x] T001.08 回归边界条件与失败处理:边界情况:非界面类 L2 需求不触发 designDirections 且 review 校验不因缺失阻塞;im 等 2 项
122
+ - type: verification
123
+ - deps: T001.07
124
+ - done: 边界条件与失败处理已经回归确认。 涉及: 边界情况:非界面类 L2 需求不触发 designDirections 且 review 校验不因缺失阻塞;imagegen 不可用或限流时评审 等 2 项。
125
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.08 --evidence-required
126
+ - test-layer: integration, e2e
127
+ - test-size: large
128
+ - test-scope: user-flow
129
+ - evidence-plan: 主流程自动化、截图或 visual-compare 证据 + 本任务 verify 命令;轻量 UI 可视优化也需要 before/after、verification-board 或 alignment-board 证据,同构卡片/列表要覆盖内部内容槽位
130
+ - upgrade-reason: 触达用户可见路径,需要端到端或视觉级证据;轻量 UI 可视优化不能只用构建或 dev-check 收口
131
+ - execution-mode: parallel-workers
132
+ - parallel-group: verification
133
+ - write-scope: test/**, .openprd/harness/test-reports/**
134
+ - owner-role: worker
135
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.08 --evidence-required
136
+ - integration-owner: main-agent
137
+
138
+ - [x] T001.09 验证成本与额度护栏
139
+ - type: verification
140
+ - deps: T001.08
141
+ - done: 已验证免费、试用或低权限用户不能绕过额度、并发、频率或总量限制
142
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.09 --evidence-required
143
+ - test-layer: integration, security
144
+ - test-size: medium
145
+ - test-scope: security
146
+ - evidence-plan: 正向路径 + 越权、额度、并发或敏感信息负向验证
147
+ - upgrade-reason: 触达权限、安全、成本或滥用边界,需要至少集成级证据
148
+ - execution-mode: parallel-workers
149
+ - parallel-group: verification
150
+ - write-scope: test/**, .openprd/harness/test-reports/**
151
+ - owner-role: worker
152
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.09 --evidence-required
153
+ - integration-owner: main-agent
154
+
155
+ - [x] T001.10 验证滥用与越权路径
156
+ - type: verification
157
+ - deps: T001.09
158
+ - done: 已覆盖重复请求、并发请求、越权身份和异常恢复等负向场景
159
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.10 --evidence-required
160
+ - test-layer: integration, security
161
+ - test-size: medium
162
+ - test-scope: security
163
+ - evidence-plan: 正向路径 + 越权、额度、并发或敏感信息负向验证
164
+ - upgrade-reason: 触达权限、安全、成本或滥用边界,需要至少集成级证据
165
+ - execution-mode: parallel-workers
166
+ - parallel-group: verification
167
+ - write-scope: test/**, .openprd/harness/test-reports/**
168
+ - owner-role: worker
169
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.10 --evidence-required
170
+ - integration-owner: main-agent
171
+
172
+ - [x] T001.11 验证成本监控、报警和止损
173
+ - type: verification
174
+ - deps: T001.10
175
+ - done: 已确认用量或成本信号、报警阈值和人工/自动止损动作可执行
176
+ - verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.11 --evidence-required
177
+ - test-layer: integration, security
178
+ - test-size: medium
179
+ - test-scope: security
180
+ - evidence-plan: 正向路径 + 越权、额度、并发或敏感信息负向验证
181
+ - upgrade-reason: 触达权限、安全、成本或滥用边界,需要至少集成级证据
182
+ - execution-mode: parallel-workers
183
+ - parallel-group: verification
184
+ - write-scope: test/**, .openprd/harness/test-reports/**
185
+ - owner-role: worker
186
+ - local-verify: openprd tasks . --change docs-anti-pollution-and-design-direction-review --item T001.11 --evidence-required
187
+ - integration-owner: main-agent
188
+
189
+ - [x] T001.12 维护 docs/basic 项目基础文档
190
+ - type: documentation
191
+ - deps: T001.11
192
+ - done: 已检查 docs/basic 是否缺失或因本次需求、流程、结构、依赖、产品行为变化而过期;若涉及后端、脚本、Agent 或工具链变更,已同步评估 CLI 与 API 接入面,并在 backend-structure.md 中记录事实或不适用原因;需要更新的基础文档已同步
193
+ - verify: openprd standards . --verify
194
+ - test-layer: manual
195
+ - test-size: manual
196
+ - test-scope: docs
197
+ - evidence-plan: openprd standards . --verify
198
+ - upgrade-reason: 文档任务以标准校验和人工审查证据为主
199
+ - execution-mode: parallel-workers
200
+ - parallel-group: docs
201
+ - write-scope: docs/basic/**, README*.md
202
+ - owner-role: worker
203
+ - local-verify: openprd standards . --verify
204
+ - integration-owner: main-agent
205
+
206
+ - [x] T001.13 更新文件说明书和文件夹 README
207
+ - type: documentation
208
+ - deps: T001.12
209
+ - done: 本次变更涉及的文件说明书和文件夹 README 已检查;缺失的已补齐,过期的已更新
210
+ - verify: openprd standards . --verify
211
+ - test-layer: manual
212
+ - test-size: manual
213
+ - test-scope: docs
214
+ - evidence-plan: openprd standards . --verify
215
+ - upgrade-reason: 文档任务以标准校验和人工审查证据为主
216
+ - execution-mode: parallel-workers
217
+ - parallel-group: docs
218
+ - write-scope: docs/basic/**, README*.md
219
+ - owner-role: worker
220
+ - local-verify: openprd standards . --verify
221
+ - integration-owner: main-agent
222
+
223
+ - [x] T001.14 运行 OpenPrd spec 校验
224
+ - type: governance
225
+ - deps: T001.13
226
+ - done: 生成的 change 通过 OpenPrd 校验
227
+ - verify: openprd change . --validate --change docs-anti-pollution-and-design-direction-review
228
+ - test-layer: manual
229
+ - test-size: manual
230
+ - test-scope: governance
231
+ - evidence-plan: openprd change . --validate --change docs-anti-pollution-and-design-direction-review
232
+ - upgrade-reason: 治理任务以结构校验、评审确认和变更状态证据为主
233
+ - execution-mode: serial
234
+ - parallel-group: governance
235
+ - write-scope: .openprd/changes/**, .openprd/**
236
+ - owner-role: main-agent
237
+ - local-verify: openprd change . --validate --change docs-anti-pollution-and-design-direction-review
238
+ - integration-owner: main-agent
@@ -0,0 +1,2 @@
1
+ schema: openprd.change.v1
2
+ generatedFrom: v0006
@@ -0,0 +1,53 @@
1
+ # 设计
2
+
3
+ ## 背景
4
+
5
+ 最近一个月里 loop 仍有 finish 通过,但没有稳定产出你期望的逐任务 commit 闭环;当前 openprd 仓库也出现了 done 任务没有 commitSha 的情况。要把 L2 和长程实现真正挂到 loop 上,就需要先把隔离执行、提交流程和状态留痕补齐。
6
+
7
+ ## 目标
8
+
9
+ - 让 loop 在需要时显式进入隔离 worktree / branch 中执行,而不是默认污染主工作区。
10
+ - 让逐任务 commit 只包含当前任务的改动,便于单独审查和回归。
11
+ - 让 worktree、branch、commitSha 和 session 形成完整可追踪链路。
12
+
13
+ ## 范围
14
+
15
+ - 给 openprd loop --run 增加显式 --worktree / --branch,或提供先创建隔离 worktree 再执行的包装入口。
16
+ - 在 commit 前增加主工作区脏状态门禁和显式 override 机制。
17
+ - 把提交范围从 git add -A 收窄到 task write-scope 或本轮 touched files。
18
+ - 把 worktreePath、branch、commitSha 写入 loop-state.json、agent-sessions.jsonl 以及相关状态输出。
19
+
20
+ ## 约束
21
+
22
+ - 基于现有 openprd loop / git 流程扩展,不重写整套任务调度。
23
+ - 兼容当前 feature-list、loop-state、agent-sessions 与 test-reports 结构。
24
+ - 需要同时考虑 worktree、命名分支与 detached HEAD 的兼容行为。
25
+ - 提交与状态写回不能泄露用户本地无关改动或敏感信息。
26
+ - Git worktree 能力。
27
+ - 现有 loop task executionStrategy.writeScope 与 finish / verify 流程。
28
+ - OpenPrd 的状态文件、review / change / tasks 主流程。
29
+
30
+ ## 业务护栏
31
+
32
+ - 成本来源: 这次主要要避免无关改动混入 commit、回滚成本升高,以及逐任务审查和回归失去抓手。
33
+ - 额度限制: 默认不允许在脏主工作区直接完成高风险 commit;需要显式进入隔离路径或明确豁免。
34
+ - 滥用防护: 不能把未在当前任务范围内的文件静默加入 commit。
35
+ - 滥用防护: 不能把 detached HEAD 上的匿名提交伪装成可回归的标准 loop 结果。
36
+ - 监控信号: 需要持续看 loop 任务完成后是否稳定写回 commitSha。
37
+ - 监控信号: 需要看 worktreePath、branch、commitSha 是否在状态和 session 日志里一致。
38
+ - 监控信号: 需要看脏主工作区门禁是否挡住了无关改动被带进提交。
39
+ - 报警阈值: 只要出现用户要求 commit 但任务完成后没有 commitSha,就算这条闭环没有打通。
40
+ - 报警阈值: 只要出现主工作区无关改动被带进 loop commit,就应立即视为高风险回退。
41
+ - 止损动作: 无法安全判定提交范围时,停止自动 commit,保留任务验证结果并提示人工处理。
42
+ - 止损动作: worktree / branch 状态异常时,不把任务标记为已完成提交。
43
+
44
+ ## 风险与开放问题
45
+
46
+ - 假设: 第一版默认以一个 change / 一段 loop 对应一个隔离 worktree 为优先模型,而不是每个 task 一个 worktree。
47
+ - 假设: 已有 task write-scope 在多数实现任务里足够收窄 commit 范围;不足时需要 touched files 补位。
48
+ - 风险: 如果 worktree / branch 生命周期设计不清,会显著抬高 loop 使用复杂度。
49
+ - 风险: 如果 touched files 收集不稳定,可能出现漏提或误提。
50
+ - 风险: 如果状态写回与 git 操作顺序不当,会出现 done / commitSha 不一致。
51
+ - 问题: 第一版是否明确采用一个 change 一个 worktree、一个 task 一个 commit。
52
+ - 问题: worktree / branch 命名规范是否要产品化成 CLI 默认值。
53
+ - 问题: override 脏仓库门禁时,CLI 需要多强的显式确认语义。
@@ -0,0 +1,38 @@
1
+ # OpenPrd loop 隔离 worktree 提交闭环
2
+
3
+ ## 背景与原因
4
+
5
+ OpenPrd 的 loop 虽然支持逐任务 finish 和可选 commit,但最近没有稳定形成“隔离 worktree + 单任务 commit + 可审查回归”的闭环。当前 loop --run 不会自动切到隔离环境,loop --finish --commit 仍按全仓 git add -A 提交,主工作区一旦有脏改动就容易把无关内容卷进来,导致任务虽然 done 却没有可靠的 commit 留痕。
6
+
7
+ ## 变更内容
8
+
9
+ - 给 openprd loop --run 增加显式 --worktree / --branch,或提供先创建隔离 worktree 再执行的包装入口。
10
+ - 在 commit 前增加主工作区脏状态门禁和显式 override 机制。
11
+ - 把提交范围从 git add -A 收窄到 task write-scope 或本轮 touched files。
12
+ - 把 worktreePath、branch、commitSha 写入 loop-state.json、agent-sessions.jsonl 以及相关状态输出。
13
+ - 支持显式 worktree / branch 配置,或提供隔离运行包装命令。
14
+ - 支持检测主工作区脏状态,并在 finish --commit 前阻断高风险路径。
15
+ - 支持基于 write-scope 或 touched files 生成本任务提交集。
16
+ - 支持在 loop 状态、session 日志和测试报告中记录 commit 关联信息。
17
+ - 支持为未满足 commit 前置条件的任务给出清晰诊断与恢复指引。
18
+ - 在隔离 worktree 中连续完成多个 loop 任务时,每个任务都能生成独立 commit,并把 commitSha 写回状态。
19
+ - 在脏主工作区直接尝试 finish --commit 时,会收到明确阻断和豁免提示。
20
+ - 从状态文件和 session 日志可以追溯每个任务对应的 worktree、branch、commit 和测试报告。
21
+ - 新能力不破坏现有 loop 的 plan、next、run、finish、verify 基本路径。
22
+
23
+ ## 能力范围
24
+
25
+ - `agent-requirements`: OpenPrd loop 隔离 worktree 提交闭环 需求。
26
+
27
+ ## 影响范围
28
+
29
+ - 主要用户: 需要用 OpenPrd loop 执行中等到长程实现的维护者
30
+ - 主要用户: 希望逐任务 commit、可审查、可回归且不污染主工作区的 Agent 协作者
31
+ - 成本来源: 这次主要要避免无关改动混入 commit、回滚成本升高,以及逐任务审查和回归失去抓手。
32
+ - 额度限制: 默认不允许在脏主工作区直接完成高风险 commit;需要显式进入隔离路径或明确豁免。
33
+ - 依赖: Git worktree 能力。
34
+ - 依赖: 现有 loop task executionStrategy.writeScope 与 finish / verify 流程。
35
+ - 依赖: OpenPrd 的状态文件、review / change / tasks 主流程。
36
+ - 风险: 如果 worktree / branch 生命周期设计不清,会显著抬高 loop 使用复杂度。
37
+ - 风险: 如果 touched files 收集不稳定,可能出现漏提或误提。
38
+ - 风险: 如果状态写回与 git 操作顺序不当,会出现 done / commitSha 不一致。
@@ -0,0 +1,16 @@
1
+ ## 新增需求
2
+
3
+ ### 需求:OpenPrd loop 隔离 worktree 提交闭环
4
+ OpenPrd 的 loop 虽然支持逐任务 finish 和可选 commit,但最近没有稳定形成“隔离 worktree + 单任务 commit + 可审查回归”的闭环。当前 loop --run 不会自动切到隔离环境,loop --finish --commit 仍按全仓 git add -A 提交,主工作区一旦有脏改动就容易把无关内容卷进来,导致任务虽然 done 却没有可靠的 commit 留痕。
5
+
6
+ #### 场景:主流程成功
7
+ - **当** 用户为一个 change 进入 loop 开发时,OpenPrd 可显式创建或接入隔离 worktree 与命名分支,再在其中逐任务运行和提交。
8
+ - **则** 在隔离 worktree 中连续完成多个 loop 任务时,每个任务都能生成独立 commit,并把 commitSha 写回状态。
9
+
10
+ #### 场景:边界情况保持可见
11
+ - **当** 用户在脏主工作区里直接尝试 finish --commit。
12
+ - **则** 产品应保持该情况明确可见,以支持实现和验证
13
+
14
+ #### 场景:失败模式得到处理
15
+ - **当** 误把主工作区无关改动一起提交。
16
+ - **则** 产品应提供有边界且可评审的结果
@@ -0,0 +1,22 @@
1
+ {"version":1,"at":"2026-06-07 13:22:58","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.01","taskTitle":"评审生成的 spec 覆盖","ok":true,"verify":{"ok":true,"command":"openprd change . --validate --change loop-isolated-worktree-commit","exitCode":0,"stdout":"OpenPrd change 验证: 通过\nChange: loop-isolated-worktree-commit\n- OpenPrd change loop-isolated-worktree-commit: 1 个 spec delta。\n- openprd/changes/loop-isolated-worktree-commit/specs/agent-requirements/spec.md: 1 个需求。\n- 结构化 OpenPrd 任务: 21 个任务,20 条依赖;测试策略显式 21 个、推导 0 个;执行策略显式 21 个、推导 0 个。\n- OpenPrd 任务文件: 1 个文件,21 个 checkbox 任务,每个文件最多 25 个。\n- Standards docs root: docs/basic\n- Required docs: 6/6.\n- Manual templates: 2/2.\n- Development standards: code files ok <= 700 lines, attention <= 1500 lines.\n- Growth layer: enabled; code-extension candidates can auto-apply, remaining candidates stay in wrap-up review.\n","stderr":""},"evidence":null,"notes":null}
2
+ {"version":1,"at":"2026-06-07 13:25:11","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.01","taskTitle":"评审生成的 spec 覆盖","ok":true,"verify":{"ok":true,"command":"openprd change . --validate --change loop-isolated-worktree-commit","exitCode":0,"stdout":"OpenPrd change 验证: 通过\nChange: loop-isolated-worktree-commit\n- OpenPrd change loop-isolated-worktree-commit: 1 个 spec delta。\n- openprd/changes/loop-isolated-worktree-commit/specs/agent-requirements/spec.md: 1 个需求。\n- 结构化 OpenPrd 任务: 21 个任务,20 条依赖;测试策略显式 21 个、推导 0 个;执行策略显式 21 个、推导 0 个。\n- OpenPrd 任务文件: 1 个文件,21 个 checkbox 任务,每个文件最多 25 个。\n- Standards docs root: docs/basic\n- Required docs: 6/6.\n- Manual templates: 2/2.\n- Development standards: code files ok <= 700 lines, attention <= 1500 lines.\n- Growth layer: enabled; code-extension candidates can auto-apply, remaining candidates stay in wrap-up review.\n","stderr":""},"evidence":null,"notes":null}
3
+ {"version":1,"at":"2026-06-09 11:56:30","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.02","taskTitle":"接通界面入口、导航与页面挂载","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.02 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
4
+ {"version":1,"at":"2026-06-09 11:56:30","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.03","taskTitle":"支持显式 worktree / branch 配置,或提供隔离运行包装命令","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.03 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
5
+ {"version":1,"at":"2026-06-09 11:56:30","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.04","taskTitle":"支持检测主工作区脏状态,并在 finish --commit 前阻断高风险路径","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.04 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
6
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.05","taskTitle":"支持基于 write-scope 或 touched files 生成本任务提交集","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.05 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
7
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.06","taskTitle":"支持在 loop 状态、session 日志和测试报告中记录 commit 关联信息","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.06 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
8
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.07","taskTitle":"支持为未满足 commit 前置条件的任务给出清晰诊断与恢复指引","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.07 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
9
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.08","taskTitle":"打通主流程闭环:用户为一个 change 进入 loop 开发时,OpenPrd 可显式创建或接入隔离 worktree 与命名 等 3 项","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.08 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
10
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.09","taskTitle":"验证在隔离 worktree 中连续完成多个 loop 任务时,每个任务都能生成独立 commit,并把 commitSha 写回状态","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.09 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
11
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.10","taskTitle":"验证在脏主工作区直接尝试 finish --commit 时,会收到明确阻断和豁免提示","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.10 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
12
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.11","taskTitle":"验证从状态文件和 session 日志可以追溯每个任务对应的 worktree、branch、commit 和测试报告","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.11 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
13
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.12","taskTitle":"验证新能力不破坏现有 loop 的 plan、next、run、finish、verify 基本路径","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.12 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
14
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.13","taskTitle":"回归非功能约束:默认路径必须安全,不能把无关改动静默卷入 commit / 行为必须可追踪,可从状态文件复原任务执行链路","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.13 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
15
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.14","taskTitle":"回归非功能约束:对现有 loop 用户保持兼容,新增能力应尽量显式开启或有明确默认策略 等 2 项","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.14 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
16
+ {"version":1,"at":"2026-06-09 11:56:31","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.15","taskTitle":"回归边界条件与失败处理:边界情况:用户在脏主工作区里直接尝试 finish --commit 等 8 项","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.15 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
17
+ {"version":1,"at":"2026-06-09 11:56:32","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.16","taskTitle":"验证成本与额度护栏","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.16 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
18
+ {"version":1,"at":"2026-06-09 11:56:32","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.17","taskTitle":"验证滥用与越权路径","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.17 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
19
+ {"version":1,"at":"2026-06-09 11:56:32","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.18","taskTitle":"验证成本监控、报警和止损","ok":true,"verify":{"ok":true,"command":"openprd tasks . --change loop-isolated-worktree-commit --item T001.18 --evidence-required","exitCode":0,"stdout":"OpenPrd task evidence: passed\nevidence: /tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)\nscope: task-only; workspace quality is reserved for phase/final gates","stderr":""},"evidence":"/tmp/openprd-full-test.log (2026-06-09 full regression 195/195 plus targeted worker/package verification)","notes":null}
20
+ {"version":1,"at":"2026-06-09 11:56:32","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.19","taskTitle":"维护 docs/basic 项目基础文档","ok":true,"verify":{"ok":true,"command":"openprd standards . --verify","exitCode":0,"stdout":"OpenPrd standards: 通过\nDocs root: docs/basic\n- Standards docs root: docs/basic\n- Required docs: 6/6.\n- Manual templates: 2/2.\n- Development standards: code files ok <= 700 lines, attention <= 1500 lines.\n- Growth layer: enabled; code-extension candidates can auto-apply, remaining candidates stay in wrap-up review.\n","stderr":""},"evidence":null,"notes":null}
21
+ {"version":1,"at":"2026-06-09 11:56:32","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.20","taskTitle":"更新文件说明书和文件夹 README","ok":true,"verify":{"ok":true,"command":"openprd standards . --verify","exitCode":0,"stdout":"OpenPrd standards: 通过\nDocs root: docs/basic\n- Standards docs root: docs/basic\n- Required docs: 6/6.\n- Manual templates: 2/2.\n- Development standards: code files ok <= 700 lines, attention <= 1500 lines.\n- Growth layer: enabled; code-extension candidates can auto-apply, remaining candidates stay in wrap-up review.\n","stderr":""},"evidence":null,"notes":null}
22
+ {"version":1,"at":"2026-06-09 11:56:32","changeId":"loop-isolated-worktree-commit","action":"advance","taskId":"T001.21","taskTitle":"运行 OpenPrd spec 校验","ok":true,"verify":{"ok":true,"command":"openprd change . --validate --change loop-isolated-worktree-commit","exitCode":0,"stdout":"OpenPrd change 验证: 通过\nChange: loop-isolated-worktree-commit\n- OpenPrd change loop-isolated-worktree-commit: 1 个 spec delta。\n- openprd/changes/loop-isolated-worktree-commit/specs/agent-requirements/spec.md: 1 个需求。\n- 结构化 OpenPrd 任务: 21 个任务,20 条依赖;测试策略显式 21 个、推导 0 个;执行策略显式 21 个、推导 0 个。\n- OpenPrd 任务文件: 1 个文件,21 个 checkbox 任务,每个文件最多 25 个。\n- Standards docs root: docs/basic\n- Required docs: 6/6.\n- Manual templates: 2/2.\n- Development standards: code files ok <= 700 lines, attention <= 1500 lines.\n- Growth layer: enabled; code-extension candidates can auto-apply, remaining candidates stay in wrap-up review.\n","stderr":""},"evidence":null,"notes":null}