@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.
Files changed (57) hide show
  1. package/README.md +2 -1
  2. package/dist/src/migrations.js +604 -23
  3. package/dist/src/migrations.js.map +1 -1
  4. package/package.json +1 -1
  5. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +171 -277
  6. package/template/canonical/canonical-specdev-goal-plan.md +714 -833
  7. package/template/canonical/canonical-specdev-grill-with-docs.md +172 -278
  8. package/template/canonical/canonical-specdev-spec.md +199 -315
  9. package/template/canonical/canonical-specdev-tickets.md +405 -398
  10. package/template/canonical/canonical-specdev-wayfinder.md +170 -276
  11. package/template/skills/migrate-runtime-state/SKILL.md +6 -6
  12. package/template/skills/migrate-runtime-state/references/migration-contract.md +9 -3
  13. package/template/skills/migrate-runtime-state/scripts/migrate-runtime-state.mjs +322 -33
  14. package/template/skills/optimize-codex-config/SKILL.md +81 -0
  15. package/template/skills/optimize-codex-config/references/configuration-contract.md +103 -0
  16. package/template/skills/optimize-codex-config/references/troubleshooting.md +79 -0
  17. package/template/skills/optimize-codex-config/scripts/audit-codex-config.mjs +747 -0
  18. package/template/workflows/specdev/I-implement/I-implement.md +97 -142
  19. package/template/workflows/specdev/I-implement/evidence-template.md +60 -48
  20. package/template/workflows/specdev/I-implement/execution-preflight.md +29 -19
  21. package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +12 -11
  22. package/template/workflows/specdev/I-init-setup/I-init-setup.md +4 -5
  23. package/template/workflows/specdev/I-init-setup/change-status-template.json +14 -1
  24. package/template/workflows/specdev/I-init-setup/config-template.json +3 -5
  25. package/template/workflows/specdev/I-init-setup/status-template.json +1 -1
  26. package/template/workflows/specdev/INDEX.md +12 -8
  27. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +76 -93
  28. package/template/workflows/specdev/P-goal-plan/completion-control.md +26 -44
  29. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +43 -31
  30. package/template/workflows/specdev/P-goal-plan/lead-orchestration.md +34 -0
  31. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +31 -42
  32. package/template/workflows/specdev/P-goal-plan/planning-modes.md +42 -61
  33. package/template/workflows/specdev/T-tickets/T-tickets.md +6 -3
  34. package/template/workflows/specdev/T-tickets/ticket-readiness.md +5 -3
  35. package/template/workflows/specdev/T-tickets/ticket-template.md +8 -1
  36. package/template/workflows/specdev/T-tickets/tickets-map-template.md +5 -4
  37. package/template/workflows/specdev/_state/status.json +1 -1
  38. package/template/workflows/specdev/common/README.md +2 -2
  39. package/template/workflows/specdev/common/rules/change-completion.md +17 -19
  40. package/template/workflows/specdev/common/rules/deviation-control.md +1 -1
  41. package/template/workflows/specdev/common/rules/evidence-and-verification.md +27 -37
  42. package/template/workflows/specdev/common/rules/path-ownership.md +21 -23
  43. package/template/workflows/specdev/common/rules/readiness-and-depth.md +1 -1
  44. package/template/workflows/specdev/common/schemas/change-status.schema.json +136 -195
  45. package/template/workflows/specdev/common/schemas/config.schema.json +9 -11
  46. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +24 -6
  47. package/template/workflows/specdev/common/schemas/status.schema.json +7 -63
  48. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +42 -21
  49. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +48 -18
  50. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +47 -12
  51. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +34 -30
  52. package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +10 -23
  53. package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +14 -25
  54. package/template/workflows/specdev/common/tools/validate-specdev.mjs +507 -117
  55. package/template/workflows/specdev/I-implement/delegated-evidence-template.md +0 -11
  56. package/template/workflows/specdev/P-goal-plan/delegated-execution-template.md +0 -33
  57. package/template/workflows/specdev/P-goal-plan/delegated-execution.md +0 -53
@@ -1,9 +1,22 @@
1
1
  {
2
- "schema_version": 3,
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": 3,
2
+ "schema_version": 4,
3
3
  "interaction_language": "zh-CN",
4
4
  "artifact_language": "zh-CN",
5
5
  "git": {
6
- "auto_commit": false,
7
- "default_branch": null,
8
- "worktree_for_parallel": true
6
+ "default_branch": null
9
7
  },
10
8
  "execution": {
11
- "max_parallel": 3,
9
+ "max_implementation_agents": 3,
12
10
  "deep_ticket_human_approval": true,
13
11
  "shared_path_owner": "explicit"
14
12
  },
@@ -1,5 +1,5 @@
1
1
  {
2
- "schema_version": 4,
2
+ "schema_version": 5,
3
3
  "workflow": "specdev",
4
4
  "active": [],
5
5
  "archived": []
@@ -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>` 可以读取备份并在用户确认后修复。`back/`、`install.json``migration.json` 均不属于 SpecDev 写入 namespace。
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,6 +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. **Lead 与隔离正交**:Lead 固定拥有 SpecDev 状态、Evidence 与父分支;是否派遣 subagent 由 Lead 动态决定。每个实现 Ticket 都使用独立 worktree,Agent 身份不决定是否隔离。
126
+ 14. **候选先验收**:source worktree 只产生实现 commit 与非 E2E 证据;Lead 在 parent-candidate 状态运行集成检查和适用 E2E,通过后才推进父分支。
125
127
 
126
128
  共享规则:
127
129
 
@@ -145,11 +147,11 @@ Archive 归档历史并将经验证知识提升为当前长期知识
145
147
  6. 只加载当前步骤需要的 work 子文件和共享规则。
146
148
  7. 完成后写入产物、运行适用校验、更新状态和 `works_run`。
147
149
 
148
- Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>`:Goal Plan 含完整委派附录时由 Lead 拥有转换;普通 Goal Plan 或无 Goal Plan 的实现由最后一个 I 拥有;非实现型终点由最终验收工件 owner 拥有。Archive 不补造 completed。
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。
149
151
 
150
152
  ## 状态字段
151
153
 
152
- `<Path>{roots.state}/specdev/status.json</Path>` 使用全局 schema v4;SpecTicket 和 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 等领域工件仍使用各自现有 schema:
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
153
155
 
154
156
  - `schema_version`(数字):全局状态 schema 版本,固定为 `4`。
155
157
  - `workflow`(字符串):workflow 标识,固定为 `"specdev"`。
@@ -162,7 +164,9 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
162
164
 
163
165
  `active[].change` 必须唯一,且不得同时出现在 `archived`。开始 Work 时设置 `current_work`;暂停或可恢复阻塞时保留;成功完成时加入 `works_run` 并清空;取消时清空但不加入。逐次时间、结果和审计证据由 change 自有状态、Work 主产物、Evidence 或 LOG 承载,不写入全局索引。
164
166
 
165
- `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `worktrees` 保存 Ticket 级 `base_sha`、分支、可迁移 `workspace_ref` 和生命周期状态。
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 证据。
166
170
 
167
171
  领域状态枚举:
168
172
 
@@ -171,7 +175,7 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
171
175
  - Investigation status:`open | closed`
172
176
  - Investigation resolution:`answered | out-of-scope | superseded | cancelled | null`
173
177
  - Planning Depth:`lite | standard | deep`
174
- - Worktree:`planned | active | review | integrated | removed | blocked`
178
+ - Worktree:`planned | active | review | integrating | integrated | removed | blocked`
175
179
 
176
180
  ## 路径分配
177
181
 
@@ -182,7 +186,7 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
182
186
 
183
187
  ## 副作用边界
184
188
 
185
- 未经用户明确授权不得提交、推送、合并、删除分支或 worktree、部署、发布、移动归档、写入/关闭远程 Issue 或执行不可逆迁移。只读探索、生成 change 工件和已授权验证可以进行。远程开发投影仅由 Triage reconcile 执行;Retro command 的 Speculo 反馈 Issue 是独立 command 边界。敏感值不得写入 `<Path>{roots.state}/specdev/</Path>`。
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>`。
186
190
 
187
191
  ## 场景路由
188
192
 
@@ -212,9 +216,9 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
212
216
  - **D-diagnose-bugs** — 诊断 Bug:先建立会在精确症状上变红的紧凑反馈回路,再通过最小化、排名假设和单变量探针确认根因,输出修复契约而不实施生产修复。
213
217
  - **E-engineering-cognitive-mentor** — 工程认知导师:面向 Bug、项目源码、需求技术方案、架构设计与陌生技术领域的非执行型认知指导 Work;以证据、因果 Why、候选方案对比和逐轮澄清帮助用户形成可复述理解,并将完整问答轨迹持续持久化到当前 change。
214
218
  - **G-grill-with-docs** — 设计访谈(带文档):以完整 frontier 逐轮推进设计树,直到每个决策分支都已关闭并获得用户共识,同时持续维护当前 change 的设计树、日志、领域上下文和架构决策。
215
- - **I-implement** — 实现:基于 Ready Ticket 或获批的小型 Spec 执行设计检查、TDD 红绿循环、持续验证、双轴审查、证据回写和提交。
219
+ - **I-implement** — 实现:基于 Ready Ticket 或获批小型 Spec 执行设计检查、TDD、动态派单、双轴审查、Ticket worktree commit、候选合并验证和 Lead Evidence 回写。
216
220
  - **I-init-setup** — 初始化设置:初始化 SpecDev 的语言、配置、全局状态、本地 change 追踪、领域知识布局、验证命令和并发治理。
217
- - **P-goal-plan** — 目标规划:在协调复杂度需要时,将 Ready Spec、Tickets、架构决策与外部约束综合为决策完备的跨 Ticket 计划,并仅在用户选择时加入严格角色委派。
221
+ - **P-goal-plan** — 目标规划:在跨 Ticket 协调复杂度需要时,以固定 Lead、动态派单、DAG/Gate 和候选合并门禁生成决策完备且可恢复的执行计划。
218
222
  - **P-prototype** — 原型:在获授权的临时 branch/worktree 中构建一次性 Logic 或 UI 原型,回答一个明确设计问题并持久化答案、资产定位和清理状态。
219
223
  - **R-review-architecture** — 架构审查:从用户指定范围或 Git 热点扫描代码库的深化机会,以持久化可视化 HTML 呈现候选,并对用户选择的一个方案运行设计树访谈。
220
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: 在协调复杂度需要时,将 Ready Spec、Tickets、架构决策与外部约束综合为决策完备的跨 Ticket 计划,并仅在用户选择时加入严格角色委派。
7
- keywords: [目标规划, 编排, DAG, Gate, Wave, Lead, Subagent, checkpoint, 派单, 迁移, 证据]
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 只解决单个 Ticket 无法独立决定的事情:跨 Ticket 顺序、并发、共享所有权、里程碑 Gate、集成验证、迁移与发布顺序、偏差升级和恢复。它不是 Ticket 的放大版,也不按固定章节数量衡量质量。
12
+ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、跨 Ticket 顺序与并发、共享所有权、里程碑 Gate、动态派单边界、父分支集成、迁移/发布顺序、偏差升级和恢复。Ticket 继续拥有局部实现合同。
13
13
 
14
- Lead/subagent 是可选的委派分支,不是 Goal Plan 的固有角色。每次运行都先由用户选择普通 Goal Plan 或委派 Goal Plan;普通计划不写 execution model、Lead、Provider、Delivery Contract、Dispatch Packet、Worker、会话 locator 或修正轮次,也不写“未启用”或“不适用”占位。
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 @@ Lead/subagent 是可选的委派分支,不是 Goal Plan 的固有角色。每
21
21
 
22
22
  - 多个 Ticket 可以或需要并行;
23
23
  - 存在 shared path、共享合同或集中 owner;
24
- - 存在 Deep Ticket、expand-contract、数据迁移、兼容窗口或不可逆步骤;
25
- - 存在多个里程碑、外部审批、发布窗口、参考符合性或高事故半径;
26
- - Ticket DAG 虽不大,但关键路径、汇合点或恢复策略不能仅由 `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>` 安全表达;
24
+ - 存在 Deep Ticket、expand-contract、迁移、兼容窗口或不可逆步骤;
25
+ - 存在多个 Gate、外部审批、发布窗口或高事故半径;
26
+ - Ticket DAG 的关键路径、汇合点或恢复策略无法由 Tickets Map 安全表达;
27
27
  - 用户明确要求正式跨 Ticket Plan。
28
28
 
29
- 少量、线性、低风险且路径不冲突的 Ready Tickets 可以跳过本 work,直接由 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` Tickets Map 执行。
29
+ 少量、线性、低风险的 Ready Tickets 可以跳过本 work,由 I-implement Ticket 建立 worktree 并执行。没有 Ticket 的获批小型 Direct Spec 不受 Ticket worktree 合同约束;一旦需要切片,先运行 T-tickets。
30
30
 
31
31
  ## 输入
32
32
 
@@ -39,89 +39,78 @@ Lead/subagent 是可选的委派分支,不是 Goal Plan 的固有角色。每
39
39
 
40
40
  按存在情况读取:
41
41
 
42
- - `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
43
- - `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
44
- - `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
45
- - `<Path>{roots.state}/specdev/adr/</Path>`
46
- - `<Path>{roots.state}/specdev/context/</Path>`
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 不存在时,返回 `<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>` 或 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`,不得在 Goal Plan 中临时补造上游工件。
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 ReadyTicket Ready、合同覆盖、DAG、路径所有权和 Deep Ticket 完整性;
58
- 2. 只读探索会影响调度的代码事实和项目约束;
59
- 3. 识别 coordination、migration、high-assurance、reference-conformance 等可组合规划模式;
60
- 4. 每次向用户询问选择普通 Goal Plan 或委派 Goal Plan,不按复杂度静默启用角色委派;
61
- 5. 用户选择委派时,再在 `native-subagent` `external-web-subagent` 中选择实际交付通道;普通分支不形成或持久化执行模式;
62
- 6. 只对无法发现且会改变 Gate、Wave、owner、迁移或批准点的问题继续提问;
63
- 7. 不熟悉的外部标准或依赖使用 `<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、迁移、批准或验收的问题。
64
64
 
65
- 任何硬停止问题都必须退回拥有该决策的上游工件,不得用 Goal Plan 覆盖。
65
+ **完成标准**:所有计划内 Ticket Ready;Lead、授权、实现并发上限和父分支可判定;没有用 Goal Plan 掩盖上游缺口。
66
66
 
67
- ### 2. 构建跨 Ticket 核心计划
67
+ ### 2. 构建 Outcome、DAG、Wave 与 Gate
68
68
 
69
69
  加载 `<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>`:
70
70
 
71
- 1. Ticket frontmatter 构建 DAG 和关键路径;
72
- 2. Ready 且项目写路径不相交的 Ticket 分配到 Wave;
73
- 3. 为 shared path、共享合同和集中变更指定唯一 owner;
74
- 4. 为行为闭环、合同稳定、迁移完成、发布就绪等关键状态定义 Gate
75
- 5. 明确 expand → migrate → contract、Evidence 返回和集成规则;
76
- 6. 定义每个 Ticket 的开始条件、执行顺序、验证、Evidence 目标和失败恢复,不复制 Ticket 全文。
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 目标、集成顺序和失败恢复。
77
77
 
78
- **完成标准**:DAG、Wave、Gate 与 Tickets Map 一致;每个计划 Ticket 都有唯一 owner、可验证开始条件、Evidence 目标和恢复路径。
78
+ **完成标准**:DAG、Wave、Gate 与 Tickets Map 一致;每个 Ticket 有唯一项目写 owner、worktree 合同和可验证集成出口。
79
79
 
80
- ### 3. 按确认加载委派分支
80
+ ### 3. 固定 Lead 编排与动态派单合同
81
81
 
82
- 只有用户在本次运行选择委派 Goal Plan 时:
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>`:
83
83
 
84
- 1. 加载 `<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution.md</Path>`;
85
- 2. `operation=plan` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`;
86
- 3. 固定唯一 Lead、native/external provider、不可变 checkpoint、可恢复 locator、逐动作授权和修正上限;
87
- 4. 生成里程碑 Delivery Contract 与每个 Ticket 的独立 Dispatch Packet;
88
- 5. 并行写代码时按需调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`。
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
- 普通 Goal Plan 跳过本步骤,不加载上述委派能力,也不在最终产物中留下该分支的标题、字段或占位。
91
+ **完成标准**:Lead 可以在恢复后重建派单边界;任何 subagent 都不能成为第二个 SpecDev 状态写入者或父分支 integration owner。
91
92
 
92
- ### 4. 定义整体完成、证据与恢复
93
+ ### 4. 定义完成、证据与恢复
93
94
 
94
95
  加载 `<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>`:
95
96
 
96
- 1. 将整体目标、非目标和权威来源压缩为一个可审查摘要;
97
- 2. 定义整体 Definition of Done 和每个 Gate 的关闭证据;
98
- 3. 固化跨 Ticket 不可协商约束;
99
- 4. 区分不可违反约束与可由实现者调整的建议;
100
- 5. 定义实测基线、反向验证、防伪完成、偏差等级、暂停范围、批准人和恢复动作;
101
- 6. 定义进度回报、Evidence 汇总、残余风险和回滚要求。
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、残余风险和回滚要求。
102
103
 
103
- **完成标准**:所有完成声明能映射到实际命令、代码状态、Evidence 或人工批准;没有自报即通过的门禁。
104
+ **完成标准**:每个完成声明映射到不可变 commit、候选/父分支 SHA、命令、Evidence 或人工批准。
104
105
 
105
- ### 5. 写入自适应 Goal Plan
106
+ ### 5. 写入、同步与验证
106
107
 
107
- 使用 `<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>` 写入 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`。
108
+ 使用 `<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>` 写入 Goal Plan:
108
109
 
109
- 核心模板包含六个职责区,但只保留适用内容:
110
-
111
- 1. Outcome and Authority;
112
- 2. Execution Graph;
113
- 3. Gates and Completion Evidence;
114
- 4. Execution and Integration Protocol;
115
- 5. Constraints, Risk and Recovery;
116
- 6. Progress and Decisions。
117
-
118
- 用户选择委派时,在第 4 节加入 `<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution-template.md</Path>` 的完整内容;没有选择时不加入任何委派痕迹。Ticket 较多时在 Execution Graph 内增加速查表,不创建独立的第二套状态来源。
119
-
120
- ### 6. 同步与验证
121
-
122
- 1. 将 Wave、Gate 和 owner 投影同步到 `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`;
123
- 2. 对照 `<Path>{roots.workflows}/specdev/common/schemas/goal-plan.schema.json</Path>`;schema 不记录角色分支;
124
- 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. 运行:
125
114
 
126
115
  ```bash
127
116
  node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
@@ -129,43 +118,37 @@ node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
129
118
  <Path>{roots.state}/specdev/changes/{change}</Path>
130
119
  ```
131
120
 
132
- 4. 更新 `<Path>{roots.state}/specdev/status.json</Path>` `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`;
133
- 5. 原子写入 Goal Plan 和同步投影后重新读取,确认核心 DAG/Wave/Gate/owner/授权一致;存在委派附录时额外确认 Lead、checkpoint、locator、Delivery Contract Dispatch Packet 完整一致;
134
- 6. 向用户汇报规划模式、关键路径、Wave、Gate、shared owner、迁移策略、主要风险和 Ready 状态;选择委派时再汇报交付通道与 Lead;
121
+ 5. 原子更新 Goal Plan、Tickets Map、全局/current change 状态并重新读取;
122
+ 6. 向用户报告 Outcome、关键路径、Wave/GateLead、实现 agent 上限、shared owner、E2E disposition、迁移与主要风险;
135
123
  7. 未经用户要求,不自动进入实现。
136
124
 
137
125
  ## 决策完备标准
138
126
 
139
- 每份 Goal Plan 必须让实现者无需重新决定:
140
-
141
- - 跨 Ticket 先后、并发 Wave 和关键汇合点;
142
- - shared path 与共享合同的 owner;
143
- - Gate 开启、关闭和证据;
144
- - 迁移、兼容、收缩、发布和回滚顺序;
145
- - Evidence 返回、集成、偏差、暂停和批准路径。
127
+ 每份 Goal Plan 必须让 Lead 无需重新决定:
146
128
 
147
- 委派 Goal Plan 还必须锁定 Agent 派单上下文、execution model、Lead、checkpoint、locator、修正上限和逐动作授权。普通 Goal Plan 不包含这些内容。
129
+ - Outcome、权威来源和整体完成;
130
+ - 跨 Ticket 先后、Wave、Gate 和关键汇合点;
131
+ - shared path 与共享合同 owner;
132
+ - implementation subagent 上限及动态派单边界;
133
+ - 每 Ticket worktree、source commit、候选验证和父分支推进规则;
134
+ - E2E disposition、偏差、暂停、批准和恢复路径。
148
135
 
149
- Goal Plan 不应重复 Ticket 的局部执行路线、全部文件预测、局部验收 checklist 或 Spec 的完整用户故事。
136
+ Goal Plan 不复制 Ticket 的局部施工路线、全部文件预测或逐项验收清单。
150
137
 
151
138
  ## 完成标准
152
139
 
153
- - `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 已写入且只包含适用内容;
154
- - 所有计划内 Ticket ReadyDAG 无环,合同覆盖明确;
155
- - WaveGateowner、集成、偏差和恢复可执行;
156
- - 普通计划没有委派角色、交付合同或空占位;
157
- - 委派计划的 Delivery Contract 与每个 Dispatch Packet 完整可恢复;
158
- - Tickets Map 投影已同步;
159
- - 无未批准高影响假设或硬停止问题;
160
- - `<Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path>` 无 error;
161
- - 用户收到摘要和下一步选择。
140
+ - Goal Plan schema v4 且 `ready_for_execution` 与状态一致;
141
+ - Lead 唯一,最多三个 implementation subagentreview/research agent 不受 SpecDev 数字限制;
142
+ - 每个实现 Ticket 都有 worktreecommitcandidate-merge 和 Evidence 出口;
143
+ - source worktree 不承担 E2E,适用 E2E 只由 Lead 在 parent-candidate 状态运行;
144
+ - 计划只保留当前固定 Lead candidate-merge 合同,不携带条件性编排附录;
145
+ - validator 无 error,Tickets Map 投影同步,用户收到下一步选择。
162
146
 
163
147
  ## 子文件引用
164
148
 
165
149
  - 规划模式与输入门禁:`<Path>{roots.workflows}/specdev/P-goal-plan/planning-modes.md</Path>`
166
- - DAG、Wave、Gate 与核心集成:`<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>`
167
- - 委派执行协议:`<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution.md</Path>`,仅用户选择委派时加载
168
- - 完成、证据、偏差与恢复:`<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>`
169
- - Goal Plan 核心模板:`<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>`
170
- - 委派附录模板:`<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution-template.md</Path>`,仅用户选择委派时加载
171
- - 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. Outcome and Authority
3
+ ## 1. 整体 Definition of Done
4
4
 
5
- Goal Plan 用紧凑摘要表达业务目标、受众、所有 Ticket 完成后的可观察终态、关键约束、非目标、权威来源、冲突规则和伪完成判据,不复制 Spec 的完整用户故事。
5
+ 至少要求:
6
6
 
7
- ## 2. 整体 Definition of Done
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
- - 所有计划内 Ticket 完成,cancelled 或 deferred 项有批准;
12
- - 所有 Spec 验收合同和外部符合性要求有 Evidence;
13
- - 项目类型检查、静态检查、测试、lint、构建、适用 CI 和受影响 E2E 完成,基线没有未经批准的退化;
14
- - 可静默失效的关键门禁完成受控反向验证并恢复绿色;
15
- - 迁移、兼容、调用点清零、监控、回滚和不可逆批准完成;
16
- - 无未批准偏差、未处置高风险残余问题或伪装成通过的 `unverified` 声明;
17
- - Ticket、Map、Goal Plan、Evidence、代码事实和状态一致。
16
+ ## 2. 两层验证
18
17
 
19
- ## 3. Gate 关闭与 change 完成
18
+ - `source-worktree`:implementation owner 运行 Ticket 要求的单元、组件、静态、类型、lint/build 等非 E2E 检查;
19
+ - `parent-candidate`:Lead 运行受影响集成/回归和 Ticket 标记 required 的 E2E。
20
20
 
21
- 每个 Gate 关闭时汇总覆盖 Evidence,检查合同、共享接口、数据、兼容、迁移和调用点,运行里程碑验证和适用 E2E,执行必要反向验证,审查偏差/风险/恢复能力,获取适用人工批准,并同步 Goal Plan、Map 和状态。
21
+ Evidence 必须记录命令运行环境。任何在 source worktree 声称的 E2E pass 都无效;subagent 返回的测试结果在 Lead 核对前保持候选状态。
22
22
 
23
- 最后一个 Gate 关闭后加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>`:
23
+ ## 3. Gate 关闭
24
24
 
25
- - Goal Plan 不含 `## Delegated Execution Addendum` 时,由最后一个计划内 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 汇总并完成 change;
26
- - Goal Plan 含完整委派附录时,由 Lead 在独立验收后完成 change。
25
+ Lead 在每个 Gate 汇总覆盖 Evidence、接口/数据/兼容状态、candidate/result SHA、适用 E2E、反向验证、偏差、风险和批准。Gate 不以“完成若干 Ticket”作为唯一关闭条件。
27
26
 
28
- triage 的 `external_action` 为 `pending-close` 或 `close-failed`,下一 Work 为 `<Path>{roots.workflows}/specdev/T-triage/T-triage.md</Path>`,否则进入 Archive。远程动作不参与本地 Gate 判断。
27
+ ## 4. 失败与恢复
29
28
 
30
- ## 4. 不可协商约束
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
- 只记录跨多个 Ticket 且不可由实现者改变的规则,例如数据完整性、wire format 兼容、旧协议收缩条件、shared owner、安全要求、发布窗口、回滚演练和批准点。每条约束说明来源和违反后果;可由实现者沿惯例选择的事项写入 Guidance。
36
+ ## 5. Change 完成 owner
33
37
 
34
- ## 5. 偏差与暂停
38
+ Lead Goal Plan change 的唯一完成 owner。没有 Goal Plan 的单 Ticket/Direct Spec 由当前 I-implement owner 按 change completion 规则完成。Archive 不补造完成证据。
35
39
 
36
- 偏差遵循 `<Path>{roots.workflows}/specdev/common/rules/deviation-control.md</Path>`。跨 Ticket 偏差还要说明暂停哪些 Wave/Ticket、重新打开哪个 Gate、哪些执行者需要新基线、哪些 Evidence 失效和恢复条件。
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
- 委派 Goal Plan 的交付状态格式由委派协议提供,不加入普通 Goal Plan。
57
-
58
- **完成标准**:进度可由权威工件恢复;普通计划由最后一个 Implement 完成,委派计划由 Lead 完成;所有通过、阻塞和未验证声明均能定位到具体 Evidence 与代码事实。
40
+ **完成标准**:所有通过、阻塞、取消和未验证声明均定位到权威工件、命令与 Git checkpoint;失败不会推进父分支或 Done。
@@ -1,9 +1,14 @@
1
1
  ---
2
- schema_version: 3
2
+ schema_version: 5
3
3
  artifact: goal-plan
4
4
  change: <YYYY-MM-DD-topic>
5
5
  status: draft
6
- modes: [coordination]
6
+ modes: []
7
+ orchestration: lead-directed
8
+ lead: <owner-or-session-locator>
9
+ implementation_agent_limit: 3
10
+ ticket_workspace_policy: required
11
+ integration_gate: candidate-merge
7
12
  ready_for_execution: false
8
13
  ---
9
14
 
@@ -28,10 +33,11 @@ ready_for_execution: false
28
33
  | 优先级 | 来源 | 负责内容 | 冲突处理 |
29
34
  |---|---|---|---|
30
35
  | 1 | 用户最新明确决定 | 产品取舍与批准 | 更新真正拥有该决策的工件 |
31
- | 2 | `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` | 当前 change 架构决定 | 通过新决定替代 |
32
- | 3 | `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` | 外部行为、范围与验收 | 下游不得改写 |
33
- | 4 | `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>` | Ticket 契约 | Goal Plan 只编排 |
34
- | 5 | 当前代码事实 | 现状与可行性 | 冲突时触发偏差 |
36
+ | 2 | `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 与 `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>` | 当前 change 架构决定与领域语义 | 返回 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>` 更新真正 owner |
37
+ | 3 | `<Path>{roots.state}/specdev/adr/</Path>` 与 `<Path>{roots.state}/specdev/context/</Path>` | 已毕业的永久决定与领域知识 | 当前 change 替代时在 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>` 明示 |
38
+ | 4 | `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` | 外部行为、范围与验收 | 下游不得改写 |
39
+ | 5 | `<Path>{roots.state}/specdev/changes/{change}/ticket/</Path>` | Ticket 契约 | Goal Plan 只编排 |
40
+ | 6 | `<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>` 与当前代码/运行事实 | 已验证根因、现状与可行性 | 冲突时触发偏差并返回真正 owner |
35
41
 
36
42
  ## 2. Execution Graph
37
43
 
@@ -43,14 +49,14 @@ ready_for_execution: false
43
49
 
44
50
  ### Waves and Ownership
45
51
 
46
- | Wave | Ticket | 前置条件 | 项目写路径 | Shared owner | 集成点 |
52
+ | Wave | Ticket | 前置条件 | 项目写路径 | Shared owner | Gate/集成序号 |
47
53
  |---|---|---|---|---|---|
48
54
 
49
55
  ### Ticket Quick Reference
50
56
 
51
- | ID | Ticket | 行为产出 | Depth/Risk | Dependencies | Wave/Gate | Owner | Evidence |
52
- |---|---|---|---|---|---|---|---|
53
- | T-01 | `<Path>{roots.state}/specdev/changes/{change}/ticket/01-<name>.md</Path>` | ... | standard/medium | | W0/G0 | `<owner>` | `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` |
57
+ | ID | 可观察产出 | Dependencies | Worktree | Implementation owner | E2E disposition | Evidence |
58
+ |---|---|---|---|---|---|---|
59
+ | T-01 | ... | | `specdev-worktree/T-01` | Lead / dynamic dispatch | required / not-required: reason | `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` |
54
60
 
55
61
  ## 3. Gates and Completion Evidence
56
62
 
@@ -58,7 +64,7 @@ ready_for_execution: false
58
64
 
59
65
  ### Gates
60
66
 
61
- | Gate | 开启条件 | 关闭证据 | 阻塞范围 | Owner/批准人 | 失败恢复 |
67
+ | Gate | 开启条件 | 关闭证据 | 阻塞范围 | Lead/批准人 | 失败恢复 |
62
68
  |---|---|---|---|---|---|
63
69
 
64
70
  ### Contract and Reference Coverage
@@ -68,34 +74,44 @@ ready_for_execution: false
68
74
 
69
75
  ## 4. Execution and Integration Protocol
70
76
 
71
- ### Ticket Execution Order
77
+ ### Lead Orchestration
72
78
 
73
- | Ticket | 开始条件 | 执行 owner | 必跑验证 | Evidence | 集成条件 |
74
- |---|---|---|---|---|---|
79
+ | 项目 | 决定 | 事实依据 |
80
+ |---|---|---|
81
+ | Lead | `<owner-or-session-locator>` | 唯一 SpecDev 状态、Evidence 与父分支 owner |
82
+ | Implementation subagents | `<= 3`,Lead 不计入 | config、依赖和平台能力的最小值 |
83
+ | Read-only agents | 无 SpecDev 数字上限 | review/research/test-observation,不写状态 |
84
+ | Dispatch | execution-time dynamic | provider/模型/派单按 Ticket 事实选择 |
85
+
86
+ ### Ticket Workspace and Candidate Integration
87
+
88
+ | Ticket | Parent/base | Worktree/branch | Source checks | Source commit | Candidate checks/E2E | Parent result |
89
+ |---|---|---|---|---|---|---|
90
+
91
+ 集成按表中顺序串行进行。source worktree 不运行 E2E;Lead 在最新父分支的 candidate 状态运行集成检查和适用 E2E,通过且父 HEAD 未漂移后才推进父分支。
75
92
 
76
93
  ### Authorization Matrix
77
94
 
78
95
  | 动作 | 状态 | 目标与条件 |
79
96
  |---|---|---|
80
- | Local changes | allowed / not-authorized | ... |
81
- | Commit | allowed / not-authorized | ... |
82
- | Push / PR / Merge | allowed / not-authorized | ... |
83
- | Deploy / Migration | allowed / not-authorized | ... |
84
- | Production configuration / feature / real user data | allowed / not-authorized | ... |
97
+ | Ticket worktree local changes | allowed / not-authorized | writable/shared owner 合同 |
98
+ | Implementation commit | allowed / not-authorized | Ticket 必需;缺失则 Plan blocked |
99
+ | Local candidate integration and parent update | allowed / not-authorized | Lead-only;缺失则 Plan blocked |
100
+ | Push / PR / remote merge | allowed / not-authorized | 不从本计划本地授权继承 |
101
+ | Branch/worktree cleanup | allowed / not-authorized | 成功集成不自动继承 |
102
+ | Deploy / migration / production actions | allowed / not-authorized | 逐动作、目标和条件 |
85
103
 
86
- ### Evidence Return and Integration
104
+ ### Evidence Return
87
105
 
88
- 每个实现者按 I-implement 与对应 Ticket 执行,写入 Evidence 并同步 Ticket/Map/Goal Plan。最后一个计划内 Implement 汇总 Gate、运行适用集成验证,并按完成合同关闭 change。
106
+ subagent 只返回候选事实与 commit;Lead 独立核对并写 Evidence、状态和最终验收。
89
107
 
90
108
  ## 5. Constraints, Risk and Recovery
91
109
 
92
110
  ### Non-negotiable Constraints
93
111
 
94
- 每条包含来源和违反后果;局部实现自由进入 Guidance。
95
-
96
112
  ### Verification Integrity
97
113
 
98
- 记录不可修改的判卷接缝、基线非退化条件、禁止的伪绿色方式,以及仅对静默失败风险执行的受控反向验证。
114
+ 记录判卷接缝、基线、禁止的伪绿色方式,以及 source/candidate 两层验证边界。
99
115
 
100
116
  ### Migration or Release Sequence
101
117
 
@@ -109,18 +125,14 @@ ready_for_execution: false
109
125
 
110
126
  ### Current Status
111
127
 
112
- 记录 Wave/Gate、Ticket、最近验证证据和未验证项;不使用主观百分比。
128
+ 记录 Wave/Gate、Ticket、source/candidate/result SHA、最近验证和未验证项;不使用主观百分比。
113
129
 
114
130
  ### Pending Decisions and Blockers
115
131
 
116
- 记录失败命令、已通过行为、owner 和恢复条件。
117
-
118
132
  ### Resume Protocol
119
133
 
120
- 恢复时读取本 Goal Plan、当前 Ticket、最新 Evidence change 状态,从最后已验证事实继续。
121
-
122
- ### Reporting Format
134
+ 恢复时读取 Goal Plan、当前 Ticket、change worktree 状态和最新 Evidence;从最后通过的父分支 result 或待修正 source checkpoint 继续。
123
135
 
124
136
  ## Assumptions
125
137
 
126
- 仅记录低影响、可逆且有验证方式的假设。高影响假设存在时,`ready_for_execution` 必须为 `false`。
138
+ 只记录低影响且可验证的假设。存在高影响假设时 `ready_for_execution` 必须为 `false`。