@namewta/speculo 0.7.1 → 0.7.2

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 (37) hide show
  1. package/README.md +2 -1
  2. package/package.json +1 -1
  3. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +178 -0
  4. package/template/canonical/canonical-specdev-goal-plan.md +386 -74
  5. package/template/canonical/canonical-specdev-grill-with-docs.md +178 -0
  6. package/template/canonical/canonical-specdev-spec.md +178 -0
  7. package/template/canonical/canonical-specdev-tickets.md +247 -21
  8. package/template/canonical/canonical-specdev-wayfinder.md +178 -0
  9. package/template/skills/optimize-codex-config/SKILL.md +81 -0
  10. package/template/skills/optimize-codex-config/references/configuration-contract.md +103 -0
  11. package/template/skills/optimize-codex-config/references/troubleshooting.md +79 -0
  12. package/template/skills/optimize-codex-config/scripts/audit-codex-config.mjs +747 -0
  13. package/template/workflows/specdev/I-implement/I-implement.md +11 -10
  14. package/template/workflows/specdev/I-implement/delegated-evidence-template.md +2 -1
  15. package/template/workflows/specdev/I-implement/execution-preflight.md +5 -3
  16. package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +6 -5
  17. package/template/workflows/specdev/INDEX.md +5 -4
  18. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +27 -18
  19. package/template/workflows/specdev/P-goal-plan/completion-control.md +3 -3
  20. package/template/workflows/specdev/P-goal-plan/delegated-execution-template.md +6 -4
  21. package/template/workflows/specdev/P-goal-plan/delegated-execution.md +13 -7
  22. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +11 -2
  23. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +7 -3
  24. package/template/workflows/specdev/P-goal-plan/planning-modes.md +23 -8
  25. package/template/workflows/specdev/P-goal-plan/workspace-execution-template.md +24 -0
  26. package/template/workflows/specdev/common/README.md +2 -2
  27. package/template/workflows/specdev/common/rules/change-completion.md +3 -2
  28. package/template/workflows/specdev/common/rules/path-ownership.md +2 -2
  29. package/template/workflows/specdev/common/schemas/change-status.schema.json +178 -0
  30. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +10 -0
  31. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +11 -11
  32. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +19 -4
  33. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +12 -5
  34. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +4 -3
  35. package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +1 -1
  36. package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +2 -3
  37. package/template/workflows/specdev/common/tools/validate-specdev.mjs +218 -5
@@ -23,7 +23,7 @@ keywords: [实现, TDD, 代码审查, 模块设计, 证据, ticket]
23
23
 
24
24
  Ticket 模式适用于多 Ticket、Standard/Deep、并行、迁移或需要完整证据治理的工作。
25
25
 
26
- Goal Plan 只有包含完整 `## Delegated Execution Addendum` 时才进入 delegated execution 分支。Lead 在派单、恢复或验收候选交付时调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`;普通 Goal Plan 不建立 Lead/Worker 角色,也不调用该 Skill。
26
+ Goal Plan 通过 `coordination_mode` 与 `workspace_strategy` 分别决定协作和工作区;旧计划缺少字段时根据完整 Delegated Execution Addendum 与现有 worktree 记录兼容推导。只有 `lead-team` 进入 delegated execution 分支;`single-session` 可使用只读辅助 Agent,但主会话保持唯一写入 owner。Worktree/mixed 独立加载 dev-worktree 合同,不因是否存在 Lead 而改变。
27
27
 
28
28
  ### Direct Spec 模式(保留原能力)
29
29
 
@@ -64,8 +64,9 @@ Ticket 模式检查:
64
64
  - `blocked_by` 全部 done;
65
65
  - Ticket 与 Spec/ADR/Goal Plan 无冲突;
66
66
  - 可写、只读、共享路径明确且无并发冲突;
67
- - 并行执行时,Ticket worktree 记录为 `active`,`base_sha` 与派单一致;
68
- - 存在委派附录时,派单块的 execution model、Lead、checkpoint、workspace/session locator、路径合同、修正上限和授权矩阵与当前事实一致;
67
+ - Ticket 分配到 worktree 时,记录为 `active`,trigger、`base_sha`、父分支、owners、locator 和结束动作与计划一致;
68
+ - `lead-team` 时,派单块的 execution model、Lead、mutation role、checkpoint、workspace/session locator、路径合同、修正上限和授权矩阵与当前事实一致;`worker-write` 必须绑定独立 workspace;
69
+ - current workspace 只有一个项目和 SpecDev 状态写入 owner;read-only Agent 不产生 patch、commit 或状态写入;
69
70
  - 验证命令和 Evidence 位置可用;
70
71
  - 当前代码事实没有使核心契约失效。
71
72
 
@@ -126,7 +127,7 @@ Direct Spec 模式检查:
126
127
  - 每个安全落点运行定向验证;
127
128
  - 完成前运行 Ticket 验证矩阵,或 Direct Spec 模式的轻量验证契约;
128
129
  - 按 `<Path>{roots.state}/specdev/config.json</Path>` 运行适用的类型检查、lint、测试和构建;
129
- - 普通 Goal Plan 下由当前实现者运行适用 E2E;存在委派附录时 Worker 只记录场景与预期结果,由 Lead 在集成阶段执行;
130
+ - current workspace 由其唯一写入 owner 运行适用 E2E;隔离 workspace integration owner 在集成阶段运行;Lead Team 的 Worker 只记录场景与预期结果;
130
131
  - 检查实际修改均在 `writable_paths` 或获批的 Direct Spec 可写范围内;
131
132
  - shared path 只由 owner 修改;
132
133
  - 越界前停止并提出 ownership change,不先改后报;
@@ -169,11 +170,11 @@ Direct Spec 模式写入:
169
170
 
170
171
  Evidence 必须包含实际修改范围、命令与结果、验收逐条映射、未运行项、偏差、残余风险和提交引用。
171
172
 
172
- 存在委派附录时,加载 `<Path>{roots.workflows}/specdev/I-implement/delegated-evidence-template.md</Path>`,补充 execution model、provider、派单与最终 checkpoint、workspace/session locator、候选交付核对、修正轮次和未验证声明。Lead 使用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>` 的 `operation=execute` 分支完成核对;provider 自报结果不能直接标记为 `pass`。普通 Evidence 不包含这些字段或空占位。
173
+ `lead-team` 时加载 `<Path>{roots.workflows}/specdev/I-implement/delegated-evidence-template.md</Path>`,补充 execution model、provider、mutation role、派单与最终 checkpoint、workspace/session locator、候选交付核对、修正轮次和未验证声明。Lead 使用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>` 的 `operation=execute` 分支完成核对;provider 自报结果不能直接标记为 `pass`。`single-session` Evidence 不包含这些字段或空占位。
173
174
 
174
175
  Ticket 状态依次为 `ready → in_progress → review → done`;阻塞使用 `blocked`,实际实现与批准契约不一致使用 `deviated`。验证无法运行或存在未批准偏差时不得标 `done`。
175
176
 
176
- 最后一个计划内 Ticket 完成后加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>`:没有 Goal Plan 或 Goal Plan 不含委派附录时,完成门全部通过后由本 Work 原子设置 change 为 completed;存在完整委派附录时只返回 Evidence,由 Lead 独立验收并关闭 change。若 triage 显示 `pending-close` 或 `close-failed`,下一 Work 为 `<Path>{roots.workflows}/specdev/T-triage/T-triage.md</Path>`;否则进入 Archive。
177
+ 最后一个计划内 Ticket 完成后加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>`:没有 Goal Plan 或 `coordination_mode: single-session` 时,完成门全部通过后由本 Work 原子设置 change 为 completed;`lead-team` 时只返回 Evidence,由 Lead 独立验收并关闭 change。旧计划按委派附录兼容推导。若 triage 显示 `pending-close` 或 `close-failed`,下一 Work 为 `<Path>{roots.workflows}/specdev/T-triage/T-triage.md</Path>`;否则进入 Archive。
177
178
 
178
179
  同步:
179
180
 
@@ -187,11 +188,11 @@ Ticket 状态依次为 `ready → in_progress → review → done`;阻塞使
187
188
  1. 运行项目自身的适用验证;
188
189
  2. 仅在 `<Path>{roots.state}/specdev/config.json</Path>` 和用户授权允许时提交;
189
190
  3. 提交信息引用 Ticket ID 或 Direct Spec change;
190
- 4. 不自动推送、合并、部署、发布或执行不可逆迁移;
191
- 5. 返回 Ticket ID 与状态、Evidence 完整路径、`workspace_ref`、commit 或 PR 引用和适用 E2E 结果;委派 Worker 返回待 Lead 执行的 E2E;
191
+ 4. Worktree 记录为 `review` 且 `terminal_action=integrate` 时,由 integration owner 自动加载 finalize 合同完成本地集成;其他 merge、push、PR、部署、发布或不可逆迁移不得自动执行;
192
+ 5. 返回 Ticket ID 与状态、Evidence 完整路径、`workspace_ref`、source/result checkpoint、commit 或 PR 引用和适用 E2E 结果;Lead Team Worker 返回待 integration owner 执行的 E2E;
192
193
  6. Direct Spec 模式返回 change、状态和 `<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`。
193
194
 
194
- 普通 Goal Plan 遵循 `<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>` 的 Evidence 返回协议;存在委派附录时遵循 `<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution.md</Path>`,同时返回稳定 workspace/session locator、最终 checkpoint、修正轮次和未验证项。
195
+ 所有 Goal Plan 遵循 `<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>` 的 Evidence 返回协议;Lead Team 额外遵循 `<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution.md</Path>`,隔离 workspace 额外遵循 dev-worktree Skill,并返回稳定 locator、最终 checkpoint、集成结果、修正轮次和未验证项。
195
196
 
196
197
  ## 完成标准
197
198
 
@@ -218,6 +219,6 @@ Ticket 状态依次为 `ready → in_progress → review → done`;阻塞使
218
219
  - 代码注释规则:`<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`
219
220
  - 双轴审查:`<Path>{roots.workflows}/specdev/common/skills/code-review/SKILL.md</Path>`
220
221
  - Evidence 模板:`<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>`
221
- - 委派 Evidence 附录:`<Path>{roots.workflows}/specdev/I-implement/delegated-evidence-template.md</Path>`,仅 Goal Plan 含委派附录时加载
222
+ - 委派 Evidence 附录:`<Path>{roots.workflows}/specdev/I-implement/delegated-evidence-template.md</Path>`,仅 lead-team 时加载
222
223
  - Agent 交付合同:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
223
224
  - Merge/rebase 冲突:`<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`
@@ -1,8 +1,9 @@
1
1
  # Delegated Evidence Addendum
2
2
 
3
- Goal Plan 含完整 `## Delegated Execution Addendum` 时,把以下字段加入对应 Ticket Evidence;普通执行不生成本附录或空占位。
3
+ Goal Plan 使用 `coordination_mode: lead-team` 时,把以下字段加入对应 Ticket Evidence;旧计划按完整 `## Delegated Execution Addendum` 兼容推导。`single-session` 不生成本附录或空占位。
4
4
 
5
5
  - **Execution model / Provider:** native-subagent / external-web-subagent;`<provider>`
6
+ - **Mutation role / Workspace allocation:** read-only / lead-write / worker-write;`<allocation-or-current>`
6
7
  - **Session/Package locator:** `<portable-locator>`
7
8
  - **Dispatch / Final checkpoint:** `<sha-or-fixed-baseline>` / `<sha-or-fixed-baseline>`
8
9
  - **Correction rounds:** `<count>`
@@ -7,9 +7,10 @@
7
7
  - [ ] Spec、ADR、Ticket 和 Goal Plan 无冲突。
8
8
  - [ ] 当前代码入口、接口和路径仍与 Ticket 假设一致。
9
9
  - [ ] writable_paths 无并发 owner 冲突。
10
- - [ ] 并行执行时,`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>``worktrees` 中本 Ticket `active`,`base_sha`、分支和 `workspace_ref` 与派单一致。
11
- - [ ] Goal Plan `## Delegated Execution Addendum` 时,只有一个 execution model 和 Lead,派单 checkpoint 与当前源码一致,workspace/session locator 可恢复。
12
- - [ ] 委派附录的授权矩阵逐项覆盖 local changes、commit、push、PR、merge、deploy、migration 和生产动作;未授权动作不会执行。
10
+ - [ ] Goal Plan coordination mode workspace strategy 均可判定;旧计划缺少字段时只按兼容规则推导,不把 Agent Team 当作 worktree 触发条件。
11
+ - [ ] Ticket 分配到 worktree 时,记录为 `active`,合法 trigger、`base_sha`、父分支、implementation/integration owner、分支、`workspace_ref` 和结束动作与计划一致。
12
+ - [ ] `lead-team` 时只有一个 execution model 和 Lead,mutation role、派单 checkpoint 与当前源码一致,workspace/session locator 可恢复;`worker-write` 不指向 current workspace。
13
+ - [ ] 授权矩阵分别覆盖 local changes、implementation commit、local worktree integration、push、PR、remote merge、deploy、migration 和生产动作;未授权动作不会执行。
13
14
  - [ ] 委派候选交付的附件 hash、修改范围和事实声明可由 Lead 独立核对。
14
15
  - [ ] 验证命令/环境可用。
15
16
  - [ ] 可静默失效的关键门禁定义了受控反向验证;普通测试不为形式追加破坏性检查。
@@ -23,4 +24,5 @@
23
24
  - **spec-invalid**:外部行为/合同需改变;停止并修 Spec。
24
25
  - **adr-conflict**:架构决策冲突;停止并处理 ADR。
25
26
  - **checkpoint-drift**:委派派单基线、源码包或当前代码已经漂移;暂停并由 Lead 重放、重派或建立新 checkpoint。
27
+ - **workspace-contract-invalid**:worktree 缺少合法 trigger、父分支、owner、locator、source checkpoint 或结束动作;停止并修 Goal Plan/状态记录。
26
28
  - **delivery-unverified**:候选交付、provider 声明或附件无法独立核对;保持 `unverified`,不得推进 `done`。
@@ -4,17 +4,18 @@
4
4
 
5
5
  ## 流程
6
6
 
7
- 1. 读取 Git 状态、操作类型、冲突文件、base/ours/theirs commit 和当前 Ticket/Evidence
7
+ 1. 读取 Git 状态、操作类型、冲突文件、base/ours/theirs commit、当前 Ticket/Evidence,以及是否存在匹配的 `terminal_action=integrate` worktree 记录。
8
8
  2. 追溯双方意图:commit message、冻结的 source、Spec、Ticket、ADR、测试和调用者。二者缺失时不凭代码表面猜测产品行为。
9
9
  3. 逐 conflict hunk 写出双方意图、共同约束和建议结果。只合并既有意图;需要发明新行为或改变上层合同则停止并登记 deviation。
10
- 4. 在获授权可写范围内解决文本,运行受影响测试、typecheck、lint 和项目要求的验证。
11
- 5. 分别展示并确认 `git add`、`git merge/rebase --continue` 和最终 commit 动作。没有授权时保存已分析方案、剩余文件和精确恢复命令,不擅自继续。
12
- 6. 重读 Git 状态和 diff,确认无 marker、无未声明路径、双方要求及测试仍成立。
10
+ 4. 在获授权可写范围内解决文本,运行受影响测试、typecheck、lint 和项目要求的验证。能从既有权威唯一推导的冲突直接处理,不把“发生冲突”本身升级为人工确认。
11
+ 5. 若当前 merge 来自匹配记录的本地集成,`terminal_action=integrate` 已授权 `git add`、继续 merge 和一次集成专用 commit;验证通过后直接完成,不逐动作请求确认。其他 merge/rebase 仍分别取得 Git 副作用授权;没有授权时保存分析、剩余文件和精确恢复命令。
12
+ 6. 需要发明新产品行为、改变 Spec/ADR、安全/迁移决定、越过路径 owner 或无法保持双方既有意图时停止;由从干净目标开始的自动集成执行 `git merge --abort`,记录 blocker 并保留来源 worktree。普通冲突现场不擅自 abort。
13
+ 7. 重读 Git 状态、parents 和 diff,确认无 marker、无未声明路径、双方要求及测试仍成立。
13
14
 
14
15
  ## 完成标准
15
16
 
16
17
  - 每个 hunk 的结果可追溯到双方意图;
17
18
  - 新产品决定没有藏在冲突解决中;
18
19
  - 项目验证有命令、退出码和关键输出;
19
- - Git 副作用逐动作获得授权;
20
+ - Git 副作用来自逐动作授权,或来自可核对 worktree 记录中的持久本地集成授权;
20
21
  - 完成或暂停状态可以从 Evidence 和 Git 状态恢复。
@@ -122,6 +122,7 @@ 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 Team 只决定角色与交付合同;是否使用 worktree 只由 change 的隔离事实决定。只读辅助 Agent 不成为第二写入者。
125
126
 
126
127
  共享规则:
127
128
 
@@ -145,7 +146,7 @@ Archive 归档历史并将经验证知识提升为当前长期知识
145
146
  6. 只加载当前步骤需要的 work 子文件和共享规则。
146
147
  7. 完成后写入产物、运行适用校验、更新状态和 `works_run`。
147
148
 
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。
149
+ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>`:`coordination_mode: lead-team` 时由 Lead 拥有转换;`single-session` 或无 Goal Plan 的实现由最后一个 I 拥有;旧 Goal Plan 按完整委派附录兼容推导。非实现型终点由最终验收工件 owner 拥有,Archive 不补造 completed。
149
150
 
150
151
  ## 状态字段
151
152
 
@@ -162,7 +163,7 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
162
163
 
163
164
  `active[].change` 必须唯一,且不得同时出现在 `archived`。开始 Work 时设置 `current_work`;暂停或可恢复阻塞时保留;成功完成时加入 `works_run` 并清空;取消时清空但不加入。逐次时间、结果和审计证据由 change 自有状态、Work 主产物、Evidence 或 LOG 承载,不写入全局索引。
164
165
 
165
- `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `worktrees` 保存 Ticket 级 `base_sha`、分支、可迁移 `workspace_ref` 和生命周期状态。
166
+ `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `worktrees` 保存 Ticket 级 `base_sha`、父分支、owners、可迁移 `workspace_ref`、结束动作、来源/结果 checkpoint、验证与生命周期状态。旧 v3 记录保持可读;出现 `terminal_action` 时启用完整集成合同。本版本新增的 `integrating` 不属于 legacy 状态,必须始终携带完整合同。
166
167
 
167
168
  领域状态枚举:
168
169
 
@@ -171,7 +172,7 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
171
172
  - Investigation status:`open | closed`
172
173
  - Investigation resolution:`answered | out-of-scope | superseded | cancelled | null`
173
174
  - Planning Depth:`lite | standard | deep`
174
- - Worktree:`planned | active | review | integrated | removed | blocked`
175
+ - Worktree:`planned | active | review | integrating | integrated | removed | blocked`
175
176
 
176
177
  ## 路径分配
177
178
 
@@ -182,7 +183,7 @@ Change 从 active/blocked 转为 completed 时加载 `<Path>{roots.workflows}/sp
182
183
 
183
184
  ## 副作用边界
184
185
 
185
- 未经用户明确授权不得提交、推送、合并、删除分支或 worktree、部署、发布、移动归档、写入/关闭远程 Issue 或执行不可逆迁移。只读探索、生成 change 工件和已授权验证可以进行。远程开发投影仅由 Triage reconcile 执行;Retro command 的 Speculo 反馈 Issue 是独立 command 边界。敏感值不得写入 `<Path>{roots.state}/specdev/</Path>`。
186
+ 未经用户明确授权不得提交、推送、合并、删除分支或 worktree、部署、发布、移动归档、写入/关闭远程 Issue 或执行不可逆迁移。Worktree 记录中的 `terminal_action=integrate` 是对应 Ticket 的持久本地集成授权,包含必要的集成专用 merge commit,但不授权普通实现提交或任何远端/清理动作。只读探索、生成 change 工件和已授权验证可以进行。远程开发投影仅由 Triage reconcile 执行;Retro command 的 Speculo 反馈 Issue 是独立 command 边界。敏感值不得写入 `<Path>{roots.state}/specdev/</Path>`。
186
187
 
187
188
  ## 场景路由
188
189
 
@@ -11,7 +11,7 @@ keywords: [目标规划, 编排, DAG, Gate, Wave, Lead, Subagent, checkpoint,
11
11
 
12
12
  Goal Plan 只解决单个 Ticket 无法独立决定的事情:跨 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
+ 协作拓扑与工作区拓扑是两个正交决定。`coordination_mode: single-session` 是默认值:主会话拥有全部项目与状态写入,只读探索可以使用辅助 Agent;只有用户明确选择时才进入 `lead-team` 并建立 Lead/Worker 交付合同。`workspace_strategy` 则根据 change/Ticket 的实际隔离需求独立确定,Agent Team 本身既不要求也不禁止 worktree。
15
15
 
16
16
  产物写入 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`。
17
17
 
@@ -50,17 +50,18 @@ Spec 或 Tickets Map 不存在时,返回 `<Path>{roots.workflows}/specdev/S-sp
50
50
 
51
51
  ## 流程
52
52
 
53
- ### 1. 验证上游并确认角色分支
53
+ ### 1. 验证上游并锁定执行拓扑
54
54
 
55
55
  加载 `<Path>{roots.workflows}/specdev/P-goal-plan/planning-modes.md</Path>`:
56
56
 
57
57
  1. 验证 Spec Ready、Ticket Ready、合同覆盖、DAG、路径所有权和 Deep Ticket 完整性;
58
58
  2. 只读探索会影响调度的代码事实和项目约束;
59
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>`。
60
+ 4. 未获得用户对 Lead Team 的明确选择时固定 `coordination_mode: single-session`;只读探索 Agent 不改变该值;
61
+ 5. 用户明确选择 Lead Team 时固定 `coordination_mode: lead-team`,再选择 `native-subagent` `external-web-subagent`;
62
+ 6. 按每个 Ticket 的可观察事实选择 current 或 worktree,并汇总为 `workspace_strategy: current | worktree | mixed`;
63
+ 7. 只对无法发现且会改变 Gate、Wave、owner、迁移、批准点或隔离策略的问题继续提问;
64
+ 8. 不熟悉的外部标准或依赖使用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。
64
65
 
65
66
  任何硬停止问题都必须退回拥有该决策的上游工件,不得用 Goal Plan 覆盖。
66
67
 
@@ -73,21 +74,28 @@ Spec 或 Tickets Map 不存在时,返回 `<Path>{roots.workflows}/specdev/S-sp
73
74
  3. 为 shared path、共享合同和集中变更指定唯一 owner;
74
75
  4. 为行为闭环、合同稳定、迁移完成、发布就绪等关键状态定义 Gate;
75
76
  5. 明确 expand → migrate → contract、Evidence 返回和集成规则;
76
- 6. 定义每个 Ticket 的开始条件、执行顺序、验证、Evidence 目标和失败恢复,不复制 Ticket 全文。
77
+ 6. 定义每个 Ticket 的开始条件、执行顺序、workspace 分配、验证、Evidence 目标和失败恢复,不复制 Ticket 全文;
78
+ 7. 只有存在允许的隔离触发条件时才规划 worktree,并固定 workspace owner、integration owner、父分支和结束动作。
77
79
 
78
80
  **完成标准**:DAG、Wave、Gate 与 Tickets Map 一致;每个计划 Ticket 都有唯一 owner、可验证开始条件、Evidence 目标和恢复路径。
79
81
 
80
- ### 3. 按确认加载委派分支
82
+ ### 3. 按两个维度加载条件分支
81
83
 
82
- 只有用户在本次运行选择委派 Goal Plan 时:
84
+ `workspace_strategy` `worktree` 或 `mixed` 时:
85
+
86
+ 1. 加载 `<Path>{roots.workflows}/specdev/P-goal-plan/workspace-execution-template.md</Path>`;
87
+ 2. 为每个隔离 Ticket 记录合法触发事实、固定基线、父分支、implementation owner、integration owner、可迁移 locator 和 `integrate | retain`;
88
+ 3. 按需以规划输入调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`,不在规划阶段创建工作区。
89
+
90
+ 只有 `coordination_mode: lead-team` 时:
83
91
 
84
92
  1. 加载 `<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution.md</Path>`;
85
93
  2. 以 `operation=plan` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`;
86
94
  3. 固定唯一 Lead、native/external provider、不可变 checkpoint、可恢复 locator、逐动作授权和修正上限;
87
95
  4. 生成里程碑 Delivery Contract 与每个 Ticket 的独立 Dispatch Packet;
88
- 5. 并行写代码时按需调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`。
96
+ 5. 为每个派单标记 `lead-write | worker-write | read-only`;`worker-write` 必须引用隔离 workspace 分配。
89
97
 
90
- 普通 Goal Plan 跳过本步骤,不加载上述委派能力,也不在最终产物中留下该分支的标题、字段或占位。
98
+ `single-session` 跳过委派能力,但仍可加载独立 workspace 附录;`lead-team` 在没有隔离触发条件时也不得制造 worktree。
91
99
 
92
100
  ### 4. 定义整体完成、证据与恢复
93
101
 
@@ -115,12 +123,12 @@ Spec 或 Tickets Map 不存在时,返回 `<Path>{roots.workflows}/specdev/S-sp
115
123
  5. Constraints, Risk and Recovery;
116
124
  6. Progress and Decisions。
117
125
 
118
- 用户选择委派时,在第 4 节加入 `<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution-template.md</Path>` 的完整内容;没有选择时不加入任何委派痕迹。Ticket 较多时在 Execution Graph 内增加速查表,不创建独立的第二套状态来源。
126
+ workspace strategy 需要隔离时加入 `<Path>{roots.workflows}/specdev/P-goal-plan/workspace-execution-template.md</Path>`;当 coordination mode 为 Lead Team 时加入 `<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution-template.md</Path>`。两个附录互不蕴含,可单独或同时出现。Ticket 较多时在 Execution Graph 内增加速查表,不创建独立的第二套状态来源。
119
127
 
120
128
  ### 6. 同步与验证
121
129
 
122
130
  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 不记录角色分支;
131
+ 2. 对照 `<Path>{roots.workflows}/specdev/common/schemas/goal-plan.schema.json</Path>`,确认 coordination 与 workspace 两个字段成对存在且组合有效;
124
132
  3. 运行:
125
133
 
126
134
  ```bash
@@ -130,8 +138,8 @@ node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
130
138
  ```
131
139
 
132
140
  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;
141
+ 5. 原子写入 Goal Plan 和同步投影后重新读取,确认核心 DAG/Wave/Gate/owner、两个执行维度和授权一致;存在 workspace 附录时核对触发条件与集成字段,存在委派附录时核对 Lead、checkpoint、locator、Delivery Contract 与 Dispatch Packet
142
+ 6. 向用户汇报规划模式、协作方式、workspace 分配、关键路径、Wave、Gate、shared owner、迁移策略、主要风险和 Ready 状态;Lead Team 再汇报交付通道与 Lead;
135
143
  7. 未经用户要求,不自动进入实现。
136
144
 
137
145
  ## 决策完备标准
@@ -144,7 +152,7 @@ node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
144
152
  - 迁移、兼容、收缩、发布和回滚顺序;
145
153
  - Evidence 返回、集成、偏差、暂停和批准路径。
146
154
 
147
- 委派 Goal Plan 还必须锁定 Agent 派单上下文、execution model、Lead、checkpoint、locator、修正上限和逐动作授权。普通 Goal Plan 不包含这些内容。
155
+ 每份新 Goal Plan 必须锁定 coordination mode 与 workspace strategy。Lead Team 还必须锁定 Agent 派单上下文、execution model、Lead、checkpoint、locator、修正上限和逐动作授权;single-session 不包含这些角色内容。Worktree/mixed 还必须锁定逐 Ticket 隔离触发、父分支、integration owner 与结束动作;current 不包含隔离占位。
148
156
 
149
157
  Goal Plan 不应重复 Ticket 的局部执行路线、全部文件预测、局部验收 checklist 或 Spec 的完整用户故事。
150
158
 
@@ -153,8 +161,8 @@ Goal Plan 不应重复 Ticket 的局部执行路线、全部文件预测、局
153
161
  - `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 已写入且只包含适用内容;
154
162
  - 所有计划内 Ticket Ready,DAG 无环,合同覆盖明确;
155
163
  - Wave、Gate、owner、集成、偏差和恢复可执行;
156
- - 普通计划没有委派角色、交付合同或空占位;
157
- - 委派计划的 Delivery Contract 与每个 Dispatch Packet 完整可恢复;
164
+ - `single-session` 没有委派角色、交付合同或空占位,`lead-team` 的 Delivery Contract 与每个 Dispatch Packet 完整可恢复;
165
+ - current strategy 没有 worktree、Ticket branch 或逐 Ticket merge 安排;worktree/mixed 的每条分配都有实际触发事实和可恢复集成合同;
158
166
  - Tickets Map 投影已同步;
159
167
  - 无未批准高影响假设或硬停止问题;
160
168
  - `<Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path>` 无 error;
@@ -167,5 +175,6 @@ Goal Plan 不应重复 Ticket 的局部执行路线、全部文件预测、局
167
175
  - 委派执行协议:`<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution.md</Path>`,仅用户选择委派时加载
168
176
  - 完成、证据、偏差与恢复:`<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>`
169
177
  - Goal Plan 核心模板:`<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>`
178
+ - 隔离 workspace 附录模板:`<Path>{roots.workflows}/specdev/P-goal-plan/workspace-execution-template.md</Path>`,仅 worktree/mixed 时加载
170
179
  - 委派附录模板:`<Path>{roots.workflows}/specdev/P-goal-plan/delegated-execution-template.md</Path>`,仅用户选择委派时加载
171
180
  - Agent 交付合同:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`,仅用户选择委派时调用
@@ -22,8 +22,8 @@ Goal Plan 用紧凑摘要表达业务目标、受众、所有 Ticket 完成后
22
22
 
23
23
  最后一个 Gate 关闭后加载 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>`:
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
+ - `coordination_mode: single-session` 时,由最后一个计划内 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 汇总并完成 change;
26
+ - `coordination_mode: lead-team` 时,由 Lead 在独立验收后完成 change;旧 Goal Plan 缺少该字段时,继续按完整 Delegated Execution Addendum 是否存在推导。
27
27
 
28
28
  若 triage 的 `external_action` 为 `pending-close` 或 `close-failed`,下一 Work 为 `<Path>{roots.workflows}/specdev/T-triage/T-triage.md</Path>`,否则进入 Archive。远程动作不参与本地 Gate 判断。
29
29
 
@@ -53,6 +53,6 @@ BLOCKER id=<id> owner=<owner> needed=<decision-or-input> impact=<scope>
53
53
  DECISION id=<id> owner=<owner> status=pending|approved|rejected impact=<scope>
54
54
  ```
55
55
 
56
- 委派 Goal Plan 的交付状态格式由委派协议提供,不加入普通 Goal Plan。
56
+ Lead Team 的交付状态格式由委派协议提供,不加入 single-session Goal Plan。
57
57
 
58
58
  **完成标准**:进度可由权威工件恢复;普通计划由最后一个 Implement 完成,委派计划由 Lead 完成;所有通过、阻塞和未验证声明均能定位到具体 Evidence 与代码事实。
@@ -6,11 +6,12 @@
6
6
  |---|---|
7
7
  | Execution model | native-subagent / external-web-subagent |
8
8
  | Lead / Provider | `<owner>` / `<provider>` |
9
- | Repository / Branch | `<repository-or-local>` / `<branch>` |
9
+ | Repository / Source baseline | `<repository-or-local>` / `<immutable-checkpoint>` |
10
10
  | Checkpoint policy | immutable SHA / equivalent fixed baseline |
11
11
  | Source delivery | repository-url / source-package / combination |
12
12
  | Max concurrency / corrections | `<n>` / `3` |
13
13
  | Review | standards + spec + Lead verification + conditional E2E |
14
+ | Mutation policy | read-only / lead-write / worker-write;worker-write 必须引用隔离 workspace |
14
15
 
15
16
  ### Per-Ticket Dispatch Packets
16
17
 
@@ -22,12 +23,13 @@
22
23
  - **Authority / dependencies:** 相关合同、ADR/CONTEXT、已完成依赖 Evidence
23
24
  - **Wave / Gate / hard constraints:**
24
25
  - **Writable / read-only / shared owner:**
25
- - **Baseline / branch / workspace or session locator / package hash:**
26
+ - **Mutation role / workspace allocation:** read-only / lead-write / worker-write;current 或对应 isolated allocation
27
+ - **Baseline / workspace or session locator / package hash:**
26
28
  - **Preflight receipt:** 在 `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` 记录目标、顺序、最大风险和基线差异,不超过 10 行
27
29
  - **Verification / baseline / reverse check:**
28
30
  - **Authorization / deviation / correction limit:**
29
31
  - **Return:** 状态、Evidence、locator、最终 checkpoint、commit/PR、未验证项、待 Lead E2E
30
32
 
31
- ### Candidate Delivery Return and Lead Integration
33
+ ### Candidate Delivery Return and Lead Acceptance
32
34
 
33
- Worker 将 Ticket 推进到 `review` 并返回候选交付;Lead 负责独立验证、适用 E2E、集成、Gate 关闭和 worktree 收尾。达到修正上限时保留最后可信 checkpoint、失败命令、已通过行为和恢复条件。
35
+ Worker 将 Ticket 推进到 `review` 并返回候选交付;Lead 负责独立验证、适用 E2E、候选验收和 Gate 判断。Git 集成只在独立 workspace 合同指定 Lead 为 integration owner 时发生;达到修正上限时保留最后可信 checkpoint、失败命令、已通过行为和恢复条件。
@@ -1,10 +1,10 @@
1
1
  # Goal Plan 委派执行协议
2
2
 
3
- 只有用户在本次 P-goal-plan 运行中选择委派 Goal Plan 时加载。该分支同时启用唯一 Lead 与 native/external subagent;不支持 Lead-only,也不把本协议用于普通 Goal Plan。
3
+ 只有用户在本次 P-goal-plan 运行中明确选择 `coordination_mode: lead-team` 时加载。该分支启用唯一 Lead 与 native/external Worker,但不决定 workspace strategy;Agent Team 可以只做只读分工,也可以与独立 worktree 组合。
4
4
 
5
5
  ## 1. Lead 与 Delivery Contract
6
6
 
7
- Lead 负责源码基线、DAG、Wave、shared owner、Gate、权限、Evidence 汇总和集成;已派发 Ticket 的实现由对应执行者负责,Lead 不制造双重 owner
7
+ Lead 负责源码基线、DAG、Wave、shared owner、Gate、权限、Evidence 汇总和最终验收;已派发写入 Ticket 的实现由对应执行者负责,Lead 不制造双重 owner。只有 workspace addendum 将 Lead 指定为 integration owner 时,Lead 才拥有对应 Git 集成。
8
8
 
9
9
  委派分支选择唯一 execution model:`native-subagent` 或 `external-web-subagent`。Lead 以 `operation=plan` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>` 生成里程碑 Delivery Contract;Implement 阶段以 `operation=execute` 调用同一 Skill 做恢复和验收。
10
10
 
@@ -17,7 +17,13 @@ Delivery Contract 必须固定:
17
17
  - local changes、commit、push、PR、merge、deploy、migration 和生产动作的逐项授权;
18
18
  - 完成、阻塞、偏差、恢复和返回协议。
19
19
 
20
- 并行写代码且配置允许时,Lead 为每个 Ticket 调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`。所有并行 Ticket 固定同一 `base_sha`,每个 Ticket 使用独立分支和 `workspace_ref`;Lead 创建、恢复、集成和清理,Worker 只推进到 `review`。
20
+ 每个 Dispatch Packet 必须标记 mutation role:
21
+
22
+ - `read-only`:Worker 只返回调查、审查、测试观察或建议;可用于任何 workspace strategy;
23
+ - `lead-write`:Lead 是该 Ticket 唯一写入者,可在 current 或分配给自己的 worktree 执行;
24
+ - `worker-write`:Worker 拥有 Ticket 写入,必须引用 Isolated Workspace Addendum 中唯一的 branch、`workspace_ref` 和 integration owner,不得写入 current workspace。
25
+
26
+ 多个 Worker 需要项目写入时,workspace 决策通常会因 `parallel-write` 触发 worktree,但触发来自写入事实而不是 Lead Team 身份。Worktree 生命周期继续由角色中立的 dev-worktree Skill 管理。
21
27
 
22
28
  ## 2. Dispatch Packet
23
29
 
@@ -28,7 +34,7 @@ Delivery Contract 必须固定:
28
34
  3. 相关 Spec 合同、ADR/CONTEXT 条目、Wave、Gate 和不可协商约束;
29
35
  4. 已完成依赖及其 Evidence;
30
36
  5. 项目 writable/read-only/shared 路径与唯一 shared owner;
31
- 6. `base_sha`、branch、workspace/session locator 和 source package hash;
37
+ 6. mutation role、workspace allocation、`base_sha`、workspace/session locator 和 source package hash;
32
38
  7. 必跑验证、基线、反向验证和明确不适用项;
33
39
  8. 当前授权、偏差升级、修正上限、Evidence 路径和返回字段。
34
40
 
@@ -42,12 +48,12 @@ Lead 接收候选交付时:
42
48
 
43
49
  1. 读取 Dispatch Packet、Ticket、Evidence、Goal Plan 和代码引用;
44
50
  2. 检查 checkpoint、附件 hash、路径授权、依赖和敏感信息边界;
45
- 3. 在隔离基线上应用交付并复跑定向验证和受影响回归;
51
+ 3. 按 mutation role 和 workspace allocation 核对交付,在声明基线上复跑定向验证和受影响回归;
46
52
  4. 仅当 UI 交互受影响时运行最小 E2E;
47
53
  5. provider 声明、模拟结果和静态推断在独立证据前保持 `unverified`;
48
- 6. 验证通过后集成,并按 dev-worktree Skill 更新或清理 worktree;
54
+ 6. 验证通过后接受候选交付;存在 `terminal_action=integrate` workspace 时交给其 integration owner 自动本地集成,否则按 current workspace 或 retain 合同继续;
49
55
  7. 同步 Ticket、Map、Evidence 和 Goal Plan,检查 Gate 是否可关闭。
50
56
 
51
57
  同一验收项达到修正上限时标记 blocker,记录最后 checkpoint、错误、已通过行为、责任方和恢复条件。
52
58
 
53
- **完成标准**:完整委派附录包含唯一 Lead、完整 Delivery Contract、每 Ticket Dispatch Packet 和候选交付验收协议;任何一部分缺失都不得视为 Ready。
59
+ **完成标准**:完整委派附录包含唯一 Lead、完整 Delivery Contract、每 Ticket Dispatch Packet、mutation role 和候选交付验收协议;它不隐式创建 worktree,任何一部分缺失都不得视为 Ready。
@@ -4,6 +4,8 @@ artifact: goal-plan
4
4
  change: <YYYY-MM-DD-topic>
5
5
  status: draft
6
6
  modes: [coordination]
7
+ coordination_mode: single-session
8
+ workspace_strategy: current
7
9
  ready_for_execution: false
8
10
  ---
9
11
 
@@ -68,6 +70,13 @@ ready_for_execution: false
68
70
 
69
71
  ## 4. Execution and Integration Protocol
70
72
 
73
+ ### Execution Topology
74
+
75
+ | 维度 | 决定 | 事实依据 |
76
+ |---|---|---|
77
+ | Coordination | single-session | 未启用严格角色分派;辅助调查只能返回只读结论 |
78
+ | Workspace | current | 没有并行写入或其他隔离触发条件 |
79
+
71
80
  ### Ticket Execution Order
72
81
 
73
82
  | Ticket | 开始条件 | 执行 owner | 必跑验证 | Evidence | 集成条件 |
@@ -78,8 +87,8 @@ ready_for_execution: false
78
87
  | 动作 | 状态 | 目标与条件 |
79
88
  |---|---|---|
80
89
  | Local changes | allowed / not-authorized | ... |
81
- | Commit | allowed / not-authorized | ... |
82
- | Push / PR / Merge | allowed / not-authorized | ... |
90
+ | Implementation commit | allowed / not-authorized | ... |
91
+ | Remote repository actions | allowed / not-authorized | ... |
83
92
  | Deploy / Migration | allowed / not-authorized | ... |
84
93
  | Production configuration / feature / real user data | allowed / not-authorized | ... |
85
94
 
@@ -23,6 +23,8 @@ Wave 内 Ticket 必须同时满足:
23
23
 
24
24
  最大并发从 `<Path>{roots.state}/specdev/config.json</Path>` 读取。并发上限是资源约束,不是必须填满的目标;Wave 也不意味着必须使用多个 Agent。
25
25
 
26
+ Wave、Agent Team 和 worktree 是三个不同概念。Wave 只表达依赖上可并发;是否委派由 coordination mode 决定,是否隔离写入由 workspace strategy 决定。只读并行不需要 worktree;同一 current workspace 只能有一个项目与状态写入 owner。
27
+
26
28
  ## 3. Gate
27
29
 
28
30
  Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条件。每个 Gate 必须写明业务或工程状态、开启条件、关闭证据、阻塞范围、owner/批准人和失败恢复。
@@ -53,7 +55,9 @@ Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条
53
55
 
54
56
  ## 6. Ticket 执行、Evidence 与集成
55
57
 
56
- 每个计划 Ticket 必须写明开始条件、依赖 Evidence、项目路径合同、适用 Gate、必跑验证、Evidence 目标和失败恢复。实际执行仍由 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 与 Ticket 拥有,不在 Goal Plan 复制局部施工步骤。
58
+ 每个计划 Ticket 必须写明开始条件、依赖 Evidence、项目路径合同、workspace 分配、适用 Gate、必跑验证、Evidence 目标和失败恢复。实际执行仍由 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 与 Ticket 拥有,不在 Goal Plan 复制局部施工步骤。
59
+
60
+ Current workspace Ticket 由该 workspace 的唯一写入 owner 顺序执行。隔离 Ticket 的创建、恢复和本地集成由 workspace addendum 与 dev-worktree Skill 管理;integration owner 是核心编排角色,不预设为 Lead。`single-session` 时通常映射为主会话,`lead-team` 时通常映射为 Lead。
57
61
 
58
62
  每个实现者完成或阻塞时:
59
63
 
@@ -62,6 +66,6 @@ Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条
62
66
  3. 检查依赖、路径所有权、合同覆盖和适用 Gate;
63
67
  4. 返回 Ticket 状态、Evidence 路径、代码引用、未验证项和恢复条件。
64
68
 
65
- 最后一个计划内 Implement 按 `<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>` 汇总核心计划的 Gate 和 Evidence。委派分支的候选交付与 Lead 集成由独立委派协议拥有,不写入本文件。
69
+ 最后一个计划内 Implement 按 `<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>` 汇总核心计划的 Gate 和 EvidenceLead Team 的候选交付验收由独立委派协议拥有;worktree 的 Git 集成由角色中立的 workspace 协议拥有。
66
70
 
67
- **完成标准**:每个执行结果可追溯到代码状态和 Evidence;普通 Goal Plan 可以在不建立角色交付合同的情况下完整恢复和完成。
71
+ **完成标准**:每个执行结果可追溯到代码状态和 Evidence;single-session Goal Plan 可以在不建立角色交付合同的情况下完整恢复和完成。
@@ -30,6 +30,8 @@
30
30
  - 当前代码事实使 Ticket 的核心行为、接口或验证不可执行;
31
31
  - 必需外部合同或参考权威不可获得;
32
32
  - 已选择委派,但 Lead、checkpoint、可恢复 locator 或交付通道无法建立;
33
+ - workspace strategy 为 worktree/mixed,但任一隔离 Ticket 缺少允许的 trigger、父分支、integration owner、可恢复 locator 或结束动作;
34
+ - `lead-team + current` 中存在 `worker-write`,或 current workspace 出现多个项目/状态写入 owner;
33
35
  - 用户要求的远程或生产动作没有逐动作授权。
34
36
 
35
37
  按 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>` 和 `<Path>{roots.workflows}/specdev/common/rules/deviation-control.md</Path>` 返回真正拥有该决策的工件。
@@ -44,16 +46,27 @@
44
46
 
45
47
  模式可以组合。仅有线性低风险 Ticket 时不应为了形式生成重型 Goal Plan。
46
48
 
47
- ## 4. 每次确认角色分支
49
+ ## 4. 锁定正交执行维度
48
50
 
49
- 规划模式描述为什么需要跨 Ticket 治理,不决定是否启用 Lead/subagent。每次运行 P 都向用户提供两个选择:
51
+ 规划模式描述为什么需要跨 Ticket 治理,不决定协作或工作区方式。每份新 Goal Plan 都必须分别记录:
50
52
 
51
- - **普通 Goal Plan**:由实现者按核心计划推进,不创建严格角色、交付通道或派单合同;最终产物不记录一个名为 direct 的模式。
52
- - **委派 Goal Plan**:启用唯一 Lead `native-subagent` 或 `external-web-subagent`,并加载委派协议。
53
+ - `coordination_mode: single-session | lead-team`;
54
+ - `workspace_strategy: current | worktree | mixed`。
53
55
 
54
- 不得根据 Ticket 数量、并行机会或平台能力静默启用委派。选择普通分支后,AI 自适应决定核心计划的适用细节,不把本次角色选择写入 frontmatter,也不在正文生成空章节或“不适用”说明。
56
+ `single-session` 是默认协作方式:主会话拥有全部项目和 SpecDev 状态写入,只读探索、日志分析、测试观察和审查 Agent 可以返回结论,但不得成为第二写入者。只有用户明确要求或确认严格角色分派时才能使用 `lead-team`;不得根据 Ticket 数量、并行机会或平台能力静默启用。
55
57
 
56
- 选择委派后才固定:Lead、provider、repository/branch、不可变 `base_sha` 或等价基线、源码交付方式、`max_correction_rounds` 和逐动作授权。认证秘密和机器绝对路径不得进入 Goal Plan。
58
+ Workspace 按 Ticket 判断,允许触发只有:`parallel-write`、`protect-local-state`、`disposable-experiment`、`background-resume`、`provider-requirement`、`user-requested`。每个触发必须引用实测事实;Agent TeamTicket 数量、只读并行、顺序写入或泛化的“更安全”都不是触发条件。全部 Ticket 使用当前工作区时为 `current`;全部项目写入位于隔离 workspace 时为 `worktree`;两者并存时为 `mixed`。
59
+
60
+ 四种组合均合法,但约束不同:
61
+
62
+ | Coordination | Workspace | 写入约束 |
63
+ |---|---|---|
64
+ | single-session | current | 主会话唯一写入 |
65
+ | single-session | worktree/mixed | 主会话管理并集成隔离写入 |
66
+ | lead-team | current | Lead 唯一写入,Worker 只读 |
67
+ | lead-team | worktree/mixed | `worker-write` 每项绑定独立 workspace,Lead 默认承担 integration owner |
68
+
69
+ 选择 Lead Team 后固定 Lead、provider、repository、不可变 `base_sha` 或等价基线、源码交付方式、`max_correction_rounds` 和逐动作授权。选择 worktree/mixed 后固定每项的 trigger、workspace owner、integration owner、父分支、locator、来源 checkpoint 策略和结束动作。认证秘密和机器绝对路径不得进入 Goal Plan。
57
70
 
58
71
  ## 5. 规划摘要
59
72
 
@@ -61,6 +74,8 @@
61
74
 
62
75
  ```text
63
76
  modes=<mode-list>
77
+ coordination_mode=single-session|lead-team
78
+ workspace_strategy=current|worktree|mixed
64
79
  tickets=<count>
65
80
  critical_path=<ticket-list>
66
81
  parallel_capacity=<n>
@@ -71,6 +86,6 @@ hard_stops=<none-or-list>
71
86
  adopted_assumptions=<low-impact-only>
72
87
  ```
73
88
 
74
- 委派分支额外形成 `execution_model`、`lead`、`provider`、`checkpoint`、`source_delivery`、`max_correction_rounds` 和 locator;这些字段只进入委派附录。
89
+ Lead Team 额外形成 `execution_model`、`lead`、`provider`、`checkpoint`、`source_delivery`、`max_correction_rounds` 和 locator;worktree/mixed 额外形成逐 Ticket workspace allocation。两类字段分别只进入各自附录。
75
90
 
76
- **完成标准**:规划 modes 与角色选择互不代替;普通计划没有委派痕迹;委派计划的源码、交付、权限和恢复字段都有可验证值。
91
+ **完成标准**:规划 modes、coordination mode 与 workspace strategy 互不代替;single-session 没有委派痕迹;current 没有隔离安排;所有条件分支的源码、交付、权限和恢复字段都有可验证值。
@@ -0,0 +1,24 @@
1
+ ## Isolated Workspace Addendum
2
+
3
+ 只在 `workspace_strategy: worktree` 或 `workspace_strategy: mixed` 时加入。它独立于 Agent Team:单会话和 Lead Team 都可加载本附录。
4
+
5
+ ### Workspace Decision
6
+
7
+ | 字段 | 值 |
8
+ |---|---|
9
+ | Strategy | worktree / mixed |
10
+ | Trigger | parallel-write / protect-local-state / disposable-experiment / background-resume / provider-requirement / user-requested |
11
+ | Current-workspace writer | `<primary-session-or-lead>` |
12
+ | Integration serialization | 每次只允许一个 integration owner 修改目标父分支 |
13
+
14
+ ### Per-Ticket Workspace Allocation
15
+
16
+ | Ticket | Trigger and evidence | Implementation owner | Integration owner | Provider | Base SHA | Parent branch | Branch / workspace ref | Terminal action |
17
+ |---|---|---|---|---|---|---|---|---|
18
+ | T-01 | `<allowed-trigger>: <observed-fact>` | `<owner>` | `<owner>` | git / native / external | `<immutable-sha>` | `<parent-branch>` | `<branch>` / `<portable-locator>` | integrate / retain |
19
+
20
+ ### Local Integration Authorization
21
+
22
+ `terminal_action=integrate` 持久授权 integration owner 执行本 Ticket 的本地 fast-forward,或在分叉时完成 `git add`、`git merge --continue` 和一次集成专用 merge commit。普通实现提交、push、PR、远端 merge、部署、迁移以及删除 branch/worktree 不从该授权继承。
23
+
24
+ 来源 checkpoint、路径审计和验证通过后才可从 `review` 进入 `integrating`。集成成功写入 result SHA 与 Evidence;失败时中止正在进行的 merge、保留来源 workspace,并记录 blocker 和恢复条件。
@@ -44,8 +44,8 @@
44
44
  - 包与 change 校验器:`<Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path>`
45
45
  - 校验器说明:`<Path>{roots.workflows}/specdev/common/tools/README.md</Path>`
46
46
  - 外部技术研究 Skill:`<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`
47
- - 隔离 Ticket/原型 worktree Skill:`<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`,角色中立;委派 Goal Plan 才映射为 Lead/Worker
48
- - 委派 Agent 交付合同 Skill:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`,仅用户选择委派 Goal Plan 时调用
47
+ - 隔离 Ticket/原型 worktree Skill:`<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`,角色中立;由 change 的隔离事实触发,Agent Team 只影响 owner 映射
48
+ - 委派 Agent 交付合同 Skill:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`,仅用户明确选择 lead-team 时调用
49
49
  - 双轴代码审查 Skill:`<Path>{roots.workflows}/specdev/common/skills/code-review/SKILL.md</Path>`
50
50
 
51
51
  ## 加载原则
@@ -15,8 +15,9 @@
15
15
 
16
16
  ## 转换 Owner
17
17
 
18
- - Goal Plan 含完整 `## Delegated Execution Addendum`:Lead 在独立验收并关闭最后一个 Gate 后拥有完成转换。
19
- - Goal Plan 不含委派附录,或无 Goal Plan 的 Ticket/Direct Spec 实现:最后一个计划内 Implement 在最后一项验收通过后拥有完成转换。
18
+ - Goal Plan `coordination_mode: lead-team`:Lead 在独立验收并关闭最后一个 Gate 后拥有完成转换。
19
+ - Goal Plan `coordination_mode: single-session`,或无 Goal Plan 的 Ticket/Direct Spec 实现:最后一个计划内 Implement 在最后一项验收通过后拥有完成转换。
20
+ - 旧 Goal Plan 缺少 coordination 字段时,根据完整 `## Delegated Execution Addendum` 是否存在兼容推导,不要求 runtime schema 迁移。
20
21
  - 非实现型终点:最后一个拥有最终验收工件的 Work 使用本规则完成转换。
21
22
 
22
23
  Owner 原子更新 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `change_status`、`completed_at`、`updated_at` 和 `current_work`,然后重读验证。全局 `<Path>{roots.state}/specdev/status.json</Path>` 继续只保存 active 索引,不复制完成详情。