@namewta/speculo 0.1.8 → 0.1.9
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/package.json +1 -1
- package/template/workflows/dev/03-tdd/03-tdd.md +10 -0
- package/template/workflows/dev/03-tdd/tdd-finish.md +8 -4
- package/template/workflows/dev/03-tdd/tdd-loop.md +2 -1
- package/template/workflows/dev/03-tdd/tdd-plan.md +4 -1
- package/template/workflows/dev/I-to-issues/I-to-issues.md +15 -1
- package/template/workflows/dev/I-to-issues/issues-slices.md +78 -32
- package/template/workflows/dev/_templates/issues-slices-template.md +32 -11
- package/template/workflows/dev/_templates/tdd-plan-template.md +9 -0
- package/template/workflows/dev/_templates/tdd-verification-template.md +6 -0
package/package.json
CHANGED
|
@@ -30,6 +30,16 @@ keywords: [tdd, implement, red-green-refactor, 实现, 测试]
|
|
|
30
30
|
- `interface-design.md`:设计可测试公共接口时读取。
|
|
31
31
|
- `refactoring.md`:进入重构阶段时读取。
|
|
32
32
|
|
|
33
|
+
### 消费 slices 切片契约
|
|
34
|
+
|
|
35
|
+
多阶段 change 从 `slices.md` 接手时,每个 TDD 阶段对应一个切片,须读取并守护该切片契约(见 `../I-to-issues/issues-slices.md`):
|
|
36
|
+
|
|
37
|
+
- **保留/不动**:把切片的「保留/不动」清单当作实现硬约束——冻结常量 / 共享依赖 / 邻近功能一律不碰。
|
|
38
|
+
- **关键核实结论与行号现场核对**:切片记录的行号为*近似*,实现时一律以现场代码为准、不照搬。
|
|
39
|
+
- **验收切片**:Finish 阶段运行切片的「验收切片」;删除型切片须含残留扫描(`grep` 0 命中)并留证。
|
|
40
|
+
- **横切铁律**:遵守 §4 横切关注点(契约先行、删缓存可重建、数据安全冻结等)。
|
|
41
|
+
- **存疑即问**:计划阶段遇未决分支,按 `../I-to-issues/issues-slices.md`「存疑时的提问协议」一次一问、带推荐、逐步锁定。
|
|
42
|
+
|
|
33
43
|
## 阶段
|
|
34
44
|
|
|
35
45
|
> **产物目录:** 本工作流所有产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/`(见下「TDD 产物目录与阶段标识」)。下文产物路径均相对该 change 目录。**`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`**(例:`2026-06-12-user-auth`)。
|
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
## 填写引导
|
|
14
14
|
|
|
15
15
|
1. 运行与变更相关的测试、类型检查、lint 或构建命令。
|
|
16
|
-
2.
|
|
17
|
-
3.
|
|
18
|
-
4.
|
|
19
|
-
5.
|
|
16
|
+
2. **运行本切片「验收切片」**:执行切片记录的验收命令/步骤;**删除型切片须做残留扫描**(`grep -rn "<符号>" <范围>` 应 0 命中),记录证据。
|
|
17
|
+
3. **核对「保留/不动」未被破坏**:确认实现未触碰切片冻结的常量 / 共享依赖 / 邻近功能。
|
|
18
|
+
4. 记录无法运行的命令和阻塞原因。
|
|
19
|
+
5. 搜索临时调试标记、一次性脚本和推测性实现。
|
|
20
|
+
6. 验证通过后,把 slices 中该阶段 `<phase id="<phase-id>">` 的 `status` 由 `未开始` 置为 `已实现`(契约见 `03-tdd.md`「phase 阶段状态(XML 契约)」;本工作流只做这一跳,`已验证` 由 `dev/04` 置入;无 slices 则跳过)。
|
|
21
|
+
7. 如有可沉淀经验,记录在 `verification.md` 的后续建议中;在用户允许或项目规则允许时追加到 `speculo/.speculo/.config/LESSONS.md`。
|
|
20
22
|
|
|
21
23
|
## 边界
|
|
22
24
|
|
|
@@ -25,6 +27,8 @@
|
|
|
25
27
|
|
|
26
28
|
## 完成准则
|
|
27
29
|
|
|
30
|
+
- 本切片「验收切片」已运行通过(删除型切片含残留扫描 `grep` 0 命中),并在 `verification.md` 留证
|
|
31
|
+
- 「保留/不动」清单经核对未被破坏
|
|
28
32
|
- 多阶段 slices:该阶段 `<phase>` 的 `status` 已由 `未开始` 置为 `已实现`(无 slices 则不适用)
|
|
29
33
|
- `verification.md` 无残留 `[TODO:]`
|
|
30
34
|
- `.status.json` 的 `implementation_status` 为 `verified` 或 `blocked`
|
|
@@ -18,13 +18,14 @@
|
|
|
18
18
|
3. GREEN:写最少实现使当前测试通过。
|
|
19
19
|
4. REFACTOR:只在绿色状态下整理设计。
|
|
20
20
|
5. 每轮记录测试名、失败信号、实现摘要、重构摘要和验证命令。
|
|
21
|
-
6.
|
|
21
|
+
6. 每轮检查:测试描述行为而非实现;测试只使用公共接口;测试能经受内部重构;代码是当前测试的最少实现;没有添加推测性功能;**未触碰本切片「保留/不动」清单**;引用代码以现场为准(不照搬切片行号)。
|
|
22
22
|
|
|
23
23
|
## 边界
|
|
24
24
|
|
|
25
25
|
- 不预实现未来切片。
|
|
26
26
|
- 不使用内部实现细节作为主要断言。
|
|
27
27
|
- 不在 RED 状态下重构。
|
|
28
|
+
- 不触碰本切片「保留/不动」清单(冻结常量 / 共享依赖 / 邻近功能)。
|
|
28
29
|
|
|
29
30
|
## 完成准则
|
|
30
31
|
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
## 输入
|
|
4
4
|
|
|
5
5
|
- `prd.md`、`slices.md`、`diagnosis.md` 或用户明确任务
|
|
6
|
+
- 多阶段:本阶段对应切片的 **保留/不动**、**关键核实结论**、**验收切片** 与 §4 横切铁律(`slices.md`)
|
|
6
7
|
- 项目测试命令、现有测试样式和公共接口
|
|
7
|
-
- `03-tdd.md` 中的内置 TDD
|
|
8
|
+
- `03-tdd.md` 中的内置 TDD 指引(含「消费 slices 切片契约」)和同目录辅助文档
|
|
8
9
|
|
|
9
10
|
## 产物
|
|
10
11
|
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
4. 拆出第一个 tracing slice,避免水平切片。
|
|
19
20
|
5. 探索代码库时使用项目领域术语表,确保测试名称和接口词汇与项目语言一致,并尊重触及区域的 ADR。
|
|
20
21
|
6. 写任何代码前确认接口变更、优先测试的行为、deep module 机会、可测试接口设计和行为列表。
|
|
22
|
+
7. **承载切片契约**:把本阶段对应切片的 **保留/不动** 与 **关键核实结论** 记入计划作为实现约束;切片行号为近似、以现场代码为准(现场核对);存疑分支按 `../I-to-issues/issues-slices.md`「存疑时的提问协议」一次一问、带推荐、逐步锁定。
|
|
21
23
|
|
|
22
24
|
## 边界
|
|
23
25
|
|
|
@@ -27,5 +29,6 @@
|
|
|
27
29
|
## 完成准则
|
|
28
30
|
|
|
29
31
|
- 产物顶部「阶段标识」段已填写 `<phase-id>`(多阶段 slices 须与 `<phase>` 的 `id` 一致)
|
|
32
|
+
- 多阶段:已记录本切片 **保留/不动** 约束与 **现场核对** 结论
|
|
30
33
|
- `tdd-plan.md` 无残留 `[TODO:]`
|
|
31
34
|
- `.status.json` 的 `implementation_status` 为 `planned`
|
|
@@ -38,6 +38,18 @@ keywords: [issues, slices, vertical, AFK, HITL, 切片]
|
|
|
38
38
|
|
|
39
39
|
默认只生成本地切片计划。只有 tracker 已配置且用户明确要求时,才发布外部 issue;发布时按依赖顺序发布,以便被阻塞字段引用真实 issue 标识符。不要关闭或修改任何父级 issue。
|
|
40
40
|
|
|
41
|
+
### 切片计划质量准则
|
|
42
|
+
|
|
43
|
+
`slices.md` 不是清单,而是一份可被下游直接接手的**切片计划**。借鉴高质量 plan 的纪律:
|
|
44
|
+
|
|
45
|
+
- **Context 先行**:先写清*为什么*、**已确认决策**(范围拍板,防下游重新扯皮)与**关键核实结论**(探索得到的事实),再展开切片。
|
|
46
|
+
- **存疑即问**:方案有未决分支时,按本工作流「存疑时的提问协议」用 `AskUserQuestion` 一次一问、带推荐、逐步锁定,不臆测。
|
|
47
|
+
- **行号现场核对**:引用的行号/路径均为*近似*,实施时以现场代码为准;在计划内写明这一点,避免下游照搬过期行号。
|
|
48
|
+
- **保留/不动同等重要**:每个切片既写「改什么」,也写「**保留/不动什么**」——告诉执行者哪些不能碰。
|
|
49
|
+
- **验证分层**:删除型切片的验收须含残留扫描(grep 0 命中);change 级验证总览走真实运行的冒烟与(如涉及)迁移测试。
|
|
50
|
+
- **复用优先于新造**:能复用就不新建,在切片「复用」字段与 §1 REUSE 列显式记录。
|
|
51
|
+
- **重型小节按需**:风险登记、退役清单、架构上下文是条件段——复杂 change 铺开,单文件小改可省。
|
|
52
|
+
|
|
41
53
|
## 阶段
|
|
42
54
|
|
|
43
55
|
### 1. Slice Issues — 垂直切片分解
|
|
@@ -45,8 +57,10 @@ keywords: [issues, slices, vertical, AFK, HITL, 切片]
|
|
|
45
57
|
- 模板:`../_templates/issues-slices-template.md`
|
|
46
58
|
- 产物:`slices.md`
|
|
47
59
|
- 完成准则:
|
|
48
|
-
-
|
|
60
|
+
- §0 战略与背景含**已确认决策**与**关键核实结论**(独立进入时自采集,有上游则继承)
|
|
61
|
+
- 每个切片都有标题、类型、依赖、覆盖来源、验收切片;删除型切片标注**保留/不动**
|
|
49
62
|
- 已确认粒度、依赖和 HITL/AFK 标记
|
|
63
|
+
- §8 验证总览存在(静态 → 残留扫描 → 冒烟,按适用项)
|
|
50
64
|
- `slices.md` 无残留 `[TODO:]`
|
|
51
65
|
|
|
52
66
|
## 依赖
|
|
@@ -1,47 +1,54 @@
|
|
|
1
1
|
# Slice Issues Phase
|
|
2
2
|
|
|
3
|
-
> 本阶段将 PRD、计划或诊断结论拆为**可独立验证的垂直切片**(tracing bullet
|
|
4
|
-
> `slices.md`
|
|
5
|
-
>
|
|
3
|
+
> 本阶段将 PRD、计划或诊断结论拆为**可独立验证的垂直切片**(tracing bullet),产出一份可被下游直接接手的**切片计划** `slices.md`。
|
|
4
|
+
> `slices.md` 借鉴高质量 plan 的纪律——以厚 Context(已确认决策 + 关键核实结论)开篇,按依赖排序的切片展开,
|
|
5
|
+
> 每切片标注保留/不动,并以分层验证收口;同时保留 HITL/AFK 标记、用户确认与 issue 发布流程。
|
|
6
6
|
|
|
7
7
|
## 输入
|
|
8
8
|
|
|
9
9
|
- `prd.md`、`decision-log.md`、`diagnosis.md`、现有 issue 或用户计划
|
|
10
10
|
- 可选 issue tracker 配置和标签词汇表
|
|
11
|
-
- `I-to-issues.md`
|
|
12
|
-
- 同级 change 目录下已有的 `context-map.md`、`decision-log.md
|
|
11
|
+
- `I-to-issues.md` 中的内置切片指引与「切片计划质量准则」
|
|
12
|
+
- 同级 change 目录下已有的 `context-map.md`、`decision-log.md`、`prd-overview.md`(若存在,用于继承领域术语、已确认决策、风险与 ADR 引用)
|
|
13
13
|
|
|
14
14
|
## 产物
|
|
15
15
|
|
|
16
16
|
- `speculo/.speculo/dev/<change>/slices.md`,由 `../_templates/issues-slices-template.md` 填写
|
|
17
17
|
|
|
18
|
-
## `slices.md`
|
|
18
|
+
## `slices.md` 结构规范
|
|
19
19
|
|
|
20
|
-
`issues-slices-template.md` 提供模板骨架;AI
|
|
20
|
+
`issues-slices-template.md` 提供模板骨架;AI 填写时按下述结构展开。`[必填]` 段每份都要,`[条件]` 段有则填、单文件小改可省。
|
|
21
|
+
> 最小形态(单文件小改):§0(简) + §1 + §3(单切片) + §5 + §8。复杂 change:全段铺开。
|
|
21
22
|
|
|
22
|
-
### 0.
|
|
23
|
+
### 0. 战略与背景(Context)—— [必填]
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
本段是整份切片计划的决策锚点,含四块:
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
- **一句话战略**:单句概括「做什么 + 为什么 + 怎么做到(以现有系统为基底 / 新建 / 复用)」。
|
|
28
|
+
- **已确认决策**:逐条列出与用户拍板的范围/取舍决策,防止下游重新扯皮。**有 `decision-log.md` 则继承其「已确认决策」段;独立进入(无上游)时在此自采集**。
|
|
29
|
+
- **关键核实结论**:探索阶段确认的事实(依赖关系、唯一调用点、可删/须留边界等)。**必须显式写明「行号为近似、实施时以现场代码为准」**,避免下游照搬过期行号。
|
|
30
|
+
- **预期产出**:1–2 句描述本 change 完成后的可观察结果。
|
|
31
|
+
|
|
32
|
+
### 1. 范围边界(IN / REUSE / OUT)—— [必填]
|
|
27
33
|
|
|
28
34
|
三列表格,逐条列出:
|
|
29
35
|
- **IN** —— 本次必造的新能力(每项可对应后续一个或多个切片)
|
|
30
36
|
- **REUSE** —— 复用现有系统的能力(不改动,只收编进新地基)
|
|
31
|
-
- **OUT** ——
|
|
37
|
+
- **OUT** —— 本期不做、留给后续迭代的内容(吸收「明确不做」边界)
|
|
32
38
|
|
|
33
39
|
表格来源优先从 PRD 或用户指令提取;若来源未明确,用 `[待确认]` 标记并提请用户补充。
|
|
34
40
|
|
|
35
|
-
### 2.
|
|
41
|
+
### 2. 架构上下文 —— [条件]
|
|
36
42
|
|
|
37
43
|
若 change 涉及多模块或改动既有架构,本节记录:
|
|
38
|
-
- 涉及的 `core/` / `src/` / `src-tauri
|
|
44
|
+
- 涉及的 `core/` / `src/` / `src-tauri/`(或本项目对应分层)模块及其职责分工
|
|
39
45
|
- 新增模块的定位(一句话职责 + 落点目录)
|
|
40
46
|
- 不可逾越约束(来自 `AGENTS.md` 或 PRD 的硬性规则)
|
|
47
|
+
- 可选 ASCII 分层图,标出依赖方向(如 `src → core → src-tauri`)
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
单文件修复或热点 patch 可省略本节。
|
|
43
50
|
|
|
44
|
-
### 3. 切片(
|
|
51
|
+
### 3. 切片(slices)—— [必填]
|
|
45
52
|
|
|
46
53
|
每个切片是**一个从数据到 UI 的端到端闭环**(窄而完整)。切片按依赖顺序排列;每个切片包含:
|
|
47
54
|
|
|
@@ -53,24 +60,27 @@
|
|
|
53
60
|
- **阻塞于:** 切片 M(或「无」)
|
|
54
61
|
- **覆盖:** PRD 章节 / US 编号 / 用户故事简述
|
|
55
62
|
- **交付物:** 该切片产出的具体文件/模块/功能清单
|
|
63
|
+
- **保留/不动:** 本切片**不能碰**的代码/契约/数据(如冻结常量、共享依赖、邻近功能);无则写「无」
|
|
56
64
|
- **复用:** 复用哪些现有能力(模块/文件/命令)
|
|
57
|
-
- **验收切片:**
|
|
65
|
+
- **验收切片:** 一个可独立执行的验证命令或手动检查步骤,证明本切片完成;**删除型切片须含残留扫描**(如 `grep -rn "<符号>" <范围>` 应 0 命中)
|
|
58
66
|
- **对齐:** PRD FR-xxx 或 issue 引用
|
|
59
67
|
- **ADR 引用:** (可选)关联的工程层 ADR 编号
|
|
60
68
|
```
|
|
61
69
|
|
|
62
70
|
- `<phase id="...">` 是稳定的阶段标识(如 `phase0-node-base`、`phase1-templates`),供 `dev/03` TDD 工作流引用。单阶段 change 用 `phase0-<slug>`。
|
|
63
71
|
- `status` 枚举:`未开始`(切片创建时) → `已实现`(TDD finish 置入) → `已验证`(finalize 置入)。状态只前进不回退。
|
|
72
|
+
- 切片改动面较宽时,可在「交付物」下用 `| 文件 | 改动 |` 表逐文件列出(新增/修改/删除/**保留**),提升信息密度。
|
|
64
73
|
|
|
65
|
-
### 4.
|
|
74
|
+
### 4. 横切关注点与铁律(贯穿所有切片)—— [必填]
|
|
66
75
|
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
76
|
+
列出跨切片一致的规则、约束与不可违反的铁律,如:
|
|
77
|
+
- **数据安全铁律**:必须冻结的常量 / wire-format / 密文格式(改了即用户数据损坏)——显式列出,标「不动」。
|
|
78
|
+
- **契约先行**:磁盘契约先改 zod + fixtures 再改解析。
|
|
79
|
+
- **删缓存可重建**铁律。
|
|
80
|
+
- 范围隔离规则(不 import 旧子系统等)、命名消歧规则。
|
|
81
|
+
- **行号现场核对纪律**:本计划内所有行号为近似,实施时以现场代码为准。
|
|
72
82
|
|
|
73
|
-
### 5. 依赖顺序速查
|
|
83
|
+
### 5. 依赖顺序速查 —— [必填]
|
|
74
84
|
|
|
75
85
|
ASCII 依赖链,展示切片先后顺序:
|
|
76
86
|
|
|
@@ -81,17 +91,48 @@ P2 切片2 名称 依赖 P0+P1
|
|
|
81
91
|
...
|
|
82
92
|
```
|
|
83
93
|
|
|
84
|
-
|
|
94
|
+
### 6. 风险与回滚 —— [条件]
|
|
95
|
+
|
|
96
|
+
本期涉及删除、数据迁移、外部副作用或高耦合改动时填写;纯增量的单文件小改可省。逐条列出风险、触发条件、缓解与回滚手段(表格形式)。**有 `prd-overview.md` 的「风险与未知点」则继承并细化**。
|
|
97
|
+
|
|
98
|
+
### 7. 退役清单 —— [条件]
|
|
99
|
+
|
|
100
|
+
仅当本 change **删除既有能力**时填写:用「项 / 处置 / 验证」表逐条记录被删/被迁的内容及其去向,作为兜底核对。
|
|
101
|
+
|
|
102
|
+
### 8. 验证总览 —— [必填(轻)]
|
|
103
|
+
|
|
104
|
+
change 级验证 roll-up,补足每切片「验收切片」的整体闭环(按适用项填,不适用标「N/A」):
|
|
105
|
+
- **静态检查**:构建 / 类型 / lint。
|
|
106
|
+
- **测试**:单测 / 契约校验。
|
|
107
|
+
- **残留扫描**:对删除项 grep,应 0 命中。
|
|
108
|
+
- **E2E 冒烟**:真实运行应用走查关键路径。
|
|
109
|
+
- **迁移测试**:若涉及持久化 / 格式 / 键名迁移,预置旧数据验证向后兼容。
|
|
110
|
+
|
|
111
|
+
> **判据:** 每个切片的「验收切片」全部通过即该切片完成;§8 验证总览整体通过 = change 可进入 `dev/04` 收尾。
|
|
112
|
+
|
|
113
|
+
## 存疑时的提问协议(决策树)
|
|
114
|
+
|
|
115
|
+
切分切片或填 §0「已确认决策」时若有未决分支,**不要臆测**——用 `AskUserQuestion` 按决策树逐一锁定;本协议产出的共识即写入 §0:
|
|
116
|
+
|
|
117
|
+
1. **定位关键问题**:识别当前最影响方案正确性的那一个未决问题。
|
|
118
|
+
2. **先查后问**:若答案能用本地代码 / 文档 / 配置确认,先读相关材料;能定则不问。
|
|
119
|
+
3. **一次一问**:每次只问一个问题,不打包问题组。
|
|
120
|
+
4. **带推荐**:每个问题给出推荐答案并说明理由。
|
|
121
|
+
5. **回答后收敛**:用户回答后,更新 §0「已确认决策」与剩余分支。
|
|
122
|
+
6. **遍历至共识**:沿决策树继续,直到核心分支达成共识或用户叫停。
|
|
85
123
|
|
|
86
124
|
## 填写引导
|
|
87
125
|
|
|
88
|
-
1. 遵循 `I-to-issues.md`
|
|
89
|
-
2.
|
|
90
|
-
3.
|
|
91
|
-
4.
|
|
92
|
-
5.
|
|
93
|
-
6.
|
|
94
|
-
7.
|
|
126
|
+
1. 遵循 `I-to-issues.md` 的内置切片指引与「切片计划质量准则」,以及本文件的结构规范。
|
|
127
|
+
2. **写 Context(§0)**:提炼一句话战略;**采集或继承已确认决策**(有 `decision-log.md` 则继承)与**关键核实结论**(写明行号为近似、现场核对);点明预期产出。未决分支按「存疑时的提问协议」逐一锁定。
|
|
128
|
+
3. **采集范围**:从 PRD / decision-log / diagnosis / 用户指令中提取 IN/REUSE/OUT 三列、架构上下文和 ADR 引用;不确定的标记 `[待确认]`。
|
|
129
|
+
4. **切分垂直切片**:优先窄而完整、优先 AFK;每个切片必须有用户可独立验证的「验收切片」,并标注**保留/不动**;删除型切片在验收里配残留扫描。
|
|
130
|
+
5. **标注 phase id**:为每个切片生成稳定的 `<phase id="...">` 标识(kebab-case),供 TDD 阶段直接引用。
|
|
131
|
+
6. **填条件段**:涉及删除 / 迁移 / 外部副作用时补 §6 风险与回滚、§7 退役清单;多模块时补 §2 架构上下文。
|
|
132
|
+
7. **收口验证(§8)**:列出静态 / 测试 / 残留扫描 / E2E / 迁移的整体验证项。
|
|
133
|
+
8. 用编号列表向用户确认粒度、依赖、HITL/AFK 标记、phase id 和是否需要发布外部 issue。
|
|
134
|
+
9. 按依赖顺序记录切片;发布外部 issue 时也按依赖顺序发布。
|
|
135
|
+
10. 迭代直到用户批准分解;未批准前不发布外部 issue。
|
|
95
136
|
|
|
96
137
|
## 边界
|
|
97
138
|
|
|
@@ -99,10 +140,15 @@ P2 切片2 名称 依赖 P0+P1
|
|
|
99
140
|
- 不默认发布到外部 tracker。
|
|
100
141
|
- 不写实现代码。
|
|
101
142
|
- 不编造来源;PRD/ADR/issue 引用必须真实存在。
|
|
143
|
+
- 不照搬过期行号:所有行号为近似,实施期以现场代码为准。
|
|
102
144
|
|
|
103
145
|
## 完成准则
|
|
104
146
|
|
|
105
147
|
- `slices.md` 无残留 `[TODO:]`
|
|
106
|
-
-
|
|
148
|
+
- §0 战略与背景含已确认决策与关键核实结论(独立进入时自采集,有上游则继承)
|
|
149
|
+
- 存疑点已按「存疑时的提问协议」逐一与用户锁定,或显式标记 `[待确认]`
|
|
150
|
+
- 每个切片都有 `<phase id="...">` 标识、类型、依赖、覆盖来源、验收切片;删除型切片标注保留/不动且验收含残留扫描
|
|
107
151
|
- IN/REUSE/OUT 表格完整(无法确定时标 `[待确认]` 并已获用户补充)
|
|
152
|
+
- §8 验证总览存在(静态 / 残留扫描 / 冒烟按适用项填)
|
|
153
|
+
- 适用时已填条件段(§2 架构 / §6 风险 / §7 退役)
|
|
108
154
|
- `.status.json` 已记录 `slice_count`、`hitl_slice_count` 和 `issue_tracker_mode`
|
|
@@ -2,24 +2,29 @@
|
|
|
2
2
|
> **产物文件名:** `slices.md`
|
|
3
3
|
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
4
|
|
|
5
|
-
# Vertical Slices
|
|
5
|
+
# 切片计划(Vertical Slices)
|
|
6
6
|
|
|
7
|
-
>
|
|
7
|
+
> 本文件是一份可被下游直接接手的切片计划:以厚 Context(已确认决策 + 关键核实结论)开篇,
|
|
8
|
+
> 按依赖排序的切片展开,每切片标注保留/不动,并以分层验证收口。
|
|
8
9
|
> 每个切片有 `<phase id="...">` 标识,供 TDD 工作流直接引用。
|
|
10
|
+
> 标「条件段」的小节按需填写;单文件小改的最小形态为 §0(简) + §1 + §3(单切片) + §5 + §8。
|
|
9
11
|
|
|
10
|
-
## 0.
|
|
11
|
-
|
|
12
|
+
## 0. 战略与背景(Context)
|
|
13
|
+
|
|
14
|
+
- **一句话战略:** [TODO: 做什么 + 为什么 + 怎么做到(新建 / 复用 / 以现有系统为基底)。]
|
|
15
|
+
- **已确认决策:** [TODO: 逐条列出与用户拍板的范围/取舍决策;有 decision-log.md 则继承其「已确认决策」段。]
|
|
16
|
+
- **关键核实结论:** [TODO: 探索确认的事实(依赖 / 唯一调用点 / 可删须留边界)。注明:行号为近似,实施时以现场代码为准。]
|
|
17
|
+
- **预期产出:** [TODO: 1–2 句,本 change 完成后的可观察结果。]
|
|
12
18
|
|
|
13
19
|
## 1. 范围边界(IN / REUSE / OUT)
|
|
14
|
-
[TODO: 三列表格。]
|
|
15
20
|
| | 内容 |
|
|
16
21
|
|---|---|
|
|
17
22
|
| **IN 必造** | [TODO: 本次必造的新能力] |
|
|
18
23
|
| **REUSE 复用现有** | [TODO: 复用不改动的现有能力] |
|
|
19
|
-
| **OUT 本期不做** | [TODO: 留给后续迭代的内容] |
|
|
24
|
+
| **OUT 本期不做** | [TODO: 留给后续迭代的内容 / 明确不做] |
|
|
20
25
|
|
|
21
26
|
## 2. 架构上下文
|
|
22
|
-
[TODO:
|
|
27
|
+
[TODO: 条件段——涉及的模块与职责分工、新增模块定位、不可逾越约束;可附 ASCII 分层图与依赖方向。单文件修复可删除本节。]
|
|
23
28
|
|
|
24
29
|
## 3. 切片
|
|
25
30
|
|
|
@@ -29,9 +34,10 @@
|
|
|
29
34
|
- **类型:** AFK | HITL
|
|
30
35
|
- **阻塞于:** 无
|
|
31
36
|
- **覆盖:** [TODO: PRD 章节 / US 编号 / 用户故事]
|
|
32
|
-
- **交付物:** [TODO:
|
|
37
|
+
- **交付物:** [TODO: 具体文件/模块/功能;改动面宽时可用 | 文件 | 改动 | 表逐文件列出]
|
|
38
|
+
- **保留/不动:** [TODO: 本切片不能碰的代码/契约/数据;无则写「无」]
|
|
33
39
|
- **复用:** [TODO: 复用哪些现有能力]
|
|
34
|
-
- **验收切片:** [TODO:
|
|
40
|
+
- **验收切片:** [TODO: 可独立执行的验证命令或步骤;删除型须含残留扫描 grep 0 命中]
|
|
35
41
|
- **对齐:** [TODO: PRD FR-xxx 或 issue 引用]
|
|
36
42
|
- **ADR 引用:** [TODO: 关联的 ADR 编号,可选]
|
|
37
43
|
|
|
@@ -42,6 +48,7 @@
|
|
|
42
48
|
- **阻塞于:** 切片 1
|
|
43
49
|
- **覆盖:** [TODO]
|
|
44
50
|
- **交付物:** [TODO]
|
|
51
|
+
- **保留/不动:** [TODO]
|
|
45
52
|
- **复用:** [TODO]
|
|
46
53
|
- **验收切片:** [TODO]
|
|
47
54
|
- **对齐:** [TODO]
|
|
@@ -49,8 +56,8 @@
|
|
|
49
56
|
|
|
50
57
|
[TODO: 按需增加更多切片,每个有独立的 phase id]
|
|
51
58
|
|
|
52
|
-
## 4.
|
|
53
|
-
[TODO:
|
|
59
|
+
## 4. 横切关注点与铁律
|
|
60
|
+
[TODO: 跨切片一致的规则、约束与不可违反的铁律(数据安全冻结常量、契约先行、删缓存可重建、范围隔离、命名消歧);并声明「行号为近似,实施时现场核对」。]
|
|
54
61
|
|
|
55
62
|
## 5. 依赖顺序速查
|
|
56
63
|
```
|
|
@@ -60,6 +67,20 @@ P1 phase1-xxx 切片名称 依赖 P0
|
|
|
60
67
|
]
|
|
61
68
|
```
|
|
62
69
|
|
|
70
|
+
## 6. 风险与回滚
|
|
71
|
+
[TODO: 条件段——本期涉及删除/数据迁移/外部副作用/高耦合时填:风险 / 触发条件 / 缓解 / 回滚 表;有 prd-overview.md 风险则继承细化。纯增量小改可删除本节。]
|
|
72
|
+
|
|
73
|
+
## 7. 退役清单
|
|
74
|
+
[TODO: 条件段——仅当删除既有能力时填:项 / 处置 / 验证 表,逐条记录被删或被迁内容及其去向。无删除则删除本节。]
|
|
75
|
+
|
|
76
|
+
## 8. 验证总览
|
|
77
|
+
[TODO: change 级验证 roll-up,按适用项填、不适用标 N/A:
|
|
78
|
+
- 静态检查(构建 / 类型 / lint)
|
|
79
|
+
- 测试(单测 / 契约)
|
|
80
|
+
- 残留扫描(删除项 grep 应 0 命中)
|
|
81
|
+
- E2E 冒烟(真实运行走查关键路径)
|
|
82
|
+
- 迁移测试(涉及持久化 / 格式 / 键名迁移时预置旧数据验证)]
|
|
83
|
+
|
|
63
84
|
## 用户确认
|
|
64
85
|
[TODO: 记录用户对粒度、依赖、HITL/AFK 标记、phase id 和发布策略的确认。]
|
|
65
86
|
|
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
## 切片来源
|
|
11
11
|
[TODO: 记录来自 PRD、slices、diagnosis 还是用户直接请求。]
|
|
12
12
|
|
|
13
|
+
## 保留/不动(约束)
|
|
14
|
+
[TODO: 承接本切片「保留/不动」:实现中不能碰的代码/契约/数据(冻结常量、共享依赖、邻近功能);无则写「无」。]
|
|
15
|
+
|
|
16
|
+
## 现场核对(关键核实结论复核)
|
|
17
|
+
[TODO: 承接本切片「关键核实结论」,并以现场代码复核其依赖/调用点/边界;切片行号为近似,记录现场实际位置。]
|
|
18
|
+
|
|
13
19
|
## 公共接口
|
|
14
20
|
[TODO: 描述需要新增或修改的公共接口、命令、页面、API 或模块边界。]
|
|
15
21
|
|
|
@@ -21,3 +27,6 @@
|
|
|
21
27
|
|
|
22
28
|
## 验证命令
|
|
23
29
|
[TODO: 列出应运行的测试、类型检查、lint 或构建命令。]
|
|
30
|
+
|
|
31
|
+
## 验收切片(承接 slices)
|
|
32
|
+
[TODO: 承接本切片「验收切片」:Finish 阶段须运行的可独立验证命令/步骤;删除型切片含残留扫描(`grep` 应 0 命中)。]
|
|
@@ -10,11 +10,17 @@
|
|
|
10
10
|
## 已运行命令
|
|
11
11
|
[TODO: 列出实际运行的测试、类型检查、lint 或构建命令及结果。]
|
|
12
12
|
|
|
13
|
+
## 验收切片结果(含残留扫描)
|
|
14
|
+
[TODO: 承接 slices 本切片「验收切片」的运行结果;删除型切片记录残留扫描命令与命中数(应 0)。]
|
|
15
|
+
|
|
13
16
|
## 未运行命令
|
|
14
17
|
[TODO: 列出未运行但相关的命令,以及原因。]
|
|
15
18
|
|
|
16
19
|
## 调试残留检查
|
|
17
20
|
[TODO: 记录临时日志、DEBUG 标记、一次性脚本和推测性功能的清理结果。]
|
|
18
21
|
|
|
22
|
+
## 保留/不动核对
|
|
23
|
+
[TODO: 核对实现未触碰本切片「保留/不动」清单(冻结常量 / 共享依赖 / 邻近功能);逐项标 OK 或说明偏离。]
|
|
24
|
+
|
|
19
25
|
## 完成结论
|
|
20
26
|
[TODO: 说明 change 是否已完成、仍被阻塞或需要后续 review/handoff。]
|