@miniidealab/openlogos 0.9.23 → 0.9.25

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 (57) hide show
  1. package/claude-plugin-template/.claude-plugin/plugin.json +1 -1
  2. package/dist/commands/init.d.ts +1 -1
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +59 -36
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/launch.d.ts +5 -0
  7. package/dist/commands/launch.d.ts.map +1 -1
  8. package/dist/commands/launch.js +54 -0
  9. package/dist/commands/launch.js.map +1 -1
  10. package/dist/commands/merge.d.ts.map +1 -1
  11. package/dist/commands/merge.js +3 -1
  12. package/dist/commands/merge.js.map +1 -1
  13. package/dist/commands/next.d.ts +2 -0
  14. package/dist/commands/next.d.ts.map +1 -1
  15. package/dist/commands/next.js +62 -63
  16. package/dist/commands/next.js.map +1 -1
  17. package/dist/commands/smoke.d.ts +30 -0
  18. package/dist/commands/smoke.d.ts.map +1 -0
  19. package/dist/commands/smoke.js +237 -0
  20. package/dist/commands/smoke.js.map +1 -0
  21. package/dist/commands/status.d.ts +38 -2
  22. package/dist/commands/status.d.ts.map +1 -1
  23. package/dist/commands/status.js +309 -29
  24. package/dist/commands/status.js.map +1 -1
  25. package/dist/commands/verify.d.ts.map +1 -1
  26. package/dist/commands/verify.js +32 -1
  27. package/dist/commands/verify.js.map +1 -1
  28. package/dist/i18n.d.ts +1 -1
  29. package/dist/i18n.d.ts.map +1 -1
  30. package/dist/i18n.js +101 -33
  31. package/dist/i18n.js.map +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +9 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/lib/sync-resource-index.d.ts.map +1 -1
  36. package/dist/lib/sync-resource-index.js +21 -2
  37. package/dist/lib/sync-resource-index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/skills/architecture-designer/SKILL.md +27 -5
  40. package/skills/change-writer/SKILL.md +61 -11
  41. package/skills/code-implementor/SKILL.md +5 -5
  42. package/skills/code-reviewer/SKILL.md +1 -1
  43. package/skills/deployment-designer/SKILL.md +137 -0
  44. package/skills/deployment-executor/SKILL.md +133 -0
  45. package/skills/merge-executor/SKILL.md +17 -4
  46. package/skills/project-init/SKILL.md +42 -2
  47. package/skills/test-orchestrator/SKILL.md +6 -6
  48. package/skills/test-writer/SKILL.md +67 -8
  49. package/spec/agents-md.md +32 -9
  50. package/spec/change-management.md +75 -20
  51. package/spec/cli-json-output.md +106 -17
  52. package/spec/directory-convention.md +28 -6
  53. package/spec/logos-project.md +44 -1
  54. package/spec/logos.config.schema.json +32 -2
  55. package/spec/tasks-spec.md +56 -11
  56. package/spec/test-results.md +2 -2
  57. package/spec/workflow.md +129 -33
@@ -15,6 +15,7 @@
15
15
  3. 生成 `logos/logos-project.yaml` AI 协作索引
16
16
  4. 生成 `AGENTS.md` / `CLAUDE.md` AI 指令文件(根目录)
17
17
  5. 创建 `logos/changes/` 变更管理目录
18
+ 6. 创建部署方案与 smoke 测试所需目录
18
19
 
19
20
  ## 执行步骤
20
21
 
@@ -42,10 +43,15 @@ project-root/
42
43
  │ │ │ └── 2-page-design/
43
44
  │ │ └── 3-technical-plan/
44
45
  │ │ ├── 1-architecture/
45
- │ │ └── 2-scenario-implementation/
46
+ │ │ ├── 2-scenario-implementation/
47
+ │ │ └── 3-deployment/
46
48
  │ ├── api/
47
49
  │ ├── database/
48
- └── scenario/
50
+ ├── test/
51
+ │ │ └── smoke/
52
+ │ ├── scenario/
53
+ │ ├── implementation/
54
+ │ └── verify/
49
55
  └── changes/
50
56
  ```
51
57
 
@@ -66,6 +72,11 @@ project-root/
66
72
  "path": "./resources/api",
67
73
  "pattern": "**/*.{yaml,yml,json}"
68
74
  },
75
+ "test": {
76
+ "label": { "en": "Test Cases", "zh": "测试用例" },
77
+ "path": "./resources/test",
78
+ "pattern": "**/*.md"
79
+ },
69
80
  "scenario": {
70
81
  "label": { "en": "Scenarios", "zh": "业务场景" },
71
82
  "path": "./resources/scenario",
@@ -75,7 +86,24 @@ project-root/
75
86
  "label": { "en": "Database", "zh": "数据库" },
76
87
  "path": "./resources/database",
77
88
  "pattern": "**/*.sql"
89
+ },
90
+ "implementation": {
91
+ "label": { "en": "Implementation", "zh": "实现清单" },
92
+ "path": "./resources/implementation",
93
+ "pattern": "**/*.md"
94
+ },
95
+ "verify": {
96
+ "label": { "en": "Verify Reports", "zh": "验收报告" },
97
+ "path": "./resources/verify",
98
+ "pattern": "**/*.{jsonl,md}"
78
99
  }
100
+ },
101
+ "verify": {
102
+ "result_path": "logos/resources/verify/test-results.jsonl"
103
+ },
104
+ "smoke": {
105
+ "result_path": "logos/resources/verify/smoke-results.jsonl",
106
+ "report_path": "logos/resources/verify/smoke-report.md"
79
107
  }
80
108
  }
81
109
  ```
@@ -124,6 +152,8 @@ Read `logos/logos-project.yaml` first to understand the project resource index.
124
152
  3. All API designs must originate from scenario sequence diagrams
125
153
  4. All code changes must have corresponding API orchestration tests
126
154
  5. Use the Delta change workflow for iterations (see logos/changes/ directory)
155
+ 6. Deployment is a human confirmation point; AI must not deploy without explicit authorization
156
+ 7. If deployment is required, smoke tests must be designed and run via `openlogos smoke` after deployment
127
157
 
128
158
  ## Conventions
129
159
  {从 logos-project.yaml 的 conventions 提取}
@@ -131,6 +161,13 @@ Read `logos/logos-project.yaml` first to understand the project resource index.
131
161
 
132
162
  同时生成 `CLAUDE.md`,内容与 AGENTS.md 一致。
133
163
 
164
+ Phase 检测逻辑必须包含:
165
+
166
+ - API/DB 完成但 `3-technical-plan/3-deployment/` 为空 → Phase 3 Step 3(deployment-designer)
167
+ - 部署方案存在但 `logos/resources/test/` 为空 → Phase 3 Step 4a(test-writer)
168
+ - verify 通过但部署未完成 → Phase 3 Step 7(deployment-executor,人类确认点)
169
+ - 部署完成但 smoke 未通过 → Phase 3 Step 8(openlogos smoke,人类确认点)
170
+
134
171
  ### Step 6: 输出初始化报告
135
172
 
136
173
  向用户报告创建了哪些文件和目录,并给出下一步建议:
@@ -145,6 +182,9 @@ Read `logos/logos-project.yaml` first to understand the project resource index.
145
182
  - `logos/logos-project.yaml`:有效的 YAML
146
183
  - `AGENTS.md` / `CLAUDE.md`:Markdown 格式,位于项目根目录
147
184
  - `logos/` 下所有目录已创建,空目录包含 `.gitkeep`
185
+ - 必须创建 `logos/resources/prd/3-technical-plan/3-deployment/`
186
+ - 必须创建 `logos/resources/test/smoke/`
187
+ - 必须创建 `logos/resources/verify/`
148
188
 
149
189
  ## 实践经验
150
190
 
@@ -1,23 +1,23 @@
1
1
  # Skill: Test Orchestrator
2
2
 
3
- > 基于业务场景和时序图设计 **API 编排测试**用例(Phase 3 Step 3b),覆盖正常/异常/边界场景,自动识别外部依赖并应用测试策略,作为端到端 API 验收标准。**仅适用于涉及 API 的项目。**
3
+ > 基于业务场景和时序图设计 **API 编排测试**用例(Phase 3 Step 4b),覆盖正常/异常/边界场景,自动识别外部依赖并应用测试策略,作为端到端 API 验收标准。**仅适用于涉及 API 的项目。**
4
4
 
5
5
  ## 与 test-writer 的关系
6
6
 
7
- 本 Skill 负责测试金字塔的**顶层**——API 编排测试(HTTP 请求级别),执行于 Phase 3 Step 3b
7
+ 本 Skill 负责测试金字塔的**顶层**——API 编排测试(HTTP 请求级别),执行于 Phase 3 Step 4b
8
8
 
9
- 底层的单元测试和场景测试(函数调用级别)由 `test-writer` Skill 在 Step 3a 完成。Step 3a 是所有项目的必选步骤,Step 3b(本 Skill)仅在项目涉及 API 时执行。
9
+ 底层的单元测试和场景测试(函数调用级别)由 `test-writer` Skill 在 Step 4a 完成。Step 4a 是所有项目的必选步骤,Step 4b(本 Skill)仅在项目涉及 API 时执行。
10
10
 
11
11
  ## 触发条件
12
12
 
13
13
  - 用户要求设计 API 编排测试
14
- - 用户提到 "Phase 3 Step 3b"、"API 编排"、"编排测试"
15
- - Step 3a(test-writer)完成后,AI 引导用户继续进入 Step 3b
14
+ - 用户提到 "Phase 3 Step 4b"、"API 编排"、"编排测试"
15
+ - Step 4a(test-writer)完成后,AI 引导用户继续进入 Step 4b
16
16
  - 用户需要验收已部署的 API 代码
17
17
 
18
18
  ## 前置依赖
19
19
 
20
- - `logos/resources/test/` 中包含测试用例规格文档(Step 3a 已完成)
20
+ - `logos/resources/test/` 中包含测试用例规格文档(Step 4a 已完成)
21
21
  - `logos/resources/prd/3-technical-plan/2-scenario-implementation/` 中包含场景时序图
22
22
  - `logos/resources/api/` 中包含 API 规格(OpenAPI YAML)
23
23
  - `logos-project.yaml` 中包含 `external_dependencies`(如有)
@@ -5,18 +5,19 @@
5
5
  ## 触发条件
6
6
 
7
7
  - 用户要求设计测试用例或测试方案
8
- - 用户提到 "Phase 3 Step 3"、"Step 3a"、"测试先行"、"测试设计"
8
+ - 用户提到 "Phase 3 Step 4a"、"Step 4a"、"测试先行"、"测试设计"
9
9
  - 已有场景时序图,需要在写代码前设计测试
10
10
  - 用户指定某个场景编号(如 S01)需要设计测试
11
11
 
12
12
  ## 前置依赖
13
13
 
14
14
  - `logos/resources/prd/3-technical-plan/2-scenario-implementation/` 中包含场景时序图(**必需**)
15
+ - `logos/resources/prd/3-technical-plan/3-deployment/` 中包含部署方案(如项目需要部署则必需)
15
16
  - `logos/resources/api/` 中包含 API 规格(有则读取,无则跳过——非 API 项目可能没有)
16
17
  - `logos/resources/database/` 中包含 DB DDL(有则读取,无则跳过)
17
18
  - `logos/resources/prd/1-product-requirements/` 中包含需求文档(用于追溯验收条件)
18
19
 
19
- **不可跳过**:无论项目类型如何,Step 3a(本 Skill)都必须执行。
20
+ **不可跳过**:无论项目类型如何,Step 4a(本 Skill)都必须执行。若部署方案声明需要部署,本 Skill 必须一并设计部署后冒烟测试。
20
21
 
21
22
  ## 核心能力
22
23
 
@@ -25,7 +26,8 @@
25
26
  3. 从业务规则和 EX 异常用例中的单点错误处理提取单元测试用例
26
27
  4. 从时序图 Step 序列提取场景测试用例(主路径)
27
28
  5. 从 EX 异常用例提取场景测试用例(异常路径)
28
- 6. Phase 1/2 验收条件反向校验测试覆盖完整性
29
+ 6. 从部署方案提取 smoke 测试用例(仅需要部署的项目)
30
+ 7. 从 Phase 1/2 验收条件反向校验测试覆盖完整性
29
31
 
30
32
  ## 执行步骤
31
33
 
@@ -34,6 +36,7 @@
34
36
  读取以下文件建立完整上下文:
35
37
 
36
38
  - 场景时序图(`logos/resources/prd/3-technical-plan/2-scenario-implementation/`)
39
+ - 部署方案(`logos/resources/prd/3-technical-plan/3-deployment/`)—— 如果项目需要部署
37
40
  - API YAML(`logos/resources/api/`)—— 如果存在
38
41
  - DB DDL(`logos/resources/database/`)—— 如果存在
39
42
  - Phase 1 需求文档(验收条件)
@@ -132,6 +135,32 @@
132
135
 
133
136
  **判断标准**:如果该用例在 CI 无头环境中无法稳定运行并自动断言结果,就应加 `[manual]`。
134
137
 
138
+ #### 3d: 部署后冒烟测试(需要部署时)
139
+
140
+ 当部署方案存在且声明需要部署时,必须设计 smoke 测试用例。冒烟测试验证“部署后的环境是否可用”,不替代 UT/ST/API 编排测试。
141
+
142
+ 从部署方案中提取以下用例:
143
+
144
+ - 健康检查:服务进程、HTTP health endpoint、CLI version 或桌面应用启动检查
145
+ - 核心入口:主页、登录页、主 API、主命令
146
+ - 数据库迁移:关键表/字段存在、迁移版本正确、初始化数据可读
147
+ - 静态资源:前端 bundle、图片、CSS、字体或下载资源可访问
148
+ - 配置与密钥:必要环境变量存在且没有使用测试占位值
149
+ - 关键链路:最小可用用户路径,例如登录、创建一条核心记录、读取结果
150
+ - 日志与监控:部署后没有阻断性错误
151
+
152
+ **每个 smoke 用例格式**:
153
+
154
+ | 字段 | 说明 |
155
+ |------|------|
156
+ | ID | `SMOKE-{模块}-{序号}`,如 `SMOKE-core-01` |
157
+ | 描述 | 验证什么部署后行为 |
158
+ | 来源 | 部署方案章节或检查项 |
159
+ | 目标环境 | local / staging / production |
160
+ | 前置条件 | 部署完成、迁移完成、必要配置存在 |
161
+ | 操作 | 执行的命令、请求或访问动作 |
162
+ | 预期结果 | 返回码、页面状态、日志、数据库状态 |
163
+
135
164
  ### Step 4: 覆盖度校验
136
165
 
137
166
  反向校验测试用例是否覆盖了所有关键约束:
@@ -141,6 +170,7 @@
141
170
  - [ ] 每个 EX 异常用例至少对应 1 个 ST 用例
142
171
  - [ ] API 每个 `required` 字段至少 1 个 UT 用例
143
172
  - [ ] DB 每个 `UNIQUE` / `CHECK` 约束至少 1 个 UT 用例
173
+ - [ ] 如需要部署,部署方案中的每个部署后检查项至少对应 1 个 SMOKE 用例
144
174
 
145
175
  如有未覆盖项,补充用例或向用户说明理由。
146
176
 
@@ -165,13 +195,13 @@
165
195
 
166
196
  ### Step 6: 输出测试用例规格文档
167
197
 
168
- 按场景输出 Markdown 格式的测试用例规格文档。
198
+ 按场景输出 Markdown 格式的测试用例规格文档。若需要部署,同时输出 smoke 测试用例规格文档。
169
199
 
170
200
  ### Step 7: 引导后续操作
171
201
 
172
202
  根据项目类型引导用户进入下一步:
173
203
 
174
- - **涉及 API** → 「继续进入 Step 3b 设计 API 编排测试?」
204
+ - **涉及 API** → 「继续进入 Step 4b 设计 API 编排测试?」
175
205
  - **不涉及 API** → 「测试设计已完成,建议进入代码生成:对我说『按 S01 的规格帮我实现』」
176
206
 
177
207
  ## 输出规范
@@ -180,7 +210,9 @@
180
210
  - **存放位置**:`logos/resources/test/`
181
211
  - **命名规则**:`<module>-{场景编号}-test-cases.md`(如 `core-S01-test-cases.md`;从 `logos-project.yaml` 的 `modules[]` 读取当前模块,默认为 `core`)
182
212
  - 每个文件包含:单元测试用例(按来源分组)+ 场景测试用例(主路径 + 异常路径)
183
- - 用例 ID 全局唯一:`UT-{场景编号}-{序号}` / `ST-{场景编号}-{序号}`
213
+ - **Smoke 存放位置**:`logos/resources/test/smoke/`
214
+ - **Smoke 命名规则**:`<module>-smoke-test-cases.md`
215
+ - 用例 ID 全局唯一:`UT-{场景编号}-{序号}` / `ST-{场景编号}-{序号}` / `SMOKE-{module}-{序号}`
184
216
 
185
217
  ### 文档结构模板
186
218
 
@@ -235,6 +267,32 @@
235
267
  | S01-AC-03 | 异常:项目已初始化 — 显示错误提示 | ST-S01-03, UT-S01-05 |
236
268
  ```
237
269
 
270
+ ### Smoke 文档结构模板
271
+
272
+ ```markdown
273
+ # {module}: 部署后冒烟测试用例
274
+
275
+ ## 一、冒烟测试范围
276
+
277
+ | 环境 | 覆盖范围 | 说明 |
278
+ |------|----------|------|
279
+ | staging | 健康检查、核心 API、迁移检查 | launch 前必跑 |
280
+
281
+ ## 二、冒烟测试用例
282
+
283
+ | ID | 描述 | 来源 | 目标环境 | 前置条件 | 操作 | 预期结果 |
284
+ |----|------|------|----------|----------|------|----------|
285
+ | SMOKE-core-01 | 健康检查接口可访问 | 部署方案:部署后检查 | staging | 服务已部署 | GET /health | 200 OK |
286
+
287
+ ## 三、覆盖度校验
288
+
289
+ - [x] 健康检查:已覆盖
290
+ - [x] 核心入口:已覆盖
291
+ - [x] 数据库迁移:已覆盖
292
+ - [x] 静态资源:已覆盖
293
+ - [x] 关键链路:已覆盖
294
+ ```
295
+
238
296
  ## 用例 ID 合约
239
297
 
240
298
  用例 ID(`UT-S01-01`、`ST-S01-01`)是设计文档与运行时的**绑定合约**:
@@ -242,13 +300,14 @@
242
300
  - 在 test-cases.md 中定义的 ID,必须在生成的测试代码中被原样使用
243
301
  - 测试代码的 reporter 会把每个用例的 ID 和运行结果写入 JSONL 文件
244
302
  - `openlogos verify` 通过 ID 将运行结果映射回测试用例规格,自动判定验收
245
- - 修改用例 ID 时必须同步修改测试代码中的 ID
303
+ - `SMOKE-*` smoke 测试脚本写入 `smoke-results.jsonl`,供 `openlogos smoke` 判定
304
+ - 修改用例 ID 时必须同步修改对应测试代码或 smoke 脚本中的 ID
246
305
 
247
306
  详细的 JSONL 格式定义和各语言 reporter 代码模板见 `logos/spec/test-results.md`。
248
307
 
249
308
  ## 实践经验
250
309
 
251
- - **测试用例是设计文档,不是代码**:本 Skill 产出的是 Markdown 格式的测试用例规格,具体的测试代码在 Step 4 代码生成阶段由 AI 基于此规格实现
310
+ - **测试用例是设计文档,不是代码**:本 Skill 产出的是 Markdown 格式的测试用例规格,具体的测试代码在 Step 5 代码生成阶段由 AI 基于此规格实现
252
311
  - **先单元后场景**:单元测试用例覆盖单个函数的正确性,场景测试覆盖跨模块串联——先确保积木正确,再验证积木拼接
253
312
  - **不要遗漏 DB 约束**:很多 Bug 来自数据库层面的约束违反,DB 约束是单元测试用例的重要来源
254
313
  - **场景测试关注数据传递**:Step 间的数据传递(前一步输出 → 后一步输入)是最容易出错的地方
package/spec/agents-md.md CHANGED
@@ -27,6 +27,10 @@ Read `logos/logos-project.yaml` first to understand the project resource index.
27
27
  3. All API designs must originate from scenario sequence diagrams
28
28
  4. All code changes must have corresponding API orchestration tests
29
29
  5. Use the Delta change workflow for iterations (see logos/changes/ directory)
30
+ 6. All generated test code must include an OpenLogos reporter
31
+ 7. Deployment is a human confirmation point; AI must not deploy without explicit authorization
32
+ 8. If deployment is required, smoke tests must be designed with the test plan and run via `openlogos smoke` after deployment
33
+ 9. For launched-project change proposals, deployment and smoke decisions must be made at proposal level. A module-level deployment gate is only a default and must not force deploy/smoke for a proposal that explicitly does not require deployment.
30
34
 
31
35
  ## Document Edit Verification
32
36
  [Fixed locale-specific paragraph — re-read from disk after Markdown/text spec edits]
@@ -44,19 +48,26 @@ Phase detection logic:
44
48
  - design exists but `3-technical-plan/1-architecture/` is empty → suggest Phase 3 Step 0 (architecture-designer)
45
49
  - architecture exists but `3-technical-plan/2-scenario-implementation/` is empty → suggest Phase 3 Step 1 (scenario-architect)
46
50
  - scenarios exist but `logos/resources/api/` is empty → suggest Phase 3 Step 2 (api-designer + db-designer)
47
- - API exists but `logos/resources/test/` is empty → suggest Phase 3 Step 3a (test-writer)
48
- - test cases exist but `logos/resources/scenario/` is empty → suggest Phase 3 Step 3b (test-orchestrator, API projects only)
49
- - All above exist → suggest Phase 3 Step 4 (code generation)
50
- - code generated but `logos/resources/verify/` is empty → suggest Phase 3 Step 5 (run tests then `openlogos verify`)
51
-
52
- Step 4 execution rules (large tasks):
51
+ - API/DB exists but `3-technical-plan/3-deployment/` is empty → suggest Phase 3 Step 3 (deployment-designer)
52
+ - deployment plan exists but `logos/resources/test/` is empty → suggest Phase 3 Step 4a (test-writer)
53
+ - test cases exist but `logos/resources/scenario/` is empty → suggest Phase 3 Step 4b (test-orchestrator, API projects only)
54
+ - orchestration tests exist but `logos/resources/implementation/` is empty → suggest Phase 3 Step 5 (code-implementor)
55
+ - code generated but `logos/resources/verify/acceptance-report.md` is missing or verify has not passed → suggest Phase 3 Step 6 (`openlogos verify`)
56
+ - verify passed but deployment is required and `deployment-report.md` is missing → suggest Phase 3 Step 7 (deployment-executor, human confirmation required)
57
+ - deployment done but `smoke-report.md` / `SMOKE_PASS` is missing → suggest Phase 3 Step 8 (`openlogos smoke`)
58
+ - smoke passed → suggest `openlogos launch`
59
+
60
+ Step 5 execution rules (large tasks):
53
61
  1. Large implementation can be split by scenario/module, but each batch must be closed-loop
54
62
  2. Each batch must include business code + UT/ST test code + OpenLogos reporter
55
63
  3. Before generating code, list the UT/ST case IDs covered in this batch and keep IDs aligned with `logos/resources/test/*.md`
56
64
  4. Do not postpone all tests to the final batch
57
65
 
58
- Ready-to-use prompt for Step 4 batch execution:
59
- `Please execute Phase 3 Step 4 for this scope. If the task is large, split into batches, but each batch must deliver: (1) business code, (2) matching UT/ST test code, (3) OpenLogos reporter writing to logos/resources/verify/test-results.jsonl. Before outputting code, list the UT/ST IDs covered in this batch.`
66
+ Deployment rules:
67
+ 1. AI must not run deployment commands unless the user explicitly authorizes deployment
68
+ 2. AI must read `logos/resources/prd/3-technical-plan/3-deployment/` before deployment
69
+ 3. Deployment completion must be followed by `openlogos smoke`
70
+ 4. Initial modules can be launched only after verify, deployment, and smoke gates pass, unless explicitly marked as not requiring deployment
60
71
 
61
72
  ## Active Skills
62
73
  [根据 `logos.config.json` 的 `aiTool` 字段动态生成]
@@ -105,7 +116,19 @@ AGENTS.md 的内容从以下文件中自动提取:
105
116
  4. All code changes must have corresponding API orchestration tests
106
117
  5. Use the Delta change workflow for iterations
107
118
  6. All generated test code must include an OpenLogos reporter (see spec/test-results.md)
108
- 7. After editing Markdown / text specs, re-read from disk and show excerpts to the user (see 「文档修改后的验证」生成段)
119
+ 7. Deployment is a human confirmation point; AI must not deploy without explicit authorization
120
+ 8. If deployment is required, smoke tests must be designed and run via `openlogos smoke` after deployment
121
+ 9. For launched-project change proposals, deployment and smoke decisions must be made at proposal level. A module-level deployment gate is only a default and must not force deploy/smoke for a proposal that explicitly does not require deployment.
122
+ 10. After editing Markdown / text specs, re-read from disk and show excerpts to the user (see 「文档修改后的验证」生成段)
123
+
124
+ ### 提案级部署门禁生成规则
125
+
126
+ AGENTS.md / CLAUDE.md 的变更管理段必须强调:
127
+ - `proposal.md` 的 `## 部署影响` 是活跃提案的部署决策入口。
128
+ - 不需要部署的提案不得创建 `[deploy]` section。
129
+ - verify PASS 且无需部署时,应提醒用户明确授权执行 `openlogos archive <slug>`。
130
+ - 只有提案级需要部署时,才在 verify PASS 后提醒用户明确授权部署。
131
+ - 只有提案级需要 smoke 且部署完成后,才提醒用户明确授权执行 `openlogos smoke`。
109
132
 
110
133
  ### 生成时机
111
134
 
@@ -7,10 +7,11 @@
7
7
  ## 核心原则
8
8
 
9
9
  1. **不直接修改主文档**:每次变更先在 `logos/changes/` 中创建提案
10
- 2. **影响分析先行**:在 `proposal.md` 中明确变更范围
10
+ 2. **影响分析先行**:在 `proposal.md` 中明确变更范围和部署影响
11
11
  3. **按需传播**:不是每次都全链路更新,只更新受影响的环节
12
- 4. **归档留痕**:变更完成后归档,保留完整历史
13
- 5. **guard 互斥**:同一时间只允许一个活动提案;存在活动 guard 时,必须阻止新的 `openlogos change`
12
+ 4. **部署可追溯**:需要部署的提案必须产出部署 delta、部署任务和冒烟测试方案
13
+ 5. **归档留痕**:变更完成后归档,保留完整历史
14
+ 6. **guard 互斥**:同一时间只允许一个活动提案;存在活动 guard 时,必须阻止新的 `openlogos change`
14
15
 
15
16
  ## 目录结构
16
17
 
@@ -47,17 +48,36 @@ project-root/
47
48
  ## 变更原因
48
49
  [为什么要做这个变更?来源于哪个需求/反馈/Bug?]
49
50
 
51
+ ## 变更类型
52
+ [需求级 / 设计级 / 接口级 / 代码级]
53
+
50
54
  ## 变更范围
51
55
  - 影响的需求文档:[列表]
52
56
  - 影响的功能规格:[列表]
53
57
  - 影响的业务场景:[列表]
54
58
  - 影响的 API:[列表]
55
59
  - 影响的 DB 表:[列表]
60
+ - 影响的编排测试:[列表]
61
+
62
+ ## 部署影响
63
+ - 是否需要部署:是 / 否
64
+ - 部署原因:[说明为什么需要或不需要部署]
65
+ - 影响环境:[本地 / 测试 / 预发 / 生产 / 无]
66
+ - 是否涉及数据迁移:是 / 否
67
+ - 是否需要回滚预案:是 / 否
56
68
 
57
69
  ## 变更概述
58
70
  [用 1-3 段话概述具体改什么]
59
71
  ```
60
72
 
73
+ `## 部署影响` 是人工审核依据。CLI 的部署状态判断以 `tasks.md` 的 `[deploy]` section 和提案目录标记文件为准,不解析自由文本作为唯一依据。
74
+
75
+ `## 部署影响` 同时也是提案级部署决策入口。CLI 应从该章节解析结构化决策,并与 `tasks.md` 的 `[deploy]` section 交叉校验:
76
+ - `是否需要部署:否` 时,不得创建 `[deploy]` section;verify PASS 后下一步为 archive。
77
+ - `是否需要部署:是` 时,必须创建 `[deploy]` section,并在 delta 阶段补齐部署方案影响;verify PASS 后下一步为人类确认部署。
78
+ - `是否需要 smoke:是` 只在已部署后生效;smoke 仍由 `openlogos smoke` 独立执行。
79
+ - 旧提案缺少结构化部署影响时,CLI 可回退到 `[deploy]` section 与模块级默认值,但必须标注兼容来源。
80
+
61
81
  ### tasks.md
62
82
 
63
83
  实现任务清单,使用结构化 section 格式,每个 section 对应提案流程中的一个阶段。完整格式规范见 `spec/tasks-spec.md`。
@@ -72,15 +92,21 @@ project-root/
72
92
  ## [code] 代码实现
73
93
  - [ ] 实现 src/xxx 中的业务逻辑
74
94
  - [ ] 编写对应测试
95
+
96
+ ## [deploy] 部署任务
97
+ - [ ] 按部署方案部署到 staging
98
+ - [ ] 确认迁移、配置、服务启动和回滚预案
75
99
  ```
76
100
 
77
101
  Section 标记规则:
78
102
  - `## [delta]` — delta 文档产出任务,该 section 全部勾选后可进入 `ready-to-merge`
79
103
  - `## [code]` — 代码实现任务,直接修改源文件,不产出 delta
104
+ - `## [deploy]` — 部署执行任务,只能在 verify PASS 后、人类明确确认后执行
80
105
  - 纯代码提案可只有 `[code]` section(无 `[delta]`),CLI 会直接跳过 delta-writing 阶段
106
+ - 不需要部署的提案不得创建 `[deploy]` section
81
107
  - 旧格式(无 section 标记)向后兼容,降级为全局勾选判断
82
108
 
83
- > **注意**:`openlogos verify` 是独立的 CLI 操作节点,不应写入 tasks.md 作为可勾选任务。verify 由面板的 verify 步骤触发,tasks.md 只追踪实现任务。
109
+ > **注意**:`openlogos verify` `openlogos smoke` 是独立 CLI 操作节点,不应写入 tasks.md 作为可勾选任务。tasks.md 只追踪 delta、代码和部署执行任务。
84
110
 
85
111
  ### deltas/ 目录
86
112
 
@@ -103,14 +129,18 @@ Delta 文件的目录结构映射主文档目录:
103
129
  - `deltas/database/` → 对应 `logos/resources/database/` 的变更
104
130
  - `deltas/scenario/` → 对应 `logos/resources/scenario/` 的变更
105
131
  - `deltas/test/` → 对应 `logos/resources/test/` 的变更
132
+ - `deltas/spec/` → 对应项目根目录 `spec/` 的方法论规范变更
133
+ - `deltas/skills/` → 对应 `logos/skills/` 的 Skill 文档变更
134
+
135
+ 部署方案 delta 使用 `deltas/prd/3-technical-plan/3-deployment/`,合并目标为 `logos/resources/prd/3-technical-plan/3-deployment/`。
106
136
 
107
- `openlogos merge` 会递归扫描上述目录,保留子目录映射。例如 `deltas/prd/2-product-design/1-feature-specs/foo.md` 会合并到 `logos/resources/prd/2-product-design/1-feature-specs/foo.md`。
137
+ `openlogos merge` 会递归扫描上述目录,保留子目录映射。例如 `deltas/prd/3-technical-plan/3-deployment/core-01-deployment-plan.md` 会合并到 `logos/resources/prd/3-technical-plan/3-deployment/core-01-deployment-plan.md`。
108
138
 
109
139
  ## 变更工作流
110
140
 
111
- > **核心原则**:`openlogos merge`、`openlogos verify`、`openlogos archive` 和 `git push` 是人类确认点。AI 可提醒、解释、准备命令;未经用户明确授权不得执行。用户以明确请求或 slash command 授权时,AI 可以代为执行。不得在"顺手完成流程"、"按流程走完"等隐式场景中自动触发。
141
+ > **核心原则**:`openlogos merge`、`openlogos verify`、部署执行、`openlogos smoke`、`openlogos archive` 和 `git push` 是人类确认点。AI 可提醒、解释、准备命令;未经用户明确授权不得执行。用户以明确请求或 slash command 授权时,AI 可以代为执行。不得在“顺手完成流程”“按流程走完”等隐式场景中自动触发。
112
142
  >
113
- > **规格驱动代码**:代码实现必须在规格合并进主文档(Step 6)之后才能开始,不允许基于 delta 草稿直接写代码。
143
+ > **规格驱动代码**:代码实现必须在规格合并进主文档之后才能开始,不允许基于 delta 草稿直接写代码。
114
144
 
115
145
  ```
116
146
  1. 创建变更提案(CLI)
@@ -152,14 +182,29 @@ Delta 文件的目录结构映射主文档目录:
152
182
  └── 验收通过(PASS)→ 继续步骤 9
153
183
  └── 验收失败(FAIL)→ 修复代码后重新运行,不需要重走 merge 流程
154
184
 
155
- 9. 归档变更(CLI)【人类确认点】
185
+ 9. 部署执行(如需要)【人类确认点】
186
+ └── 仅当 VERIFY_PASS 存在、提案级 `是否需要部署:是` 且 tasks.md 有 [deploy] section 时进入
187
+ └── 用户必须明确授权 AI 执行部署
188
+ └── AI 必须读取合并后的部署方案文档和 [deploy] section
189
+ └── 部署完成后生成 logos/resources/verify/deployment-report.md
190
+ └── 部署完成后写入 logos/changes/{slug}/DEPLOY_DONE
191
+ └── 部署失败时不得写入 DEPLOY_DONE,应输出失败点和回滚建议
192
+
193
+ 10. 运行部署后冒烟测试(CLI)【人类确认点】
194
+ └── 仅当提案级 `是否需要 smoke:是` 且 DEPLOY_DONE 存在时运行 openlogos smoke
195
+ └── openlogos smoke 读取 smoke 结果并生成 logos/resources/verify/smoke-report.md
196
+ └── 冒烟通过写入 SMOKE_PASS
197
+ └── 冒烟失败写入 SMOKE_FAIL
198
+ └── SMOKE_PASS 后才能归档提案;无需 smoke 的提案在部署完成后可归档
199
+
200
+ 11. 归档变更(CLI)【人类确认点】
156
201
  └── openlogos archive {slug}
157
202
  └── 将 logos/changes/{slug}/ 移入 logos/changes/archive/
158
203
  └── 若当前 guard 指向该提案,则删除 logos/.openlogos-guard
159
204
  └── 归档完成后,AI 自动 commit 归档变更(告知用户,无需确认)
160
205
  └── commit message 格式:chore({slug}): archive change proposal
161
206
 
162
- 10. 推送到远端(Git)【人类确认点】
207
+ 12. 推送到远端(Git)【人类确认点】
163
208
  └── AI 提示用户确认是否执行 git push
164
209
  └── 用户明确授权后,AI 执行 git push
165
210
  └── 未获授权不得自动推送
@@ -169,9 +214,9 @@ Delta 文件的目录结构映射主文档目录:
169
214
 
170
215
  | 变更类型 | commit 策略 |
171
216
  |---------|------------|
172
- | 需求级 / 设计级变更 | 至少 3 个 commit:规格(Step 6)+ 代码(Step 7)+ 归档(Step 9) |
173
- | 接口级变更 | 至少 2 个 commit:规格+代码合并(Step 6-7)+ 归档(Step 9) |
174
- | 代码级修复 | 至少 2 个 commit:代码(Step 7)+ 归档(Step 9) |
217
+ | 需求级 / 设计级变更 | 至少 3 个 commit:规格(Step 6)+ 代码(Step 7)+ 归档(Step 11) |
218
+ | 接口级变更 | 至少 2 个 commit:规格+代码合并(Step 6-7)+ 归档(Step 11) |
219
+ | 代码级修复 | 至少 2 个 commit:代码(Step 7)+ 归档(Step 11) |
175
220
 
176
221
  ## 变更传播规则
177
222
 
@@ -179,10 +224,20 @@ Delta 文件的目录结构映射主文档目录:
179
224
 
180
225
  | 变更类型 | 最少需要更新 | 说明 |
181
226
  |---------|------------|------|
182
- | 需求级变更 | 全链路 | 需求变了,所有下游都可能受影响 |
183
- | 设计级变更 | 原型 + 场景 + API/DB + 编排 + 代码 | 需求不变,实现方案调整 |
184
- | 接口级变更 | API/DB + 编排 + 代码 | 设计不变,接口细节调整 |
185
- | 代码级修复 | 代码 + 重新验收 | Bug 修复,不涉及设计变更 |
227
+ | 需求级变更 | 全链路 + 部署影响分析 | 需求变了,所有下游都可能受影响 |
228
+ | 设计级变更 | 原型 + 场景 + API/DB + 编排 + 代码 + 部署影响分析 | 需求不变,实现方案调整 |
229
+ | 接口级变更 | API/DB + 编排 + 代码 + 部署影响分析 | 设计不变,接口细节调整 |
230
+ | 部署级变更 | 部署方案 + smoke 用例 + `[deploy]` 任务 | 发布平台、环境变量、迁移、回滚、健康检查变化 |
231
+ | 代码级修复 | 代码 + 重新验收 + 部署影响分析 | Bug 修复,不涉及设计变更时仍需判断是否需要重新部署 |
232
+
233
+ ## 提案级部署决策优先级
234
+
235
+ 部署与 smoke 的判断顺序如下:
236
+ 1. 活跃提案存在时,优先读取 `proposal.md` 的 `## 部署影响`。
237
+ 2. `tasks.md` 的 `[deploy]` section 是部署执行任务的结构化证据,必须与 `proposal.md` 一致。
238
+ 3. `logos-project.yaml` 的模块级 `deployment_required` / `smoke_required` 是 Initial 阶段和历史提案的默认值,不得覆盖活跃提案的明确决策。
239
+ 4. 文档-only 或规格-only 提案声明无需部署时,即使模块默认需要部署,verify PASS 后也直接建议 archive。
240
+ 5. 部署决策缺失或冲突时,CLI 应输出警告,并采用保守策略:不自动部署,等待用户修正提案。
186
241
 
187
242
  ## Git 集成
188
243
 
@@ -199,9 +254,9 @@ AI 在以下三个节点自动提交(告知用户,无需确认):
199
254
  |------|-------------------|---------|
200
255
  | merge 完成后(Step 6) | `docs({slug}): merge spec deltas` | logos/resources/ 下的规格文档变更 |
201
256
  | 代码实现完成后(Step 7) | `feat/fix({slug}): implement changes` | 业务代码 + 测试代码 |
202
- | archive 完成后(Step 9) | `chore({slug}): archive change proposal` | logos/changes/archive/ 归档文件 |
257
+ | archive 完成后(Step 11) | `chore({slug}): archive change proposal` | logos/changes/archive/ 归档文件 |
203
258
 
204
- push 是独立的人类确认点(Step 10),AI 必须等待用户明确授权后才执行。
259
+ push 是独立的人类确认点(Step 12),AI 必须等待用户明确授权后才执行。
205
260
 
206
261
  ## MERGE_PROMPT.md 文件规范
207
262
 
@@ -221,7 +276,7 @@ push 是独立的人类确认点(Step 10),AI 必须等待用户明确授
221
276
 
222
277
  ### 1. {delta-relative-path}
223
278
  - Delta 文件:`logos/changes/{slug}/deltas/{category}/{relative-file}`
224
- - 目标目录:`logos/resources/{category}/{relative-dir}/`
279
+ - 目标目录:`{target-dir}/`
225
280
  - 操作:读取 delta 中的 ADDED / MODIFIED / REMOVED 标记,合并到目标目录中对应的主文档
226
281
 
227
282
  ## 执行要求
@@ -235,7 +290,7 @@ push 是独立的人类确认点(Step 10),AI 必须等待用户明确授
235
290
  8. 所有变更合并完成后,自动执行 git commit(告知用户,无需确认):
236
291
  `git add -A && git commit -m "docs({slug}): merge spec deltas"`
237
292
  9. 写入 `logos/changes/{slug}/SPEC_MERGED`
238
- 然后提示用户:按更新后的规格实现代码,代码完成后运行 `openlogos verify` 验收,验收通过后明确授权执行 `openlogos archive {slug}`。
293
+ 然后提示用户:按更新后的规格实现代码;代码完成后运行 `openlogos verify`;如有 `[deploy]` section,验收通过后由用户明确授权部署,再运行 `openlogos smoke`;最后明确授权执行 `openlogos archive {slug}`。
239
294
  ```
240
295
 
241
296
  ## CLI 命令