@openprd/cli 0.1.19 → 0.1.21
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.
- package/.openprd/changes/openprd-control-plane-v020/.openprd.yaml +2 -0
- package/.openprd/changes/openprd-control-plane-v020/design.md +78 -0
- package/.openprd/changes/openprd-control-plane-v020/proposal.md +54 -0
- package/.openprd/changes/openprd-control-plane-v020/specs/agent-requirements/spec.md +16 -0
- package/.openprd/changes/openprd-control-plane-v020/task-events.jsonl +27 -0
- package/.openprd/changes/openprd-control-plane-v020/tasks-002.md +35 -0
- package/.openprd/changes/openprd-control-plane-v020/tasks.md +427 -0
- package/.openprd/changes/remove-session-tracking-humane-approval/.openprd.yaml +2 -0
- package/.openprd/changes/remove-session-tracking-humane-approval/design.md +52 -0
- package/.openprd/changes/remove-session-tracking-humane-approval/proposal.md +35 -0
- package/.openprd/changes/remove-session-tracking-humane-approval/specs/agent-requirements/spec.md +16 -0
- package/.openprd/changes/remove-session-tracking-humane-approval/task-events.jsonl +1 -0
- package/.openprd/changes/remove-session-tracking-humane-approval/tasks.md +170 -0
- package/.openprd/design/active/asset-spec.md +19 -14
- package/.openprd/design/active/direction-plan.md +19 -3
- package/.openprd/design/active/facts-sheet.md +16 -7
- package/.openprd/design/active/image-preflight.md +6 -5
- package/.openprd/design/active/review-studio-v020-directions/compare-plan.json +34 -0
- package/.openprd/design/active/review-studio-v020-directions/contact-sheet.jpg +0 -0
- package/.openprd/design/active/review-studio-v020-directions/crops/01.png +0 -0
- package/.openprd/design/active/review-studio-v020-directions/crops/02.png +0 -0
- package/.openprd/design/active/review-studio-v020-directions/crops/03.png +0 -0
- package/.openprd/design/active/review-studio-v020-directions/focus-board.template.json +69 -0
- package/.openprd/design/active/review-studio-v020-directions/parallel-board.template.json +45 -0
- package/.openprd/design/active/review-studio-v020-directions/reference-set.json +143 -0
- package/.openprd/design/active/review-studio-v020-directions/source.png +0 -0
- package/.openprd/design/active/selected-direction.md +23 -9
- package/.openprd/engagements/active/control-plane-architecture.json +203 -0
- package/.openprd/engagements/active/control-plane-intake.json +418 -0
- package/.openprd/engagements/active/prd.md +183 -119
- package/.openprd/engagements/active/review-presentation-v0018.json +176 -0
- package/.openprd/i18n-config.json +12 -0
- package/.openprd/ledger/events.jsonl +6 -0
- package/.openprd/ledger/heads/ebea1a71a9daa566f1c91b53.json +10 -0
- package/.openprd/manifest.json +21 -0
- package/AGENTS.md +1 -0
- package/README.md +2 -0
- package/README_EN.md +2 -0
- package/package.json +1 -1
- package/skills/openprd-frontend-design/SKILL.md +16 -0
- package/skills/openprd-harness/SKILL.md +1 -1
- package/skills/openprd-quality/SKILL.md +1 -1
- package/skills/openprd-requirement-intake/SKILL.md +1 -1
- package/skills/openprd-shared/SKILL.md +1 -1
- package/src/adapters/adapter-spi.js +193 -0
- package/src/adapters/capability-envelope.js +98 -0
- package/src/adapters/event-normalizer.js +55 -0
- package/src/adapters/index.js +4 -0
- package/src/adapters/install-safety.js +249 -0
- package/src/agent-canonical-content.js +4 -2
- package/src/agent-integration.js +147 -42
- package/src/cli/args.js +63 -4
- package/src/cli/gate-print.js +17 -0
- package/src/cli/quality-commands.js +18 -0
- package/src/cli/quality-print.js +10 -0
- package/src/cli/runtime-print.js +24 -0
- package/src/codex-hook-runner-template.mjs +65 -77
- package/src/codex-runtime.js +48 -5
- package/src/context/cache.js +245 -0
- package/src/context/compiler.js +438 -0
- package/src/context/constants.js +30 -0
- package/src/context/index.js +39 -0
- package/src/context/redaction.js +84 -0
- package/src/context/stable.js +69 -0
- package/src/context/telemetry.js +42 -0
- package/src/dev-standards.js +57 -0
- package/src/fleet.js +112 -95
- package/src/gates/index.js +2 -0
- package/src/gates/scoped-gates.js +256 -0
- package/src/gates/store.js +126 -0
- package/src/gates/workspace.js +41 -0
- package/src/html-artifacts.js +725 -28
- package/src/kernel/atomic-store.js +299 -0
- package/src/kernel/event-envelope.js +166 -0
- package/src/kernel/index.js +4 -0
- package/src/kernel/project-ledger.js +467 -0
- package/src/kernel/project-manifest.js +205 -0
- package/src/knowledge-v3/index.js +1 -0
- package/src/knowledge-v3/lifecycle.js +290 -0
- package/src/knowledge.js +14 -7
- package/src/openprd.js +71 -2
- package/src/review-model.js +413 -0
- package/src/review-presentation.js +1 -1
- package/src/run-harness.js +431 -37
- package/src/runtime/cli_runtime_README.md +28 -0
- package/src/runtime/errors.js +66 -0
- package/src/runtime/index.js +44 -0
- package/src/runtime/lane-schema.js +141 -0
- package/src/runtime/lane-store.js +279 -0
- package/src/runtime/task-runtime.js +449 -0
- package/src/runtime/workspace.js +179 -0
- package/src/runtime/write-set.js +206 -0
- package/src/session-binding.js +16 -3
- package/src/session-registry.js +59 -1
- package/src/upgrade/fleet-mutation.js +166 -0
- package/src/upgrade/fleet-transaction.js +398 -0
- package/src/upgrade/transaction-store.js +416 -0
- package/src/visual-compare-core.js +66 -27
- package/src/visual-compare.js +18 -12
- package/src/workspace-core.js +109 -7
- package/src/workspace-registry.js +39 -1
- package/src/workspace-workflow.js +18 -15
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# 任务
|
|
2
|
+
|
|
3
|
+
- [x] T001.01 评审生成的 spec 覆盖
|
|
4
|
+
- type: governance
|
|
5
|
+
- done: 生成的 agent-requirements spec 符合 PRD 意图
|
|
6
|
+
- verify: openprd change . --validate --change remove-session-tracking-humane-approval
|
|
7
|
+
- test-layer: manual
|
|
8
|
+
- test-size: manual
|
|
9
|
+
- test-scope: governance
|
|
10
|
+
- evidence-plan: openprd change . --validate --change remove-session-tracking-humane-approval
|
|
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 remove-session-tracking-humane-approval
|
|
17
|
+
- integration-owner: main-agent
|
|
18
|
+
|
|
19
|
+
- [ ] T001.02 hook 热路径去全局扫描:automation lane 记忆改为 per-session 本地文件
|
|
20
|
+
- type: implementation
|
|
21
|
+
- deps: T001.01
|
|
22
|
+
- done: codex-hook-runner-template 里 latestSessionRegistryEntry 不再全量读取全局 sessions.jsonl;automation lane 记忆读写改为 .openprd/harness/session-bindings 下 per-session 小文件 O(1) 直读;rememberAutomationMode 不再向全局 registry 每事件追加流水
|
|
23
|
+
- verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.02 --evidence-required
|
|
24
|
+
- test-layer: unit, integration
|
|
25
|
+
- test-size: medium
|
|
26
|
+
- test-scope: cli-contract
|
|
27
|
+
- evidence-plan: 单元测试锁定 per-session 文件读写 + hook 集成回归
|
|
28
|
+
- upgrade-reason: 触达 hook 契约与生成物,需要中间层验证
|
|
29
|
+
- execution-mode: serial
|
|
30
|
+
- parallel-group: implementation
|
|
31
|
+
- write-scope: src/**, test/**
|
|
32
|
+
- owner-role: main-agent
|
|
33
|
+
- local-verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.02 --evidence-required
|
|
34
|
+
- integration-owner: main-agent
|
|
35
|
+
|
|
36
|
+
- [ ] T001.03 CLI 侧去会话追踪:移除全局 session registry 写入与跨 workspace 扫描
|
|
37
|
+
- type: implementation
|
|
38
|
+
- deps: T001.02
|
|
39
|
+
- done: session-registry 停止向 ~/.openprd/registry/sessions.jsonl 写入(保留只读兼容);resolveSessionTarget 不再做跨 workspace 候选扫描和 promptPreview 语义匹配兜底,找不到本地绑定时返回活跃 change 清单请用户指认
|
|
40
|
+
- verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.03 --evidence-required
|
|
41
|
+
- test-layer: unit, integration
|
|
42
|
+
- test-size: medium
|
|
43
|
+
- test-scope: cli-contract
|
|
44
|
+
- evidence-plan: 单元测试锁定降级行为 + run --message 会话续接集成验证
|
|
45
|
+
- upgrade-reason: 触达 CLI/Agent 契约,需要中间层验证
|
|
46
|
+
- execution-mode: serial
|
|
47
|
+
- parallel-group: implementation
|
|
48
|
+
- write-scope: src/**, test/**
|
|
49
|
+
- owner-role: main-agent
|
|
50
|
+
- local-verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.03 --evidence-required
|
|
51
|
+
- integration-owner: main-agent
|
|
52
|
+
|
|
53
|
+
- [ ] T001.04 运行态状态按会话隔离:turn-state 分文件,消除多窗口覆写
|
|
54
|
+
- type: implementation
|
|
55
|
+
- deps: T001.03
|
|
56
|
+
- done: 会话相关运行态(turn-state 等)按 sessionId 分文件存放在 .openprd/harness/session-states/;无 sessionId 证据时退化为无状态读 change 清单;workspace 级只保留共享的变更台账与质量报告
|
|
57
|
+
- verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.04 --evidence-required
|
|
58
|
+
- test-layer: unit, integration
|
|
59
|
+
- test-size: medium
|
|
60
|
+
- test-scope: cli-contract
|
|
61
|
+
- evidence-plan: 双会话并发写入互不覆盖的单元/集成测试
|
|
62
|
+
- upgrade-reason: 触达状态模型与并发正确性,需要中间层验证
|
|
63
|
+
- execution-mode: serial
|
|
64
|
+
- parallel-group: implementation
|
|
65
|
+
- write-scope: src/**, test/**
|
|
66
|
+
- owner-role: main-agent
|
|
67
|
+
- local-verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.04 --evidence-required
|
|
68
|
+
- integration-owner: main-agent
|
|
69
|
+
|
|
70
|
+
- [ ] T001.05 高风险门禁改为挂起审批加人话确认
|
|
71
|
+
- type: implementation
|
|
72
|
+
- deps: T001.04
|
|
73
|
+
- done: autonomy-risk 拦截时写入 pending approval 记录并要求 agent 用业务人话说明影响与回滚;用户回普通确认语(确认/同意/可以/继续)即放行最近一条挂起风险;不再要求粘贴字面技术授权句
|
|
74
|
+
- verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.05 --evidence-required
|
|
75
|
+
- test-layer: unit, integration
|
|
76
|
+
- test-size: medium
|
|
77
|
+
- test-scope: cli-contract
|
|
78
|
+
- evidence-plan: 拦截-挂起-普通确认放行链路的单元与集成测试,含多条挂起风险只放行最近一条的负向用例
|
|
79
|
+
- upgrade-reason: 触达安全门禁契约,需要中间层验证
|
|
80
|
+
- execution-mode: serial
|
|
81
|
+
- parallel-group: implementation
|
|
82
|
+
- write-scope: src/**, test/**
|
|
83
|
+
- owner-role: main-agent
|
|
84
|
+
- local-verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.05 --evidence-required
|
|
85
|
+
- integration-owner: main-agent
|
|
86
|
+
|
|
87
|
+
- [ ] T001.06 打通主流程闭环:多窗口并行、automation 高频调用、人话确认放行
|
|
88
|
+
- type: implementation
|
|
89
|
+
- deps: T001.05
|
|
90
|
+
- done: 同项目两个会话并行工作状态互不覆盖;automation 会话数百次工具调用只读本会话小文件、全局账本不再增长;高风险拦截后一句人话确认即继续
|
|
91
|
+
- verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.06 --evidence-required
|
|
92
|
+
- test-layer: integration, e2e
|
|
93
|
+
- test-size: large
|
|
94
|
+
- test-scope: user-flow
|
|
95
|
+
- evidence-plan: 端到端集成测试 + 测试报告
|
|
96
|
+
- upgrade-reason: 触达用户可见主流程,需要端到端证据
|
|
97
|
+
- execution-mode: serial
|
|
98
|
+
- parallel-group: integration
|
|
99
|
+
- write-scope: src/**, test/**, docs/basic/**
|
|
100
|
+
- owner-role: main-agent
|
|
101
|
+
- local-verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.06 --evidence-required
|
|
102
|
+
- integration-owner: main-agent
|
|
103
|
+
|
|
104
|
+
- [ ] T001.07 回归边界条件与失败处理:旧账本兼容、无绑定续接、多条挂起风险
|
|
105
|
+
- type: verification
|
|
106
|
+
- deps: T001.06
|
|
107
|
+
- done: 旧全局 sessions.jsonl 存在时停止写入且读取入口平滑降级;给出会话 ID 但本地无记录时列活跃变更请用户指认而不语义猜测;多条 pending approval 时确认只放行最近一条
|
|
108
|
+
- verify: openprd tasks . --change remove-session-tracking-humane-approval --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: 触达降级兼容与安全边界,需要中间层验证
|
|
114
|
+
- execution-mode: serial
|
|
115
|
+
- parallel-group: verification
|
|
116
|
+
- write-scope: test/**, .openprd/harness/test-reports/**
|
|
117
|
+
- owner-role: main-agent
|
|
118
|
+
- local-verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.07 --evidence-required
|
|
119
|
+
- integration-owner: main-agent
|
|
120
|
+
|
|
121
|
+
- [ ] T001.08 回归非功能约束:热路径 O(1) 与安全边界不放松
|
|
122
|
+
- type: verification
|
|
123
|
+
- deps: T001.07
|
|
124
|
+
- done: hook 热路径不再读取任何 O(N) 追加文件;高风险动作仍会先拦截,仅确认方式简化;新增代码有测试覆盖
|
|
125
|
+
- verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.08 --evidence-required
|
|
126
|
+
- test-layer: unit, integration
|
|
127
|
+
- test-size: medium
|
|
128
|
+
- test-scope: cli-contract
|
|
129
|
+
- evidence-plan: 性能形状断言 + 门禁负向用例 + 全量测试
|
|
130
|
+
- upgrade-reason: 触达性能与安全非功能约束,需要中间层验证
|
|
131
|
+
- execution-mode: serial
|
|
132
|
+
- parallel-group: verification
|
|
133
|
+
- write-scope: test/**, .openprd/harness/test-reports/**
|
|
134
|
+
- owner-role: main-agent
|
|
135
|
+
- local-verify: openprd tasks . --change remove-session-tracking-humane-approval --item T001.08 --evidence-required
|
|
136
|
+
- integration-owner: main-agent
|
|
137
|
+
|
|
138
|
+
- [ ] T001.09 维护 docs/basic 项目基础文档
|
|
139
|
+
- type: documentation
|
|
140
|
+
- deps: T001.08
|
|
141
|
+
- done: 已检查 docs/basic 是否因本次状态模型、hook 行为、确认流程变化而过期;backend-structure.md 已同步会话状态与审批链路事实
|
|
142
|
+
- verify: openprd standards . --verify
|
|
143
|
+
- test-layer: manual
|
|
144
|
+
- test-size: manual
|
|
145
|
+
- test-scope: docs
|
|
146
|
+
- evidence-plan: openprd standards . --verify
|
|
147
|
+
- upgrade-reason: 文档任务以标准校验和人工审查证据为主
|
|
148
|
+
- execution-mode: serial
|
|
149
|
+
- parallel-group: docs
|
|
150
|
+
- write-scope: docs/basic/**, README*.md
|
|
151
|
+
- owner-role: main-agent
|
|
152
|
+
- local-verify: openprd standards . --verify
|
|
153
|
+
- integration-owner: main-agent
|
|
154
|
+
|
|
155
|
+
- [ ] T001.10 运行 OpenPrd spec 校验
|
|
156
|
+
- type: governance
|
|
157
|
+
- deps: T001.09
|
|
158
|
+
- done: 生成的 change 通过 OpenPrd 校验
|
|
159
|
+
- verify: openprd change . --validate --change remove-session-tracking-humane-approval
|
|
160
|
+
- test-layer: manual
|
|
161
|
+
- test-size: manual
|
|
162
|
+
- test-scope: governance
|
|
163
|
+
- evidence-plan: openprd change . --validate --change remove-session-tracking-humane-approval
|
|
164
|
+
- upgrade-reason: 治理任务以结构校验、评审确认和变更状态证据为主
|
|
165
|
+
- execution-mode: serial
|
|
166
|
+
- parallel-group: governance
|
|
167
|
+
- write-scope: .openprd/changes/**, .openprd/**
|
|
168
|
+
- owner-role: main-agent
|
|
169
|
+
- local-verify: openprd change . --validate --change remove-session-tracking-humane-approval
|
|
170
|
+
- integration-owner: main-agent
|
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
| 类型 | 资产 | 来源 | 状态 | 备注 |
|
|
4
4
|
| --- | --- | --- | --- | --- |
|
|
5
|
-
| logo |
|
|
6
|
-
| 产品图 |
|
|
7
|
-
| UI 图 |
|
|
8
|
-
| 功能图标 |
|
|
9
|
-
| 摄影 / 插图 |
|
|
10
|
-
| 色板 / 字体 |
|
|
11
|
-
| 动效节奏 |
|
|
12
|
-
| 背景 / 表面 |
|
|
13
|
-
| 构图记忆点 |
|
|
5
|
+
| logo | 复用 OpenPrd 现有文字标识 | 当前 Review topbar | reuse | 不重新设计品牌 |
|
|
6
|
+
| 产品图 | Review Studio 三方向接触表 | Image 2 + `visual-prepare` | ready | `.openprd/design/active/review-studio-v020-directions/contact-sheet.jpg` |
|
|
7
|
+
| UI 图 | 业务导览、双轨证据、项目驾驶舱三个候选 | Image 2 裁切 | ready | `crops/01.png`、`02.png`、`03.png` |
|
|
8
|
+
| 功能图标 | 评审、证据、风险、任务、版本、迁移、上下文 | 复用现有内联图标语义;实现期统一为已有 outline 体系 | planned | 不新增装饰性图标 |
|
|
9
|
+
| 摄影 / 插图 | 无 | 不需要 | not-needed | 产品成立不依赖真实图片 |
|
|
10
|
+
| 色板 / 字体 | 复用现有 Review tokens 与系统字体 | 当前 Review CSS | reuse | 保持可访问对比度 |
|
|
11
|
+
| 动效节奏 | 仅视图切换、证据展开、确认反馈 | 产品交互需求 | planned | 120–180ms,尊重 reduced-motion |
|
|
12
|
+
| 背景 / 表面 | 中性灰画布 + 白色内容面 + 轻边框 | 当前 Review CSS | reuse | 避免玻璃拟态与渐变 |
|
|
13
|
+
| 构图记忆点 | 顶部共享决策时间线 + 业务/工程双视图 | 方向 B | selected | 两种视图共享同一 model digest |
|
|
14
14
|
|
|
15
15
|
## 冻结变量
|
|
16
16
|
|
|
17
|
-
- lens:
|
|
18
|
-
- theme:
|
|
19
|
-
- layout:
|
|
20
|
-
- aesthetic:
|
|
21
|
-
- memory-point:
|
|
17
|
+
- lens: evidence-first progressive disclosure
|
|
18
|
+
- theme: quiet professional control plane
|
|
19
|
+
- layout: shared timeline + dual projection workbench
|
|
20
|
+
- aesthetic: restrained, dense, calm, explainable
|
|
21
|
+
- memory-point: 一条时间线,两种视角
|
|
22
|
+
|
|
23
|
+
## 0.1.21 结果画布资产
|
|
24
|
+
|
|
25
|
+
- 色彩:暖灰画布 `#f4efe6`、纸白表面 `#fffdf8`、陶土强调 `#c65f3f`、通过状态 `#39795c`。
|
|
26
|
+
- 图片:直接复用用户提供的真实截图,不增加装饰图片或默认网格覆盖层。
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
| 方向 | 生成逻辑 | lens | theme | layout | 审美主张 | 记忆点 | 为什么不同 | 适用场景 | 主要风险 |
|
|
4
4
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
5
|
-
|
|
|
6
|
-
|
|
|
7
|
-
|
|
|
5
|
+
| A 业务评审导览 | contrast | progressive disclosure | guided review | 左侧议程 + 中央业务故事图 + 底部确认 | 最低认知负担 | 一步一块完成评审 | 从业务阅读顺序出发,隐藏工程细节 | 非技术用户首次评审 | 工程追溯需要另开入口 |
|
|
6
|
+
| B 双轨证据工作台 | reference-transfer | evidence-first | dual projection | 共享时间线 + 业务/工程 Tab + 证据工作区 | 同一事实,多种读法 | 一条时间线,两种视角 | 把现有 Review 与证据链整合为同一模型双投影 | 产品与工程共同评审 | 信息密度较高,需要默认收起细节 |
|
|
7
|
+
| C 项目驾驶舱 | design-lens | operational overview | control room | 健康总览 + 并行任务 + 迁移/上下文侧栏 | 全局态势一屏掌握 | 项目健康与资源雷达 | 把评审放进项目级控制平面 | 多线程项目负责人 | 容易把 0.1.20 范围扩大成完整项目管理器 |
|
|
8
|
+
|
|
9
|
+
## 内部评估
|
|
10
|
+
|
|
11
|
+
| 维度 | A | B | C |
|
|
12
|
+
| --- | ---: | ---: | ---: |
|
|
13
|
+
| 小白可理解性 | 5 | 4 | 3 |
|
|
14
|
+
| 工程可追溯性 | 2 | 5 | 4 |
|
|
15
|
+
| 与现有 Review 兼容 | 4 | 5 | 3 |
|
|
16
|
+
| 控制平面定位 | 3 | 5 | 5 |
|
|
17
|
+
| 0.1.20 可落地性 | 5 | 4 | 2 |
|
|
18
|
+
| 合计 | 19 | 23 | 17 |
|
|
19
|
+
|
|
20
|
+
- 选 B 为主方向。
|
|
21
|
+
- 吸收 A 的左侧议程与逐步确认,避免双轨变成工程后台。
|
|
22
|
+
- C 保留为后续 Project Cockpit 投影,不塞进本轮 Review 主页面。
|
|
23
|
+
|
|
@@ -2,12 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
| 字段 | 当前值 | 来源 | verifiedAt | 状态 |
|
|
4
4
|
| --- | --- | --- | --- | --- |
|
|
5
|
-
| 产品 / 项目名 |
|
|
6
|
-
|
|
|
7
|
-
|
|
|
8
|
-
|
|
|
5
|
+
| 产品 / 项目名 | OpenPrd Review Studio | 当前仓库 `src/html-artifacts.js` | 2026-07-10 | verified |
|
|
6
|
+
| 目标版本 | 0.1.21 | 用户确认的版本自增目标 | 2026-07-11 | verified |
|
|
7
|
+
| 主要受众 | 非技术业务用户、产品负责人、工程执行者 | v0018 用户与场景 | 2026-07-10 | verified |
|
|
8
|
+
| 现有视觉语言 | 中性灰背景、白色表面、深色正文、蓝/靛当前态、青色健康态、琥珀风险态 | 当前 Review HTML/CSS | 2026-07-10 | verified |
|
|
9
|
+
| 现有交互 | 阶段轨道、评审清单、需求关系图、四类内容卡、方向卡、底部确认栏 | `src/html-artifacts.js` | 2026-07-10 | verified |
|
|
10
|
+
| 核心问题 | 同一评审里业务结论和工程细节缺少清晰分层,复杂项目不易快速理解 | 用户目标与线程审计 | 2026-07-10 | verified |
|
|
11
|
+
| 技术事实 | v0018 使用稳定 snapshot digest 与 work unit;评审文案由 `review-presentation` 校验 | 当前 CLI 与快照 | 2026-07-10 | verified |
|
|
9
12
|
|
|
10
|
-
##
|
|
13
|
+
## 设计意图
|
|
11
14
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
15
|
+
- 让不懂内部实现的人先看懂“为什么做、会发生什么、风险是什么、怎样算完成”。
|
|
16
|
+
- 让工程执行者从同一决策模型切换到任务、证据、版本与追溯信息,不再维护第二套结论。
|
|
17
|
+
- 记忆点是“一条共享决策时间线,两种阅读视角”,而不是再堆一个通用仪表盘。
|
|
18
|
+
|
|
19
|
+
## 0.1.21 视觉证据画布
|
|
20
|
+
|
|
21
|
+
- 普通结果画布采用暖色、紧凑双卡结构,截图和结论优先。
|
|
22
|
+
- 网格、基线和辅助线只属于布局类 `alignment-board`,不默认覆盖普通截图。
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
| 问题 | 回答 |
|
|
4
4
|
| --- | --- |
|
|
5
|
-
| 真实图片是不是页面成立前提 |
|
|
6
|
-
| 必需图片类型 |
|
|
7
|
-
| 计划来源 |
|
|
8
|
-
| 缺失风险 |
|
|
9
|
-
| 降级方案 |
|
|
5
|
+
| 真实图片是不是页面成立前提 | 否。Review Studio 是信息与决策产品,依赖真实项目数据而不是摄影素材。 |
|
|
6
|
+
| 必需图片类型 | 只需要三方向交互候选图作为评审证据。 |
|
|
7
|
+
| 计划来源 | 使用 Codex 原生 Image 2 生成,并用 `openprd visual-prepare` 拆分成 reference set。 |
|
|
8
|
+
| 缺失风险 | 候选图只表达信息架构,不作为像素级实现稿;生成文字可能失真。 |
|
|
9
|
+
| 降级方案 | 实现以现有 Review DOM、tokens 和真实 v0018 数据为准,候选图只约束布局、层级和阅读路径。 |
|
|
10
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"schema": "openprd.visual-prepare.plan.v1",
|
|
4
|
+
"generatedAt": "2026-07-10 23:10:01",
|
|
5
|
+
"title": "OpenPrd Review Studio 0.1.20 三方向 对比计划",
|
|
6
|
+
"referenceSet": ".openprd/design/active/review-studio-v020-directions/reference-set.json",
|
|
7
|
+
"artifacts": {
|
|
8
|
+
"focusBoardTemplate": ".openprd/design/active/review-studio-v020-directions/focus-board.template.json",
|
|
9
|
+
"parallelBoardTemplate": ".openprd/design/active/review-studio-v020-directions/parallel-board.template.json"
|
|
10
|
+
},
|
|
11
|
+
"items": [
|
|
12
|
+
{
|
|
13
|
+
"id": "01",
|
|
14
|
+
"label": "对象 01",
|
|
15
|
+
"reference": ".openprd/design/active/review-studio-v020-directions/crops/01.png",
|
|
16
|
+
"suggestedActual": "__REPLACE_WITH_IMPLEMENTATION_SCREENSHOT__",
|
|
17
|
+
"suggestedCommand": "openprd visual-compare . --reference .openprd/design/active/review-studio-v020-directions/crops/01.png --actual __REPLACE_WITH_IMPLEMENTATION_SCREENSHOT__"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "02",
|
|
21
|
+
"label": "对象 02",
|
|
22
|
+
"reference": ".openprd/design/active/review-studio-v020-directions/crops/02.png",
|
|
23
|
+
"suggestedActual": "__REPLACE_WITH_IMPLEMENTATION_SCREENSHOT__",
|
|
24
|
+
"suggestedCommand": "openprd visual-compare . --reference .openprd/design/active/review-studio-v020-directions/crops/02.png --actual __REPLACE_WITH_IMPLEMENTATION_SCREENSHOT__"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "03",
|
|
28
|
+
"label": "对象 03",
|
|
29
|
+
"reference": ".openprd/design/active/review-studio-v020-directions/crops/03.png",
|
|
30
|
+
"suggestedActual": "__REPLACE_WITH_IMPLEMENTATION_SCREENSHOT__",
|
|
31
|
+
"suggestedCommand": "openprd visual-compare . --reference .openprd/design/active/review-studio-v020-directions/crops/03.png --actual __REPLACE_WITH_IMPLEMENTATION_SCREENSHOT__"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mode": "focus-board",
|
|
3
|
+
"title": "OpenPrd Review Studio 0.1.20 三方向 局部焦点模板",
|
|
4
|
+
"summary": "把 right.path 替换成实现截图;如果实现截图布局与参考图不同,再分别调整 rightBox。",
|
|
5
|
+
"left": {
|
|
6
|
+
"path": ".openprd/design/active/review-studio-v020-directions/source.png",
|
|
7
|
+
"label": "参考整板"
|
|
8
|
+
},
|
|
9
|
+
"right": {
|
|
10
|
+
"path": "__REPLACE_WITH_IMPLEMENTATION_SCREENSHOT__",
|
|
11
|
+
"label": "实现截图"
|
|
12
|
+
},
|
|
13
|
+
"focusRegions": [
|
|
14
|
+
{
|
|
15
|
+
"label": "对象 01",
|
|
16
|
+
"reason": "1/3 列 · 1/1 行",
|
|
17
|
+
"leftBox": {
|
|
18
|
+
"unit": "ratio",
|
|
19
|
+
"x": 0,
|
|
20
|
+
"y": 0,
|
|
21
|
+
"width": 0.333333,
|
|
22
|
+
"height": 1
|
|
23
|
+
},
|
|
24
|
+
"rightBox": {
|
|
25
|
+
"unit": "ratio",
|
|
26
|
+
"x": 0,
|
|
27
|
+
"y": 0,
|
|
28
|
+
"width": 0.333333,
|
|
29
|
+
"height": 1
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"label": "对象 02",
|
|
34
|
+
"reason": "2/3 列 · 1/1 行",
|
|
35
|
+
"leftBox": {
|
|
36
|
+
"unit": "ratio",
|
|
37
|
+
"x": 0.333333,
|
|
38
|
+
"y": 0,
|
|
39
|
+
"width": 0.333333,
|
|
40
|
+
"height": 1
|
|
41
|
+
},
|
|
42
|
+
"rightBox": {
|
|
43
|
+
"unit": "ratio",
|
|
44
|
+
"x": 0.333333,
|
|
45
|
+
"y": 0,
|
|
46
|
+
"width": 0.333333,
|
|
47
|
+
"height": 1
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"label": "对象 03",
|
|
52
|
+
"reason": "3/3 列 · 1/1 行",
|
|
53
|
+
"leftBox": {
|
|
54
|
+
"unit": "ratio",
|
|
55
|
+
"x": 0.666667,
|
|
56
|
+
"y": 0,
|
|
57
|
+
"width": 0.333333,
|
|
58
|
+
"height": 1
|
|
59
|
+
},
|
|
60
|
+
"rightBox": {
|
|
61
|
+
"unit": "ratio",
|
|
62
|
+
"x": 0.666667,
|
|
63
|
+
"y": 0,
|
|
64
|
+
"width": 0.333333,
|
|
65
|
+
"height": 1
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mode": "parallel-board",
|
|
3
|
+
"title": "OpenPrd Review Studio 0.1.20 三方向 参考映射模板",
|
|
4
|
+
"summary": "每张卡先挂参考 crop。要做多对象、多方向或多页面统一验收时,在对应卡片里继续补实现截图、指标或备注。",
|
|
5
|
+
"columns": 3,
|
|
6
|
+
"cardWidth": 360,
|
|
7
|
+
"items": [
|
|
8
|
+
{
|
|
9
|
+
"label": "对象 01",
|
|
10
|
+
"subtitle": "参考对象 01",
|
|
11
|
+
"verdict": "待补实现截图",
|
|
12
|
+
"media": [
|
|
13
|
+
{
|
|
14
|
+
"path": ".openprd/design/active/review-studio-v020-directions/crops/01.png",
|
|
15
|
+
"label": "参考 crop"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"notes": "需要时可继续补实现截图、指标或阶段性结论。"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"label": "对象 02",
|
|
22
|
+
"subtitle": "参考对象 02",
|
|
23
|
+
"verdict": "待补实现截图",
|
|
24
|
+
"media": [
|
|
25
|
+
{
|
|
26
|
+
"path": ".openprd/design/active/review-studio-v020-directions/crops/02.png",
|
|
27
|
+
"label": "参考 crop"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"notes": "需要时可继续补实现截图、指标或阶段性结论。"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"label": "对象 03",
|
|
34
|
+
"subtitle": "参考对象 03",
|
|
35
|
+
"verdict": "待补实现截图",
|
|
36
|
+
"media": [
|
|
37
|
+
{
|
|
38
|
+
"path": ".openprd/design/active/review-studio-v020-directions/crops/03.png",
|
|
39
|
+
"label": "参考 crop"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"notes": "需要时可继续补实现截图、指标或阶段性结论。"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"schema": "openprd.reference-set.v1",
|
|
4
|
+
"generatedAt": "2026-07-10 23:10:01",
|
|
5
|
+
"id": "review-studio-v020-directions",
|
|
6
|
+
"title": "OpenPrd Review Studio 0.1.20 三方向",
|
|
7
|
+
"mode": "grid",
|
|
8
|
+
"summary": "3x1 网格切片,共 3 个参考对象。",
|
|
9
|
+
"source": {
|
|
10
|
+
"originalPath": "/Users/chaojifeng/.codex/generated_images/019f4c66-86fb-74d1-8ae8-ec1ce9064e59/exec-6739c328-3559-4bcf-8689-fe9596c42b0b.png",
|
|
11
|
+
"originalSha256": "571f2b74c32dc4f0e1a8a1a08a6fd14b65243226c401a8a6f684b6f1de223ead",
|
|
12
|
+
"originalMetadata": {
|
|
13
|
+
"width": 1716,
|
|
14
|
+
"height": 917,
|
|
15
|
+
"format": "png"
|
|
16
|
+
},
|
|
17
|
+
"stagedPath": ".openprd/design/active/review-studio-v020-directions/source.png",
|
|
18
|
+
"stagedSha256": "37ecd4c9ef7853c1fd9f1d237f7bacfe174986b8cd274a7809431a00b444e590",
|
|
19
|
+
"stagedMetadata": {
|
|
20
|
+
"width": 1716,
|
|
21
|
+
"height": 917,
|
|
22
|
+
"format": "png"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"selection": {
|
|
26
|
+
"mode": "grid",
|
|
27
|
+
"grid": {
|
|
28
|
+
"columns": 3,
|
|
29
|
+
"rows": 1
|
|
30
|
+
},
|
|
31
|
+
"include": null
|
|
32
|
+
},
|
|
33
|
+
"artifacts": {
|
|
34
|
+
"contactSheet": ".openprd/design/active/review-studio-v020-directions/contact-sheet.jpg",
|
|
35
|
+
"focusBoardTemplate": ".openprd/design/active/review-studio-v020-directions/focus-board.template.json",
|
|
36
|
+
"parallelBoardTemplate": ".openprd/design/active/review-studio-v020-directions/parallel-board.template.json",
|
|
37
|
+
"comparePlan": ".openprd/design/active/review-studio-v020-directions/compare-plan.json"
|
|
38
|
+
},
|
|
39
|
+
"items": [
|
|
40
|
+
{
|
|
41
|
+
"order": 1,
|
|
42
|
+
"id": "01",
|
|
43
|
+
"label": "对象 01",
|
|
44
|
+
"note": "1/3 列 · 1/1 行",
|
|
45
|
+
"cropPath": ".openprd/design/active/review-studio-v020-directions/crops/01.png",
|
|
46
|
+
"cropSha256": "861f3bcc79ca56cb8cad5eda6b7280d9748c555a845933ac045403ed8a36c8a6",
|
|
47
|
+
"cropMetadata": {
|
|
48
|
+
"width": 572,
|
|
49
|
+
"height": 917,
|
|
50
|
+
"format": "png"
|
|
51
|
+
},
|
|
52
|
+
"cropBox": {
|
|
53
|
+
"unit": "ratio",
|
|
54
|
+
"x": 0,
|
|
55
|
+
"y": 0,
|
|
56
|
+
"width": 0.333333,
|
|
57
|
+
"height": 1
|
|
58
|
+
},
|
|
59
|
+
"absoluteBox": {
|
|
60
|
+
"x": 0,
|
|
61
|
+
"y": 0,
|
|
62
|
+
"width": 572,
|
|
63
|
+
"height": 917
|
|
64
|
+
},
|
|
65
|
+
"requestedUnit": "ratio",
|
|
66
|
+
"requestedBox": {
|
|
67
|
+
"unit": "ratio",
|
|
68
|
+
"x": 0,
|
|
69
|
+
"y": 0,
|
|
70
|
+
"width": 0.333333,
|
|
71
|
+
"height": 1
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"order": 2,
|
|
76
|
+
"id": "02",
|
|
77
|
+
"label": "对象 02",
|
|
78
|
+
"note": "2/3 列 · 1/1 行",
|
|
79
|
+
"cropPath": ".openprd/design/active/review-studio-v020-directions/crops/02.png",
|
|
80
|
+
"cropSha256": "7f1927369d514079615b0f475856ad6481645822e8a14ef390bbf9a3633c3091",
|
|
81
|
+
"cropMetadata": {
|
|
82
|
+
"width": 572,
|
|
83
|
+
"height": 917,
|
|
84
|
+
"format": "png"
|
|
85
|
+
},
|
|
86
|
+
"cropBox": {
|
|
87
|
+
"unit": "ratio",
|
|
88
|
+
"x": 0.333333,
|
|
89
|
+
"y": 0,
|
|
90
|
+
"width": 0.333333,
|
|
91
|
+
"height": 1
|
|
92
|
+
},
|
|
93
|
+
"absoluteBox": {
|
|
94
|
+
"x": 572,
|
|
95
|
+
"y": 0,
|
|
96
|
+
"width": 572,
|
|
97
|
+
"height": 917
|
|
98
|
+
},
|
|
99
|
+
"requestedUnit": "ratio",
|
|
100
|
+
"requestedBox": {
|
|
101
|
+
"unit": "ratio",
|
|
102
|
+
"x": 0.333333,
|
|
103
|
+
"y": 0,
|
|
104
|
+
"width": 0.333333,
|
|
105
|
+
"height": 1
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"order": 3,
|
|
110
|
+
"id": "03",
|
|
111
|
+
"label": "对象 03",
|
|
112
|
+
"note": "3/3 列 · 1/1 行",
|
|
113
|
+
"cropPath": ".openprd/design/active/review-studio-v020-directions/crops/03.png",
|
|
114
|
+
"cropSha256": "295ee41a5fd24ba080fcd7a695fd6fa7d4252cdf71f4f29c04cc3d285227cb0b",
|
|
115
|
+
"cropMetadata": {
|
|
116
|
+
"width": 572,
|
|
117
|
+
"height": 917,
|
|
118
|
+
"format": "png"
|
|
119
|
+
},
|
|
120
|
+
"cropBox": {
|
|
121
|
+
"unit": "ratio",
|
|
122
|
+
"x": 0.666667,
|
|
123
|
+
"y": 0,
|
|
124
|
+
"width": 0.333333,
|
|
125
|
+
"height": 1
|
|
126
|
+
},
|
|
127
|
+
"absoluteBox": {
|
|
128
|
+
"x": 1144,
|
|
129
|
+
"y": 0,
|
|
130
|
+
"width": 572,
|
|
131
|
+
"height": 917
|
|
132
|
+
},
|
|
133
|
+
"requestedUnit": "ratio",
|
|
134
|
+
"requestedBox": {
|
|
135
|
+
"unit": "ratio",
|
|
136
|
+
"x": 0.666667,
|
|
137
|
+
"y": 0,
|
|
138
|
+
"width": 0.333333,
|
|
139
|
+
"height": 1
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
}
|
|
Binary file
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
# Selected Direction
|
|
2
2
|
|
|
3
|
-
- selected:
|
|
4
|
-
- reason:
|
|
5
|
-
- lens:
|
|
6
|
-
- theme:
|
|
7
|
-
- layout:
|
|
8
|
-
- aesthetic:
|
|
9
|
-
- memory-point:
|
|
3
|
+
- selected: B 双轨证据工作台
|
|
4
|
+
- reason: 在小白可理解、工程可追溯、现有实现兼容和控制平面定位之间得分最高;同一 ReviewModel 可直接支撑两种投影,避免形成两套真相。
|
|
5
|
+
- lens: evidence-first progressive disclosure
|
|
6
|
+
- theme: quiet professional control plane
|
|
7
|
+
- layout: 共享决策时间线 + 业务/工程双视图 + 可展开证据区
|
|
8
|
+
- aesthetic: 克制、清晰、可信、信息密度可控
|
|
9
|
+
- memory-point: 一条时间线,两种视角
|
|
10
10
|
- components:
|
|
11
|
-
-
|
|
11
|
+
- 共享决策时间线
|
|
12
|
+
- 业务视角 / 工程视角切换
|
|
13
|
+
- 左侧评审议程
|
|
14
|
+
- 业务故事与风险卡
|
|
15
|
+
- 工程证据、任务与版本追溯
|
|
16
|
+
- 固定确认与修订动作栏
|
|
12
17
|
- follow-up risks:
|
|
13
|
-
-
|
|
18
|
+
- 默认必须打开业务视角,工程信息按需展开。
|
|
19
|
+
- 两种视图必须共享同一 model digest,样式重渲染不能使业务确认失效。
|
|
20
|
+
- 实现后需要业务词泄漏检查、同构卡片对齐板和真实浏览器截图证据。
|
|
21
|
+
|
|
22
|
+
## 0.1.21 补充方向:紧凑结果画布
|
|
23
|
+
|
|
24
|
+
- scope: `visual-compare` 最终结果展示。
|
|
25
|
+
- aesthetic: 温暖、直接、低装饰,截图占主要面积。
|
|
26
|
+
- memory-point: 用户一眼看到“比了什么、是否通过”。
|
|
27
|
+
- routing: 普通结果无网格;只有布局、间距、对齐或同构结构进入 `alignment-board`。
|