@openprd/cli 0.1.1 → 0.1.8

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 (137) hide show
  1. package/.openprd/README.md +43 -69
  2. package/.openprd/README_EN.md +84 -0
  3. package/.openprd/benchmarks/index.md +7 -0
  4. package/.openprd/benchmarks/sources.yaml +25 -3
  5. package/.openprd/discovery/config.json +16 -2
  6. package/.openprd/engagements/active/flows.md +19 -14
  7. package/.openprd/engagements/active/handoff.md +11 -4
  8. package/.openprd/engagements/active/prd.md +99 -71
  9. package/.openprd/engagements/active/review.html +4 -4
  10. package/.openprd/engagements/active/roles.md +9 -8
  11. package/.openprd/engagements/work-units/wu-20260524015648-6d33ded7.json +4 -4
  12. package/.openprd/engagements/work-units/wu-20260602113956-a99b5b88.json +18 -0
  13. package/.openprd/engagements/work-units/wu-20260602122244-78656aaf.json +18 -0
  14. package/.openprd/engagements/work-units/wu-20260602122442-e96489e2.json +18 -0
  15. package/.openprd/engagements/work-units/wu-20260602132835-695429e8.json +18 -0
  16. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/candidate.json +78 -0
  17. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/diagnostic-report.json +129 -0
  18. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/root-cause-candidates.json +41 -0
  19. package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/timeline.json +14 -0
  20. package/.openprd/knowledge/drafts/openprd-experience-diagnostic-candidate-turn-1780116203372-5f266a79e968c758/SKILL.md +49 -0
  21. package/.openprd/knowledge/index.json +44 -4
  22. package/.openprd/reviews/v0001.html +195 -129
  23. package/.openprd/reviews/v0002.html +1150 -0
  24. package/.openprd/reviews/v0003.html +1150 -0
  25. package/.openprd/reviews/v0004.html +1150 -0
  26. package/.openprd/reviews/v0005.html +1150 -0
  27. package/.openprd/standards/config.json +12 -9
  28. package/.openprd/state/changes.json +17 -2
  29. package/.openprd/state/current.json +399 -63
  30. package/.openprd/state/release-ledger.json +344 -0
  31. package/.openprd/state/version-index.json +52 -0
  32. package/.openprd/state/versions/v0002.json +264 -0
  33. package/.openprd/state/versions/v0002.md +183 -0
  34. package/.openprd/state/versions/v0003.json +269 -0
  35. package/.openprd/state/versions/v0003.md +188 -0
  36. package/.openprd/state/versions/v0004.json +274 -0
  37. package/.openprd/state/versions/v0004.md +193 -0
  38. package/.openprd/state/versions/v0005.json +299 -0
  39. package/.openprd/state/versions/v0005.md +189 -0
  40. package/.openprd/templates/agent/intake.md +5 -4
  41. package/.openprd/templates/b2b/intake.md +5 -4
  42. package/.openprd/templates/base/intake.md +10 -4
  43. package/.openprd/templates/company/README.md +9 -7
  44. package/.openprd/templates/company/README_EN.md +12 -0
  45. package/.openprd/templates/consumer/intake.md +5 -4
  46. package/.openprd/templates/industry/README.md +12 -10
  47. package/.openprd/templates/industry/README_EN.md +18 -0
  48. package/.openprd/templates/project/README.md +11 -9
  49. package/.openprd/templates/project/README_EN.md +16 -0
  50. package/.openprd/templates/session/README.md +11 -9
  51. package/.openprd/templates/session/README_EN.md +16 -0
  52. package/AGENTS.md +12 -8
  53. package/README.md +399 -438
  54. package/README_CN.md +4 -578
  55. package/README_EN.md +850 -0
  56. package/docs/assets/openprd-requirement-routing-en.png +0 -0
  57. package/docs/assets/openprd-requirement-routing-en.svg +102 -0
  58. package/docs/assets/openprd-requirement-routing-zh-refined.png +0 -0
  59. package/docs/assets/openprd-requirement-routing-zh.png +0 -0
  60. package/docs/assets/openprd-requirement-routing-zh.svg +102 -0
  61. package/package.json +6 -2
  62. package/scripts/dev-check-wrapup-copy.mjs +110 -0
  63. package/scripts/openprd-github-release-notes.mjs +99 -0
  64. package/scripts/quality-perf-check.mjs +203 -0
  65. package/skills/openprd-benchmark-router/SKILL.md +1 -0
  66. package/skills/openprd-benchmark-router/references/benchmark-sources.md +1 -0
  67. package/skills/openprd-benchmark-router/references/source-policy.md +2 -0
  68. package/skills/openprd-discovery-loop/SKILL.md +2 -2
  69. package/skills/openprd-harness/SKILL.md +46 -24
  70. package/skills/openprd-harness/references/workflow-gates.md +15 -0
  71. package/skills/openprd-quality/SKILL.md +10 -4
  72. package/skills/openprd-requirement-intake/SKILL.md +31 -20
  73. package/skills/openprd-requirement-intake/references/prd-template-lenses.md +6 -6
  74. package/skills/openprd-requirement-intake/references/routing-rubric.md +10 -2
  75. package/skills/openprd-router/SKILL.md +2 -2
  76. package/skills/openprd-shared/SKILL.md +51 -23
  77. package/skills/openprd-standards/SKILL.md +2 -1
  78. package/src/agent-integration.js +265 -65
  79. package/src/benchmark/constants.js +107 -0
  80. package/src/benchmark/operations.js +235 -0
  81. package/src/benchmark/registry.js +64 -0
  82. package/src/benchmark/render.js +115 -0
  83. package/src/benchmark/source.js +617 -0
  84. package/src/benchmark/storage.js +121 -0
  85. package/src/benchmark/verify.js +235 -0
  86. package/src/benchmark.js +50 -851
  87. package/src/change-summary.js +339 -0
  88. package/src/cli/args.js +67 -6
  89. package/src/cli/basic-print.js +365 -0
  90. package/src/cli/benchmark-print.js +91 -0
  91. package/src/cli/change-print.js +221 -0
  92. package/src/cli/doctor-print.js +268 -0
  93. package/src/cli/growth-print.js +176 -0
  94. package/src/cli/print.js +73 -1384
  95. package/src/cli/quality-print.js +284 -0
  96. package/src/cli/run-print.js +297 -0
  97. package/src/cli/shared-print.js +127 -0
  98. package/src/cli/workflow-print.js +195 -0
  99. package/src/codex-hook-runner-template.mjs +639 -117
  100. package/src/codex-runtime.js +324 -0
  101. package/src/dev-standards.js +178 -5
  102. package/src/diagram-core.js +5 -5
  103. package/src/discovery.js +2 -1
  104. package/src/execution-strategy.js +369 -0
  105. package/src/fleet.js +4 -0
  106. package/src/github-release.js +156 -0
  107. package/src/growth.js +311 -13
  108. package/src/html-artifact-utils.js +25 -0
  109. package/src/html-artifacts.js +157 -1596
  110. package/src/knowledge.js +1176 -75
  111. package/src/language-policy.js +2 -112
  112. package/src/learning-html-artifact.js +1031 -0
  113. package/src/learning-review.js +3 -2
  114. package/src/loop.js +280 -9
  115. package/src/openprd.js +341 -38
  116. package/src/openspec/change-validate.js +0 -9
  117. package/src/openspec/execute.js +79 -3
  118. package/src/openspec/generate.js +33 -20
  119. package/src/openspec/tasks.js +33 -2
  120. package/src/prd-core.js +10 -9
  121. package/src/product-type-copy.js +69 -0
  122. package/src/quality-html-artifact.js +108 -9
  123. package/src/quality-learning.js +30 -0
  124. package/src/quality-visual-review.js +237 -0
  125. package/src/quality.js +329 -43
  126. package/src/registry-hygiene.js +54 -0
  127. package/src/release-ledger.js +413 -0
  128. package/src/review-presentation.js +12 -6
  129. package/src/run-harness.js +722 -48
  130. package/src/session-binding.js +40 -3
  131. package/src/session-registry.js +159 -0
  132. package/src/standards.js +5 -3
  133. package/src/test-strategy.js +386 -0
  134. package/src/visual-compare.js +915 -34
  135. package/src/work-unit-migration.js +5 -1
  136. package/src/workspace-core.js +343 -19
  137. package/src/workspace-workflow.js +538 -134
@@ -0,0 +1,269 @@
1
+ {
2
+ "versionNumber": 3,
3
+ "versionId": "v0003",
4
+ "createdAt": "2026-06-02 12:22:44",
5
+ "projectRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd",
6
+ "workspaceRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd/.openprd",
7
+ "schema": "prd-core",
8
+ "templatePack": "agent",
9
+ "productType": "agent",
10
+ "title": "OpenPrd 用户视角变化摘要",
11
+ "owner": "Codex",
12
+ "status": "synthesized",
13
+ "sections": {
14
+ "meta": {
15
+ "title": "OpenPrd 用户视角变化摘要",
16
+ "owner": "Codex",
17
+ "status": "clarifying",
18
+ "version": "v0003",
19
+ "productType": "agent",
20
+ "date": "2026-06-02"
21
+ },
22
+ "problem": {
23
+ "problemStatement": "OpenPrd 现在已经有内部 PRD 版本和用户视角变化摘要,但还没有一个可选的项目级 release/version 轨道来维护当前版本号、版本内更新项,以及与 commit tag 的协同规则。结果是版本号已经在项目里被真实使用,却缺少一个本地真源来累计本版本的需求、Bug、handoff 摘要和最终发布说明。",
24
+ "whyNow": "用户已经确认,希望在现有短文案变化摘要的基础上,再补一个可选的项目级版本轨道:既能维护当前版本和版本内更新内容,也能在 commit 流里利用版本信息辅助打 tag,让 release notes、handoff 和外部同步有稳定来源。",
25
+ "evidence": []
26
+ },
27
+ "users": {
28
+ "primaryUsers": [
29
+ "维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer",
30
+ "使用 OpenPrd 执行任务并需要生成 commit、handoff 或版本说明的 Agent 使用者"
31
+ ],
32
+ "secondaryUsers": [],
33
+ "stakeholders": [
34
+ "阅读交付变更、提交说明和版本说明的项目负责人",
35
+ "需要快速判断这次改动是否值得合入或发布的协作者"
36
+ ]
37
+ },
38
+ "goals": {
39
+ "goals": [
40
+ "把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不是停留在单个 commit skill。",
41
+ "让 OpenPrd 在 loop commit、handoff / 版本说明、review 摘要三处都能输出更适合人阅读的变化说明。",
42
+ "保持 OpenPrd 现有 workflow、review gate 和高风险提交门禁不变,只升级表达层。"
43
+ ],
44
+ "successMetrics": [
45
+ "loop 默认 commit message 不再只输出 `Complete <task>` 这种执行口吻,而是优先输出短标题加动作词条目。",
46
+ "handoff 导出结果包含可直接复用的变化摘要或版本说明片段,便于人快速扫读。",
47
+ "review 摘要文案的标签和一句话说明更明显地站在用户视角表达新增、修复、优化、调整等变化。",
48
+ "完成后用单独 worker 跑一个样例项目,能看到这套变化摘要在真实任务中的输出效果。"
49
+ ],
50
+ "acceptanceGoals": [
51
+ "新增项目级 release/version ledger,支持 current version、版本状态和版本内变化项存储。",
52
+ "现有变化摘要层继续复用新增、修复、优化、调整、移除等短文案动作词,并能挂到具体项目版本下。",
53
+ "commit 流在启用版本轨道且用户明确执行时,可以读取当前版本并辅助创建或更新本地版本 tag;同版本多次提交时 tag 可移动到最新 commit。",
54
+ "README、skills、handoff/release 导出和测试同步说明版本轨道与 tag 协同规则。"
55
+ ]
56
+ },
57
+ "scope": {
58
+ "inScope": [
59
+ "新增可选的项目级 release/version ledger,用于维护当前版本号、版本状态和版本内更新项。",
60
+ "把现有变化摘要条目挂载到具体项目版本下,支持需求、Bug、handoff 摘要和 release notes 候选的累计。",
61
+ "扩展 commit 流,在版本轨道已启用且用户显式执行 commit 时读取当前版本,并辅助创建或更新本地版本 tag。",
62
+ "扩展 handoff、release notes 与后续外部同步出口,让它们可以从项目版本轨道导出版本内变化内容。",
63
+ "补充 README、skills、文档和测试,并验证项目版本轨道与短文案摘要的协同效果。"
64
+ ],
65
+ "outOfScope": [
66
+ "不把内部 PRD 版本 v000x 直接改造成项目发版号。",
67
+ "不强制所有项目都启用版本轨道;没有版本管理习惯的项目可以继续只用现有变化摘要能力。",
68
+ "不默认自动 push、自动发布或自动 force 更新远端 tag。",
69
+ "不要求替代团队已有的外部版本体系,只提供一个本地可维护、可导出的辅助真源。"
70
+ ]
71
+ },
72
+ "scenarios": {
73
+ "primaryFlows": [
74
+ "用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。",
75
+ "用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。",
76
+ "用户查看 review 评审摘要时,能先用短标签和一句话理解这次带来的用户可感知变化,而不是先读技术实现。"
77
+ ],
78
+ "edgeCases": [
79
+ "项目可能已经有自己的一套版本号规则,OpenPrd 需要允许手动修正当前版本号,而不是强推默认策略。",
80
+ "如果同一个版本下发生多次 commit,本地 tag 可以移动到最新 commit;但如果对应 tag 已经推到远端,继续移动会变成高风险操作。",
81
+ "有些项目只想维护版本说明,不想碰 git tag;版本轨道与 tag 辅助能力需要可分开启用。",
82
+ "如果用户在没有更新版本号的情况下继续提交,系统应把新变化继续累计到当前版本,而不是猜测用户要自动 bump 版本。"
83
+ ],
84
+ "failureModes": [
85
+ "commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。",
86
+ "摘要为了好看而扭曲真实改动,把内部治理误写成用户可感知功能。",
87
+ "三处落点风格不一致,用户在 commit、handoff 和 review 里看到三套不同写法。"
88
+ ]
89
+ },
90
+ "requirements": {
91
+ "functional": [
92
+ "OpenPrd 提供可选的项目级 release/version ledger,支持记录 current version、版本状态和版本内变化项。",
93
+ "现有共享变化摘要规则支持把新增、修复、优化、调整、移除等条目关联到具体项目版本。",
94
+ "handoff 与 release notes 导出优先从项目版本轨道读取对应版本的变化条目。",
95
+ "当版本轨道已启用且用户通过 OpenPrd 显式执行 commit 时,commit 流可以读取当前版本号并辅助创建或更新本地版本 tag。",
96
+ "当用户未更新版本号时,后续变化默认继续累计到当前版本;当用户显式更新版本号后,新的变化进入下一个版本。"
97
+ ],
98
+ "nonFunctional": [
99
+ "新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。",
100
+ "formatter 只依赖本地上下文,不新增外部网络、第三方 API 或额外付费依赖。",
101
+ "输出在中英文混合项目里仍以当前用户语言为主,必要专有名词保持原样。"
102
+ ],
103
+ "businessRules": [
104
+ "内部 PRD 版本和项目 release 版本必须保持分层,不能共用一个字段。",
105
+ "项目 release 版本默认允许用户手动指定或手动修正;系统只做辅助,不替用户决定版本 bump。",
106
+ "同版本多次 commit 时,本地版本 tag 可以指向最新 commit,帮助界定本版本从上一个版本 tag 之后的提交范围。",
107
+ "如果目标版本 tag 已经存在于远端,系统不得默认覆盖;需要明确提示当前指向并等待用户决定。",
108
+ "版本说明继续优先使用新增、修复、优化、调整、移除等人类可读动作词,而不是直接复述 git 变更细节。"
109
+ ]
110
+ },
111
+ "businessGuardrails": {
112
+ "costDrivers": [
113
+ "无新增第三方付费调用成本;变化摘要完全基于本地上下文生成。"
114
+ ],
115
+ "usageLimits": [
116
+ "不引入新的用户额度或发布配额限制;沿用现有 commit / handoff 执行门禁。"
117
+ ],
118
+ "abusePrevention": [
119
+ "不把自动 push、自动 tag 或历史重写并入默认能力,避免摘要能力演变成高风险自动发布路径。"
120
+ ],
121
+ "monitoringSignals": [
122
+ "关注生成摘要是否频繁退回技术细节、是否在测试中出现失真或空摘要。"
123
+ ],
124
+ "alertThresholds": [
125
+ "如果三处输出中任一处无法生成可信摘要并持续回退,需要在测试中显式暴露。"
126
+ ],
127
+ "stopLossActions": [
128
+ "当上下文不足或摘要质量不可信时,回退到现有安全文案,不自动包装。"
129
+ ]
130
+ },
131
+ "constraints": {
132
+ "technical": [
133
+ "需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约。",
134
+ "需要在 dirty workspace 中做窄改动,避免误伤正在进行的 test-strategy-router 等历史工作。"
135
+ ],
136
+ "compliance": [],
137
+ "dependencies": [
138
+ "依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 handoff 导出流程。"
139
+ ]
140
+ },
141
+ "risks": {
142
+ "assumptions": [
143
+ "用户更看重人能快速扫懂的变化摘要,而不是技术完整性优先的底层说明。",
144
+ "三处落点可以共用一套核心 formatter,再按场景做轻量渲染差异。"
145
+ ],
146
+ "risks": [
147
+ "如果 formatter 规则过死,可能把一些纯技术任务描述得失真。",
148
+ "如果只改一处而没有共用 contract,后续很快会再次分叉。"
149
+ ],
150
+ "openQuestions": [
151
+ "版本轨道是否需要支持 Unreleased 这种未定版态,还是只维护一个明确 current version。",
152
+ "本地 tag 跟最新 commit 的策略是否只在未推远端前自动生效,还是需要更细的项目级配置。",
153
+ "Feishu 等外部同步出口首期是否只导出版本说明,不直接回写外部系统。"
154
+ ]
155
+ },
156
+ "handoff": {
157
+ "owner": "Codex",
158
+ "nextStep": "确认新的评审稿后生成 change 和 tasks,并按三处落点实现。",
159
+ "targetSystem": "OpenSpec"
160
+ },
161
+ "typeSpecific": {
162
+ "kind": "agent",
163
+ "title": "Agent 专项",
164
+ "fields": {
165
+ "humanAgentContract": "Agent 可以根据 task、handoff 和 review 上下文生成变化摘要草案,但不能把自动生成的摘要当成发布事实之外的营销文案;高风险提交行为仍遵守现有执行门禁。",
166
+ "autonomyBoundary": "Agent 可以修改 OpenPrd 的 formatter、skills、文档、测试和 worker 验证流程;不得自动推送、改写历史提交,或把 Feature Git Commit 的高风险 git 行为直接并入 OpenPrd 默认流。",
167
+ "toolBoundary": "仅使用本地 OpenPrd 代码、CLI、测试与 worker 会话完成实现和验证;本次不需要额外第三方文档调研。",
168
+ "stateModel": "共享变化摘要 contract 负责统一标题、动作词和描述规则;loop、handoff、review 三个调用面只做各自场景渲染与回退控制。",
169
+ "evalPlan": "先做本地单测和回归,再用 worker 在单独样例项目上跑一个最小任务,检查 commit、handoff 或 review 摘要输出是否符合预期。"
170
+ }
171
+ }
172
+ },
173
+ "reviewPresentation": {
174
+ "diagram": {
175
+ "type": "map"
176
+ },
177
+ "mapNodes": {
178
+ "problem": {
179
+ "title": "问题定义",
180
+ "text": "缺少项目级版本真源与tag协同"
181
+ },
182
+ "goal": {
183
+ "title": "版本轨道",
184
+ "text": "统一版本号、变化条目和tag"
185
+ },
186
+ "scope": {
187
+ "title": "四处落点",
188
+ "text": "ledger、commit、handoff、同步"
189
+ },
190
+ "flow": {
191
+ "title": "主流程",
192
+ "text": "版本累计变化,commit可挂tag"
193
+ },
194
+ "risk": {
195
+ "title": "主要风险",
196
+ "text": "远端tag覆盖和版本混用"
197
+ }
198
+ },
199
+ "panels": {
200
+ "flow": [
201
+ {
202
+ "summary": "新增轨道",
203
+ "detail": "项目可记录当前版本,并累计该版本内的需求、Bug和摘要。"
204
+ },
205
+ {
206
+ "summary": "关联提交",
207
+ "detail": "启用版本轨道后,commit 可读取当前版本并辅助挂本地 tag。"
208
+ },
209
+ {
210
+ "summary": "导出说明",
211
+ "detail": "handoff、版本说明和外部同步都可复用同一版本条目。"
212
+ }
213
+ ],
214
+ "function": [
215
+ {
216
+ "summary": "保留短文案",
217
+ "detail": "新增、修复、优化、调整、移除继续作为版本条目的默认动作词。"
218
+ },
219
+ {
220
+ "summary": "手动修正版",
221
+ "detail": "用户可以随时把当前版本从 0.1.23 调整到下一个版本。"
222
+ },
223
+ {
224
+ "summary": "同版续提",
225
+ "detail": "未切新版本时,后续提交继续累计到当前版本。"
226
+ }
227
+ ],
228
+ "guardrail": [
229
+ {
230
+ "summary": "分层版本",
231
+ "detail": "内部 PRD 版本 v000x 不直接等于项目发版号。"
232
+ },
233
+ {
234
+ "summary": "不强推送",
235
+ "detail": "不默认自动 push、发布或 force 更新远端 tag。"
236
+ },
237
+ {
238
+ "summary": "可分开启用",
239
+ "detail": "只想维护版本说明的项目可以不开 tag 辅助。"
240
+ }
241
+ ],
242
+ "risk": [
243
+ {
244
+ "summary": "远端冲突",
245
+ "detail": "同名 tag 已推到远端时,继续移动会变成高风险操作。"
246
+ },
247
+ {
248
+ "summary": "版本混用",
249
+ "detail": "若把 PRD 版本当发版号,会让 review 和 release 都变乱。"
250
+ },
251
+ {
252
+ "summary": "事实失真",
253
+ "detail": "变化条目归错版本,会让 handoff 和外部同步失真。"
254
+ }
255
+ ]
256
+ }
257
+ },
258
+ "workUnitId": "wu-20260602122244-78656aaf",
259
+ "targetRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd",
260
+ "content": "# OpenPrd 用户视角变化摘要\n> 语言规则:默认用简体中文生成 PRD、spec、tasks 和用户可见说明;除 PRD、OpenPrd、OpenSpec、API、SDK、CLI、TypeScript、JSON、HTTP、WebSocket、字段 key、命令名、品牌名、产品名和协议名等必要专有名词外,其余内容优先写成简体中文。\n- 版本: v0003\n- 负责人: Codex\n- 产品类型: agent\n- 模板包: agent\n- 状态: synthesized\n- 生成时间: 2026-06-02 12:22:44\n## 元信息\n\n- 标题: OpenPrd 用户视角变化摘要\n- 负责人: Codex\n- 状态: clarifying\n- 版本: v0003\n- 产品类型: agent\n- 日期: 2026-06-02\n\n## 问题\n\n- 问题陈述: OpenPrd 现在已经有内部 PRD 版本和用户视角变化摘要,但还没有一个可选的项目级 release/version 轨道来维护当前版本号、版本内更新项,以及与 commit tag 的协同规则。结果是版本号已经在项目里被真实使用,却缺少一个本地真源来累计本版本的需求、Bug、handoff 摘要和最终发布说明。\n- 为什么是现在: 用户已经确认,希望在现有短文案变化摘要的基础上,再补一个可选的项目级版本轨道:既能维护当前版本和版本内更新内容,也能在 commit 流里利用版本信息辅助打 tag,让 release notes、handoff 和外部同步有稳定来源。\n- 证据:\n - 待补充\n\n## 用户与相关方\n\n- 主要用户:\n - 维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer\n - 使用 OpenPrd 执行任务并需要生成 commit、handoff 或版本说明的 Agent 使用者\n- 次要用户:\n - 待补充\n- 相关方:\n - 阅读交付变更、提交说明和版本说明的项目负责人\n - 需要快速判断这次改动是否值得合入或发布的协作者\n\n## 目标与成功标准\n\n- 目标:\n - 把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不是停留在单个 commit skill。\n - 让 OpenPrd 在 loop commit、handoff / 版本说明、review 摘要三处都能输出更适合人阅读的变化说明。\n - 保持 OpenPrd 现有 workflow、review gate 和高风险提交门禁不变,只升级表达层。\n- 成功指标:\n - loop 默认 commit message 不再只输出 `Complete <task>` 这种执行口吻,而是优先输出短标题加动作词条目。\n - handoff 导出结果包含可直接复用的变化摘要或版本说明片段,便于人快速扫读。\n - review 摘要文案的标签和一句话说明更明显地站在用户视角表达新增、修复、优化、调整等变化。\n - 完成后用单独 worker 跑一个样例项目,能看到这套变化摘要在真实任务中的输出效果。\n- 验收目标:\n - 新增项目级 release/version ledger,支持 current version、版本状态和版本内变化项存储。\n - 现有变化摘要层继续复用新增、修复、优化、调整、移除等短文案动作词,并能挂到具体项目版本下。\n - commit 流在启用版本轨道且用户明确执行时,可以读取当前版本并辅助创建或更新本地版本 tag;同版本多次提交时 tag 可移动到最新 commit。\n - README、skills、handoff/release 导出和测试同步说明版本轨道与 tag 协同规则。\n\n## 范围与非目标\n\n- 范围内:\n - 新增可选的项目级 release/version ledger,用于维护当前版本号、版本状态和版本内更新项。\n - 把现有变化摘要条目挂载到具体项目版本下,支持需求、Bug、handoff 摘要和 release notes 候选的累计。\n - 扩展 commit 流,在版本轨道已启用且用户显式执行 commit 时读取当前版本,并辅助创建或更新本地版本 tag。\n - 扩展 handoff、release notes 与后续外部同步出口,让它们可以从项目版本轨道导出版本内变化内容。\n - 补充 README、skills、文档和测试,并验证项目版本轨道与短文案摘要的协同效果。\n- 范围外:\n - 不把内部 PRD 版本 v000x 直接改造成项目发版号。\n - 不强制所有项目都启用版本轨道;没有版本管理习惯的项目可以继续只用现有变化摘要能力。\n - 不默认自动 push、自动发布或自动 force 更新远端 tag。\n - 不要求替代团队已有的外部版本体系,只提供一个本地可维护、可导出的辅助真源。\n\n## 场景与流程\n\n- 主流程:\n - 用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。\n - 用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。\n - 用户查看 review 评审摘要时,能先用短标签和一句话理解这次带来的用户可感知变化,而不是先读技术实现。\n- 边界情况:\n - 项目可能已经有自己的一套版本号规则,OpenPrd 需要允许手动修正当前版本号,而不是强推默认策略。\n - 如果同一个版本下发生多次 commit,本地 tag 可以移动到最新 commit;但如果对应 tag 已经推到远端,继续移动会变成高风险操作。\n - 有些项目只想维护版本说明,不想碰 git tag;版本轨道与 tag 辅助能力需要可分开启用。\n - 如果用户在没有更新版本号的情况下继续提交,系统应把新变化继续累计到当前版本,而不是猜测用户要自动 bump 版本。\n- 失败模式:\n - commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。\n - 摘要为了好看而扭曲真实改动,把内部治理误写成用户可感知功能。\n - 三处落点风格不一致,用户在 commit、handoff 和 review 里看到三套不同写法。\n\n## 可视化图表\n\n### 产品流程\n\n```mermaid\nflowchart LR\n entry[\"入口触发<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。\"]\n experience[\"产品内步骤<br/>用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。\"]\n decision{\"决策点<br/>项目可能已经有自己的一套版本号规则,OpenPrd 需要允许手动修正当前版本号,而不是强推默认策略。\"}\n success([\"成功结果<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…\"])\n failure[[\"失败与恢复<br/>commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。\"]]\n entry -->|\"用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd …\"| experience\n experience -->|\"用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组…\"| decision\n decision -->|\"把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不…\"| success\n decision -.->|\"commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等…\"| failure\n```\n\n### 架构\n\n```mermaid\nflowchart LR\n users[\"主要用户<br/>维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer · 使用 Open…\"]\n subgraph solution[\"方案边界\"]\n experience[\"Agent 运行层<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。 …\"]\n core[\"核心产品逻辑<br/>OpenPrd 现在已经有内部 PRD 版本和用户视角变化摘要,但还没有一个可选的项目级 release/version 轨道…\"]\n integrations[\"依赖与集成<br/>依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 hand…\"]\n governance[[\"约束与可靠性<br/>新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。 · formatter 只依赖本地上下文,不新…\"]]\n delivery[\"验证与交接<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…\"]\n end\n users -->|\"用户让 Agent 完成某个 task 并选择 commit 时,OpenPr…\"| experience\n experience -->|\"产品动作与编排\"| core\n core -->|\"依赖与外部服务\"| integrations\n core -.->|\"策略、可靠性与合规\"| governance\n core -->|\"成功标准与交接\"| delivery\n integrations -->|\"运营就绪\"| delivery\n governance -.->|\"评审与确认\"| delivery\n```\n\n## 需求\n\n- 功能需求:\n - OpenPrd 提供可选的项目级 release/version ledger,支持记录 current version、版本状态和版本内变化项。\n - 现有共享变化摘要规则支持把新增、修复、优化、调整、移除等条目关联到具体项目版本。\n - handoff 与 release notes 导出优先从项目版本轨道读取对应版本的变化条目。\n - 当版本轨道已启用且用户通过 OpenPrd 显式执行 commit 时,commit 流可以读取当前版本号并辅助创建或更新本地版本 tag。\n - 当用户未更新版本号时,后续变化默认继续累计到当前版本;当用户显式更新版本号后,新的变化进入下一个版本。\n- 非功能需求:\n - 新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。\n - formatter 只依赖本地上下文,不新增外部网络、第三方 API 或额外付费依赖。\n - 输出在中英文混合项目里仍以当前用户语言为主,必要专有名词保持原样。\n- 业务规则:\n - 内部 PRD 版本和项目 release 版本必须保持分层,不能共用一个字段。\n - 项目 release 版本默认允许用户手动指定或手动修正;系统只做辅助,不替用户决定版本 bump。\n - 同版本多次 commit 时,本地版本 tag 可以指向最新 commit,帮助界定本版本从上一个版本 tag 之后的提交范围。\n - 如果目标版本 tag 已经存在于远端,系统不得默认覆盖;需要明确提示当前指向并等待用户决定。\n - 版本说明继续优先使用新增、修复、优化、调整、移除等人类可读动作词,而不是直接复述 git 变更细节。\n\n## 业务护栏\n\n- 成本来源:\n - 无新增第三方付费调用成本;变化摘要完全基于本地上下文生成。\n- 额度与限制:\n - 不引入新的用户额度或发布配额限制;沿用现有 commit / handoff 执行门禁。\n- 滥用防护:\n - 不把自动 push、自动 tag 或历史重写并入默认能力,避免摘要能力演变成高风险自动发布路径。\n- 监控信号:\n - 关注生成摘要是否频繁退回技术细节、是否在测试中出现失真或空摘要。\n- 报警阈值:\n - 如果三处输出中任一处无法生成可信摘要并持续回退,需要在测试中显式暴露。\n- 止损动作:\n - 当上下文不足或摘要质量不可信时,回退到现有安全文案,不自动包装。\n\n## 约束、依赖与风险\n\n- 技术约束:\n - 需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约。\n - 需要在 dirty workspace 中做窄改动,避免误伤正在进行的 test-strategy-router 等历史工作。\n- 合规要求:\n - 待补充\n- 依赖:\n - 依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 handoff 导出流程。\n- 假设:\n - 用户更看重人能快速扫懂的变化摘要,而不是技术完整性优先的底层说明。\n - 三处落点可以共用一套核心 formatter,再按场景做轻量渲染差异。\n- 风险:\n - 如果 formatter 规则过死,可能把一些纯技术任务描述得失真。\n - 如果只改一处而没有共用 contract,后续很快会再次分叉。\n- 开放问题:\n - 版本轨道是否需要支持 Unreleased 这种未定版态,还是只维护一个明确 current version。\n - 本地 tag 跟最新 commit 的策略是否只在未推远端前自动生效,还是需要更细的项目级配置。\n - Feishu 等外部同步出口首期是否只导出版本说明,不直接回写外部系统。\n\n## 类型专项模块\n\n- 类型: Agent 专项\n- humanAgentContract: Agent 可以根据 task、handoff 和 review 上下文生成变化摘要草案,但不能把自动生成的摘要当成发布事实之外的营销文案;高风险提交行为仍遵守现有执行门禁。\n- autonomyBoundary: Agent 可以修改 OpenPrd 的 formatter、skills、文档、测试和 worker 验证流程;不得自动推送、改写历史提交,或把 Feature Git Commit 的高风险 git 行为直接并入 OpenPrd 默认流。\n- toolBoundary: 仅使用本地 OpenPrd 代码、CLI、测试与 worker 会话完成实现和验证;本次不需要额外第三方文档调研。\n- stateModel: 共享变化摘要 contract 负责统一标题、动作词和描述规则;loop、handoff、review 三个调用面只做各自场景渲染与回退控制。\n- evalPlan: 先做本地单测和回归,再用 worker 在单独样例项目上跑一个最小任务,检查 commit、handoff 或 review 摘要输出是否符合预期。\n\n## 交接\n\n- 负责人: Codex\n- 下一步: 确认新的评审稿后生成 change 和 tasks,并按三处落点实现。\n- 目标系统: OpenSpec\n",
261
+ "digest": "f1b18bc47cbd76f784b7682483eafa24eb02230e23189dad29a2202b61544918",
262
+ "reviewPresentationMeta": {
263
+ "validatedAt": "2026-06-02T04:23:28.482Z",
264
+ "source": "/tmp/openprd-v0003-review-presentation.json",
265
+ "presentationHash": "28234498b5654bffd5a595815c2c91c5930b7ce2a8fe467c8101c9b4658bbc8e",
266
+ "violationsHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
267
+ "validator": "openprd review-presentation"
268
+ }
269
+ }
@@ -0,0 +1,188 @@
1
+ # OpenPrd 用户视角变化摘要
2
+ > 语言规则:默认用简体中文生成 PRD、spec、tasks 和用户可见说明;除 PRD、OpenPrd、OpenSpec、API、SDK、CLI、TypeScript、JSON、HTTP、WebSocket、字段 key、命令名、品牌名、产品名和协议名等必要专有名词外,其余内容优先写成简体中文。
3
+ - 版本: v0003
4
+ - 负责人: Codex
5
+ - 产品类型: agent
6
+ - 模板包: agent
7
+ - 状态: synthesized
8
+ - 生成时间: 2026-06-02 12:22:44
9
+ ## 元信息
10
+
11
+ - 标题: OpenPrd 用户视角变化摘要
12
+ - 负责人: Codex
13
+ - 状态: clarifying
14
+ - 版本: v0003
15
+ - 产品类型: agent
16
+ - 日期: 2026-06-02
17
+
18
+ ## 问题
19
+
20
+ - 问题陈述: OpenPrd 现在已经有内部 PRD 版本和用户视角变化摘要,但还没有一个可选的项目级 release/version 轨道来维护当前版本号、版本内更新项,以及与 commit tag 的协同规则。结果是版本号已经在项目里被真实使用,却缺少一个本地真源来累计本版本的需求、Bug、handoff 摘要和最终发布说明。
21
+ - 为什么是现在: 用户已经确认,希望在现有短文案变化摘要的基础上,再补一个可选的项目级版本轨道:既能维护当前版本和版本内更新内容,也能在 commit 流里利用版本信息辅助打 tag,让 release notes、handoff 和外部同步有稳定来源。
22
+ - 证据:
23
+ - 待补充
24
+
25
+ ## 用户与相关方
26
+
27
+ - 主要用户:
28
+ - 维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer
29
+ - 使用 OpenPrd 执行任务并需要生成 commit、handoff 或版本说明的 Agent 使用者
30
+ - 次要用户:
31
+ - 待补充
32
+ - 相关方:
33
+ - 阅读交付变更、提交说明和版本说明的项目负责人
34
+ - 需要快速判断这次改动是否值得合入或发布的协作者
35
+
36
+ ## 目标与成功标准
37
+
38
+ - 目标:
39
+ - 把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不是停留在单个 commit skill。
40
+ - 让 OpenPrd 在 loop commit、handoff / 版本说明、review 摘要三处都能输出更适合人阅读的变化说明。
41
+ - 保持 OpenPrd 现有 workflow、review gate 和高风险提交门禁不变,只升级表达层。
42
+ - 成功指标:
43
+ - loop 默认 commit message 不再只输出 `Complete <task>` 这种执行口吻,而是优先输出短标题加动作词条目。
44
+ - handoff 导出结果包含可直接复用的变化摘要或版本说明片段,便于人快速扫读。
45
+ - review 摘要文案的标签和一句话说明更明显地站在用户视角表达新增、修复、优化、调整等变化。
46
+ - 完成后用单独 worker 跑一个样例项目,能看到这套变化摘要在真实任务中的输出效果。
47
+ - 验收目标:
48
+ - 新增项目级 release/version ledger,支持 current version、版本状态和版本内变化项存储。
49
+ - 现有变化摘要层继续复用新增、修复、优化、调整、移除等短文案动作词,并能挂到具体项目版本下。
50
+ - commit 流在启用版本轨道且用户明确执行时,可以读取当前版本并辅助创建或更新本地版本 tag;同版本多次提交时 tag 可移动到最新 commit。
51
+ - README、skills、handoff/release 导出和测试同步说明版本轨道与 tag 协同规则。
52
+
53
+ ## 范围与非目标
54
+
55
+ - 范围内:
56
+ - 新增可选的项目级 release/version ledger,用于维护当前版本号、版本状态和版本内更新项。
57
+ - 把现有变化摘要条目挂载到具体项目版本下,支持需求、Bug、handoff 摘要和 release notes 候选的累计。
58
+ - 扩展 commit 流,在版本轨道已启用且用户显式执行 commit 时读取当前版本,并辅助创建或更新本地版本 tag。
59
+ - 扩展 handoff、release notes 与后续外部同步出口,让它们可以从项目版本轨道导出版本内变化内容。
60
+ - 补充 README、skills、文档和测试,并验证项目版本轨道与短文案摘要的协同效果。
61
+ - 范围外:
62
+ - 不把内部 PRD 版本 v000x 直接改造成项目发版号。
63
+ - 不强制所有项目都启用版本轨道;没有版本管理习惯的项目可以继续只用现有变化摘要能力。
64
+ - 不默认自动 push、自动发布或自动 force 更新远端 tag。
65
+ - 不要求替代团队已有的外部版本体系,只提供一个本地可维护、可导出的辅助真源。
66
+
67
+ ## 场景与流程
68
+
69
+ - 主流程:
70
+ - 用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。
71
+ - 用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。
72
+ - 用户查看 review 评审摘要时,能先用短标签和一句话理解这次带来的用户可感知变化,而不是先读技术实现。
73
+ - 边界情况:
74
+ - 项目可能已经有自己的一套版本号规则,OpenPrd 需要允许手动修正当前版本号,而不是强推默认策略。
75
+ - 如果同一个版本下发生多次 commit,本地 tag 可以移动到最新 commit;但如果对应 tag 已经推到远端,继续移动会变成高风险操作。
76
+ - 有些项目只想维护版本说明,不想碰 git tag;版本轨道与 tag 辅助能力需要可分开启用。
77
+ - 如果用户在没有更新版本号的情况下继续提交,系统应把新变化继续累计到当前版本,而不是猜测用户要自动 bump 版本。
78
+ - 失败模式:
79
+ - commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。
80
+ - 摘要为了好看而扭曲真实改动,把内部治理误写成用户可感知功能。
81
+ - 三处落点风格不一致,用户在 commit、handoff 和 review 里看到三套不同写法。
82
+
83
+ ## 可视化图表
84
+
85
+ ### 产品流程
86
+
87
+ ```mermaid
88
+ flowchart LR
89
+ entry["入口触发<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。"]
90
+ experience["产品内步骤<br/>用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组织的变化摘要。"]
91
+ decision{"决策点<br/>项目可能已经有自己的一套版本号规则,OpenPrd 需要允许手动修正当前版本号,而不是强推默认策略。"}
92
+ success(["成功结果<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…"])
93
+ failure[["失败与恢复<br/>commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等技术细节。"]]
94
+ entry -->|"用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd …"| experience
95
+ experience -->|"用户导出 handoff 或版本说明时,可以直接看到一段按新增、修复、优化、调整组…"| decision
96
+ decision -->|"把用户可感知变化写法沉淀成 OpenPrd 的共享变化摘要 contract,而不…"| success
97
+ decision -.->|"commit、handoff 或 review 摘要仍泄露文件名、函数名、参数值等…"| failure
98
+ ```
99
+
100
+ ### 架构
101
+
102
+ ```mermaid
103
+ flowchart LR
104
+ users["主要用户<br/>维护 OpenPrd CLI、skills 和 review 产物的 OpenPrd maintainer · 使用 Open…"]
105
+ subgraph solution["方案边界"]
106
+ experience["Agent 运行层<br/>用户让 Agent 完成某个 task 并选择 commit 时,OpenPrd 默认生成更适合人阅读的提交标题与变化条目。 …"]
107
+ core["核心产品逻辑<br/>OpenPrd 现在已经有内部 PRD 版本和用户视角变化摘要,但还没有一个可选的项目级 release/version 轨道…"]
108
+ integrations["依赖与集成<br/>依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 hand…"]
109
+ governance[["约束与可靠性<br/>新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。 · formatter 只依赖本地上下文,不新…"]]
110
+ delivery["验证与交接<br/>loop 默认 commit message 不再只输出 'Complete task ' 这种执行口吻,而是优先输出短标题…"]
111
+ end
112
+ users -->|"用户让 Agent 完成某个 task 并选择 commit 时,OpenPr…"| experience
113
+ experience -->|"产品动作与编排"| core
114
+ core -->|"依赖与外部服务"| integrations
115
+ core -.->|"策略、可靠性与合规"| governance
116
+ core -->|"成功标准与交接"| delivery
117
+ integrations -->|"运营就绪"| delivery
118
+ governance -.->|"评审与确认"| delivery
119
+ ```
120
+
121
+ ## 需求
122
+
123
+ - 功能需求:
124
+ - OpenPrd 提供可选的项目级 release/version ledger,支持记录 current version、版本状态和版本内变化项。
125
+ - 现有共享变化摘要规则支持把新增、修复、优化、调整、移除等条目关联到具体项目版本。
126
+ - handoff 与 release notes 导出优先从项目版本轨道读取对应版本的变化条目。
127
+ - 当版本轨道已启用且用户通过 OpenPrd 显式执行 commit 时,commit 流可以读取当前版本号并辅助创建或更新本地版本 tag。
128
+ - 当用户未更新版本号时,后续变化默认继续累计到当前版本;当用户显式更新版本号后,新的变化进入下一个版本。
129
+ - 非功能需求:
130
+ - 新增能力保持命令兼容;已有显式 message 或自定义文案优先级不能被破坏。
131
+ - formatter 只依赖本地上下文,不新增外部网络、第三方 API 或额外付费依赖。
132
+ - 输出在中英文混合项目里仍以当前用户语言为主,必要专有名词保持原样。
133
+ - 业务规则:
134
+ - 内部 PRD 版本和项目 release 版本必须保持分层,不能共用一个字段。
135
+ - 项目 release 版本默认允许用户手动指定或手动修正;系统只做辅助,不替用户决定版本 bump。
136
+ - 同版本多次 commit 时,本地版本 tag 可以指向最新 commit,帮助界定本版本从上一个版本 tag 之后的提交范围。
137
+ - 如果目标版本 tag 已经存在于远端,系统不得默认覆盖;需要明确提示当前指向并等待用户决定。
138
+ - 版本说明继续优先使用新增、修复、优化、调整、移除等人类可读动作词,而不是直接复述 git 变更细节。
139
+
140
+ ## 业务护栏
141
+
142
+ - 成本来源:
143
+ - 无新增第三方付费调用成本;变化摘要完全基于本地上下文生成。
144
+ - 额度与限制:
145
+ - 不引入新的用户额度或发布配额限制;沿用现有 commit / handoff 执行门禁。
146
+ - 滥用防护:
147
+ - 不把自动 push、自动 tag 或历史重写并入默认能力,避免摘要能力演变成高风险自动发布路径。
148
+ - 监控信号:
149
+ - 关注生成摘要是否频繁退回技术细节、是否在测试中出现失真或空摘要。
150
+ - 报警阈值:
151
+ - 如果三处输出中任一处无法生成可信摘要并持续回退,需要在测试中显式暴露。
152
+ - 止损动作:
153
+ - 当上下文不足或摘要质量不可信时,回退到现有安全文案,不自动包装。
154
+
155
+ ## 约束、依赖与风险
156
+
157
+ - 技术约束:
158
+ - 需要兼容现有 loop、handoff、review-presentation 和 html-artifacts 的调用契约。
159
+ - 需要在 dirty workspace 中做窄改动,避免误伤正在进行的 test-strategy-router 等历史工作。
160
+ - 合规要求:
161
+ - 待补充
162
+ - 依赖:
163
+ - 依赖现有 OpenPrd CLI、review-presentation、html-artifacts、loop 和 handoff 导出流程。
164
+ - 假设:
165
+ - 用户更看重人能快速扫懂的变化摘要,而不是技术完整性优先的底层说明。
166
+ - 三处落点可以共用一套核心 formatter,再按场景做轻量渲染差异。
167
+ - 风险:
168
+ - 如果 formatter 规则过死,可能把一些纯技术任务描述得失真。
169
+ - 如果只改一处而没有共用 contract,后续很快会再次分叉。
170
+ - 开放问题:
171
+ - 版本轨道是否需要支持 Unreleased 这种未定版态,还是只维护一个明确 current version。
172
+ - 本地 tag 跟最新 commit 的策略是否只在未推远端前自动生效,还是需要更细的项目级配置。
173
+ - Feishu 等外部同步出口首期是否只导出版本说明,不直接回写外部系统。
174
+
175
+ ## 类型专项模块
176
+
177
+ - 类型: Agent 专项
178
+ - humanAgentContract: Agent 可以根据 task、handoff 和 review 上下文生成变化摘要草案,但不能把自动生成的摘要当成发布事实之外的营销文案;高风险提交行为仍遵守现有执行门禁。
179
+ - autonomyBoundary: Agent 可以修改 OpenPrd 的 formatter、skills、文档、测试和 worker 验证流程;不得自动推送、改写历史提交,或把 Feature Git Commit 的高风险 git 行为直接并入 OpenPrd 默认流。
180
+ - toolBoundary: 仅使用本地 OpenPrd 代码、CLI、测试与 worker 会话完成实现和验证;本次不需要额外第三方文档调研。
181
+ - stateModel: 共享变化摘要 contract 负责统一标题、动作词和描述规则;loop、handoff、review 三个调用面只做各自场景渲染与回退控制。
182
+ - evalPlan: 先做本地单测和回归,再用 worker 在单独样例项目上跑一个最小任务,检查 commit、handoff 或 review 摘要输出是否符合预期。
183
+
184
+ ## 交接
185
+
186
+ - 负责人: Codex
187
+ - 下一步: 确认新的评审稿后生成 change 和 tasks,并按三处落点实现。
188
+ - 目标系统: OpenSpec