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