@namewta/speculo 0.7.2 → 0.7.4
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/dist/src/migrations.js +755 -23
- package/dist/src/migrations.js.map +1 -1
- package/package.json +1 -1
- package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +200 -448
- package/template/canonical/canonical-specdev-goal-plan.md +744 -1108
- package/template/canonical/canonical-specdev-grill-with-docs.md +201 -449
- package/template/canonical/canonical-specdev-spec.md +232 -486
- package/template/canonical/canonical-specdev-tickets.md +411 -590
- package/template/canonical/canonical-specdev-wayfinder.md +199 -447
- package/template/skills/migrate-runtime-state/SKILL.md +6 -6
- package/template/skills/migrate-runtime-state/references/migration-contract.md +9 -3
- package/template/skills/migrate-runtime-state/scripts/migrate-runtime-state.mjs +404 -33
- package/template/workflows/specdev/I-implement/I-implement.md +98 -143
- package/template/workflows/specdev/I-implement/evidence-template.md +66 -48
- package/template/workflows/specdev/I-implement/execution-preflight.md +31 -21
- package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +12 -12
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +4 -5
- package/template/workflows/specdev/I-init-setup/change-status-template.json +14 -1
- package/template/workflows/specdev/I-init-setup/config-template.json +7 -6
- package/template/workflows/specdev/I-init-setup/status-template.json +1 -1
- package/template/workflows/specdev/INDEX.md +11 -8
- package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +76 -102
- package/template/workflows/specdev/P-goal-plan/completion-control.md +26 -44
- package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +46 -37
- package/template/workflows/specdev/P-goal-plan/lead-orchestration.md +34 -0
- package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +31 -46
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +67 -89
- package/template/workflows/specdev/P-prototype/ui-prototype.md +1 -1
- package/template/workflows/specdev/T-tickets/T-tickets.md +6 -3
- package/template/workflows/specdev/T-tickets/ticket-readiness.md +5 -3
- package/template/workflows/specdev/T-tickets/ticket-template.md +8 -1
- package/template/workflows/specdev/T-tickets/tickets-map-template.md +5 -4
- package/template/workflows/specdev/_state/status.json +1 -1
- package/template/workflows/specdev/common/README.md +2 -2
- package/template/workflows/specdev/common/rules/change-completion.md +17 -20
- package/template/workflows/specdev/common/rules/deviation-control.md +1 -1
- package/template/workflows/specdev/common/rules/evidence-and-verification.md +31 -37
- package/template/workflows/specdev/common/rules/path-ownership.md +21 -23
- package/template/workflows/specdev/common/rules/readiness-and-depth.md +1 -1
- package/template/workflows/specdev/common/schemas/change-status.schema.json +153 -363
- package/template/workflows/specdev/common/schemas/config.schema.json +17 -13
- package/template/workflows/specdev/common/schemas/goal-plan.schema.json +33 -16
- package/template/workflows/specdev/common/schemas/status.schema.json +7 -63
- package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +42 -21
- package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +36 -21
- package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +46 -18
- package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +34 -31
- package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +10 -23
- package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +15 -25
- package/template/workflows/specdev/common/tools/README.md +2 -1
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +591 -219
- package/template/workflows/specdev/I-implement/delegated-evidence-template.md +0 -12
- package/template/workflows/specdev/P-goal-plan/delegated-execution-template.md +0 -35
- package/template/workflows/specdev/P-goal-plan/delegated-execution.md +0 -59
- package/template/workflows/specdev/P-goal-plan/workspace-execution-template.md +0 -24
|
@@ -3,222 +3,177 @@ id: specdev/implement
|
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
5
|
name: 实现
|
|
6
|
-
description: 基于 Ready Ticket
|
|
7
|
-
keywords: [实现, TDD,
|
|
6
|
+
description: 基于 Ready Ticket 或获批小型 Spec 执行设计检查、TDD、动态派单、双轴审查、按 Goal Plan 选择的 current workspace 或 Ticket worktree 提交、直接父分支或候选合并验证和 Lead Evidence 回写。
|
|
7
|
+
keywords: [实现, TDD, Lead, subagent, worktree, current workspace, direct-parent, candidate-merge, 代码审查, 证据]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# 实现
|
|
11
11
|
|
|
12
|
-
本 work
|
|
12
|
+
本 work 保留模块设计检查、design-it-twice、TDD 红绿循环、双轴审查和证据治理。Ticket 模式按 Goal Plan 的 `ticket_workspace_policy` 选择 current workspace 串行直接父分支或独立 worktree candidate-merge;Lead 根据实际情况自行实现或动态派单。
|
|
13
13
|
|
|
14
14
|
## 执行模式
|
|
15
15
|
|
|
16
16
|
### Ticket 模式(默认)
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
读取 Ready Ticket、Tickets Map 和可选 Goal Plan。存在 Goal Plan 时使用其中的 Lead 与 workspace 策略;没有 Goal Plan 时,当前主会话作为该 Ticket 的 Lead,并按 Direct Spec 规则执行,不推断 worktree 策略。`required` 模式每个 Ticket 建立独立 worktree;`current` 模式所有 Ticket 严格串行,使用当前分支和当前 workspace。
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
- Tickets Map:`<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
|
|
22
|
-
- 可选 Goal Plan:`<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`
|
|
20
|
+
### Direct Spec 模式
|
|
23
21
|
|
|
24
|
-
Ticket
|
|
22
|
+
只有极小、局部、单一行为、低风险、可逆且无需 Ticket DAG 的工作,才可在用户批准后直接基于 Spec/ADR/CONTEXT 在 current workspace 执行。先确认目标、IN/OUT、唯一写入 owner、可写范围、关键不变量、验证和验收。出现公共 API/schema、迁移、安全、高风险、多个行为或并行需求时返回 T-tickets。
|
|
25
23
|
|
|
26
|
-
|
|
24
|
+
## 输入
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
两种模式都必须读取:
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- Spec:`<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
|
|
33
|
-
- 架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
34
|
-
- 领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
|
|
35
|
-
|
|
36
|
-
执行前必须从 Spec 明确提取并向用户确认一个轻量执行契约:目标、IN/OUT、可写范围、关键不变量、验证命令和验收条件。出现公共 API/schema、迁移、安全、高风险、多个独立行为或并行需求时,必须返回 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`,不得使用 Direct Spec 模式绕过治理。
|
|
28
|
+
- 当前 Spec:`<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
|
|
29
|
+
- 项目配置:`<Path>{roots.state}/specdev/config.json</Path>`
|
|
37
30
|
|
|
38
|
-
|
|
31
|
+
Ticket 模式还必须读取当前 Ticket `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>` 与 `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`;存在 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 时必须读取。Direct Spec 模式必须读取用户对轻量执行合同和直接实现的明确批准。
|
|
39
32
|
|
|
40
33
|
按存在情况读取:
|
|
41
34
|
|
|
42
|
-
- 当前
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
35
|
+
- 当前 change 架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
36
|
+
- 当前 change 领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
|
|
37
|
+
- 当前 change 设计日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
|
|
38
|
+
- 当前 change 诊断:`<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
|
|
46
39
|
- 永久架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
|
|
47
40
|
- 永久领域上下文:`<Path>{roots.state}/specdev/context/</Path>`
|
|
48
|
-
- 项目配置:`<Path>{roots.state}/specdev/config.json</Path>`
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
永久目录可以为空,静默继续。当前 ADR/CONTEXT 缺失且实施需要对应决定时,返回 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;Spec、Ticket 或 Goal Plan 与代码事实冲突时按 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>` 返回真正 owner,不在实现中覆盖。
|
|
51
43
|
|
|
52
|
-
|
|
44
|
+
Git 已处于 merge/rebase 冲突时,先加载 `<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`;不把冲突伪装成普通 TDD。
|
|
53
45
|
|
|
54
|
-
|
|
46
|
+
## 流程
|
|
55
47
|
|
|
56
|
-
### 1.
|
|
48
|
+
### 1. 执行前预检与 workspace
|
|
57
49
|
|
|
58
50
|
加载 `<Path>{roots.workflows}/specdev/I-implement/execution-preflight.md</Path>`。
|
|
59
51
|
|
|
60
|
-
Ticket
|
|
61
|
-
|
|
62
|
-
- `ready: true`;
|
|
63
|
-
- 状态允许开始;
|
|
64
|
-
- `blocked_by` 全部 done;
|
|
65
|
-
- Ticket 与 Spec/ADR/Goal Plan 无冲突;
|
|
66
|
-
- 可写、只读、共享路径明确且无并发冲突;
|
|
67
|
-
- Ticket 分配到 worktree 时,记录为 `active`,trigger、`base_sha`、父分支、owners、locator 和结束动作与计划一致;
|
|
68
|
-
- `lead-team` 时,派单块的 execution model、Lead、mutation role、checkpoint、workspace/session locator、路径合同、修正上限和授权矩阵与当前事实一致;`worker-write` 必须绑定独立 workspace;
|
|
69
|
-
- current workspace 只有一个项目和 SpecDev 状态写入 owner;read-only Agent 不产生 patch、commit 或状态写入;
|
|
70
|
-
- 验证命令和 Evidence 位置可用;
|
|
71
|
-
- 当前代码事实没有使核心契约失效。
|
|
52
|
+
Ticket 模式:
|
|
72
53
|
|
|
73
|
-
|
|
54
|
+
1. 验证 Ready、依赖 Evidence、Spec/ADR/Goal Plan、一致性、路径 owner 和验证接缝;
|
|
55
|
+
2. 确认 Goal Plan schema v6(若存在)、Lead、动态 implementation/integration 上限与授权;
|
|
56
|
+
3. `required` 模式以 `purpose=ticket, operation=create|restore` 调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`;`current` 模式读取当前 branch、HEAD、dirty 状态并确认没有其他 Ticket implementation writer;
|
|
57
|
+
4. Lead 把 Ticket 设为 `in_progress`;`required` 模式将 change worktree 记录设为 `active`,`current` 模式建立 current workspace 执行记录;
|
|
58
|
+
5. 当前代码使合同失效时停止并返回对应上游 owner。
|
|
74
59
|
|
|
75
|
-
|
|
76
|
-
- 单一行为、局部、低风险、可逆;
|
|
77
|
-
- 轻量执行契约完整;
|
|
78
|
-
- 不涉及 Deep 条件;
|
|
79
|
-
- 可写范围和验证明确。
|
|
60
|
+
Direct Spec 模式验证用户批准、轻量合同和 current workspace 唯一写入 owner;不创建虚假 Ticket/worktree 状态。
|
|
80
61
|
|
|
81
|
-
|
|
62
|
+
**完成标准**:按策略完成 workspace、基线、owners、权限与实际 Git 一致;current 模式只有一个 implementation writer 且 Ticket 串行可恢复。
|
|
82
63
|
|
|
83
|
-
### 2.
|
|
64
|
+
### 2. Lead 决定自行实现或动态派单
|
|
84
65
|
|
|
85
|
-
|
|
66
|
+
Ticket 模式下,Lead 根据 Ticket 独立性、路径冲突、上下文、风险和平台能力决定。派单时以 `operation=dispatch` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`。`current` 模式仍可派遣一个 implementation subagent 写当前 workspace,但必须等待其返回、Lead 验收并形成 commit 后才进入下一个 Ticket;`required` 模式 implementation subagent 绑定独立 Ticket worktree。Direct Spec 模式由 Lead 作为 current workspace 唯一写入 owner,不派遣 implementation subagent 写入。
|
|
86
67
|
|
|
87
|
-
|
|
68
|
+
- implementation subagent 同时取 Goal Plan/config/平台能力的共同上限;current 模式保持单 writer 串行安全不变量;Lead 不计入;
|
|
69
|
+
- review/research/test-observation agent 不设置 SpecDev 数字上限,但保持只读;
|
|
70
|
+
- implementation Packet 按策略绑定唯一 Ticket workspace 或 current workspace、checkpoint、路径、非 E2E 检查与 commit 返回;
|
|
71
|
+
- subagent 不写 SpecDev 工件、Evidence、父分支或 E2E 结果;
|
|
72
|
+
- Lead 自行实现时仍遵循相同 worktree、commit 与返回事实合同。
|
|
88
73
|
|
|
89
|
-
|
|
90
|
-
- 每个模块的接口、类型、不变量、顺序约束、错误和性能语义;
|
|
91
|
-
- 模块是否有足够深度,是否减少调用者认知;
|
|
92
|
-
- 接缝在哪里,是否有真实适配器或可替换实现;
|
|
93
|
-
- 依赖属于进程内、本地可替换、远程自有或真正外部依赖;
|
|
94
|
-
- 测试应在哪个稳定接缝观察行为;
|
|
95
|
-
- Ticket/Spec 已锁定的公共契约是否被保持。
|
|
74
|
+
**完成标准**:current 模式只有一个 implementation owner 写当前 workspace;required 模式只有一个 owner 写当前 Ticket worktree;Direct Spec 只有 Lead 写 current workspace;所有 SpecDev 写入仍由 Lead 拥有。
|
|
96
75
|
|
|
97
|
-
|
|
76
|
+
### 3. 设计检查
|
|
98
77
|
|
|
99
|
-
|
|
78
|
+
加载 `<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`,检查模块、接口、类型、不变量、顺序/错误/性能语义、接缝、适配器、依赖分类、测试观察点和既有公共合同。
|
|
100
79
|
|
|
101
|
-
|
|
80
|
+
存在多个不改变上层契约的局部设计时,可运行 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`。超出 Ticket 或改变产品/公共合同/数据/兼容/安全时,返回架构审查、Grill、Spec 或 Ticket owner。陌生外部依赖使用 research Skill。
|
|
102
81
|
|
|
103
|
-
|
|
82
|
+
**完成标准**:局部设计与上层契约一致,稳定接缝和依赖策略明确。
|
|
104
83
|
|
|
105
|
-
|
|
84
|
+
### 4. TDD 红→绿垂直循环
|
|
106
85
|
|
|
107
|
-
|
|
108
|
-
- `<Path>{roots.workflows}/specdev/I-implement/tdd-test-design.md</Path>`
|
|
109
|
-
- `<Path>{roots.workflows}/specdev/I-implement/tdd-mocking.md</Path>`
|
|
110
|
-
- `<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`
|
|
111
|
-
|
|
112
|
-
对每个验收行为或关键风险:
|
|
86
|
+
加载 `<Path>{roots.workflows}/specdev/I-implement/tdd-rules.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-test-design.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-mocking.md</Path>` 和 `<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`。对每个验收行为或关键风险:
|
|
113
87
|
|
|
114
88
|
1. 选择公共接口或稳定接缝;
|
|
115
|
-
2.
|
|
116
|
-
3.
|
|
117
|
-
4.
|
|
118
|
-
5.
|
|
119
|
-
6. 保存 red/green 证据并进入下一条窄垂直切片。
|
|
89
|
+
2. 编写因目标行为缺失而失败的测试/验证并确认失败原因;
|
|
90
|
+
3. 只写足以通过当前测试的实现;
|
|
91
|
+
4. 运行定向非 E2E 验证;
|
|
92
|
+
5. 保存 red/green 事实并进入下一条窄切片。
|
|
120
93
|
|
|
121
|
-
|
|
94
|
+
不得删除测试、放宽断言、吞错、永久跳过或只验证 Mock 调用次数来制造绿色。
|
|
122
95
|
|
|
123
|
-
|
|
96
|
+
新增或修改代码注释时,先判断信息能否由命名、类型或结构表达,并同步维护受行为变化影响的既有注释。
|
|
124
97
|
|
|
125
|
-
###
|
|
98
|
+
### 5. 实现检查、commit 与 Lead 接收
|
|
126
99
|
|
|
127
|
-
|
|
128
|
-
- 完成前运行 Ticket 验证矩阵,或 Direct Spec 模式的轻量验证契约;
|
|
129
|
-
- 按 `<Path>{roots.state}/specdev/config.json</Path>` 运行适用的类型检查、lint、测试和构建;
|
|
130
|
-
- current workspace 由其唯一写入 owner 运行适用 E2E;隔离 workspace 由 integration owner 在集成阶段运行;Lead Team 的 Worker 只记录场景与预期结果;
|
|
131
|
-
- 检查实际修改均在 `writable_paths` 或获批的 Direct Spec 可写范围内;
|
|
132
|
-
- shared path 只由 owner 修改;
|
|
133
|
-
- 越界前停止并提出 ownership change,不先改后报;
|
|
134
|
-
- 记录新失败、既有失败和环境失败的区别。
|
|
100
|
+
Ticket 模式的 implementation owner 按 Goal Plan 策略在当前 workspace 或来源 worktree:
|
|
135
101
|
|
|
136
|
-
|
|
102
|
+
- 运行 Ticket 要求的单元、组件、静态、类型、lint/build 等非 E2E 检查;
|
|
103
|
+
- 审计 writable/shared/read-only 路径和新/既有/环境失败;
|
|
104
|
+
- 在已授权时创建引用 Ticket ID 的实现 commit;current 模式 commit 直接落在父分支,required 模式落在 Ticket branch;
|
|
105
|
+
- 返回 commit、dirty 状态、实际路径、命令/结果、未运行项和恢复条件。
|
|
137
106
|
|
|
138
|
-
|
|
139
|
-
node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
|
|
140
|
-
--stage implement \
|
|
141
|
-
<Path>{roots.state}/specdev/changes/{change}</Path>
|
|
142
|
-
```
|
|
107
|
+
Ticket 模式中,Lead 以 `operation=accept` 调用 subagent-delivery,重读 Git 状态、branch tip、commit、diff 和命令事实。无改动时将 Ticket 改为 `cancelled` 并记录原因;不得 empty commit 或 Evidence-only Done。required 模式来源 worktree 不运行 E2E;current 模式适用 E2E 留给 Lead 的 direct-parent 验证。
|
|
143
108
|
|
|
144
|
-
|
|
109
|
+
Direct Spec 模式由 Lead 在 current workspace 运行轻量合同要求的定向非 E2E 检查,审计获批可写范围,并在获得 implementation commit 授权后创建引用 change 的非空 commit;无需改动时记录事实并取消直接实现,不创建 empty commit。记录实施前基线、最终 checkpoint、dirty 状态、实际路径、命令结果、未运行项和恢复条件。
|
|
145
110
|
|
|
146
|
-
|
|
111
|
+
**完成标准**:required 模式 Ticket worktree clean 且 `source_checkpoint` 精确等于 branch tip;current 模式 workspace clean 且 Ticket `result_sha` 精确等于父分支上的 implementation commit;或 Direct Spec 的 current workspace checkpoint、路径和轻量合同一致。
|
|
147
112
|
|
|
148
|
-
|
|
113
|
+
### 6. 双轴审查
|
|
149
114
|
|
|
150
|
-
-
|
|
151
|
-
- **规范轴**:对照 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`、Ticket 的 IN/OUT、实现契约、路径所有权、验证矩阵和 Goal Gate。
|
|
115
|
+
调用 `<Path>{roots.workflows}/specdev/common/skills/code-review/SKILL.md</Path>`。required Ticket 以 `base_sha` 与 `source_checkpoint` 为固定点;current Ticket 以 Ticket 实施前基线与 implementation commit 为固定点;Direct Spec 以实施前基线与 current workspace 最终 checkpoint 为固定点:
|
|
152
116
|
|
|
153
|
-
|
|
117
|
+
- 标准轴:正确性、模块设计、错误、安全、性能、并发、资源、测试与可维护性;
|
|
118
|
+
- 规范轴:Spec/Ticket IN/OUT、实现合同、路径所有权、验证矩阵与 Goal Gate。
|
|
154
119
|
|
|
155
|
-
|
|
120
|
+
标准轴同时复核 `<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`:公共 API 契约完整,内部注释只保留非显然的 Why、Invariant 和 Risk,且相关注释与当前行为一致。
|
|
156
121
|
|
|
157
|
-
|
|
122
|
+
两个轴隔离并按标准轴、规范轴顺序返回 Lead。局部 finding 在当前模式的实现 workspace 修正、创建新 checkpoint 并重跑;改变上层契约则登记 deviation。Ticket 进入 `review` 或 Direct Spec 进入最终验证前,两轴必须通过。
|
|
158
123
|
|
|
159
|
-
|
|
124
|
+
### 7. 最终集成与适用 E2E
|
|
160
125
|
|
|
161
|
-
|
|
162
|
-
<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>
|
|
163
|
-
```
|
|
126
|
+
`required` Ticket 模式中,Lead 以 `purpose=ticket, operation=finalize` 调用 dev-worktree:
|
|
164
127
|
|
|
165
|
-
|
|
128
|
+
1. 在最新父分支的 Lead-owned candidate checkout 组合 source commit;
|
|
129
|
+
2. 运行受影响集成/回归、项目父状态检查和 Ticket 标记 required 的 E2E;
|
|
130
|
+
3. candidate 失败时父分支不动,Ticket 回 `in_progress`/`blocked`;
|
|
131
|
+
4. 父 HEAD 漂移时废弃本轮 candidate,基于最新父分支重建并重跑;
|
|
132
|
+
5. 全部通过后父分支 fast-forward 到 candidate/result SHA;
|
|
133
|
+
6. 重读父 HEAD/tree 和 ancestor 关系后,才允许 Ticket Done。
|
|
166
134
|
|
|
167
|
-
|
|
168
|
-
<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>
|
|
169
|
-
```
|
|
135
|
+
E2E 是否需要由 Ticket/Goal Plan 的实际跨边界风险决定,不限于 UI;不适用必须记录原因。
|
|
170
136
|
|
|
171
|
-
|
|
137
|
+
`current` Ticket 模式跳过 source worktree、candidate merge 和 candidate checkout。Lead 在当前 workspace 运行 Ticket 要求的适用集成/回归与 E2E,记录运行环境、命令、退出码和摘要;E2E 不得派给其他 agent。失败时不声明完成,保留 Ticket commit、父 HEAD 和恢复条件。全部通过后重读父 HEAD/tree 并记录 `result_sha`。Direct Spec 模式同样跳过 source worktree、candidate merge 和父分支推进。
|
|
172
138
|
|
|
173
|
-
|
|
139
|
+
### 8. Evidence、状态与完成
|
|
174
140
|
|
|
175
|
-
Ticket
|
|
141
|
+
Lead 使用 `<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>` 写入 Ticket Evidence;Direct Spec 按该模板的 Direct Spec 适配说明写 `<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`。Ticket Evidence 按策略记录 implementation/source、适用 candidate/result SHA、派单/返回、两层验证、双轴审查、E2E disposition、路径审计、偏差和残余风险;Direct Spec Evidence 使用实施前基线与 current workspace 最终 checkpoint,不伪造 Ticket/worktree/candidate 字段。
|
|
176
142
|
|
|
177
|
-
|
|
143
|
+
Ticket 正常状态:`ready → in_progress → review → done`。`required` 的 `done` 要求 change worktree 已完成集成(`integrated` 或 `removed`)、父 HEAD=result SHA 且包含 source commit;`current` 的 `done` 要求 current workspace clean、direct-parent 验证通过且父 HEAD=result SHA。阻塞使用 `blocked`,契约偏差使用 `deviated`,无需改动使用 `cancelled`。Direct Spec 由当前 I-implement owner 按 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>` 关闭 change。
|
|
178
144
|
|
|
179
|
-
|
|
145
|
+
按存在和当前模式同步 Ticket、Tickets Map、Goal Plan、`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 和全局状态;Direct Spec 不创建缺失的 Ticket/Map/Goal Plan。最后一个计划内 Ticket 完成后,Goal Plan 的 Lead 按 change completion 关闭;无 Goal Plan 的当前 I owner 承担同一门禁。需要远程 reconcile 时返回 T-triage,否则进入 Archive。
|
|
180
146
|
|
|
181
|
-
|
|
182
|
-
- Tickets Map:`<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
|
|
183
|
-
- change 状态:`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`
|
|
184
|
-
- 全局状态:`<Path>{roots.state}/specdev/status.json</Path>`
|
|
147
|
+
运行:
|
|
185
148
|
|
|
186
|
-
|
|
149
|
+
```bash
|
|
150
|
+
node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
|
|
151
|
+
--stage implement \
|
|
152
|
+
--repo <project-root> \
|
|
153
|
+
<Path>{roots.state}/specdev/changes/{change}</Path>
|
|
154
|
+
```
|
|
187
155
|
|
|
188
|
-
|
|
189
|
-
2. 仅在 `<Path>{roots.state}/specdev/config.json</Path>` 和用户授权允许时提交;
|
|
190
|
-
3. 提交信息引用 Ticket ID 或 Direct Spec change;
|
|
191
|
-
4. Worktree 记录为 `review` 且 `terminal_action=integrate` 时,由 integration owner 自动加载 finalize 合同完成本地集成;其他 merge、push、PR、部署、发布或不可逆迁移不得自动执行;
|
|
192
|
-
5. 返回 Ticket ID 与状态、Evidence 完整路径、`workspace_ref`、source/result checkpoint、commit 或 PR 引用和适用 E2E 结果;Lead Team Worker 返回待 integration owner 执行的 E2E;
|
|
193
|
-
6. Direct Spec 模式返回 change、状态和 `<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`。
|
|
156
|
+
### 9. 返回
|
|
194
157
|
|
|
195
|
-
|
|
158
|
+
Ticket 模式返回 Ticket/change 状态、Evidence 完整路径、workspace locator、implementation/source、适用 candidate/result SHA、父分支、E2E disposition、未验证项和下一路由。Direct Spec 返回 change 状态、`<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`、current workspace、实施前/最终 checkpoint、适用 E2E 和下一路由。push、PR、remote merge、deploy、migration、生产动作及来源 branch/worktree cleanup 只在独立授权时执行。
|
|
196
159
|
|
|
197
160
|
## 完成标准
|
|
198
161
|
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
- 实际修改未超出授权路径;
|
|
206
|
-
- 无未批准 deviation;
|
|
207
|
-
- 状态已同步;
|
|
208
|
-
- 实现结果可通过 Evidence、状态和代码引用完整定位;
|
|
209
|
-
- 提交遵守用户授权。
|
|
162
|
+
- Ticket 模式按策略完成 current workspace/direct-parent 或 worktree/implementation commit/candidate gate;Direct Spec 的轻量合同、current workspace checkpoint、双轴审查和最终验证完整;
|
|
163
|
+
- current Ticket 的适用 E2E 由 Lead 在 current workspace 运行;required Ticket 的适用 E2E 由 Lead 在 parent-candidate 运行;Direct Spec 适用 E2E 由 Lead 在 current workspace 运行;
|
|
164
|
+
- Lead 独立核对并写全部 SpecDev 工件;
|
|
165
|
+
- current Ticket 父分支只推进到通过的 direct-parent 验证 commit;required Ticket 父分支只推进到通过的 candidate;两者 Ticket Done 都必须与实际 Git 一致;Direct Spec 的完成状态与 current workspace 最终 checkpoint 一致;
|
|
166
|
+
- 实际路径、验证、偏差和状态可由 Evidence 恢复;
|
|
167
|
+
- validator 无 error。
|
|
210
168
|
|
|
211
169
|
## 子文件引用
|
|
212
170
|
|
|
213
171
|
- 执行前预检:`<Path>{roots.workflows}/specdev/I-implement/execution-preflight.md</Path>`
|
|
214
|
-
-
|
|
172
|
+
- 代码库设计:`<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`
|
|
215
173
|
- Design It Twice:`<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`
|
|
216
|
-
- TDD
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
- 委派 Evidence 附录:`<Path>{roots.workflows}/specdev/I-implement/delegated-evidence-template.md</Path>`,仅 lead-team 时加载
|
|
223
|
-
- Agent 交付合同:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
|
|
224
|
-
- Merge/rebase 冲突:`<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`
|
|
174
|
+
- TDD:`<Path>{roots.workflows}/specdev/I-implement/tdd-rules.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-test-design.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-mocking.md</Path>`
|
|
175
|
+
- 代码注释:`<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`
|
|
176
|
+
- Evidence:`<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>`
|
|
177
|
+
- Agent 交付:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
|
|
178
|
+
- Worktree:`<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`
|
|
179
|
+
- 冲突处理:`<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`
|
|
@@ -1,90 +1,108 @@
|
|
|
1
1
|
# Evidence: <Ticket ID> — <Ticket title>
|
|
2
2
|
|
|
3
|
+
本模板按 Goal Plan 的 workspace/integration 策略记录实际验证环境;不适用的环境明确写 `not-applicable`,不伪造 source、candidate 或 result 链。Direct Spec 使用本模板时写入 `<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`,以实施前基线和最终 checkpoint 代替 Ticket 集成链。
|
|
4
|
+
|
|
3
5
|
- **Change:** `<change>`
|
|
4
6
|
- **Ticket:** `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`
|
|
5
7
|
- **Spec:** `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
|
|
6
|
-
- **Tickets Map:** `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
|
|
7
8
|
- **Goal Plan:** `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` / 不适用
|
|
8
|
-
-
|
|
9
|
-
- **
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- **状态:** review / done / blocked / deviated
|
|
9
|
+
- **Lead:** `<owner-or-session-locator>`
|
|
10
|
+
- **Workspace/branch:** `<workspace_ref>` / `<branch>`
|
|
11
|
+
- **Base/implementation-or-source/candidate/result SHA:** `<sha>` / `<sha>` / `<sha>` / `<sha>`
|
|
12
|
+
- **状态:** review / done / blocked / deviated / cancelled
|
|
13
13
|
|
|
14
14
|
## 1. 实现摘要
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
用可观察行为与已锁定合同说明实际完成内容。Cancelled 时说明为何无需实现及其权威来源。
|
|
17
|
+
|
|
18
|
+
## 2. Lead Dispatch And Candidate Return
|
|
19
|
+
|
|
20
|
+
- **Implementation owner:** Lead / `<agent/provider>`
|
|
21
|
+
- **Dispatch Packet/checkpoint:** Lead direct / `<locator + immutable checkpoint>`
|
|
22
|
+
- **允许动作:** worktree changes / implementation commit / ...
|
|
23
|
+
- **返回:** commit、dirty 状态、修改路径、非 E2E 命令、未验证项与恢复条件
|
|
24
|
+
- **Lead 独立核对:** pass / fail;实际读取与命令摘要
|
|
25
|
+
- **只读 Agent findings:** 无 / 固定输入、来源、结论、Lead 核对
|
|
26
|
+
|
|
27
|
+
subagent 不写本 Evidence;以上内容由 Lead 从实际 workspace、Git 和返回事实整理。
|
|
17
28
|
|
|
18
|
-
##
|
|
29
|
+
## 3. 修改范围与路径所有权
|
|
19
30
|
|
|
20
31
|
| 路径 | 所有权 | 改动目的 |
|
|
21
32
|
|---|---|---|
|
|
22
33
|
| `<Path>src/example.ts</Path>` | writable / shared:<owner> | ... |
|
|
23
34
|
|
|
24
|
-
|
|
35
|
+
- **read-only 修改:** 无
|
|
36
|
+
- **未声明路径:** 无
|
|
37
|
+
- **生成文件/锁文件:** 无 / 来源与 owner
|
|
38
|
+
|
|
39
|
+
## 4. 验收与合同映射
|
|
25
40
|
|
|
26
41
|
| Contract / Acceptance ID | 验证接缝 | 证据 | 结果 |
|
|
27
42
|
|---|---|---|---|
|
|
28
|
-
| AC-... | ... |
|
|
43
|
+
| AC-... | ... | 测试、日志或人工检查摘要 | pass / fail / not-run |
|
|
44
|
+
|
|
45
|
+
每个 Ticket 验收项恰好落到一行。
|
|
29
46
|
|
|
30
|
-
|
|
47
|
+
## 5. Workspace Verification
|
|
31
48
|
|
|
32
|
-
|
|
49
|
+
按 Goal Plan 记录 current workspace 或 source worktree 检查,并注明运行环境。
|
|
33
50
|
|
|
34
|
-
| 命令或步骤 | 运行环境 | 结果 |
|
|
51
|
+
| 命令或步骤 | 运行环境 | 结果 | 摘要 |
|
|
35
52
|
|---|---|---|---|
|
|
36
|
-
| ... |
|
|
53
|
+
| ... | current-workspace | pass / fail / not-run | ... |
|
|
37
54
|
|
|
38
55
|
- **失败后修复与重跑:** 无 / ...
|
|
39
|
-
- **未运行检查:** 无 / 原因与风险
|
|
40
|
-
- **E2E:**
|
|
41
|
-
- **反向验证:** 不适用 / 受控失败信号与恢复结果
|
|
42
|
-
- **外部声明:** 无 / 已核对 / `unverified`:原因
|
|
56
|
+
- **未运行检查:** 无 / 原因与风险
|
|
57
|
+
- **E2E:** 按 Goal Plan 的 E2E disposition 记录;未在本环境运行时说明 owner 与原因
|
|
43
58
|
|
|
44
|
-
##
|
|
59
|
+
## 6. 双轴审查
|
|
60
|
+
|
|
61
|
+
标准轴与规范轴保持独立,分别记录固定输入、结果和修正。
|
|
45
62
|
|
|
46
63
|
### 标准轴
|
|
47
64
|
|
|
65
|
+
- **固定输入:** `<base_sha>..<source_checkpoint>`
|
|
48
66
|
- **结果:** pass / request-changes
|
|
49
|
-
-
|
|
50
|
-
- **Findings:** 无 / ...
|
|
51
|
-
- **修正与重跑:** 不适用 / ...
|
|
67
|
+
- **Findings 与修正:** 无 / ...
|
|
52
68
|
|
|
53
69
|
### 规范轴
|
|
54
70
|
|
|
71
|
+
- **固定输入与来源:** Spec / Ticket / Goal Plan / source
|
|
55
72
|
- **结果:** pass / request-changes / skipped:no-spec
|
|
56
|
-
-
|
|
57
|
-
- **Findings:** 无 / ...
|
|
58
|
-
- **修正与重跑:** 不适用 / ...
|
|
59
|
-
|
|
60
|
-
两轴保持独立顺序,不合并或跨轴重排 finding。
|
|
73
|
+
- **Findings 与修正:** 无 / ...
|
|
61
74
|
|
|
62
|
-
|
|
75
|
+
两个轴隔离并按上述顺序记录。
|
|
63
76
|
|
|
64
|
-
|
|
65
|
-
- **shared 修改与 owner 批准:** 无 / ...
|
|
66
|
-
- **read-only 修改:** 无
|
|
67
|
-
- **未声明路径:** 无
|
|
68
|
-
- **生成文件或锁文件:** 无 / 来源与 owner ...
|
|
77
|
+
## 7. Integration Verification
|
|
69
78
|
|
|
70
|
-
|
|
79
|
+
按 Goal Plan 记录 direct-parent 或 parent-candidate 集成;未采用的字段写 `null` 或 `not-applicable`。
|
|
71
80
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
| 项目 | 结果 |
|
|
82
|
+
|---|---|
|
|
83
|
+
| Parent before SHA | `<sha>` |
|
|
84
|
+
| Implementation/source SHA | `<sha>` / `<sha>` |
|
|
85
|
+
| Candidate branch/workspace | current / `<branch>` / `not-applicable` |
|
|
86
|
+
| Method/conflicts | direct-parent / fast-forward / merge-commit;无 / paths |
|
|
87
|
+
| Integration checks | 命令、运行环境 `current-workspace`、结果 |
|
|
88
|
+
| E2E disposition | required / not-required: reason |
|
|
89
|
+
| E2E result | pending / passed / failed / not-required;场景与证据 |
|
|
90
|
+
| Parent result/re-read | `<sha>`;HEAD/tree/ancestor 核对 |
|
|
76
91
|
|
|
77
|
-
|
|
92
|
+
集成失败时明确父 HEAD 是否推进、失败命令、旧 SHA 和恢复条件。
|
|
78
93
|
|
|
79
|
-
## 8.
|
|
94
|
+
## 8. 偏差与决策
|
|
80
95
|
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
- **监控或回滚触发条件:** 不适用 / ...
|
|
96
|
+
- **偏差:** 无 / `<deviation-id>`
|
|
97
|
+
- **记录:** `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>` / 不适用
|
|
98
|
+
- **批准来源及影响:** ...
|
|
85
99
|
|
|
86
|
-
## 9.
|
|
100
|
+
## 9. 残余风险与交付定位
|
|
87
101
|
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
102
|
+
- **残余风险/已知限制:** 无 / ...
|
|
103
|
+
- **后续 Ticket:** 无 / `<ticket-id>`
|
|
104
|
+
- **监控或回滚触发:** 不适用 / ...
|
|
105
|
+
- **Source commit:** `<sha>`
|
|
106
|
+
- **Parent result:** `<sha>`
|
|
107
|
+
- **Source workspace:** `<workspace_ref>`
|
|
108
|
+
- **Evidence:** `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`
|
|
@@ -1,28 +1,38 @@
|
|
|
1
1
|
# Execution Preflight
|
|
2
2
|
|
|
3
|
-
## 硬检查
|
|
3
|
+
## Ticket 硬检查
|
|
4
4
|
|
|
5
5
|
- [ ] Ticket frontmatter 可解析,`ready: true`,`status: ready`。
|
|
6
|
-
- [ ] 所有 blocked_by Ticket 为 done
|
|
7
|
-
- [ ] Spec、ADR、Ticket
|
|
8
|
-
- [ ]
|
|
9
|
-
- [ ]
|
|
10
|
-
- [ ]
|
|
11
|
-
- [ ]
|
|
12
|
-
- [ ]
|
|
13
|
-
- [ ]
|
|
14
|
-
- [ ]
|
|
15
|
-
- [ ]
|
|
16
|
-
- [ ]
|
|
17
|
-
|
|
6
|
+
- [ ] 所有 `blocked_by` Ticket 为 done 且 Evidence 存在。
|
|
7
|
+
- [ ] Spec、ADR、Ticket 与 Goal Plan 无冲突;旧 Goal Plan schema 必须重跑 P-goal-plan。
|
|
8
|
+
- [ ] Goal Plan(若存在)为 `lead-directed`,workspace/integration 策略为 `current/direct-parent` 或 `required/candidate-merge`,Lead 可恢复,implementation/integration 上限不超过 config 与平台能力。
|
|
9
|
+
- [ ] 当前代码入口、接口、路径和父分支仍与 Ticket 假设一致。
|
|
10
|
+
- [ ] writable/shared paths 有唯一 owner;current 模式的 Ticket 顺序已固定且没有其他 active implementation writer。
|
|
11
|
+
- [ ] implementation commit 与当前策略对应的 direct-parent 或 local candidate integration/父分支更新已授权;push/PR/remote/deploy 等保持独立。
|
|
12
|
+
- [ ] required 模式的 dev-worktree 记录 schema v6,`base_sha`、父分支、owners、branch、`workspace_ref`、integration 与 E2E disposition 完整;current 模式的 current workspace 记录使用 `workspace_ref: current`、`branch: parent_branch` 和 direct-parent integration。
|
|
13
|
+
- [ ] implementation subagent 若被派遣,Packet 绑定唯一 Ticket workspace 或 current workspace/checkpoint;subagent 不写 SpecDev 状态。
|
|
14
|
+
- [ ] current 模式 source 检查在 current workspace 且不宣称 E2E;required 模式 source 检查明确为非 E2E,required E2E 有 parent-candidate 场景与预期。
|
|
15
|
+
- [ ] 验证命令/环境可用,关键静默失败风险有受控反向验证。
|
|
16
|
+
- [ ] Deep Ticket 批准点已满足。
|
|
17
|
+
|
|
18
|
+
## Direct Spec 硬检查
|
|
19
|
+
|
|
20
|
+
- [ ] 用户明确批准 Direct Spec;单一行为、局部、低风险、可逆且无需并行/Ticket DAG。
|
|
21
|
+
- [ ] current workspace 只有一个项目与 SpecDev 写入 owner。
|
|
22
|
+
- [ ] 目标、IN/OUT、可写范围、不变量、验证与验收完整。
|
|
23
|
+
- [ ] 实施前 Git checkpoint、dirty 状态和现有用户改动已记录,不覆盖无关改动。
|
|
24
|
+
- [ ] 非 E2E、适用回归与 E2E 验证环境可执行;E2E owner 固定为 Lead。
|
|
25
|
+
- [ ] implementation commit 授权状态明确;未授权时不提交,并在轻量合同与 Evidence 中记录交付状态。
|
|
18
26
|
|
|
19
27
|
## 失效分类
|
|
20
28
|
|
|
21
|
-
- **stale-navigation
|
|
22
|
-
- **local-implementation
|
|
23
|
-
- **ticket-invalid
|
|
24
|
-
- **spec-invalid
|
|
25
|
-
- **
|
|
26
|
-
- **
|
|
27
|
-
- **workspace-
|
|
28
|
-
- **delivery-unverified
|
|
29
|
+
- **stale-navigation**:导航过时但契约仍有效;更新导航继续。
|
|
30
|
+
- **local-implementation**:局部实现调整不改变契约;记录后继续。
|
|
31
|
+
- **ticket-invalid**:范围、接口、依赖、验证或路径合同失效;停止并修 Ticket。
|
|
32
|
+
- **spec-invalid / adr-conflict**:返回对应上游 owner。
|
|
33
|
+
- **checkpoint-drift**:current/来源/父分支/派单 checkpoint 漂移;由 Lead 重建执行记录或 required 模式的 worktree/candidate。
|
|
34
|
+
- **workspace-contract-invalid**:缺少父分支、owner、locator、implementation/source/适用 result 字段或授权;停止并修状态/计划。
|
|
35
|
+
- **workspace-strategy-invalid**:Goal Plan 的 workspace/integration 组合非法,或 current 模式出现并发 implementation writer;停止并修状态/计划。
|
|
36
|
+
- **delivery-unverified**:候选、provider 声明或附件不能独立核对;保持 unverified。
|
|
37
|
+
- **e2e-owner-invalid**:required 模式 E2E 被安排在 source worktree,或任一模式不是 Lead owner;停止并修 Ticket/Goal Plan。
|
|
38
|
+
- **direct-parent-invalid**:current 模式的 Ticket commit、父 HEAD、验证或 Evidence 不一致;保留最后可信 commit 并阻塞当前 Ticket。
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
# Merge / Rebase Conflict Protocol
|
|
2
2
|
|
|
3
|
-
只在 `git status` 证明仓库正处于 merge
|
|
3
|
+
只在 `git status` 证明仓库正处于 merge/rebase 冲突时加载。
|
|
4
4
|
|
|
5
5
|
## 流程
|
|
6
6
|
|
|
7
|
-
1. 读取 Git
|
|
8
|
-
2.
|
|
9
|
-
3.
|
|
10
|
-
4.
|
|
11
|
-
5.
|
|
12
|
-
6.
|
|
13
|
-
7. 重读 Git 状态、parents
|
|
7
|
+
1. 读取 Git 状态、操作类型、冲突路径、base/ours/theirs SHA、Ticket/Evidence 与匹配的 candidate integration 记录。
|
|
8
|
+
2. 从 commit、source、Spec、Ticket、ADR、测试和调用者追溯双方意图;信息不足时不猜产品行为。
|
|
9
|
+
3. 对每个 hunk 写出双方意图、共同约束和唯一可推导结果;需要新行为或上层决定时停止并登记 deviation。
|
|
10
|
+
4. 在授权路径内解决文本,运行受影响的非 E2E 检查;candidate checkout 中按 finalize 合同运行父状态检查/E2E。
|
|
11
|
+
5. 匹配的 local candidate integration 授权包含 `git add`、candidate merge commit、必要的 `git merge --abort` 和 transient candidate checkout/branch 生命周期;不扩展到来源 branch/worktree cleanup 或远端动作。
|
|
12
|
+
6. 需要改变 Spec/ADR、安全/迁移决定、越过 owner 或无法同时保持既有意图时,在 Lead-created candidate 中执行 `git merge --abort`,记录 blocker 并保留来源 worktree;未知普通冲突现场不擅自 abort。
|
|
13
|
+
7. 重读 Git 状态、parents 与 diff,确认无 marker、无未声明路径、双方合同及验证仍成立。
|
|
14
14
|
|
|
15
15
|
## 完成标准
|
|
16
16
|
|
|
17
|
-
- 每个 hunk
|
|
17
|
+
- 每个 hunk 可追溯到既有意图;
|
|
18
18
|
- 新产品决定没有藏在冲突解决中;
|
|
19
|
-
-
|
|
20
|
-
- Git
|
|
21
|
-
-
|
|
19
|
+
- 验证记录命令、运行环境、退出码和摘要;
|
|
20
|
+
- Git 副作用来自明确的 candidate integration 或其他逐动作授权;
|
|
21
|
+
- 完成/暂停可以从 Git、change status 和 Evidence 恢复。
|