@namewta/speculo 0.7.3 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/src/migrations.js +190 -39
  2. package/dist/src/migrations.js.map +1 -1
  3. package/package.json +1 -1
  4. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +51 -15
  5. package/template/canonical/canonical-specdev-goal-plan.md +183 -116
  6. package/template/canonical/canonical-specdev-grill-with-docs.md +51 -15
  7. package/template/canonical/canonical-specdev-spec.md +61 -21
  8. package/template/canonical/canonical-specdev-tickets.md +83 -43
  9. package/template/canonical/canonical-specdev-wayfinder.md +51 -15
  10. package/template/skills/migrate-runtime-state/references/migration-contract.md +3 -3
  11. package/template/skills/migrate-runtime-state/scripts/migrate-runtime-state.mjs +94 -12
  12. package/template/workflows/specdev/I-implement/I-implement.md +27 -26
  13. package/template/workflows/specdev/I-implement/evidence-template.md +18 -12
  14. package/template/workflows/specdev/I-implement/execution-preflight.md +11 -9
  15. package/template/workflows/specdev/I-init-setup/I-init-setup.md +2 -2
  16. package/template/workflows/specdev/I-init-setup/change-status-template.json +3 -3
  17. package/template/workflows/specdev/I-init-setup/config-template.json +5 -2
  18. package/template/workflows/specdev/INDEX.md +6 -6
  19. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +16 -16
  20. package/template/workflows/specdev/P-goal-plan/completion-control.md +8 -8
  21. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +20 -14
  22. package/template/workflows/specdev/P-goal-plan/lead-orchestration.md +5 -5
  23. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +13 -13
  24. package/template/workflows/specdev/P-goal-plan/planning-modes.md +27 -15
  25. package/template/workflows/specdev/P-prototype/ui-prototype.md +1 -1
  26. package/template/workflows/specdev/T-tickets/T-tickets.md +4 -4
  27. package/template/workflows/specdev/T-tickets/ticket-readiness.md +3 -3
  28. package/template/workflows/specdev/T-tickets/ticket-template.md +6 -6
  29. package/template/workflows/specdev/T-tickets/tickets-map-template.md +2 -2
  30. package/template/workflows/specdev/common/README.md +1 -1
  31. package/template/workflows/specdev/common/rules/change-completion.md +2 -2
  32. package/template/workflows/specdev/common/rules/evidence-and-verification.md +10 -6
  33. package/template/workflows/specdev/common/rules/path-ownership.md +4 -4
  34. package/template/workflows/specdev/common/schemas/change-status.schema.json +31 -4
  35. package/template/workflows/specdev/common/schemas/config.schema.json +12 -6
  36. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +15 -6
  37. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +3 -3
  38. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +1 -1
  39. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +4 -4
  40. package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +1 -1
  41. package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +4 -4
  42. package/template/workflows/specdev/common/tools/README.md +2 -1
  43. package/template/workflows/specdev/common/tools/validate-specdev.mjs +261 -66
@@ -11,7 +11,7 @@ keywords: [目标规划, Lead, Subagent, DAG, Gate, Wave, worktree, candidate-me
11
11
 
12
12
  Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、跨 Ticket 顺序与并发、共享所有权、里程碑 Gate、动态派单边界、父分支集成、迁移/发布顺序、偏差升级和恢复。Ticket 继续拥有局部实现合同。
13
13
 
14
- 每次 Goal Plan 都采用 `lead-directed`:当前主会话是唯一 Lead,负责计划、SpecDev 状态、Evidence、派单、候选验收、父分支集成和最终回复。Lead 可以根据实际依赖与平台能力动态派遣 subagent,不需要用户预选协作模式。Agent 编排与 worktree 隔离是正交关系;每个进入 I-implement Ticket 都必须拥有独立 worktree,无论由 Lead 还是 implementation subagent 实现。
14
+ 每次 Goal Plan 都采用 `lead-directed`:当前主会话是唯一 Lead,负责计划、SpecDev 状态、Evidence、派单、验收、父分支推进和最终回复。形成 Goal Plan 时必须询问是否开启 worktree 开发,默认不开启;选择写入当前 Goal Plan,不修改全局配置。不开启时 Ticket 严格串行,允许动态派遣 implementation subagent,但同一时间只有一个 implementation owner 可写当前 workspace;开启时沿用每 Ticket 独立 worktree 与 candidate-merge。
15
15
 
16
16
  产物写入 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`。
17
17
 
@@ -26,7 +26,7 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
26
26
  - Ticket DAG 的关键路径、汇合点或恢复策略无法由 Tickets Map 安全表达;
27
27
  - 用户明确要求正式跨 Ticket Plan。
28
28
 
29
- 少量、线性、低风险的 Ready Tickets 可以跳过本 work,由 I-implement Ticket 建立 worktree 并执行。没有 Ticket 的获批小型 Direct Spec 不受 Ticket worktree 合同约束;一旦需要切片,先运行 T-tickets。
29
+ 少量、线性、低风险的 Ready Tickets 可以跳过本 work,由 I-implement 按当前 Goal Plan workspace 策略执行。没有 Ticket 的获批小型 Direct Spec 不受 Ticket workspace 合同约束;一旦需要切片,先运行 T-tickets。
30
30
 
31
31
  ## 输入
32
32
 
@@ -58,8 +58,8 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
58
58
  1. 验证 Spec、Tickets、合同覆盖、DAG、路径所有权和 Deep Ticket 完整性;
59
59
  2. 只读探索影响调度的代码与项目事实;
60
60
  3. 识别 migration、high-assurance、reference-conformance、release-coordination 等适用模式;
61
- 4. 从 config 读取 `max_implementation_agents`,将实际上限写入 `implementation_agent_limit`;本计划可以降低但不得超过 `3`,Lead 不计入;
62
- 5. 确认实现 commit 与本地候选集成已获授权;缺一项则计划保持 blocked;
61
+ 4. 从 config 读取 `max_implementation_agents` `max_integration_attempts`,将实际值快照到 `implementation_agent_limit` 与 `integration_attempt_limit`;本计划可以降低但不得超过 config 或平台能力,Lead 不计入;
62
+ 5. 根据 workspace 策略确认实现 commit direct-parent/candidate integration 已获授权;缺一项则计划保持 blocked;
63
63
  6. 只询问无法发现且会改变 Gate、Wave、owner、迁移、批准或验收的问题。
64
64
 
65
65
  **完成标准**:所有计划内 Ticket Ready;Lead、授权、实现并发上限和父分支可判定;没有用 Goal Plan 掩盖上游缺口。
@@ -71,9 +71,9 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
71
71
  1. 压缩 Outcome、成功/伪完成、非目标和权威来源;
72
72
  2. 从 Ticket frontmatter 构建 DAG、关键路径、扇出与汇合点;
73
73
  3. 为 shared path、共享合同和集中修改指定唯一 owner;
74
- 4. 将依赖满足且项目写路径不相交的 Ticket 分入 Wave;
74
+ 4. 将依赖满足且项目写路径不相交的 Ticket 分入 Wave;current 模式仍按依赖顺序串行执行,不得把 Wave 当作并发授权;
75
75
  5. 为合同稳定、垂直路径、迁移完成、发布就绪等状态定义 Gate;
76
- 6. 为每个 Ticket 记录开始条件、worktree、验证层级、Evidence 目标、集成顺序和失败恢复。
76
+ 6. 为每个 Ticket 记录开始条件、workspace 策略、验证层级、Evidence 目标、集成顺序和失败恢复。
77
77
 
78
78
  **完成标准**:DAG、Wave、Gate 与 Tickets Map 一致;每个 Ticket 有唯一项目写 owner、worktree 合同和可验证集成出口。
79
79
 
@@ -82,9 +82,9 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
82
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
84
  1. 固定 Lead 的可恢复 owner/session locator;
85
- 2. 声明 implementation subagent 最多同时三个,Lead 不计入;
85
+ 2. 声明 implementation subagent 的 config/平台约束上限,Lead 不计入;
86
86
  3. 不为只读 review/research/test-observation agent 写 SpecDev 数字上限;
87
- 4. 固定只有 Lead SpecDev 工件与状态;
87
+ 4. current 模式固定只有一个 implementation writer 写项目路径,Lead 仍是唯一 SpecDev 工件与状态写入者;required 模式 implementation owner 写自己的 Ticket worktree;
88
88
  5. 定义执行期动态 Dispatch Packet、候选返回和 Lead 验收;
89
89
  6. provider、模型和具体派单在 Ticket 开始时按事实选择,不在 Goal Plan 中预分配。
90
90
 
@@ -96,9 +96,9 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
96
96
 
97
97
  1. 定义整体 Definition of Done 和每个 Gate 的关闭证据;
98
98
  2. 固化不可协商约束与允许的局部实现自由;
99
- 3. 为每个 Ticket 明确 source-worktree 检查与 parent-candidate 检查;
99
+ 3. workspace 策略为每个 Ticket 明确 current-workspace/direct-parent 检查或 source-worktree/parent-candidate 检查;
100
100
  4. E2E 按 Ticket 实际跨边界风险标记 required 或 not-required;
101
- 5. 定义候选失败、父 HEAD 漂移、偏差、暂停、批准和恢复动作;
101
+ 5. 定义 direct-parent 验证失败、candidate 冲突/失败、父 HEAD 漂移、偏差、暂停、批准和恢复动作;
102
102
  6. 定义 change 完成、远程 reconcile、残余风险和回滚要求。
103
103
 
104
104
  **完成标准**:每个完成声明映射到不可变 commit、候选/父分支 SHA、命令、Evidence 或人工批准。
@@ -130,18 +130,18 @@ node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
130
130
  - 跨 Ticket 先后、Wave、Gate 和关键汇合点;
131
131
  - shared path 与共享合同 owner;
132
132
  - implementation subagent 上限及动态派单边界;
133
- - 每 Ticket worktreesource commit、候选验证和父分支推进规则;
133
+ - 每 Ticket workspaceimplementation commit、对应验证和父分支推进规则;
134
134
  - E2E disposition、偏差、暂停、批准和恢复路径。
135
135
 
136
136
  Goal Plan 不复制 Ticket 的局部施工路线、全部文件预测或逐项验收清单。
137
137
 
138
138
  ## 完成标准
139
139
 
140
- - Goal Plan schema v4 且 `ready_for_execution` 与状态一致;
141
- - Lead 唯一,最多三个 implementation subagentreview/research agent 不受 SpecDev 数字限制;
142
- - 每个实现 Ticket 都有 worktree、commit、candidate-merge 和 Evidence 出口;
143
- - source worktree 不承担 E2E,适用 E2E 只由 Lead 在 parent-candidate 状态运行;
144
- - 计划只保留当前固定 Lead candidate-merge 合同,不携带条件性编排附录;
140
+ - Goal Plan schema v6 且 `ready_for_execution` 与状态一致;
141
+ - Lead 唯一,implementation subagent 上限来自 config/平台能力,review/research agent 不受 SpecDev 数字限制;
142
+ - 每个实现 Ticket 都有 workspace、commit、对应 integration gate 和 Evidence 出口;
143
+ - current 模式不创建 source/candidate worktree,适用 E2E Lead 在 current workspace 运行;required 模式保持 source/parent-candidate 边界;
144
+ - 计划只保留当前固定 Lead 与选定 workspace/integration 合同;
145
145
  - validator 无 error,Tickets Map 投影同步,用户收到下一步选择。
146
146
 
147
147
  ## 子文件引用
@@ -5,20 +5,20 @@
5
5
  至少要求:
6
6
 
7
7
  - Spec 验收合同全部有通过 Evidence 或明确批准的 deferred;
8
- - 所有非 cancelled Ticket 都有 source commit、通过的 candidate 和父分支 result SHA;
8
+ - current 模式的非 cancelled Ticket 都有 implementation commit、通过的 direct-parent 验证和父分支 result SHA;required 模式都有 source commit、通过的 candidate 和父分支 result SHA;
9
9
  - shared path、接口、数据、兼容、迁移、调用点与回滚合同闭合;
10
10
  - 项目定向检查、受影响回归、类型检查、lint/build 和适用 E2E 无未经批准退化;
11
11
  - change 状态、Ticket、Map、Goal Plan、Evidence 与实际 Git 状态一致;
12
- - 没有未集成 source checkpoint、活动 integration candidate 或未决高影响偏差。
12
+ - 没有未集成 implementation/source checkpoint、活动 integration candidate 或未决高影响偏差。
13
13
 
14
14
  无需改动的 Ticket 必须转为 `cancelled` 并记录来源事实;不得用 Evidence-only Done 或 empty commit 关闭。
15
15
 
16
16
  ## 2. 两层验证
17
17
 
18
- - `source-worktree`:implementation owner 运行 Ticket 要求的单元、组件、静态、类型、lint/build 等非 E2E 检查;
19
- - `parent-candidate`:Lead 运行受影响集成/回归和 Ticket 标记 required E2E
18
+ - `current-workspace`:current 模式 implementation owner 运行 Ticket 要求的检查,Lead 在同一 workspace 运行受影响集成/回归和适用 E2E
19
+ - `source-worktree`/`parent-candidate`:required 模式由 implementation owner Lead 分别运行非 E2E 与集成/E2E 检查。
20
20
 
21
- Evidence 必须记录命令运行环境。任何在 source worktree 声称的 E2E pass 都无效;subagent 返回的测试结果在 Lead 核对前保持候选状态。
21
+ Evidence 必须记录命令运行环境。required 模式任何在 source worktree 声称的 E2E pass 都无效;subagent 返回的测试结果在 Lead 核对前保持候选状态。
22
22
 
23
23
  ## 3. Gate 关闭
24
24
 
@@ -26,10 +26,10 @@ Lead 在每个 Gate 汇总覆盖 Evidence、接口/数据/兼容状态、candida
26
26
 
27
27
  ## 4. 失败与恢复
28
28
 
29
- - source 检查失败:保留 worktree,继续当前 Ticket;
30
- - candidate 冲突或检查失败:父分支不动,integration 记 `failed`,Ticket 回到 `in_progress`/`blocked`;
29
+ - current/source 检查失败:保留当前 workspace 或 source worktree,继续当前 Ticket;
30
+ - direct-parent/candidate 冲突或检查失败:父分支不动,integration 记 `failed`,Ticket 回到 `in_progress`/`blocked`;
31
31
  - 父 HEAD 漂移:integration 记 `stale`,从最新父分支重建并重跑;
32
- - E2E required 失败:父分支不动,保留失败命令、candidate SHA 和恢复条件;
32
+ - E2E required 失败:父分支不动,保留失败命令、适用 checkpoint 和恢复条件;
33
33
  - 命中当次 Dispatch Packet/候选协议的停止条件、继续修正已无合理收益或需要新产品决定:停止受影响 Wave,按 deviation control 返回契约 owner;
34
34
  - Lead 会话变化:读取 Goal Plan、Ticket、change worktree 状态与最新 Evidence,从最后不可变 checkpoint 恢复。
35
35
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- schema_version: 5
2
+ schema_version: 6
3
3
  artifact: goal-plan
4
4
  change: <YYYY-MM-DD-topic>
5
5
  status: draft
@@ -7,8 +7,9 @@ modes: []
7
7
  orchestration: lead-directed
8
8
  lead: <owner-or-session-locator>
9
9
  implementation_agent_limit: 3
10
- ticket_workspace_policy: required
11
- integration_gate: candidate-merge
10
+ integration_attempt_limit: 3
11
+ ticket_workspace_policy: current
12
+ integration_gate: direct-parent
12
13
  ready_for_execution: false
13
14
  ---
14
15
 
@@ -54,9 +55,9 @@ ready_for_execution: false
54
55
 
55
56
  ### Ticket Quick Reference
56
57
 
57
- | ID | 可观察产出 | Dependencies | Worktree | Implementation owner | E2E disposition | Evidence |
58
+ | ID | 可观察产出 | Dependencies | Workspace | Implementation owner | E2E disposition | Evidence |
58
59
  |---|---|---|---|---|---|---|
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>` |
60
+ | T-01 | ... | — | `current`(required 模式为 `specdev-worktree/<change>/T-01`) | Lead / dynamic dispatch | required / not-required: reason | `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` |
60
61
 
61
62
  ## 3. Gates and Completion Evidence
62
63
 
@@ -79,24 +80,29 @@ ready_for_execution: false
79
80
  | 项目 | 决定 | 事实依据 |
80
81
  |---|---|---|
81
82
  | Lead | `<owner-or-session-locator>` | 唯一 SpecDev 状态、Evidence 与父分支 owner |
82
- | Implementation subagents | `<= 3`,Lead 不计入 | config、依赖和平台能力的最小值 |
83
+ | Implementation subagents | `<implementation_agent_limit>`,Lead 不计入 | Goal Plan 快照、依赖和平台能力的最小值 |
84
+ | Integration attempts | `<integration_attempt_limit>` | Goal Plan 创建时从 config 快照 |
83
85
  | Read-only agents | 无 SpecDev 数字上限 | review/research/test-observation,不写状态 |
84
86
  | Dispatch | execution-time dynamic | provider/模型/派单按 Ticket 事实选择 |
85
87
 
86
- ### Ticket Workspace and Candidate Integration
88
+ ### Ticket Workspace and Integration
87
89
 
88
- | Ticket | Parent/base | Worktree/branch | Source checks | Source commit | Candidate checks/E2E | Parent result |
90
+ | Ticket | Parent/base | Workspace/branch | Source checks | Implementation commit | Integration checks/E2E | Parent result |
89
91
  |---|---|---|---|---|---|---|
90
92
 
91
- 集成按表中顺序串行进行。source worktree 不运行 E2ELead 在最新父分支的 candidate 状态运行集成检查和适用 E2E,通过且父 HEAD 未漂移后才推进父分支。
93
+ `ticket_workspace_policy: current` 时,Ticket 必须严格串行。Lead 每次只允许一个 implementation owner 写入当前 workspace;完成非 E2E 检查并形成 commit 后,Lead 在同一父分支/current workspace 运行适用集成检查和 E2E,验证通过后将该 Ticket 的 `result_sha` 记录为其 implementation commit,再开始下一个 Ticket。不得创建 source/candidate worktree。
94
+
95
+ 当 `ticket_workspace_policy: required` 时,Ticket 使用独立 source worktree;source worktree 不运行 E2E,Lead 在最新父分支的 candidate 状态运行集成检查和适用 E2E,通过且父 HEAD 未漂移后才推进父分支。
92
96
 
93
97
  ### Authorization Matrix
94
98
 
95
99
  | 动作 | 状态 | 目标与条件 |
96
100
  |---|---|---|
97
- | Ticket worktree local changes | allowed / not-authorized | writable/shared owner 合同 |
101
+ | Current workspace Ticket changes | allowed / not-authorized | current 模式;严格串行,单一 implementation writer |
102
+ | Ticket worktree local changes | allowed / not-authorized | 仅 required 模式;限 writable/shared owner 合同 |
98
103
  | Implementation commit | allowed / not-authorized | 每 Ticket 必需;缺失则 Plan blocked |
99
- | Local candidate integration and parent update | allowed / not-authorized | Lead-only;缺失则 Plan blocked |
104
+ | Local direct-parent verification and parent update | allowed / not-authorized | 仅 current 模式;Lead 核对 Ticket commit 后继续 |
105
+ | Local candidate integration and parent update | allowed / not-authorized | 仅 required 模式;Lead-only;缺失则 Plan blocked |
100
106
  | Push / PR / remote merge | allowed / not-authorized | 不从本计划本地授权继承 |
101
107
  | Branch/worktree cleanup | allowed / not-authorized | 成功集成不自动继承 |
102
108
  | Deploy / migration / production actions | allowed / not-authorized | 逐动作、目标和条件 |
@@ -111,7 +117,7 @@ subagent 只返回候选事实与 commit;Lead 独立核对并写 Evidence、
111
117
 
112
118
  ### Verification Integrity
113
119
 
114
- 记录判卷接缝、基线、禁止的伪绿色方式,以及 source/candidate 两层验证边界。
120
+ 记录判卷接缝、基线、禁止的伪绿色方式,以及 current/direct-parent 或 source/candidate 两层验证边界。
115
121
 
116
122
  ### Migration or Release Sequence
117
123
 
@@ -125,13 +131,13 @@ subagent 只返回候选事实与 commit;Lead 独立核对并写 Evidence、
125
131
 
126
132
  ### Current Status
127
133
 
128
- 记录 Wave/Gate、Ticket、source/candidate/result SHA、最近验证和未验证项;不使用主观百分比。
134
+ 记录 Wave/Gate、Ticket、implementation/source、适用 candidateresult SHA、最近验证和未验证项;不使用主观百分比。
129
135
 
130
136
  ### Pending Decisions and Blockers
131
137
 
132
138
  ### Resume Protocol
133
139
 
134
- 恢复时读取 Goal Plan、当前 Ticket、change worktree 状态和最新 Evidence;从最后通过的父分支 result 或待修正 source checkpoint 继续。
140
+ 恢复时读取 Goal Plan、当前 Ticket、change workspace 状态和最新 Evidence;从最后通过的父分支 result 或待修正 implementation/source checkpoint 继续。
135
141
 
136
142
  ## Assumptions
137
143
 
@@ -6,7 +6,7 @@ Lead 是主会话中的唯一编排 owner,保留需求解释、DAG/Wave/Gate
6
6
 
7
7
  ## 2. 派单类型
8
8
 
9
- - **implementation**:写入单个 Ticket worktree 的授权项目路径,运行非 E2E 检查并返回 source commit;
9
+ - **implementation**:写入 Goal Plan 选择的 current workspace 或 Ticket worktree 的授权项目路径,运行非 E2E 检查并返回 implementation/source commit;
10
10
  - **review**:只读审查固定 checkpoint,返回 findings;
11
11
  - **research**:只读收集代码或外部事实,返回来源与结论;
12
12
  - **test-observation**:只读运行或观察已授权检查,返回命令与结果,不拥有 E2E Gate。
@@ -15,20 +15,20 @@ Lead 在 Ticket 可以独立执行、写路径不冲突、上下文足够且平
15
15
 
16
16
  ## 3. 并发
17
17
 
18
- implementation subagent 同时最多三个,实际值取 Goal Plan、config 与平台能力的最小值;Lead 不计入。review/research/test-observation agent 不设置 SpecDev 数字上限,但 Lead 必须避免测试资源冲突、重复工作和上下文失控。
18
+ required 模式 implementation subagent 上限取 Goal Plan、config 与平台能力的最小值;current 模式保持单 writer 串行安全不变量;Lead 不计入。review/research/test-observation agent 不设置 SpecDev 数字上限,但 Lead 必须避免测试资源冲突、重复工作和上下文失控。
19
19
 
20
20
  ## 4. 写入边界
21
21
 
22
- implementation subagent 只写分配 worktree 中的项目路径和其 Git commit,不写 Ticket、Map、Goal Plan、Evidence、change status 或父分支。其他 subagent 全部只读。Lead 接收返回后独立核对,再写所有 SpecDev 状态。
22
+ implementation subagent 只写分配的 current workspace 或 worktree 中的项目路径和其 Git commit,不写 Ticket、Map、Goal Plan、Evidence、change status 或父分支。current 模式 commit 直接落在 parent branch;required 模式 commit 落在 source branch。其他 subagent 全部只读。Lead 接收返回后独立核对,再写所有 SpecDev 状态。
23
23
 
24
24
  ## 5. 动态 Dispatch Packet
25
25
 
26
- 每次派单必须绑定 Ticket、Goal Plan、依赖 Evidence、不可变 `base_sha`、branch/workspace locator、writable/read-only/shared paths、provider、允许动作、非 E2E 验证、停止条件和返回格式。provider 或模型按当次能力与授权选择;外部 provider 需要独立的数据发送授权。
26
+ 每次派单必须绑定 Ticket、Goal Plan、依赖 Evidence、不可变 `base_sha`、branch/workspace locator、workspace strategy、writable/read-only/shared paths、provider、允许动作、非 E2E 验证、停止条件和返回格式。provider 或模型按当次能力与授权选择;外部 provider 需要独立的数据发送授权。
27
27
 
28
28
  implementation 返回至少包含:Ticket ID、workspace locator、最终 commit、dirty 状态、修改路径、检查命令/结果、未验证项、冲突与阻塞。review/research 返回固定输入、findings、来源和未验证声明。
29
29
 
30
30
  ## 6. Lead 验收
31
31
 
32
- Lead 核对基线、路径、commit、dirty 状态、项目事实与非 E2E 结果;不接受 subagent 自报的 Evidence 或 E2E pass。implementation 候选进入 dev-worktree candidate-merge;read-only 结果由 Lead 复核后写入对应权威工件。失败返回同一 Ticket worktree 修正或标记 blocked。
32
+ Lead 核对基线、路径、commit、dirty 状态、项目事实与非 E2E 结果;不接受 subagent 自报的 Evidence 或 E2E pass。required implementation 候选进入 dev-worktree candidate-merge;current implementation 由 Lead 在同一 parent branch/current workspace 做 direct-parent 验证。read-only 结果由 Lead 复核后写入对应权威工件。失败返回同一 workspace/worktree 修正或标记 blocked。
33
33
 
34
34
  **完成标准**:每次写入只有一个 Ticket/owner/worktree;所有 SpecDev 状态由 Lead 落盘;派单和返回可从 Evidence 恢复。
@@ -1,6 +1,6 @@
1
1
  # Goal Plan 核心编排协议
2
2
 
3
- 本文件定义 DAG、Wave、Gate、路径所有权、Ticket worktree、Evidence 返回和父分支集成队列。
3
+ 本文件定义 DAG、Wave、Gate、路径所有权、Ticket workspace 策略、Evidence 返回和父分支集成队列。
4
4
 
5
5
  ## 1. DAG 与关键路径
6
6
 
@@ -11,9 +11,9 @@
11
11
 
12
12
  ## 2. Wave 与实现并发
13
13
 
14
- Wave 内 Ticket 必须 Ready、依赖 Evidence 完整、项目写路径不相交、shared owner 已稳定、适用 Gate 已打开且基线一致。
14
+ required 模式的 Wave 内 Ticket 必须 Ready、依赖 Evidence 完整、项目写路径不相交、shared owner 已稳定、适用 Gate 已打开且基线一致。current 模式即使 DAG 存在可并行节点,也强制一次只执行一个 Ticket。
15
15
 
16
- Lead 根据当前事实决定自行实现或派单。同时活跃的 implementation subagent 不得超过 Goal Plan config 中较小的上限,且绝不超过三个;Lead 不计入。Wave 是可并发性,不是必须填满的目标。只读 review/research/test-observation agent 不写固定数字上限,但不得写项目或 SpecDev 状态,也不得争用同一可变测试环境。
16
+ Lead 根据当前事实决定自行实现或派单。required 模式同时活跃的 implementation subagent 不得超过 Goal Plan、config 与平台能力的共同上限;current 模式保持单 writer 串行安全不变量。Lead 不计入。Wave 是可并发性,不是必须填满的目标。只读 review/research/test-observation agent 不写固定数字上限,但不得写项目或 SpecDev 状态,也不得争用同一可变测试环境。
17
17
 
18
18
  ## 3. Gate
19
19
 
@@ -24,20 +24,20 @@ Gate 用可验证状态定义,必须写明:工程/业务状态、开启条
24
24
  遵循 `<Path>{roots.workflows}/specdev/common/rules/path-ownership.md</Path>`:
25
25
 
26
26
  1. 专用 owner Ticket 修改共享路径;
27
- 2. 在其 worktree 形成 commit 与非 E2E 证据;
28
- 3. 通过 Lead candidate-merge 进入父分支;
29
- 4. 下游 Ticket 基于新的父分支 checkpoint 创建或刷新 worktree;
27
+ 2. required 模式在其 source worktree 形成 commit 与非 E2E 证据;current 模式在当前 workspace 形成 commit 与证据;
28
+ 3. required 模式通过 Lead candidate-merge 进入父分支;current 模式由 Lead 在父分支 direct-parent 验证并推进;
29
+ 4. required 模式下游 Ticket 基于新的父分支 checkpoint 创建或刷新 worktree;current 模式仅在前一 Ticket 完成后开始下一个;
30
30
  5. 共享合同变化时暂停消费者并修订上游,不让多个执行者竞争写入。
31
31
 
32
- ## 5. 每 Ticket worktree
32
+ ## 5. 每 Ticket workspace 记录
33
33
 
34
- 每个进入 I-implement 的 Ticket 建立唯一 `specdev-worktree/<ticket-id>`。记录 workspace/implementation/integration owner、`base_sha`、父分支、branch、portable locator、source checkpoint、candidate/result SHA 与验证状态。Lead 自行实现时仍进入该 worktree;subagent 身份不决定是否隔离。
34
+ 每个进入 I-implement 的 Ticket 建立唯一记录。current 模式使用 `workspace_ref=current`、`branch=parent_branch`,记录 implementation/source/result SHA 与 direct-parent 验证;required 模式使用唯一 `specdev-worktree/<ticket-id>`,记录 source/candidate/result SHA 与验证状态。Lead 自行实现或派 subagent 不改变所选策略。
35
35
 
36
- 同一 Ticket 在 candidate 验证失败后保留来源 worktree并继续修正。新的 source commit 替换当前 `source_checkpoint`,旧 commit 继续由 Git/Evidence 可追溯。成功集成不自动清理 branch/worktree。
36
+ required 模式同一 Ticket 在 candidate 验证失败后保留来源 worktree 并继续修正。新的 source commit 替换当前 `source_checkpoint`,旧 commit 继续由 Git/Evidence 可追溯。成功集成不自动清理 branch/worktree。
37
37
 
38
38
  ## 6. 父分支集成队列
39
39
 
40
- Lead 串行集成 Ready 候选:
40
+ required 模式 Lead 串行集成 Ready 候选:
41
41
 
42
42
  1. 冻结最新 `parent_before_sha`;
43
43
  2. 在 Lead-owned parent integration checkout 组合父分支与 `source_checkpoint`;
@@ -47,10 +47,10 @@ Lead 串行集成 Ready 候选:
47
47
  6. 检查通过且父 HEAD 未变时,父分支 fast-forward 到 candidate;
48
48
  7. 重读父 HEAD/tree,写入 `result_sha` 后才允许 Ticket Done。
49
49
 
50
- 父分支是 source checkpoint 的祖先时 candidate/result 可等于 source SHA,方法为 `fast-forward`;否则 candidate 必须是独立 merge commit。候选失败时父分支保持不变,Ticket 回到 `in_progress` 或 `blocked`。
50
+ 父分支是 source checkpoint 的祖先时 candidate/result 可等于 source SHA,方法为 `fast-forward`;否则 candidate 必须是独立 merge commit。候选失败时父分支保持不变,Ticket 回到 `in_progress` 或 `blocked`。current 模式跳过候选 checkout,Lead 在 current workspace 核对 implementation commit、运行集成检查并记录 `method=direct-parent`;失败时父 HEAD 不推进。
51
51
 
52
52
  ## 7. Expand-contract
53
53
 
54
- 标准顺序为 expand → migrate → observe → contract → verify。每批迁移独立 commit、candidate 验证和父分支集成;收缩依据旧调用/数据/协议归零证据,不依据 Ticket 数量推断。
54
+ 标准顺序为 expand → migrate → observe → contract → verify。每批迁移独立 commit、按所选策略验证和父分支集成;收缩依据旧调用/数据/协议归零证据,不依据 Ticket 数量推断。
55
55
 
56
- **完成标准**:每个 Ticket 从父基线、source commit、candidate 到 result 都可恢复;父分支只包含已通过候选门禁的 Ticket。
56
+ **完成标准**:每个 Ticket 从父基线、implementation/source commit、对应 integration 到 result 都可恢复;父分支只包含已通过所选门禁的 Ticket。
@@ -1,6 +1,6 @@
1
1
  # Goal Plan 规划模式与输入门禁
2
2
 
3
- 规划模式描述 Goal Plan 需要额外解决的工程问题,不再表示 Agent workspace topology。Lead-directed、每 Ticket worktree candidate-merge 是所有新 Goal Plan 的固定合同。
3
+ 规划模式描述 Goal Plan 需要额外解决的工程问题。Goal Plan 创建时单独询问 Ticket 是否开启 worktree,默认使用当前 workspace;worktree direct-parent/candidate-merge 由该次 Goal Plan 固定。
4
4
 
5
5
  ## 1. 输入门禁
6
6
 
@@ -10,7 +10,7 @@
10
10
  - Tickets Map 与全部 Ticket 存在、Ready、DAG 无环;
11
11
  - 每个验收合同被 Ticket 覆盖;
12
12
  - writable/shared path 有唯一 owner,Wave 候选无写冲突;
13
- - config schema v4,`max_implementation_agents` `1..3`;
13
+ - config schema v5,`max_implementation_agents` `max_integration_attempts` 为正整数;原型变体范围读取 planning 配置;
14
14
  - 父分支可定位,implementation commit 与本地 integration 已获授权;
15
15
  - Deep Ticket 的迁移、兼容、监控、恢复和不可逆批准点完整。
16
16
  - Ticket 与 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`、`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`、`<Path>{roots.state}/specdev/adr/</Path>`、`<Path>{roots.state}/specdev/context/</Path>` 和当前代码事实不存在未处理冲突;
@@ -18,7 +18,7 @@
18
18
  - 当前源码基线、父分支、工作区状态和现有用户改动已经实测;
19
19
  - 外部合同、标准、参考实现或依赖版本已经固定,不使用浮动的“最新”描述。
20
20
 
21
- 缺失上游事实返回其 owner;非 v4 Goal Plan 必须按当前合同重新规划,不能只修改版本号。
21
+ 缺失上游事实返回其 owner;非 v5 Goal Plan 必须按当前合同重新规划,不能只修改版本号。
22
22
 
23
23
  ## 2. 可组合模式
24
24
 
@@ -29,29 +29,41 @@
29
29
 
30
30
  没有适用模式时 `modes: []`。模式只增加对应 Gate、证据和恢复,不改变 Lead、worktree 或集成基本合同。
31
31
 
32
- ## 3. 固定执行拓扑
32
+ ## 3. Goal Plan 工作区选择
33
33
 
34
- - `orchestration: lead-directed`;
35
- - `ticket_workspace_policy: required`;
36
- - `integration_gate: candidate-merge`;
37
- - `implementation_agent_limit` 不大于 config,也不大于 `3`;
38
- - Lead 不计入 implementation subagent 数量;
39
- - review/research/test-observation agent SpecDev 固定数字上限,但必须保持只读且不竞争同一可变环境;
40
- - provider 与派单在执行期决定,不成为 Goal Plan 的静态枚举。
34
+ - 创建 Goal Plan 时询问“是否开启 worktree 开发?”,默认 `否`;
35
+ - 用户选择 `否` 时写入 `ticket_workspace_policy: current` 与 `integration_gate: direct-parent`;
36
+ - 用户选择 `是` 时写入 `ticket_workspace_policy: required` 与 `integration_gate: candidate-merge`;
37
+ - 该选择只作用于当前 Goal Plan,不读取或修改全局配置;
38
+ - `current` 模式下所有 Ticket 必须串行,并持有唯一 implementation writer 锁;
39
+ - `required` 模式继续使用每 Ticket source worktree 和 Lead-owned candidate integration;
40
+ - `orchestration` 固定为 `lead-directed`;implementation agent 与 integration attempt 上限读取 config,并可在本计划中进一步降低。
41
41
 
42
42
  ## 4. Ready 停止条件
43
43
 
44
44
  存在以下任一情况时 `ready_for_execution: false`:
45
45
 
46
- - Lead locator 无法恢复;
47
- - 本地 commit candidate integration 未授权;
48
- - Ticket 无法建立独立 worktree 或父分支不明确;
46
+ - Goal Plan 工作区选择未记录;
47
+ - `current` 模式下 Ticket 无法串行排序或当前 workspace 不是唯一项目写入 owner;
48
+ - `required` 模式下 Ticket 无法建立独立 worktree 或父分支不明确;
49
+ - 当前模式所需的 implementation commit 或 direct-parent/candidate integration 授权缺失;
49
50
  - shared path 没有唯一 owner;
50
51
  - E2E 是否需要会改变验收结论但尚未确定;
51
52
  - 项目验证命令不能执行或无法观察目标行为,且没有批准的替代证据;
52
53
  - 当前源码/工作区基线未实测,或外部合同版本仍然浮动;
53
54
  - Ticket 与 Spec、ADR、`<Path>{roots.state}/specdev/adr/</Path>`、`<Path>{roots.state}/specdev/context/</Path>` 或代码事实存在未处理冲突;
54
55
  - 迁移、发布、不可逆动作或恢复存在高影响未知项;
55
- - 实现 agent 上限超过 `3`。
56
+ - 实现 agent 或 integration attempt 上限超过 config 或平台能力。
57
+
58
+ ## 5. 固定执行拓扑
59
+
60
+ - `orchestration: lead-directed`;
61
+ - `ticket_workspace_policy: current | required`;
62
+ - `integration_gate: direct-parent | candidate-merge`;
63
+ - `current` 与 `direct-parent` 必须成对;`required` 与 `candidate-merge` 必须成对;
64
+ - `implementation_agent_limit` 不大于 config 与平台能力;`integration_attempt_limit` 不大于 config;current 模式保持单 writer 串行安全不变量;
65
+ - Lead 不计入 implementation subagent 数量;
66
+ - review/research/test-observation agent 无 SpecDev 固定数字上限,但必须保持只读且不竞争同一可变环境;
67
+ - provider 与派单在执行期决定,不成为 Goal Plan 的静态枚举。
56
68
 
57
69
  **完成标准**:所有固定字段、适用模式、授权、Lead、父分支和阻塞均可验证;没有替代编排模型或空占位。
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## 变体
10
10
 
11
- 默认 3 个,最多 5 个。每个变体必须在布局、信息层级或主要操作入口上结构不同,不能只换颜色或文案。使用项目现有组件和样式系统,但不要共享会限制结构探索的布局抽象。
11
+ 变体数量读取 `<Path>{roots.state}/specdev/config.json</Path>` `planning.ui_prototype_default_variants` 与 `planning.ui_prototype_max_variants`。每个变体必须在布局、信息层级或主要操作入口上结构不同,不能只换颜色或文案。使用项目现有组件和样式系统,但不要共享会限制结构探索的布局抽象。
12
12
 
13
13
  ## 切换器
14
14
 
@@ -111,8 +111,8 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
111
111
  - 有序执行路线和安全落点;
112
112
  - expected、writable、read-only、shared 路径;
113
113
  - 正常、失败和回归验证矩阵;
114
- - 每个 Ticket 的 source-worktree E2E 检查、父分支 candidate 集成出口,以及按实际跨边界风险判定的 E2E disposition;
115
- - 每个实现 Ticket 的独立 worktree、implementation commit 与父分支合并完成条件;
114
+ - 每个 Ticket 按 Goal Plan workspace 策略定义 current-workspace/direct-parent source-worktree/parent-candidate 检查,以及按实际跨边界风险判定的 E2E disposition;
115
+ - 每个实现 Ticket implementation commit 与对应父分支完成条件;仅 required 模式创建独立 worktree;
116
116
  - Deep 的迁移、兼容窗口、监控、回滚和不可逆批准点;
117
117
  - 可判定验收标准。
118
118
 
@@ -140,8 +140,8 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
140
140
  - 依赖缺失或 DAG 有环;
141
141
  - 可写路径不明确或并行所有权冲突;
142
142
  - 验证方法不能执行且没有批准的替代证据;
143
- - Ticket 未声明 E2E required/not-required 及理由,或把 E2E 安排到 source worktree;
144
- - 无法形成实现 commit 与 candidate-merge 父分支出口;
143
+ - Ticket 未声明 E2E required/not-required 及理由,或在 required 模式把 E2E 安排到 source worktree;
144
+ - 无法形成实现 commit 与 Goal Plan 所选 direct-parent/candidate-merge 父分支出口;
145
145
  - 单个新上下文无法完成;
146
146
  - Standard/Deep 缺少有序执行路线;
147
147
  - Deep 缺少迁移、兼容、监控、回滚或批准点。
@@ -15,8 +15,8 @@
15
15
  - [ ] 每个 shared path 在 `shared_path_owners` 中有唯一 owner。
16
16
  - [ ] 正常、失败和回归至少各有一条验证,或有可信的不适用原因。
17
17
  - [ ] 明确 `E2E disposition: required | not-required: reason`;required 场景、预期和接缝可执行。
18
- - [ ] Source-worktree 验证只包含单元、组件、静态、类型、lint/build 等非 E2E 检查;E2E owner 固定为 Lead,运行环境固定为 parent-candidate。
19
- - [ ] Ticket 完成合同包含独立 worktree、implementation commit、candidate-merge、父分支 result SHA 和 Lead Evidence。
18
+ - [ ] 按 Goal Plan 策略定义 current-workspace 或 source-worktree 的非 E2E 检查;E2E owner 固定为 Lead,运行环境分别为 current-workspace 或 parent-candidate。
19
+ - [ ] Ticket 完成合同包含 implementation commit、direct-parent 或 candidate-merge、父分支 result SHA 和 Lead Evidence;仅 required 模式需要独立 worktree
20
20
  - [ ] Evidence 位置明确为 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`。
21
21
  - [ ] 单个全新上下文能够完成;否则已拆分。
22
22
  - [ ] 所有内部文件与目录引用使用完整根变量 Path 标签。
@@ -32,7 +32,7 @@
32
32
 
33
33
  - [ ] 迁移顺序、兼容窗口、监控、回滚或前向恢复、收缩条件和批准点完整。
34
34
  - [ ] 安全、隐私、资金或数据完整性风险有缓解与验证。
35
- - [ ] 跨 implementation owner 的路径所有权和 parent-candidate 集成 Gate 明确。
35
+ - [ ] 跨 implementation owner 的路径所有权和所选 direct-parent/parent-candidate 集成 Gate 明确。
36
36
  - [ ] expand-contract 的收缩条件可通过扫描、指标、查询或测试证明。
37
37
 
38
38
  ## Ready 状态
@@ -102,12 +102,12 @@ shared_path_owners: []
102
102
 
103
103
  不适用的关键风险类别必须写“不适用:原因”。
104
104
 
105
- - **Source-worktree checks:** 单元、组件、静态、类型、lint/build 等适用非 E2E 检查。
105
+ - **Workspace checks:** 按 Goal Plan 在 current workspace 或 source worktree 运行单元、组件、静态、类型、lint/build 等适用非 E2E 检查。
106
106
  - **E2E disposition:** required / not-required:原因。
107
- - **E2E owner/environment:** Lead / parent-candidate;required 时写明场景、接缝与预期。
108
- - **Integration evidence:** source commit、parent beforecandidate/result SHA 和父分支包含关系。
107
+ - **E2E owner/environment:** Lead / current-workspace 或 parent-candidate;required 时写明场景、接缝与预期。
108
+ - **Integration evidence:** implementation/source commit、parent before、适用 candidate/result SHA 和父分支包含关系。
109
109
 
110
- E2E 由实际跨边界行为与风险决定,不限于 UI;不得在 Ticket source worktree 运行或声明通过。
110
+ E2E 由实际跨边界行为与风险决定,不限于 UI;required 模式不得在 Ticket source worktree 运行或声明通过。
111
111
 
112
112
  ## 9. 发布、迁移与恢复
113
113
 
@@ -125,7 +125,7 @@ E2E 由实际跨边界行为与风险决定,不限于 UI;不得在 Ticket so
125
125
  - [ ] `AC-001`:<可判定结果>。
126
126
  - [ ] 验证矩阵全部执行并记录到 `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>`。
127
127
  - [ ] 实际项目修改未超出 `writable_paths`,shared path 由指定 owner 修改。
128
- - [ ] Ticket 来源 worktree 已形成非空实现 commit,candidate 验证通过且父分支 result 包含 source commit。
129
- - [ ] E2E disposition 已执行;required E2E 在 parent-candidate 由 Lead 完成。
128
+ - [ ] Ticket 已按 Goal Plan 策略形成非空 implementation/source commit,direct-parent 或 candidate 验证通过且父分支 result 已记录。
129
+ - [ ] E2E disposition 已执行;required 模式 E2E 在 parent-candidate、current 模式在 current workspace 由 Lead 完成。
130
130
  - [ ] 未发生未批准的范围、契约或发布偏差。
131
131
  - [ ] Ticket、Tickets Map 和 Evidence 状态一致。
@@ -46,11 +46,11 @@ T-01 [READY]
46
46
 
47
47
  ## 5. 并行与路径所有权
48
48
 
49
- - implementation subagent 上限来自 `<Path>{roots.state}/specdev/config.json</Path>`,不得超过三个且不含 Lead。
49
+ - implementation subagent 上限来自 `<Path>{roots.state}/specdev/config.json</Path>`,Goal Plan 可进一步降低且不含 Lead。
50
50
  - review/research/test-observation agent 不设 SpecDev 数字上限,但保持只读。
51
51
  - shared owner 为专用 Ticket;Lead 是 SpecDev 状态与父分支 integration owner。
52
52
  - 项目路径契约以 Ticket frontmatter 为准。
53
- - 每个实现 Ticket 使用独立 worktree,不以是否派遣 Agent 或是否并行为条件;只读调查不进入 I-implement Ticket。
53
+ - 每个实现 Ticket workspace Goal Plan 选择;current 模式串行使用当前 workspace,required 模式使用独立 worktree;只读调查不进入 I-implement Ticket。
54
54
 
55
55
  | Ticket A | Ticket B | Writable 交集 | 真实依赖 | 处理 |
56
56
  |---|---|---|---|---|
@@ -44,7 +44,7 @@
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>`;Ticket 固定使用 source → parent-candidate → parent 状态机,原型保持临时生命周期
47
+ - Ticket/原型 worktree Skill:`<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`;仅 required Ticket 使用 source → parent-candidate → parent 状态机,current Ticket 使用 current workspace/direct-parent,原型保持临时生命周期
48
48
  - 动态 Agent 交付合同 Skill:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`;P-goal-plan 建立 Lead 合同,I-implement 在执行期派单与验收
49
49
  - 双轴代码审查 Skill:`<Path>{roots.workflows}/specdev/common/skills/code-review/SKILL.md</Path>`
50
50
 
@@ -7,9 +7,9 @@
7
7
  一个 change 只有同时满足以下条件才能 completed:
8
8
 
9
9
  1. 所有计划内 Ticket 为 done,或因权威事实无需改动而记录为 cancelled;Direct Spec/非实现流程有等价验收。
10
- 2. 每个 done Ticket 有 source commit、passed candidate、父分支 result SHA,且父分支包含 source commit;worktree 生命周期为 `integrated` 或完成来源清理后的 `removed`。
10
+ 2. required Ticket 有 source commit、passed candidate、父分支 result SHA,且父分支包含 source commit;current Ticket implementation commit、passed direct-parent 验证和父分支 result SHA;对应 workspace 记录均为完成状态。
11
11
  3. 每个行为有 Lead Evidence,全部 Spec 合同与 Goal Gate 可定位。
12
- 4. source-worktree 非 E2E 检查、parent-candidate 集成/回归和 required E2E 已通过;not-required 有理由。
12
+ 4. current Ticket 的 current-workspace 检查/回归和适用 E2E,或 required Ticket 的 source-worktree 非 E2E 检查、parent-candidate 集成/回归和 required E2E 已通过;not-required 有理由。
13
13
  5. 迁移、发布、监控、恢复和不可逆批准已完成或明确不适用。
14
14
  6. 没有未批准 deviation、blocker、unverified、活动 candidate 或未集成 source checkpoint。
15
15
  7. Ticket、Map、Goal Plan、Evidence、change status 与实际 Git 一致。
@@ -8,19 +8,23 @@
8
8
 
9
9
  | 行为或风险 | 接缝 | 命令/方法 | 环境 | 预期 | Evidence |
10
10
  |---|---|---|---|---|---|
11
- | 正常/失败路径 | 公共接口或稳定接缝 | 定向测试 | source-worktree | 合同成立 | Ticket Evidence |
12
- | 跨模块回归 | 集成接缝 | 回归命令 | parent-candidate | 组合状态成立 | Ticket Evidence |
13
- | E2E required | 真实端到端边界 | 场景步骤 | parent-candidate | 外部行为成立 | Ticket Evidence |
11
+ | 正常/失败路径 | 公共接口或稳定接缝 | 定向测试 | current-workspace 或 source-worktree | 合同成立 | Ticket Evidence |
12
+ | 跨模块回归 | 集成接缝 | 回归命令 | current-workspace 或 parent-candidate | 组合状态成立 | Ticket Evidence |
13
+ | E2E required | 真实端到端边界 | 场景步骤 | current-workspace 或 parent-candidate | 外部行为成立 | Ticket Evidence |
14
14
 
15
15
  ## 2. 两层验证
16
16
 
17
+ ### Current workspace
18
+
19
+ current 模式的 implementation owner 在当前父分支和当前 workspace 工作。Ticket 必须严格串行,workspace clean 后形成非空 implementation commit;Lead 在同一 workspace 执行适用集成/回归和 E2E,并在父 HEAD 未漂移时将 Ticket commit 记录为 result SHA。
20
+
17
21
  ### Source-worktree
18
22
 
19
23
  implementation owner 运行最接近目标行为的单元/组件测试、静态分析、类型、lint/build 等适用非 E2E 检查。来源实现必须在 clean worktree 形成 commit。任何 source-worktree E2E pass 声明无效。
20
24
 
21
25
  ### Parent-candidate
22
26
 
23
- Lead 在最新父分支与 source commit 的 candidate 状态运行受影响集成/回归、项目父状态检查和适用 E2E。E2E 由实际跨边界风险决定,不限于 UI;not-required 必须写理由。required E2E 未运行或失败时不得推进父分支。
27
+ required 模式下,Lead 在最新父分支与 source commit 的 candidate 状态运行受影响集成/回归、项目父状态检查和适用 E2E。E2E 由实际跨边界风险决定,不限于 UI;not-required 必须写理由。required E2E 未运行或失败时不得推进父分支。
24
28
 
25
29
  ### Direct Spec
26
30
 
@@ -40,8 +44,8 @@ subagent 只返回候选命令与结果,不写 Evidence。Lead 重读 workspac
40
44
 
41
45
  ## 5. Evidence 最低内容
42
46
 
43
- 每个 Ticket Evidence 至少包含:Lead、Dispatch/返回(若有)、base/source/candidate/result SHA、来源 worktree、实际路径、每条命令/环境/退出状态、合同映射、双轴审查、E2E disposition、未运行项、失败分类、偏差、残余风险和父分支重读结果。
47
+ 每个 Ticket Evidence 至少包含:Lead、Dispatch/返回(若有)、workspace 策略、base/source/result SHA、candidate 字段(required 模式适用,current 模式明确不适用)、实际路径、每条命令/环境/退出状态、合同映射、双轴审查、E2E disposition、未运行项、失败分类、偏差、残余风险和父分支重读结果。
44
48
 
45
- Ticket Done 必须有 source commit、通过 candidate、父分支 result 与 Lead Evidence。无法运行 required 验证、存在未批准偏差、父分支未包含 source commit 或 Evidence 不完整时不得 Done。
49
+ required Ticket Done 必须有 source commit、通过 candidate、父分支 result 与 Lead Evidence;current Ticket Done 必须有 implementation commit、通过 direct-parent 验证、父分支 result 与 Lead Evidence。无法运行 required 验证、存在未批准偏差、父分支未包含 Ticket commit 或 Evidence 不完整时不得 Done。
46
50
 
47
51
  Direct Spec Evidence 至少包含:用户批准与轻量合同、Lead、实施前/最终 checkpoint、实际路径、定向/回归/E2E 命令及环境、验收映射、未运行项、偏差、残余风险和提交授权状态。
@@ -20,14 +20,14 @@
20
20
  5. 越界前停止并按 deviation control 提出 ownership change;不得先改后报。
21
21
  6. 上游 Ticket 改变目录/合同后,下游基于已集成父分支重新解析路径和 preflight。
22
22
 
23
- ## 3. Ticket worktree
23
+ ## 3. Ticket workspace strategy
24
24
 
25
- 每个进入 I-implement Ticket 都使用唯一来源 worktree `specdev-worktree/<ticket-id>`,无论是否并行、是否派遣 subagent。Ticket 切片是隔离依据;Agent Team 不是 worktree 触发器。没有 Ticket 的获批 Direct Spec 可由 current workspace 唯一 owner 执行;只读调查不创建实现 worktree。
25
+ Goal Plan 创建时选择 Ticket workspace strategy,默认 `current`。`current` 模式的 Ticket 使用当前分支、当前 workspace 和严格串行执行;允许一个 implementation subagent 写入当前 workspace,但前一 Ticket 必须完成 commit、Lead 验收和 direct-parent 验证后才能开始下一个。`required` 模式每个 Ticket 使用唯一来源 worktree `specdev-worktree/<ticket-id>`,并通过 candidate-merge 集成。没有 Ticket 的获批 Direct Spec 继续由 current workspace 唯一 owner 执行;只读调查不创建实现 worktree。
26
26
 
27
- workspace/implementation owner 可以是 Lead 或动态 implementation subagent;integration owner 固定为 Lead。只有 Lead SpecDev 状态、建立 parent-candidate、运行适用 E2E 并推进父分支。生命周期由 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>` 管理。
27
+ workspace/implementation owner 可以是 Lead 或动态 implementation subagent;integration owner 固定为 Lead。current 模式 Lead 在父分支直接验收和推进,required 模式 Lead 建立 parent-candidate、运行适用 E2E 并推进父分支。required 生命周期由 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>` 管理,current 生命周期由 I-implement 的 direct-parent 规则管理。
28
28
 
29
29
  ## 4. 并发
30
30
 
31
- implementation subagent 同时最多三个,Lead 不计入;实际上限取 Goal Plan、config 和平台能力最小值。review/research/test-observation agent 不设置 SpecDev 数字上限,但 Lead 必须避免重复工作与可变环境争用。
31
+ required 模式 implementation subagent 上限取 Goal Plan、config 和平台能力共同约束,Lead 不计入。current 模式保持单 writer 串行安全不变量,Ticket 严格串行。review/research/test-observation agent 不设置 SpecDev 数字上限,但 Lead 必须避免重复工作与可变环境争用。
32
32
 
33
33
  **完成标准**:每个项目写入映射到唯一 Ticket、owner 和来源 worktree;shared 与父分支写入 owner 唯一。