@namewta/speculo 0.7.2 → 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/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 -455
- package/template/canonical/canonical-specdev-goal-plan.md +686 -1117
- package/template/canonical/canonical-specdev-grill-with-docs.md +172 -456
- package/template/canonical/canonical-specdev-spec.md +199 -493
- package/template/canonical/canonical-specdev-tickets.md +378 -597
- package/template/canonical/canonical-specdev-wayfinder.md +170 -454
- 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/workflows/specdev/I-implement/I-implement.md +97 -143
- package/template/workflows/specdev/I-implement/evidence-template.md +60 -48
- package/template/workflows/specdev/I-implement/execution-preflight.md +29 -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 +3 -5
- 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 +40 -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 +42 -76
- 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 +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 -373
- package/template/workflows/specdev/common/schemas/config.schema.json +9 -11
- package/template/workflows/specdev/common/schemas/goal-plan.schema.json +24 -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/validate-specdev.mjs +386 -209
- 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
|
@@ -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
|
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema_version":
|
|
2
|
+
"schema_version": 5,
|
|
3
3
|
"artifact": "change-status",
|
|
4
4
|
"change": "<YYYY-MM-DD-topic>",
|
|
5
5
|
"change_status": "active",
|
|
6
6
|
"current_work": null,
|
|
7
|
+
"works_run": [],
|
|
8
|
+
"claimed_investigations": [],
|
|
9
|
+
"execution_authorization": {
|
|
10
|
+
"implementation_commit": {"status": "not-authorized", "source": null, "granted_at": null, "scope": "Ticket source commits"},
|
|
11
|
+
"local_candidate_integration": {"status": "not-authorized", "source": null, "granted_at": null, "scope": "Lead-owned local parent candidate integration and parent update"},
|
|
12
|
+
"source_cleanup": {"status": "not-authorized", "source": null, "granted_at": null, "scope": "Source worktree and branch cleanup"}
|
|
13
|
+
},
|
|
14
|
+
"leadership": {
|
|
15
|
+
"current": "<owner-or-session-locator>",
|
|
16
|
+
"epoch": 1,
|
|
17
|
+
"assigned_at": "<ISO-8601>",
|
|
18
|
+
"history": []
|
|
19
|
+
},
|
|
7
20
|
"created_at": "<ISO-8601>",
|
|
8
21
|
"updated_at": "<ISO-8601>",
|
|
9
22
|
"completed_at": null,
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema_version":
|
|
2
|
+
"schema_version": 4,
|
|
3
3
|
"interaction_language": "zh-CN",
|
|
4
4
|
"artifact_language": "zh-CN",
|
|
5
5
|
"git": {
|
|
6
|
-
"
|
|
7
|
-
"default_branch": null,
|
|
8
|
-
"worktree_for_parallel": true
|
|
6
|
+
"default_branch": null
|
|
9
7
|
},
|
|
10
8
|
"execution": {
|
|
11
|
-
"
|
|
9
|
+
"max_implementation_agents": 3,
|
|
12
10
|
"deep_ticket_human_approval": true,
|
|
13
11
|
"shared_path_owner": "explicit"
|
|
14
12
|
},
|
|
@@ -70,7 +70,7 @@ Archive 归档历史并将经验证知识提升为当前长期知识
|
|
|
70
70
|
- 活跃 change:`<Path>{roots.state}/specdev/changes/</Path>`
|
|
71
71
|
- 历史归档:`<Path>{roots.state}/specdev/archive/</Path>`
|
|
72
72
|
|
|
73
|
-
刷新时 CLI 在 `<Path>{roots.state}/back/</Path>` 保留最近一次旧配置与完整 runtime state,并对 v0.7+ 状态执行兼容迁移。若 `<Path>{roots.state}/migration.json</Path>` 存在且为 pending,所有 SpecDev Works 必须在读取 workflow state 前停止;只有 `<Path>{roots.commands}/migrate-runtime-state.md</Path>`
|
|
73
|
+
刷新时 CLI 在 `<Path>{roots.state}/back/</Path>` 保留最近一次旧配置与完整 runtime state,并对 v0.7+ 状态执行兼容迁移。若 `<Path>{roots.state}/migration.json</Path>` 存在且为 pending,所有 SpecDev Works 必须在读取 workflow state 前停止;只有 `<Path>{roots.commands}/migrate-runtime-state.md</Path>` 可以读取备份并在用户确认后修复。`<Path>{roots.state}/back/</Path>`、`<Path>{roots.state}/install.json</Path>` 与 `<Path>{roots.state}/migration.json</Path>` 均不属于 SpecDev 写入 namespace。
|
|
74
74
|
|
|
75
75
|
初始化设置 work 首次运行时生成配置并创建空的永久 namespace:
|
|
76
76
|
|
|
@@ -122,7 +122,8 @@ Archive 归档历史并将经验证知识提升为当前长期知识
|
|
|
122
122
|
10. **恢复依赖权威工件**:跨 Work 或 Agent 边界时同步 active change 的 `current_work`,成功完成后去重更新 `works_run`,返回下一 Work 和权威工件的完整路径。
|
|
123
123
|
11. **本地执行权威**:远程 Issue/PR/URL 只作为来源或完成投影;Spec、Ticket、Map、Goal Plan、Evidence 和状态始终以本地工件为准。
|
|
124
124
|
12. **完成与归档分离**:本地完成按 change completion 合同决定;远程 close 失败不回滚完成,但必须 reconcile 或 waive 后才归档。
|
|
125
|
-
13.
|
|
125
|
+
13. **Lead 与隔离正交**:Lead 固定拥有 SpecDev 状态、Evidence 与父分支;是否派遣 subagent 由 Lead 动态决定。每个实现 Ticket 都使用独立 worktree,Agent 身份不决定是否隔离。
|
|
126
|
+
14. **候选先验收**:source worktree 只产生实现 commit 与非 E2E 证据;Lead 在 parent-candidate 状态运行集成检查和适用 E2E,通过后才推进父分支。
|
|
126
127
|
|
|
127
128
|
共享规则:
|
|
128
129
|
|
|
@@ -146,11 +147,11 @@ Archive 归档历史并将经验证知识提升为当前长期知识
|
|
|
146
147
|
6. 只加载当前步骤需要的 work 子文件和共享规则。
|
|
147
148
|
7. 完成后写入产物、运行适用校验、更新状态和 `works_run`。
|
|
148
149
|
|
|
149
|
-
Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path
|
|
150
|
+
Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>`:有 Goal Plan 时由其中唯一 Lead 拥有转换;无 Goal Plan 的 Ticket/Direct Spec 由当前 I owner 拥有;非实现型终点由最终验收工件 owner 拥有。Archive 不补造 completed。
|
|
150
151
|
|
|
151
152
|
## 状态字段
|
|
152
153
|
|
|
153
|
-
`<Path>{roots.state}/specdev/status.json</Path>` 使用全局 schema v4;Spec
|
|
154
|
+
`<Path>{roots.state}/specdev/status.json</Path>` 使用全局 schema v4;Spec/Ticket/Tickets Map 继续使用各自 schema v3,config、Goal Plan 和 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 使用 schema v4:
|
|
154
155
|
|
|
155
156
|
- `schema_version`(数字):全局状态 schema 版本,固定为 `4`。
|
|
156
157
|
- `workflow`(字符串):workflow 标识,固定为 `"specdev"`。
|
|
@@ -163,7 +164,9 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
|
|
|
163
164
|
|
|
164
165
|
`active[].change` 必须唯一,且不得同时出现在 `archived`。开始 Work 时设置 `current_work`;暂停或可恢复阻塞时保留;成功完成时加入 `works_run` 并清空;取消时清空但不加入。逐次时间、结果和审计证据由 change 自有状态、Work 主产物、Evidence 或 LOG 承载,不写入全局索引。
|
|
165
166
|
|
|
166
|
-
`<Path>{roots.state}/specdev/
|
|
167
|
+
`<Path>{roots.state}/specdev/config.json</Path>` 的 `execution.max_implementation_agents` 为 `1..3`,默认 `3`,仅限制 implementation subagent 且不含 Lead;只读 review/research/test-observation agent 不设 SpecDev 数字上限。
|
|
168
|
+
|
|
169
|
+
`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `worktrees` 保存 Ticket 级 `base_sha`、父分支、workspace/implementation/integration owner、portable source workspace、source checkpoint、parent-candidate branch/workspace、candidate/result SHA、验证、E2E disposition 与生命周期状态。每个实现 Ticket 都有一条记录;父分支只有在 candidate passed 后推进。`removed` 是 `integrated` 后来源 branch/worktree 完成清理的终态,必须保留全部集成与 E2E 证据。
|
|
167
170
|
|
|
168
171
|
领域状态枚举:
|
|
169
172
|
|
|
@@ -183,7 +186,7 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
|
|
|
183
186
|
|
|
184
187
|
## 副作用边界
|
|
185
188
|
|
|
186
|
-
|
|
189
|
+
未经用户明确授权不得提交、推送、合并、删除来源 branch/worktree、部署、发布、移动归档、写入/关闭远程 Issue 或执行不可逆迁移。Ready Goal Plan/Ticket 执行必须明确取得 implementation commit 与 local candidate integration/父分支更新授权;该授权包含 transient candidate checkout/branch 生命周期,不扩展到来源 cleanup、远端或生产动作。只读探索、change 工件生成和已授权验证可以进行。远程开发投影仅由 Triage reconcile 执行;Retro command 的 Speculo 反馈 Issue 是独立 command 边界。敏感值不得写入 `<Path>{roots.state}/specdev/</Path>`。
|
|
187
190
|
|
|
188
191
|
## 场景路由
|
|
189
192
|
|
|
@@ -213,9 +216,9 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
|
|
|
213
216
|
- **D-diagnose-bugs** — 诊断 Bug:先建立会在精确症状上变红的紧凑反馈回路,再通过最小化、排名假设和单变量探针确认根因,输出修复契约而不实施生产修复。
|
|
214
217
|
- **E-engineering-cognitive-mentor** — 工程认知导师:面向 Bug、项目源码、需求技术方案、架构设计与陌生技术领域的非执行型认知指导 Work;以证据、因果 Why、候选方案对比和逐轮澄清帮助用户形成可复述理解,并将完整问答轨迹持续持久化到当前 change。
|
|
215
218
|
- **G-grill-with-docs** — 设计访谈(带文档):以完整 frontier 逐轮推进设计树,直到每个决策分支都已关闭并获得用户共识,同时持续维护当前 change 的设计树、日志、领域上下文和架构决策。
|
|
216
|
-
- **I-implement** — 实现:基于 Ready Ticket
|
|
219
|
+
- **I-implement** — 实现:基于 Ready Ticket 或获批小型 Spec 执行设计检查、TDD、动态派单、双轴审查、Ticket worktree commit、候选合并验证和 Lead Evidence 回写。
|
|
217
220
|
- **I-init-setup** — 初始化设置:初始化 SpecDev 的语言、配置、全局状态、本地 change 追踪、领域知识布局、验证命令和并发治理。
|
|
218
|
-
- **P-goal-plan** —
|
|
221
|
+
- **P-goal-plan** — 目标规划:在跨 Ticket 协调复杂度需要时,以固定 Lead、动态派单、DAG/Gate 和候选合并门禁生成决策完备且可恢复的执行计划。
|
|
219
222
|
- **P-prototype** — 原型:在获授权的临时 branch/worktree 中构建一次性 Logic 或 UI 原型,回答一个明确设计问题并持久化答案、资产定位和清理状态。
|
|
220
223
|
- **R-review-architecture** — 架构审查:从用户指定范围或 Git 热点扫描代码库的深化机会,以持久化可视化 HTML 呈现候选,并对用户选择的一个方案运行设计树访谈。
|
|
221
224
|
- **S-spec** — 编写 Spec:综合已知事实、设计决定、诊断与代码现状,产出以外部行为和验收合同为权威的 Ready Spec。
|
|
@@ -3,15 +3,15 @@ id: specdev/goal-plan
|
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
5
|
name: 目标规划
|
|
6
|
-
description:
|
|
7
|
-
keywords: [目标规划,
|
|
6
|
+
description: 在跨 Ticket 协调复杂度需要时,以固定 Lead、动态派单、DAG/Gate 和候选合并门禁生成决策完备且可恢复的执行计划。
|
|
7
|
+
keywords: [目标规划, Lead, Subagent, DAG, Gate, Wave, worktree, candidate-merge, 证据]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# 目标规划
|
|
11
11
|
|
|
12
|
-
Goal Plan
|
|
12
|
+
Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、跨 Ticket 顺序与并发、共享所有权、里程碑 Gate、动态派单边界、父分支集成、迁移/发布顺序、偏差升级和恢复。Ticket 继续拥有局部实现合同。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
每次 Goal Plan 都采用 `lead-directed`:当前主会话是唯一 Lead,负责计划、SpecDev 状态、Evidence、派单、候选验收、父分支集成和最终回复。Lead 可以根据实际依赖与平台能力动态派遣 subagent,不需要用户预选协作模式。Agent 编排与 worktree 隔离是正交关系;每个进入 I-implement 的 Ticket 都必须拥有独立 worktree,无论由 Lead 还是 implementation subagent 实现。
|
|
15
15
|
|
|
16
16
|
产物写入 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`。
|
|
17
17
|
|
|
@@ -21,12 +21,12 @@ Goal Plan 只解决单个 Ticket 无法独立决定的事情:跨 Ticket 顺序
|
|
|
21
21
|
|
|
22
22
|
- 多个 Ticket 可以或需要并行;
|
|
23
23
|
- 存在 shared path、共享合同或集中 owner;
|
|
24
|
-
- 存在 Deep Ticket、expand-contract
|
|
25
|
-
-
|
|
26
|
-
- Ticket DAG
|
|
24
|
+
- 存在 Deep Ticket、expand-contract、迁移、兼容窗口或不可逆步骤;
|
|
25
|
+
- 存在多个 Gate、外部审批、发布窗口或高事故半径;
|
|
26
|
+
- Ticket DAG 的关键路径、汇合点或恢复策略无法由 Tickets Map 安全表达;
|
|
27
27
|
- 用户明确要求正式跨 Ticket Plan。
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
少量、线性、低风险的 Ready Tickets 可以跳过本 work,由 I-implement 逐 Ticket 建立 worktree 并执行。没有 Ticket 的获批小型 Direct Spec 不受 Ticket worktree 合同约束;一旦需要切片,先运行 T-tickets。
|
|
30
30
|
|
|
31
31
|
## 输入
|
|
32
32
|
|
|
@@ -39,97 +39,78 @@ Goal Plan 只解决单个 Ticket 无法独立决定的事情:跨 Ticket 顺序
|
|
|
39
39
|
|
|
40
40
|
按存在情况读取:
|
|
41
41
|
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
42
|
+
- 当前 change 架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
43
|
+
- 当前 change 领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
|
|
44
|
+
- 当前 change 设计日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
|
|
45
|
+
- 当前 change 诊断:`<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
|
|
46
|
+
- 永久架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
|
|
47
|
+
- 永久领域上下文:`<Path>{roots.state}/specdev/context/</Path>`
|
|
48
|
+
- 用户提供的合同、标准、参考实现、环境限制、发布窗口和批准策略。
|
|
48
49
|
|
|
49
|
-
Spec 或 Tickets Map
|
|
50
|
+
永久目录可以为空,静默继续。缺少 Spec 或 Tickets Map 时返回 `<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>` 或 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`;当前 ADR/CONTEXT 缺失且规划依赖对应决定时返回 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`,不在 Goal Plan 中补造上游权威。
|
|
50
51
|
|
|
51
52
|
## 流程
|
|
52
53
|
|
|
53
|
-
### 1.
|
|
54
|
+
### 1. 验证上游与执行边界
|
|
54
55
|
|
|
55
56
|
加载 `<Path>{roots.workflows}/specdev/P-goal-plan/planning-modes.md</Path>`:
|
|
56
57
|
|
|
57
|
-
1. 验证 Spec
|
|
58
|
-
2.
|
|
59
|
-
3. 识别
|
|
60
|
-
4.
|
|
61
|
-
5.
|
|
62
|
-
6.
|
|
63
|
-
7. 只对无法发现且会改变 Gate、Wave、owner、迁移、批准点或隔离策略的问题继续提问;
|
|
64
|
-
8. 不熟悉的外部标准或依赖使用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。
|
|
58
|
+
1. 验证 Spec、Tickets、合同覆盖、DAG、路径所有权和 Deep Ticket 完整性;
|
|
59
|
+
2. 只读探索影响调度的代码与项目事实;
|
|
60
|
+
3. 识别 migration、high-assurance、reference-conformance、release-coordination 等适用模式;
|
|
61
|
+
4. 从 config 读取 `max_implementation_agents`,将实际上限写入 `implementation_agent_limit`;本计划可以降低但不得超过 `3`,Lead 不计入;
|
|
62
|
+
5. 确认实现 commit 与本地候选集成已获授权;缺一项则计划保持 blocked;
|
|
63
|
+
6. 只询问无法发现且会改变 Gate、Wave、owner、迁移、批准或验收的问题。
|
|
65
64
|
|
|
66
|
-
|
|
65
|
+
**完成标准**:所有计划内 Ticket Ready;Lead、授权、实现并发上限和父分支可判定;没有用 Goal Plan 掩盖上游缺口。
|
|
67
66
|
|
|
68
|
-
### 2.
|
|
67
|
+
### 2. 构建 Outcome、DAG、Wave 与 Gate
|
|
69
68
|
|
|
70
69
|
加载 `<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>`:
|
|
71
70
|
|
|
72
|
-
1.
|
|
73
|
-
2.
|
|
74
|
-
3. 为 shared path
|
|
75
|
-
4.
|
|
76
|
-
5.
|
|
77
|
-
6.
|
|
78
|
-
7. 只有存在允许的隔离触发条件时才规划 worktree,并固定 workspace owner、integration owner、父分支和结束动作。
|
|
71
|
+
1. 压缩 Outcome、成功/伪完成、非目标和权威来源;
|
|
72
|
+
2. 从 Ticket frontmatter 构建 DAG、关键路径、扇出与汇合点;
|
|
73
|
+
3. 为 shared path、共享合同和集中修改指定唯一 owner;
|
|
74
|
+
4. 将依赖满足且项目写路径不相交的 Ticket 分入 Wave;
|
|
75
|
+
5. 为合同稳定、垂直路径、迁移完成、发布就绪等状态定义 Gate;
|
|
76
|
+
6. 为每个 Ticket 记录开始条件、worktree、验证层级、Evidence 目标、集成顺序和失败恢复。
|
|
79
77
|
|
|
80
|
-
**完成标准**:DAG、Wave、Gate 与 Tickets Map
|
|
78
|
+
**完成标准**:DAG、Wave、Gate 与 Tickets Map 一致;每个 Ticket 有唯一项目写 owner、worktree 合同和可验证集成出口。
|
|
81
79
|
|
|
82
|
-
### 3.
|
|
80
|
+
### 3. 固定 Lead 编排与动态派单合同
|
|
83
81
|
|
|
84
|
-
|
|
82
|
+
加载 `<Path>{roots.workflows}/specdev/P-goal-plan/lead-orchestration.md</Path>`,并以 `operation=plan` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`:
|
|
85
83
|
|
|
86
|
-
1.
|
|
87
|
-
2.
|
|
88
|
-
3.
|
|
84
|
+
1. 固定 Lead 的可恢复 owner/session locator;
|
|
85
|
+
2. 声明 implementation subagent 最多同时三个,Lead 不计入;
|
|
86
|
+
3. 不为只读 review/research/test-observation agent 写 SpecDev 数字上限;
|
|
87
|
+
4. 固定只有 Lead 写 SpecDev 工件与状态;
|
|
88
|
+
5. 定义执行期动态 Dispatch Packet、候选返回和 Lead 验收;
|
|
89
|
+
6. provider、模型和具体派单在 Ticket 开始时按事实选择,不在 Goal Plan 中预分配。
|
|
89
90
|
|
|
90
|
-
|
|
91
|
+
**完成标准**:Lead 可以在恢复后重建派单边界;任何 subagent 都不能成为第二个 SpecDev 状态写入者或父分支 integration owner。
|
|
91
92
|
|
|
92
|
-
|
|
93
|
-
2. 以 `operation=plan` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`;
|
|
94
|
-
3. 固定唯一 Lead、native/external provider、不可变 checkpoint、可恢复 locator、逐动作授权和修正上限;
|
|
95
|
-
4. 生成里程碑 Delivery Contract 与每个 Ticket 的独立 Dispatch Packet;
|
|
96
|
-
5. 为每个派单标记 `lead-write | worker-write | read-only`;`worker-write` 必须引用隔离 workspace 分配。
|
|
97
|
-
|
|
98
|
-
`single-session` 跳过委派能力,但仍可加载独立 workspace 附录;`lead-team` 在没有隔离触发条件时也不得制造 worktree。
|
|
99
|
-
|
|
100
|
-
### 4. 定义整体完成、证据与恢复
|
|
93
|
+
### 4. 定义完成、证据与恢复
|
|
101
94
|
|
|
102
95
|
加载 `<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>`:
|
|
103
96
|
|
|
104
|
-
1.
|
|
105
|
-
2.
|
|
106
|
-
3.
|
|
107
|
-
4.
|
|
108
|
-
5.
|
|
109
|
-
6.
|
|
110
|
-
|
|
111
|
-
**完成标准**:所有完成声明能映射到实际命令、代码状态、Evidence 或人工批准;没有自报即通过的门禁。
|
|
112
|
-
|
|
113
|
-
### 5. 写入自适应 Goal Plan
|
|
97
|
+
1. 定义整体 Definition of Done 和每个 Gate 的关闭证据;
|
|
98
|
+
2. 固化不可协商约束与允许的局部实现自由;
|
|
99
|
+
3. 为每个 Ticket 明确 source-worktree 检查与 parent-candidate 检查;
|
|
100
|
+
4. E2E 按 Ticket 实际跨边界风险标记 required 或 not-required;
|
|
101
|
+
5. 定义候选失败、父 HEAD 漂移、偏差、暂停、批准和恢复动作;
|
|
102
|
+
6. 定义 change 完成、远程 reconcile、残余风险和回滚要求。
|
|
114
103
|
|
|
115
|
-
|
|
104
|
+
**完成标准**:每个完成声明映射到不可变 commit、候选/父分支 SHA、命令、Evidence 或人工批准。
|
|
116
105
|
|
|
117
|
-
|
|
106
|
+
### 5. 写入、同步与验证
|
|
118
107
|
|
|
119
|
-
|
|
120
|
-
2. Execution Graph;
|
|
121
|
-
3. Gates and Completion Evidence;
|
|
122
|
-
4. Execution and Integration Protocol;
|
|
123
|
-
5. Constraints, Risk and Recovery;
|
|
124
|
-
6. Progress and Decisions。
|
|
108
|
+
使用 `<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>` 写入 Goal Plan:
|
|
125
109
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
1. 将 Wave、Gate 和 owner 投影同步到 `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`;
|
|
131
|
-
2. 对照 `<Path>{roots.workflows}/specdev/common/schemas/goal-plan.schema.json</Path>`,确认 coordination 与 workspace 两个字段成对存在且组合有效;
|
|
132
|
-
3. 运行:
|
|
110
|
+
1. 只保留适用 planning modes,不创建条件性 topology addendum;
|
|
111
|
+
2. 将 Wave、Gate 和 owner 投影同步到 Tickets Map;
|
|
112
|
+
3. 对照 `<Path>{roots.workflows}/specdev/common/schemas/goal-plan.schema.json</Path>`;
|
|
113
|
+
4. 运行:
|
|
133
114
|
|
|
134
115
|
```bash
|
|
135
116
|
node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
|
|
@@ -137,44 +118,37 @@ node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
|
|
|
137
118
|
<Path>{roots.state}/specdev/changes/{change}</Path>
|
|
138
119
|
```
|
|
139
120
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
6. 向用户汇报规划模式、协作方式、workspace 分配、关键路径、Wave、Gate、shared owner、迁移策略、主要风险和 Ready 状态;Lead Team 再汇报交付通道与 Lead;
|
|
121
|
+
5. 原子更新 Goal Plan、Tickets Map、全局/current change 状态并重新读取;
|
|
122
|
+
6. 向用户报告 Outcome、关键路径、Wave/Gate、Lead、实现 agent 上限、shared owner、E2E disposition、迁移与主要风险;
|
|
143
123
|
7. 未经用户要求,不自动进入实现。
|
|
144
124
|
|
|
145
125
|
## 决策完备标准
|
|
146
126
|
|
|
147
|
-
每份 Goal Plan
|
|
148
|
-
|
|
149
|
-
- 跨 Ticket 先后、并发 Wave 和关键汇合点;
|
|
150
|
-
- shared path 与共享合同的 owner;
|
|
151
|
-
- Gate 开启、关闭和证据;
|
|
152
|
-
- 迁移、兼容、收缩、发布和回滚顺序;
|
|
153
|
-
- Evidence 返回、集成、偏差、暂停和批准路径。
|
|
127
|
+
每份 Goal Plan 必须让 Lead 无需重新决定:
|
|
154
128
|
|
|
155
|
-
|
|
129
|
+
- Outcome、权威来源和整体完成;
|
|
130
|
+
- 跨 Ticket 先后、Wave、Gate 和关键汇合点;
|
|
131
|
+
- shared path 与共享合同 owner;
|
|
132
|
+
- implementation subagent 上限及动态派单边界;
|
|
133
|
+
- 每 Ticket worktree、source commit、候选验证和父分支推进规则;
|
|
134
|
+
- E2E disposition、偏差、暂停、批准和恢复路径。
|
|
156
135
|
|
|
157
|
-
Goal Plan
|
|
136
|
+
Goal Plan 不复制 Ticket 的局部施工路线、全部文件预测或逐项验收清单。
|
|
158
137
|
|
|
159
138
|
## 完成标准
|
|
160
139
|
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
- Tickets Map
|
|
167
|
-
- 无未批准高影响假设或硬停止问题;
|
|
168
|
-
- `<Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path>` 无 error;
|
|
169
|
-
- 用户收到摘要和下一步选择。
|
|
140
|
+
- Goal Plan schema v4 且 `ready_for_execution` 与状态一致;
|
|
141
|
+
- Lead 唯一,最多三个 implementation subagent,review/research agent 不受 SpecDev 数字限制;
|
|
142
|
+
- 每个实现 Ticket 都有 worktree、commit、candidate-merge 和 Evidence 出口;
|
|
143
|
+
- source worktree 不承担 E2E,适用 E2E 只由 Lead 在 parent-candidate 状态运行;
|
|
144
|
+
- 计划只保留当前固定 Lead 与 candidate-merge 合同,不携带条件性编排附录;
|
|
145
|
+
- validator 无 error,Tickets Map 投影同步,用户收到下一步选择。
|
|
170
146
|
|
|
171
147
|
## 子文件引用
|
|
172
148
|
|
|
173
149
|
- 规划模式与输入门禁:`<Path>{roots.workflows}/specdev/P-goal-plan/planning-modes.md</Path>`
|
|
174
|
-
- DAG、Wave、Gate
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
- Goal Plan
|
|
178
|
-
-
|
|
179
|
-
- 委派附录模板:`<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution-template.md</Path>`,仅用户选择委派时加载
|
|
180
|
-
- Agent 交付合同:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`,仅用户选择委派时调用
|
|
150
|
+
- DAG、Wave、Gate 与集成队列:`<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>`
|
|
151
|
+
- Lead 与动态派单:`<Path>{roots.workflows}/specdev/P-goal-plan/lead-orchestration.md</Path>`
|
|
152
|
+
- 完成、证据与恢复:`<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>`
|
|
153
|
+
- Goal Plan 模板:`<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>`
|
|
154
|
+
- Agent 交付合同:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
|
|
@@ -1,58 +1,40 @@
|
|
|
1
|
-
# Goal Plan
|
|
1
|
+
# Goal Plan 完成、证据与恢复
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1. 整体 Definition of Done
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
至少要求:
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- Spec 验收合同全部有通过 Evidence 或明确批准的 deferred;
|
|
8
|
+
- 所有非 cancelled Ticket 都有 source commit、通过的 candidate 和父分支 result SHA;
|
|
9
|
+
- shared path、接口、数据、兼容、迁移、调用点与回滚合同闭合;
|
|
10
|
+
- 项目定向检查、受影响回归、类型检查、lint/build 和适用 E2E 无未经批准退化;
|
|
11
|
+
- change 状态、Ticket、Map、Goal Plan、Evidence 与实际 Git 状态一致;
|
|
12
|
+
- 没有未集成 source checkpoint、活动 integration candidate 或未决高影响偏差。
|
|
8
13
|
|
|
9
|
-
|
|
14
|
+
无需改动的 Ticket 必须转为 `cancelled` 并记录来源事实;不得用 Evidence-only Done 或 empty commit 关闭。
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
- 所有 Spec 验收合同和外部符合性要求有 Evidence;
|
|
13
|
-
- 项目类型检查、静态检查、测试、lint、构建、适用 CI 和受影响 E2E 完成,基线没有未经批准的退化;
|
|
14
|
-
- 可静默失效的关键门禁完成受控反向验证并恢复绿色;
|
|
15
|
-
- 迁移、兼容、调用点清零、监控、回滚和不可逆批准完成;
|
|
16
|
-
- 无未批准偏差、未处置高风险残余问题或伪装成通过的 `unverified` 声明;
|
|
17
|
-
- Ticket、Map、Goal Plan、Evidence、代码事实和状态一致。
|
|
16
|
+
## 2. 两层验证
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
- `source-worktree`:implementation owner 运行 Ticket 要求的单元、组件、静态、类型、lint/build 等非 E2E 检查;
|
|
19
|
+
- `parent-candidate`:Lead 运行受影响集成/回归和 Ticket 标记 required 的 E2E。
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Evidence 必须记录命令运行环境。任何在 source worktree 声称的 E2E pass 都无效;subagent 返回的测试结果在 Lead 核对前保持候选状态。
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
## 3. Gate 关闭
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
- `coordination_mode: lead-team` 时,由 Lead 在独立验收后完成 change;旧 Goal Plan 缺少该字段时,继续按完整 Delegated Execution Addendum 是否存在推导。
|
|
25
|
+
Lead 在每个 Gate 汇总覆盖 Evidence、接口/数据/兼容状态、candidate/result SHA、适用 E2E、反向验证、偏差、风险和批准。Gate 不以“完成若干 Ticket”作为唯一关闭条件。
|
|
27
26
|
|
|
28
|
-
|
|
27
|
+
## 4. 失败与恢复
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
- source 检查失败:保留 worktree,继续当前 Ticket;
|
|
30
|
+
- candidate 冲突或检查失败:父分支不动,integration 记 `failed`,Ticket 回到 `in_progress`/`blocked`;
|
|
31
|
+
- 父 HEAD 漂移:integration 记 `stale`,从最新父分支重建并重跑;
|
|
32
|
+
- E2E required 失败:父分支不动,保留失败命令、candidate SHA 和恢复条件;
|
|
33
|
+
- 命中当次 Dispatch Packet/候选协议的停止条件、继续修正已无合理收益或需要新产品决定:停止受影响 Wave,按 deviation control 返回契约 owner;
|
|
34
|
+
- Lead 会话变化:读取 Goal Plan、Ticket、change worktree 状态与最新 Evidence,从最后不可变 checkpoint 恢复。
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
## 5. Change 完成 owner
|
|
33
37
|
|
|
34
|
-
|
|
38
|
+
Lead 是 Goal Plan change 的唯一完成 owner。没有 Goal Plan 的单 Ticket/Direct Spec 由当前 I-implement owner 按 change completion 规则完成。Archive 不补造完成证据。
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## 6. 风险与恢复
|
|
39
|
-
|
|
40
|
-
每个高风险项写明触发信号、事故半径、预防、检测、恢复、owner 和批准点。迁移或发布计划必须给出回滚不可行时的前向恢复方案。
|
|
41
|
-
|
|
42
|
-
恢复时依次读取 Goal Plan、当前 Ticket、最新 Evidence 和 change 状态,从最后已验证事实继续,不重复询问已确认事项,也不创建额外进度或阻塞文件。委派专属的 checkpoint、locator 和修正轮次由委派附录管理。
|
|
43
|
-
|
|
44
|
-
## 7. 进度与决策回报
|
|
45
|
-
|
|
46
|
-
使用可核验状态,不使用主观百分比:
|
|
47
|
-
|
|
48
|
-
```text
|
|
49
|
-
WAVE_STATUS wave=<n> ready=<ids> active=<ids> done=<ids> blocked=<ids>
|
|
50
|
-
GATE_STATUS gate=<name> state=open|closed evidence=<paths> risks=<summary>
|
|
51
|
-
TICKET_STATUS id=<id> state=<state> evidence=<path> deviation=<none|id>
|
|
52
|
-
BLOCKER id=<id> owner=<owner> needed=<decision-or-input> impact=<scope>
|
|
53
|
-
DECISION id=<id> owner=<owner> status=pending|approved|rejected impact=<scope>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Lead Team 的交付状态格式由委派协议提供,不加入 single-session Goal Plan。
|
|
57
|
-
|
|
58
|
-
**完成标准**:进度可由权威工件恢复;普通计划由最后一个 Implement 完成,委派计划由 Lead 完成;所有通过、阻塞和未验证声明均能定位到具体 Evidence 与代码事实。
|
|
40
|
+
**完成标准**:所有通过、阻塞、取消和未验证声明均定位到权威工件、命令与 Git checkpoint;失败不会推进父分支或 Done。
|