@namewta/speculo 0.7.2 → 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 (55) hide show
  1. package/dist/src/migrations.js +755 -23
  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 +200 -448
  5. package/template/canonical/canonical-specdev-goal-plan.md +744 -1108
  6. package/template/canonical/canonical-specdev-grill-with-docs.md +201 -449
  7. package/template/canonical/canonical-specdev-spec.md +232 -486
  8. package/template/canonical/canonical-specdev-tickets.md +411 -590
  9. package/template/canonical/canonical-specdev-wayfinder.md +199 -447
  10. package/template/skills/migrate-runtime-state/SKILL.md +6 -6
  11. package/template/skills/migrate-runtime-state/references/migration-contract.md +9 -3
  12. package/template/skills/migrate-runtime-state/scripts/migrate-runtime-state.mjs +404 -33
  13. package/template/workflows/specdev/I-implement/I-implement.md +98 -143
  14. package/template/workflows/specdev/I-implement/evidence-template.md +66 -48
  15. package/template/workflows/specdev/I-implement/execution-preflight.md +31 -21
  16. package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +12 -12
  17. package/template/workflows/specdev/I-init-setup/I-init-setup.md +4 -5
  18. package/template/workflows/specdev/I-init-setup/change-status-template.json +14 -1
  19. package/template/workflows/specdev/I-init-setup/config-template.json +7 -6
  20. package/template/workflows/specdev/I-init-setup/status-template.json +1 -1
  21. package/template/workflows/specdev/INDEX.md +11 -8
  22. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +76 -102
  23. package/template/workflows/specdev/P-goal-plan/completion-control.md +26 -44
  24. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +46 -37
  25. package/template/workflows/specdev/P-goal-plan/lead-orchestration.md +34 -0
  26. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +31 -46
  27. package/template/workflows/specdev/P-goal-plan/planning-modes.md +67 -89
  28. package/template/workflows/specdev/P-prototype/ui-prototype.md +1 -1
  29. package/template/workflows/specdev/T-tickets/T-tickets.md +6 -3
  30. package/template/workflows/specdev/T-tickets/ticket-readiness.md +5 -3
  31. package/template/workflows/specdev/T-tickets/ticket-template.md +8 -1
  32. package/template/workflows/specdev/T-tickets/tickets-map-template.md +5 -4
  33. package/template/workflows/specdev/_state/status.json +1 -1
  34. package/template/workflows/specdev/common/README.md +2 -2
  35. package/template/workflows/specdev/common/rules/change-completion.md +17 -20
  36. package/template/workflows/specdev/common/rules/deviation-control.md +1 -1
  37. package/template/workflows/specdev/common/rules/evidence-and-verification.md +31 -37
  38. package/template/workflows/specdev/common/rules/path-ownership.md +21 -23
  39. package/template/workflows/specdev/common/rules/readiness-and-depth.md +1 -1
  40. package/template/workflows/specdev/common/schemas/change-status.schema.json +153 -363
  41. package/template/workflows/specdev/common/schemas/config.schema.json +17 -13
  42. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +33 -16
  43. package/template/workflows/specdev/common/schemas/status.schema.json +7 -63
  44. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +42 -21
  45. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +36 -21
  46. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +46 -18
  47. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +34 -31
  48. package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +10 -23
  49. package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +15 -25
  50. package/template/workflows/specdev/common/tools/README.md +2 -1
  51. package/template/workflows/specdev/common/tools/validate-specdev.mjs +591 -219
  52. package/template/workflows/specdev/I-implement/delegated-evidence-template.md +0 -12
  53. package/template/workflows/specdev/P-goal-plan/delegated-execution-template.md +0 -35
  54. package/template/workflows/specdev/P-goal-plan/delegated-execution.md +0 -59
  55. package/template/workflows/specdev/P-goal-plan/workspace-execution-template.md +0 -24
@@ -3,222 +3,177 @@ id: specdev/implement
3
3
  type: workflow-entry
4
4
  workflow: specdev
5
5
  name: 实现
6
- description: 基于 Ready Ticket 或获批的小型 Spec 执行设计检查、TDD 红绿循环、持续验证、双轴审查、证据回写和提交。
7
- keywords: [实现, TDD, 代码审查, 模块设计, 证据, ticket]
6
+ description: 基于 Ready Ticket 或获批小型 Spec 执行设计检查、TDD、动态派单、双轴审查、按 Goal Plan 选择的 current workspace 或 Ticket worktree 提交、直接父分支或候选合并验证和 Lead Evidence 回写。
7
+ keywords: [实现, TDD, Lead, subagent, worktree, current workspace, direct-parent, candidate-merge, 代码审查, 证据]
8
8
  ---
9
9
 
10
10
  # 实现
11
11
 
12
- 本 work 保留深模块设计检查、接缝和依赖分类、design-it-twice、TDD 红→绿垂直循环、隔离双轴审查、项目级验证、提交和状态更新。治理升级增加 Ready、路径所有权、Evidence、完成所有权和偏差门禁。
12
+ 本 work 保留模块设计检查、design-it-twice、TDD 红绿循环、双轴审查和证据治理。Ticket 模式按 Goal Plan 的 `ticket_workspace_policy` 选择 current workspace 串行直接父分支或独立 worktree candidate-merge;Lead 根据实际情况自行实现或动态派单。
13
13
 
14
14
  ## 执行模式
15
15
 
16
16
  ### Ticket 模式(默认)
17
17
 
18
- 读取一个 Ready Ticket
18
+ 读取 Ready Ticket、Tickets Map 和可选 Goal Plan。存在 Goal Plan 时使用其中的 Lead 与 workspace 策略;没有 Goal Plan 时,当前主会话作为该 Ticket 的 Lead,并按 Direct Spec 规则执行,不推断 worktree 策略。`required` 模式每个 Ticket 建立独立 worktree;`current` 模式所有 Ticket 严格串行,使用当前分支和当前 workspace。
19
19
 
20
- - Ticket:`<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`
21
- - Tickets Map:`<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
22
- - 可选 Goal Plan:`<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`
20
+ ### Direct Spec 模式
23
21
 
24
- Ticket 模式适用于多 Ticket、Standard/Deep、并行、迁移或需要完整证据治理的工作。
22
+ 只有极小、局部、单一行为、低风险、可逆且无需 Ticket DAG 的工作,才可在用户批准后直接基于 Spec/ADR/CONTEXT 在 current workspace 执行。先确认目标、IN/OUT、唯一写入 owner、可写范围、关键不变量、验证和验收。出现公共 API/schema、迁移、安全、高风险、多个行为或并行需求时返回 T-tickets。
25
23
 
26
- Goal Plan 通过 `coordination_mode` 与 `workspace_strategy` 分别决定协作和工作区;旧计划缺少字段时根据完整 Delegated Execution Addendum 与现有 worktree 记录兼容推导。只有 `lead-team` 进入 delegated execution 分支;`single-session` 可使用只读辅助 Agent,但主会话保持唯一写入 owner。Worktree/mixed 独立加载 dev-worktree 合同,不因是否存在 Lead 而改变。
24
+ ## 输入
27
25
 
28
- ### Direct Spec 模式(保留原能力)
26
+ 两种模式都必须读取:
29
27
 
30
- 极小、局部、单一行为且不需要独立 Ticket DAG 的工作,可以在用户明确批准后直接基于:
31
-
32
- - Spec:`<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
33
- - 架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
34
- - 领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
35
-
36
- 执行前必须从 Spec 明确提取并向用户确认一个轻量执行契约:目标、IN/OUT、可写范围、关键不变量、验证命令和验收条件。出现公共 API/schema、迁移、安全、高风险、多个独立行为或并行需求时,必须返回 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`,不得使用 Direct Spec 模式绕过治理。
28
+ - 当前 Spec:`<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
29
+ - 项目配置:`<Path>{roots.state}/specdev/config.json</Path>`
37
30
 
38
- ## 通用输入
31
+ Ticket 模式还必须读取当前 Ticket `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>` 与 `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`;存在 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 时必须读取。Direct Spec 模式必须读取用户对轻量执行合同和直接实现的明确批准。
39
32
 
40
33
  按存在情况读取:
41
34
 
42
- - 当前 Spec:`<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
43
- - 当前架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
44
- - 当前领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
45
- - 当前设计日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
35
+ - 当前 change 架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
36
+ - 当前 change 领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
37
+ - 当前 change 设计日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
38
+ - 当前 change 诊断:`<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
46
39
  - 永久架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
47
40
  - 永久领域上下文:`<Path>{roots.state}/specdev/context/</Path>`
48
- - 项目配置:`<Path>{roots.state}/specdev/config.json</Path>`
49
41
 
50
- 当前 change 的架构决策或领域上下文缺失,且实现需要这些决定时,先运行 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>` 或请求用户建立上下文。永久目录可以为空,静默继续。
42
+ 永久目录可以为空,静默继续。当前 ADR/CONTEXT 缺失且实施需要对应决定时,返回 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;Spec、Ticket 或 Goal Plan 与代码事实冲突时按 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>` 返回真正 owner,不在实现中覆盖。
51
43
 
52
- ## 流程
44
+ Git 已处于 merge/rebase 冲突时,先加载 `<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`;不把冲突伪装成普通 TDD。
53
45
 
54
- Git 已处于 merge/rebase 冲突时,先加载 `<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>` 并完成或可恢复地暂停该分支;不要把冲突伪装成普通 TDD 切片。
46
+ ## 流程
55
47
 
56
- ### 1. 执行前预检
48
+ ### 1. 执行前预检与 workspace
57
49
 
58
50
  加载 `<Path>{roots.workflows}/specdev/I-implement/execution-preflight.md</Path>`。
59
51
 
60
- Ticket 模式检查:
61
-
62
- - `ready: true`;
63
- - 状态允许开始;
64
- - `blocked_by` 全部 done;
65
- - Ticket 与 Spec/ADR/Goal Plan 无冲突;
66
- - 可写、只读、共享路径明确且无并发冲突;
67
- - Ticket 分配到 worktree 时,记录为 `active`,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 或状态写入;
70
- - 验证命令和 Evidence 位置可用;
71
- - 当前代码事实没有使核心契约失效。
52
+ Ticket 模式:
72
53
 
73
- Direct Spec 模式检查:
54
+ 1. 验证 Ready、依赖 Evidence、Spec/ADR/Goal Plan、一致性、路径 owner 和验证接缝;
55
+ 2. 确认 Goal Plan schema v6(若存在)、Lead、动态 implementation/integration 上限与授权;
56
+ 3. `required` 模式以 `purpose=ticket, operation=create|restore` 调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`;`current` 模式读取当前 branch、HEAD、dirty 状态并确认没有其他 Ticket implementation writer;
57
+ 4. Lead 把 Ticket 设为 `in_progress`;`required` 模式将 change worktree 记录设为 `active`,`current` 模式建立 current workspace 执行记录;
58
+ 5. 当前代码使合同失效时停止并返回对应上游 owner。
74
59
 
75
- - 用户已明确批准直接实现;
76
- - 单一行为、局部、低风险、可逆;
77
- - 轻量执行契约完整;
78
- - 不涉及 Deep 条件;
79
- - 可写范围和验证明确。
60
+ Direct Spec 模式验证用户批准、轻量合同和 current workspace 唯一写入 owner;不创建虚假 Ticket/worktree 状态。
80
61
 
81
- 失败时停止,标记 `blocked` `deviated`,不得边做边补关键决策。
62
+ **完成标准**:按策略完成 workspace、基线、owners、权限与实际 Git 一致;current 模式只有一个 implementation writer 且 Ticket 串行可恢复。
82
63
 
83
- ### 2. 设计检查
64
+ ### 2. Lead 决定自行实现或动态派单
84
65
 
85
- 加载 `<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`,并严格使用其中的模块、接口、深度、接缝、适配器、杠杆和局部性术语。
66
+ Ticket 模式下,Lead 根据 Ticket 独立性、路径冲突、上下文、风险和平台能力决定。派单时以 `operation=dispatch` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`。`current` 模式仍可派遣一个 implementation subagent 写当前 workspace,但必须等待其返回、Lead 验收并形成 commit 后才进入下一个 Ticket;`required` 模式 implementation subagent 绑定独立 Ticket worktree。Direct Spec 模式由 Lead 作为 current workspace 唯一写入 owner,不派遣 implementation subagent 写入。
86
67
 
87
- 在写代码前检查:
68
+ - implementation subagent 同时取 Goal Plan/config/平台能力的共同上限;current 模式保持单 writer 串行安全不变量;Lead 不计入;
69
+ - review/research/test-observation agent 不设置 SpecDev 数字上限,但保持只读;
70
+ - implementation Packet 按策略绑定唯一 Ticket workspace 或 current workspace、checkpoint、路径、非 E2E 检查与 commit 返回;
71
+ - subagent 不写 SpecDev 工件、Evidence、父分支或 E2E 结果;
72
+ - Lead 自行实现时仍遵循相同 worktree、commit 与返回事实合同。
88
73
 
89
- - 目标代码属于哪些模块;
90
- - 每个模块的接口、类型、不变量、顺序约束、错误和性能语义;
91
- - 模块是否有足够深度,是否减少调用者认知;
92
- - 接缝在哪里,是否有真实适配器或可替换实现;
93
- - 依赖属于进程内、本地可替换、远程自有或真正外部依赖;
94
- - 测试应在哪个稳定接缝观察行为;
95
- - Ticket/Spec 已锁定的公共契约是否被保持。
74
+ **完成标准**:current 模式只有一个 implementation owner 写当前 workspace;required 模式只有一个 owner 写当前 Ticket worktree;Direct Spec 只有 Lead 写 current workspace;所有 SpecDev 写入仍由 Lead 拥有。
96
75
 
97
- 存在多个局部接口设计且不改变已锁定契约时,可以运行 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`。若设计摩擦已经超出当前 Ticket 范围,返回 `<Path>{roots.workflows}/specdev/R-review-architecture/R-review-architecture.md</Path>`;若方案会改变产品行为、公共接口、数据、兼容、安全或范围,返回 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>` 或相应规划工件,不使用 design-it-twice 绕过决策。
76
+ ### 3. 设计检查
98
77
 
99
- 若不熟悉外部库、框架 API 或依赖能力边界,调用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。
78
+ 加载 `<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`,检查模块、接口、类型、不变量、顺序/错误/性能语义、接缝、适配器、依赖分类、测试观察点和既有公共合同。
100
79
 
101
- **完成标准**:模块深度、接口、不变量、接缝、适配器和依赖策略已检查,局部设计与上层契约一致。
80
+ 存在多个不改变上层契约的局部设计时,可运行 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`。超出 Ticket 或改变产品/公共合同/数据/兼容/安全时,返回架构审查、Grill、Spec 或 Ticket owner。陌生外部依赖使用 research Skill。
102
81
 
103
- ### 3. TDD 红→绿垂直循环
82
+ **完成标准**:局部设计与上层契约一致,稳定接缝和依赖策略明确。
104
83
 
105
- 加载:
84
+ ### 4. TDD 红→绿垂直循环
106
85
 
107
- - `<Path>{roots.workflows}/specdev/I-implement/tdd-rules.md</Path>`
108
- - `<Path>{roots.workflows}/specdev/I-implement/tdd-test-design.md</Path>`
109
- - `<Path>{roots.workflows}/specdev/I-implement/tdd-mocking.md</Path>`
110
- - `<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`
111
-
112
- 对每个验收行为或关键风险:
86
+ 加载 `<Path>{roots.workflows}/specdev/I-implement/tdd-rules.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-test-design.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-mocking.md</Path>` 和 `<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`。对每个验收行为或关键风险:
113
87
 
114
88
  1. 选择公共接口或稳定接缝;
115
- 2. 编写会因目标行为缺失而失败的测试或可重复验证;
116
- 3. 确认失败原因正确;
117
- 4. 只写足以通过当前测试的实现;
118
- 5. 运行定向验证;
119
- 6. 保存 red/green 证据并进入下一条窄垂直切片。
89
+ 2. 编写因目标行为缺失而失败的测试/验证并确认失败原因;
90
+ 3. 只写足以通过当前测试的实现;
91
+ 4. 运行定向非 E2E 验证;
92
+ 5. 保存 red/green 事实并进入下一条窄切片。
120
93
 
121
- 本循环新增或修改代码注释时,使用注释规则判断信息是否应由代码表达,并同步维护受行为变更影响的既有注释。
94
+ 不得删除测试、放宽断言、吞错、永久跳过或只验证 Mock 调用次数来制造绿色。
122
95
 
123
- 不得通过删除测试、放宽断言、吞错、永久跳过或只测试 Mock 调用次数来制造绿色。
96
+ 新增或修改代码注释时,先判断信息能否由命名、类型或结构表达,并同步维护受行为变化影响的既有注释。
124
97
 
125
- ### 4. 持续验证与范围审计
98
+ ### 5. 实现检查、commit 与 Lead 接收
126
99
 
127
- - 每个安全落点运行定向验证;
128
- - 完成前运行 Ticket 验证矩阵,或 Direct Spec 模式的轻量验证契约;
129
- - 按 `<Path>{roots.state}/specdev/config.json</Path>` 运行适用的类型检查、lint、测试和构建;
130
- - current workspace 由其唯一写入 owner 运行适用 E2E;隔离 workspace 由 integration owner 在集成阶段运行;Lead Team 的 Worker 只记录场景与预期结果;
131
- - 检查实际修改均在 `writable_paths` 或获批的 Direct Spec 可写范围内;
132
- - shared path 只由 owner 修改;
133
- - 越界前停止并提出 ownership change,不先改后报;
134
- - 记录新失败、既有失败和环境失败的区别。
100
+ Ticket 模式的 implementation owner 按 Goal Plan 策略在当前 workspace 或来源 worktree:
135
101
 
136
- 完成当前实现审查前运行:
102
+ - 运行 Ticket 要求的单元、组件、静态、类型、lint/build 等非 E2E 检查;
103
+ - 审计 writable/shared/read-only 路径和新/既有/环境失败;
104
+ - 在已授权时创建引用 Ticket ID 的实现 commit;current 模式 commit 直接落在父分支,required 模式落在 Ticket branch;
105
+ - 返回 commit、dirty 状态、实际路径、命令/结果、未运行项和恢复条件。
137
106
 
138
- ```bash
139
- node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
140
- --stage implement \
141
- <Path>{roots.state}/specdev/changes/{change}</Path>
142
- ```
107
+ Ticket 模式中,Lead 以 `operation=accept` 调用 subagent-delivery,重读 Git 状态、branch tip、commit、diff 和命令事实。无改动时将 Ticket 改为 `cancelled` 并记录原因;不得 empty commit 或 Evidence-only Done。required 模式来源 worktree 不运行 E2E;current 模式适用 E2E 留给 Lead 的 direct-parent 验证。
143
108
 
144
- 证据规则见 `<Path>{roots.workflows}/specdev/common/rules/evidence-and-verification.md</Path>`。
109
+ Direct Spec 模式由 Lead 在 current workspace 运行轻量合同要求的定向非 E2E 检查,审计获批可写范围,并在获得 implementation commit 授权后创建引用 change 的非空 commit;无需改动时记录事实并取消直接实现,不创建 empty commit。记录实施前基线、最终 checkpoint、dirty 状态、实际路径、命令结果、未运行项和恢复条件。
145
110
 
146
- ### 5. 双轴审查
111
+ **完成标准**:required 模式 Ticket worktree clean 且 `source_checkpoint` 精确等于 branch tip;current 模式 workspace clean 且 Ticket `result_sha` 精确等于父分支上的 implementation commit;或 Direct Spec 的 current workspace checkpoint、路径和轻量合同一致。
147
112
 
148
- 调用 `<Path>{roots.workflows}/specdev/common/skills/code-review/SKILL.md</Path>`,把当前 Ticket 基线和实现 checkpoint 固定为本地 SHA。
113
+ ### 6. 双轴审查
149
114
 
150
- - **标准轴**:正确性、模块设计、代码异味、错误处理、安全、性能、并发、资源释放、测试质量和可维护性;
151
- - **规范轴**:对照 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`、Ticket 的 IN/OUT、实现契约、路径所有权、验证矩阵和 Goal Gate。
115
+ 调用 `<Path>{roots.workflows}/specdev/common/skills/code-review/SKILL.md</Path>`。required Ticket 以 `base_sha` 与 `source_checkpoint` 为固定点;current Ticket 以 Ticket 实施前基线与 implementation commit 为固定点;Direct Spec 以实施前基线与 current workspace 最终 checkpoint 为固定点:
152
116
 
153
- 标准轴同时复核步骤 3 加载的注释规则:公共 API 契约完整,内部注释只保留非显然的 Why、Invariant 和 Risk,且所有相关注释与当前行为一致。
117
+ - 标准轴:正确性、模块设计、错误、安全、性能、并发、资源、测试与可维护性;
118
+ - 规范轴:Spec/Ticket IN/OUT、实现合同、路径所有权、验证矩阵与 Goal Gate。
154
119
 
155
- 两个轴使用隔离上下文并按标准轴、规范轴顺序写入 Evidence,不合并或跨轴重排。审查发现局部问题时进入独立修正/重构阶段,随后重跑受影响验证和 review 轴;需要改变上层契约时升级 deviation 并返回 Spec/Ticket/ADR。
120
+ 标准轴同时复核 `<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`:公共 API 契约完整,内部注释只保留非显然的 Why、Invariant Risk,且相关注释与当前行为一致。
156
121
 
157
- ### 6. Evidence 与状态
122
+ 两个轴隔离并按标准轴、规范轴顺序返回 Lead。局部 finding 在当前模式的实现 workspace 修正、创建新 checkpoint 并重跑;改变上层契约则登记 deviation。Ticket 进入 `review` 或 Direct Spec 进入最终验证前,两轴必须通过。
158
123
 
159
- Ticket 模式使用 `<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>` 写入:
124
+ ### 7. 最终集成与适用 E2E
160
125
 
161
- ```text
162
- <Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>
163
- ```
126
+ `required` Ticket 模式中,Lead 以 `purpose=ticket, operation=finalize` 调用 dev-worktree:
164
127
 
165
- Direct Spec 模式写入:
128
+ 1. 在最新父分支的 Lead-owned candidate checkout 组合 source commit;
129
+ 2. 运行受影响集成/回归、项目父状态检查和 Ticket 标记 required 的 E2E;
130
+ 3. candidate 失败时父分支不动,Ticket 回 `in_progress`/`blocked`;
131
+ 4. 父 HEAD 漂移时废弃本轮 candidate,基于最新父分支重建并重跑;
132
+ 5. 全部通过后父分支 fast-forward 到 candidate/result SHA;
133
+ 6. 重读父 HEAD/tree 和 ancestor 关系后,才允许 Ticket Done。
166
134
 
167
- ```text
168
- <Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>
169
- ```
135
+ E2E 是否需要由 Ticket/Goal Plan 的实际跨边界风险决定,不限于 UI;不适用必须记录原因。
170
136
 
171
- Evidence 必须包含实际修改范围、命令与结果、验收逐条映射、未运行项、偏差、残余风险和提交引用。
137
+ `current` Ticket 模式跳过 source worktree、candidate merge 和 candidate checkout。Lead 在当前 workspace 运行 Ticket 要求的适用集成/回归与 E2E,记录运行环境、命令、退出码和摘要;E2E 不得派给其他 agent。失败时不声明完成,保留 Ticket commit、父 HEAD 和恢复条件。全部通过后重读父 HEAD/tree 并记录 `result_sha`。Direct Spec 模式同样跳过 source worktree、candidate merge 和父分支推进。
172
138
 
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 不包含这些字段或空占位。
139
+ ### 8. Evidence、状态与完成
174
140
 
175
- Ticket 状态依次为 `ready in_progress review done`;阻塞使用 `blocked`,实际实现与批准契约不一致使用 `deviated`。验证无法运行或存在未批准偏差时不得标 `done`。
141
+ Lead 使用 `<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>` 写入 Ticket Evidence;Direct Spec 按该模板的 Direct Spec 适配说明写 `<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`。Ticket Evidence 按策略记录 implementation/source、适用 candidate/result SHA、派单/返回、两层验证、双轴审查、E2E disposition、路径审计、偏差和残余风险;Direct Spec Evidence 使用实施前基线与 current workspace 最终 checkpoint,不伪造 Ticket/worktree/candidate 字段。
176
142
 
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
143
+ Ticket 正常状态:`ready in_progress review done`。`required` `done` 要求 change worktree 已完成集成(`integrated` `removed`)、父 HEAD=result SHA 且包含 source commit;`current` `done` 要求 current workspace clean、direct-parent 验证通过且父 HEAD=result SHA。阻塞使用 `blocked`,契约偏差使用 `deviated`,无需改动使用 `cancelled`。Direct Spec 由当前 I-implement owner `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>` 关闭 change
178
144
 
179
- 同步:
145
+ 按存在和当前模式同步 Ticket、Tickets Map、Goal Plan、`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 和全局状态;Direct Spec 不创建缺失的 Ticket/Map/Goal Plan。最后一个计划内 Ticket 完成后,Goal Plan 的 Lead 按 change completion 关闭;无 Goal Plan 的当前 I owner 承担同一门禁。需要远程 reconcile 时返回 T-triage,否则进入 Archive。
180
146
 
181
- - Ticket:`<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`
182
- - Tickets Map:`<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
183
- - change 状态:`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`
184
- - 全局状态:`<Path>{roots.state}/specdev/status.json</Path>`
147
+ 运行:
185
148
 
186
- ### 7. 提交与返回
149
+ ```bash
150
+ node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
151
+ --stage implement \
152
+ --repo <project-root> \
153
+ <Path>{roots.state}/specdev/changes/{change}</Path>
154
+ ```
187
155
 
188
- 1. 运行项目自身的适用验证;
189
- 2. 仅在 `<Path>{roots.state}/specdev/config.json</Path>` 和用户授权允许时提交;
190
- 3. 提交信息引用 Ticket ID 或 Direct Spec change;
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;
193
- 6. Direct Spec 模式返回 change、状态和 `<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`。
156
+ ### 9. 返回
194
157
 
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、集成结果、修正轮次和未验证项。
158
+ Ticket 模式返回 Ticket/change 状态、Evidence 完整路径、workspace locator、implementation/source、适用 candidate/result SHA、父分支、E2E disposition、未验证项和下一路由。Direct Spec 返回 change 状态、`<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`、current workspace、实施前/最终 checkpoint、适用 E2E 和下一路由。push、PR、remote merge、deploy、migration、生产动作及来源 branch/worktree cleanup 只在独立授权时执行。
196
159
 
197
160
  ## 完成标准
198
161
 
199
- - 执行前预检通过;
200
- - 设计检查严格使用共享术语,并保留深模块、接缝、适配器和依赖分类能力;
201
- - 每个行为通过真实红→绿循环实现;
202
- - 定向与适用回归验证完成;
203
- - 双轴审查通过;
204
- - Evidence 完整;
205
- - 实际修改未超出授权路径;
206
- - 无未批准 deviation;
207
- - 状态已同步;
208
- - 实现结果可通过 Evidence、状态和代码引用完整定位;
209
- - 提交遵守用户授权。
162
+ - Ticket 模式按策略完成 current workspace/direct-parent 或 worktree/implementation commit/candidate gate;Direct Spec 的轻量合同、current workspace checkpoint、双轴审查和最终验证完整;
163
+ - current Ticket 的适用 E2E 由 Lead 在 current workspace 运行;required Ticket 的适用 E2E 由 Lead 在 parent-candidate 运行;Direct Spec 适用 E2E 由 Lead 在 current workspace 运行;
164
+ - Lead 独立核对并写全部 SpecDev 工件;
165
+ - current Ticket 父分支只推进到通过的 direct-parent 验证 commit;required Ticket 父分支只推进到通过的 candidate;两者 Ticket Done 都必须与实际 Git 一致;Direct Spec 的完成状态与 current workspace 最终 checkpoint 一致;
166
+ - 实际路径、验证、偏差和状态可由 Evidence 恢复;
167
+ - validator 无 error。
210
168
 
211
169
  ## 子文件引用
212
170
 
213
171
  - 执行前预检:`<Path>{roots.workflows}/specdev/I-implement/execution-preflight.md</Path>`
214
- - 代码库设计规则:`<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`
172
+ - 代码库设计:`<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`
215
173
  - Design It Twice:`<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`
216
- - TDD 规则:`<Path>{roots.workflows}/specdev/I-implement/tdd-rules.md</Path>`
217
- - TDD 测试设计:`<Path>{roots.workflows}/specdev/I-implement/tdd-test-design.md</Path>`
218
- - TDD Mocking:`<Path>{roots.workflows}/specdev/I-implement/tdd-mocking.md</Path>`
219
- - 代码注释规则:`<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`
220
- - 双轴审查:`<Path>{roots.workflows}/specdev/common/skills/code-review/SKILL.md</Path>`
221
- - Evidence 模板:`<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>`
222
- - 委派 Evidence 附录:`<Path>{roots.workflows}/specdev/I-implement/delegated-evidence-template.md</Path>`,仅 lead-team 时加载
223
- - Agent 交付合同:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
224
- - Merge/rebase 冲突:`<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`
174
+ - TDD:`<Path>{roots.workflows}/specdev/I-implement/tdd-rules.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-test-design.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/tdd-mocking.md</Path>`
175
+ - 代码注释:`<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`
176
+ - Evidence:`<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>`
177
+ - Agent 交付:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
178
+ - Worktree:`<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`
179
+ - 冲突处理:`<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`
@@ -1,90 +1,108 @@
1
1
  # Evidence: <Ticket ID> — <Ticket title>
2
2
 
3
+ 本模板按 Goal Plan 的 workspace/integration 策略记录实际验证环境;不适用的环境明确写 `not-applicable`,不伪造 source、candidate 或 result 链。Direct Spec 使用本模板时写入 `<Path>{roots.state}/specdev/changes/{change}/evidence/direct-spec.md</Path>`,以实施前基线和最终 checkpoint 代替 Ticket 集成链。
4
+
3
5
  - **Change:** `<change>`
4
6
  - **Ticket:** `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`
5
7
  - **Spec:** `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
6
- - **Tickets Map:** `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
7
8
  - **Goal Plan:** `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` / 不适用
8
- - **基线/分支:**
9
- - **Worktree 引用:** 不适用 / `<workspace_ref>`
10
- - **实现者:**
11
- - **开始/结束:**
12
- - **状态:** review / done / blocked / deviated
9
+ - **Lead:** `<owner-or-session-locator>`
10
+ - **Workspace/branch:** `<workspace_ref>` / `<branch>`
11
+ - **Base/implementation-or-source/candidate/result SHA:** `<sha>` / `<sha>` / `<sha>` / `<sha>`
12
+ - **状态:** review / done / blocked / deviated / cancelled
13
13
 
14
14
  ## 1. 实现摘要
15
15
 
16
- 用用户可观察行为和已锁定契约说明实际完成了什么,不复述提交日志。
16
+ 用可观察行为与已锁定合同说明实际完成内容。Cancelled 时说明为何无需实现及其权威来源。
17
+
18
+ ## 2. Lead Dispatch And Candidate Return
19
+
20
+ - **Implementation owner:** Lead / `<agent/provider>`
21
+ - **Dispatch Packet/checkpoint:** Lead direct / `<locator + immutable checkpoint>`
22
+ - **允许动作:** worktree changes / implementation commit / ...
23
+ - **返回:** commit、dirty 状态、修改路径、非 E2E 命令、未验证项与恢复条件
24
+ - **Lead 独立核对:** pass / fail;实际读取与命令摘要
25
+ - **只读 Agent findings:** 无 / 固定输入、来源、结论、Lead 核对
26
+
27
+ subagent 不写本 Evidence;以上内容由 Lead 从实际 workspace、Git 和返回事实整理。
17
28
 
18
- ## 2. 修改范围
29
+ ## 3. 修改范围与路径所有权
19
30
 
20
31
  | 路径 | 所有权 | 改动目的 |
21
32
  |---|---|---|
22
33
  | `<Path>src/example.ts</Path>` | writable / shared:<owner> | ... |
23
34
 
24
- ## 3. 验收与合同映射
35
+ - **read-only 修改:** 无
36
+ - **未声明路径:** 无
37
+ - **生成文件/锁文件:** 无 / 来源与 owner
38
+
39
+ ## 4. 验收与合同映射
25
40
 
26
41
  | Contract / Acceptance ID | 验证接缝 | 证据 | 结果 |
27
42
  |---|---|---|---|
28
- | AC-... | ... | 测试、截图、日志或人工检查摘要 | pass / fail / not-run |
43
+ | AC-... | ... | 测试、日志或人工检查摘要 | pass / fail / not-run |
44
+
45
+ 每个 Ticket 验收项恰好落到一行。
29
46
 
30
- 每个 Ticket 验收项必须恰好落到一行;不能用“一般测试已通过”替代逐项证据。
47
+ ## 5. Workspace Verification
31
48
 
32
- ## 4. 验证执行
49
+ Goal Plan 记录 current workspace 或 source worktree 检查,并注明运行环境。
33
50
 
34
- | 命令或步骤 | 运行环境 | 结果 | 摘要或附件 |
51
+ | 命令或步骤 | 运行环境 | 结果 | 摘要 |
35
52
  |---|---|---|---|
36
- | ... | ... | pass / fail / not-run | ... |
53
+ | ... | current-workspace | pass / fail / not-run | ... |
37
54
 
38
55
  - **失败后修复与重跑:** 无 / ...
39
- - **未运行检查:** 无 / 原因与风险 ...
40
- - **E2E:** 不适用 / 场景、执行者与结果
41
- - **反向验证:** 不适用 / 受控失败信号与恢复结果
42
- - **外部声明:** 无 / 已核对 / `unverified`:原因
56
+ - **未运行检查:** 无 / 原因与风险
57
+ - **E2E:** Goal Plan 的 E2E disposition 记录;未在本环境运行时说明 owner 与原因
43
58
 
44
- ## 5. 双轴审查
59
+ ## 6. 双轴审查
60
+
61
+ 标准轴与规范轴保持独立,分别记录固定输入、结果和修正。
45
62
 
46
63
  ### 标准轴
47
64
 
65
+ - **固定输入:** `<base_sha>..<source_checkpoint>`
48
66
  - **结果:** pass / request-changes
49
- - **来源:** 仓库标准 + Fowler baseline
50
- - **Findings:** 无 / ...
51
- - **修正与重跑:** 不适用 / ...
67
+ - **Findings 与修正:** / ...
52
68
 
53
69
  ### 规范轴
54
70
 
71
+ - **固定输入与来源:** Spec / Ticket / Goal Plan / source
55
72
  - **结果:** pass / request-changes / skipped:no-spec
56
- - **来源:** Spec / Ticket / source / 无
57
- - **Findings:** 无 / ...
58
- - **修正与重跑:** 不适用 / ...
59
-
60
- 两轴保持独立顺序,不合并或跨轴重排 finding。
73
+ - **Findings 与修正:** / ...
61
74
 
62
- ## 6. 路径所有权审计
75
+ 两个轴隔离并按上述顺序记录。
63
76
 
64
- - **writable 内修改:**
65
- - **shared 修改与 owner 批准:** 无 / ...
66
- - **read-only 修改:** 无
67
- - **未声明路径:** 无
68
- - **生成文件或锁文件:** 无 / 来源与 owner ...
77
+ ## 7. Integration Verification
69
78
 
70
- ## 7. 偏差与决策
79
+ Goal Plan 记录 direct-parent 或 parent-candidate 集成;未采用的字段写 `null` 或 `not-applicable`。
71
80
 
72
- - **偏差:** / `<deviation-id>`
73
- - **偏差记录:** `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>` / 不适用
74
- - **批准人或决策来源:**
75
- - **对范围、契约、依赖或后续 Ticket 的影响:** / ...
81
+ | 项目 | 结果 |
82
+ |---|---|
83
+ | Parent before SHA | `<sha>` |
84
+ | Implementation/source SHA | `<sha>` / `<sha>` |
85
+ | Candidate branch/workspace | current / `<branch>` / `not-applicable` |
86
+ | Method/conflicts | direct-parent / fast-forward / merge-commit;无 / paths |
87
+ | Integration checks | 命令、运行环境 `current-workspace`、结果 |
88
+ | E2E disposition | required / not-required: reason |
89
+ | E2E result | pending / passed / failed / not-required;场景与证据 |
90
+ | Parent result/re-read | `<sha>`;HEAD/tree/ancestor 核对 |
76
91
 
77
- 偏差处理遵守 `<Path>{roots.workflows}/specdev/common/rules/deviation-control.md</Path>`,不得静默修改 Ticket 目标或验收。
92
+ 集成失败时明确父 HEAD 是否推进、失败命令、旧 SHA 和恢复条件。
78
93
 
79
- ## 8. 残余风险与后续
94
+ ## 8. 偏差与决策
80
95
 
81
- - **残余风险:** 无 / ...
82
- - **已知限制:** / ...
83
- - **后续 Ticket:** 无 / `<ticket-id>`
84
- - **监控或回滚触发条件:** 不适用 / ...
96
+ - **偏差:** 无 / `<deviation-id>`
97
+ - **记录:** `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>` / 不适用
98
+ - **批准来源及影响:** ...
85
99
 
86
- ## 9. 交付定位
100
+ ## 9. 残余风险与交付定位
87
101
 
88
- - **Commit / PR:**
89
- - **最终 Workspace 引用:** 不适用 / `<workspace_ref>`
90
- - **Evidence 文件:** `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`
102
+ - **残余风险/已知限制:** / ...
103
+ - **后续 Ticket:** / `<ticket-id>`
104
+ - **监控或回滚触发:** 不适用 / ...
105
+ - **Source commit:** `<sha>`
106
+ - **Parent result:** `<sha>`
107
+ - **Source workspace:** `<workspace_ref>`
108
+ - **Evidence:** `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`
@@ -1,28 +1,38 @@
1
1
  # Execution Preflight
2
2
 
3
- ## 硬检查
3
+ ## Ticket 硬检查
4
4
 
5
5
  - [ ] Ticket frontmatter 可解析,`ready: true`,`status: ready`。
6
- - [ ] 所有 blocked_by Ticket 为 done 且证据存在。
7
- - [ ] Spec、ADR、Ticket Goal Plan 无冲突。
8
- - [ ] 当前代码入口、接口和路径仍与 Ticket 假设一致。
9
- - [ ] writable_paths 无并发 owner 冲突。
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 和生产动作;未授权动作不会执行。
14
- - [ ] 委派候选交付的附件 hash、修改范围和事实声明可由 Lead 独立核对。
15
- - [ ] 验证命令/环境可用。
16
- - [ ] 可静默失效的关键门禁定义了受控反向验证;普通测试不为形式追加破坏性检查。
17
- - [ ] Deep Ticket 的批准点已满足。
6
+ - [ ] 所有 `blocked_by` Ticket 为 done 且 Evidence 存在。
7
+ - [ ] Spec、ADR、Ticket Goal Plan 无冲突;旧 Goal Plan schema 必须重跑 P-goal-plan。
8
+ - [ ] Goal Plan(若存在)为 `lead-directed`,workspace/integration 策略为 `current/direct-parent` 或 `required/candidate-merge`,Lead 可恢复,implementation/integration 上限不超过 config 与平台能力。
9
+ - [ ] 当前代码入口、接口、路径和父分支仍与 Ticket 假设一致。
10
+ - [ ] writable/shared paths 有唯一 owner;current 模式的 Ticket 顺序已固定且没有其他 active implementation writer。
11
+ - [ ] implementation commit 与当前策略对应的 direct-parent local candidate integration/父分支更新已授权;push/PR/remote/deploy 等保持独立。
12
+ - [ ] required 模式的 dev-worktree 记录 schema v6,`base_sha`、父分支、owners、branch、`workspace_ref`、integration E2E disposition 完整;current 模式的 current workspace 记录使用 `workspace_ref: current`、`branch: parent_branch` 和 direct-parent integration
13
+ - [ ] implementation subagent 若被派遣,Packet 绑定唯一 Ticket workspace current workspace/checkpoint;subagent 不写 SpecDev 状态。
14
+ - [ ] current 模式 source 检查在 current workspace 且不宣称 E2E;required 模式 source 检查明确为非 E2E,required E2E 有 parent-candidate 场景与预期。
15
+ - [ ] 验证命令/环境可用,关键静默失败风险有受控反向验证。
16
+ - [ ] Deep Ticket 批准点已满足。
17
+
18
+ ## Direct Spec 硬检查
19
+
20
+ - [ ] 用户明确批准 Direct Spec;单一行为、局部、低风险、可逆且无需并行/Ticket DAG。
21
+ - [ ] current workspace 只有一个项目与 SpecDev 写入 owner。
22
+ - [ ] 目标、IN/OUT、可写范围、不变量、验证与验收完整。
23
+ - [ ] 实施前 Git checkpoint、dirty 状态和现有用户改动已记录,不覆盖无关改动。
24
+ - [ ] 非 E2E、适用回归与 E2E 验证环境可执行;E2E owner 固定为 Lead。
25
+ - [ ] implementation commit 授权状态明确;未授权时不提交,并在轻量合同与 Evidence 中记录交付状态。
18
26
 
19
27
  ## 失效分类
20
28
 
21
- - **stale-navigation**:仅 expected_changes/行号过时,契约仍有效;更新导航后继续。
22
- - **local-implementation**:局部实现方式需调整,不改变契约;记录后继续。
23
- - **ticket-invalid**:范围、接口、依赖、验证或路径契约失效;停止并修 Ticket。
24
- - **spec-invalid**:外部行为/合同需改变;停止并修 Spec
25
- - **adr-conflict**:架构决策冲突;停止并处理 ADR
26
- - **checkpoint-drift**:委派派单基线、源码包或当前代码已经漂移;暂停并由 Lead 重放、重派或建立新 checkpoint。
27
- - **workspace-contract-invalid**:worktree 缺少合法 trigger、父分支、owner、locator、source checkpoint 或结束动作;停止并修 Goal Plan/状态记录。
28
- - **delivery-unverified**:候选交付、provider 声明或附件无法独立核对;保持 `unverified`,不得推进 `done`。
29
+ - **stale-navigation**:导航过时但契约仍有效;更新导航继续。
30
+ - **local-implementation**:局部实现调整不改变契约;记录后继续。
31
+ - **ticket-invalid**:范围、接口、依赖、验证或路径合同失效;停止并修 Ticket。
32
+ - **spec-invalid / adr-conflict**:返回对应上游 owner
33
+ - **checkpoint-drift**:current/来源/父分支/派单 checkpoint 漂移;由 Lead 重建执行记录或 required 模式的 worktree/candidate
34
+ - **workspace-contract-invalid**:缺少父分支、owner、locator、implementation/source/适用 result 字段或授权;停止并修状态/计划。
35
+ - **workspace-strategy-invalid**:Goal Plan workspace/integration 组合非法,或 current 模式出现并发 implementation writer;停止并修状态/计划。
36
+ - **delivery-unverified**:候选、provider 声明或附件不能独立核对;保持 unverified
37
+ - **e2e-owner-invalid**:required 模式 E2E 被安排在 source worktree,或任一模式不是 Lead owner;停止并修 Ticket/Goal Plan。
38
+ - **direct-parent-invalid**:current 模式的 Ticket commit、父 HEAD、验证或 Evidence 不一致;保留最后可信 commit 并阻塞当前 Ticket。
@@ -1,21 +1,21 @@
1
1
  # Merge / Rebase Conflict Protocol
2
2
 
3
- 只在 `git status` 证明仓库正处于 mergerebase 冲突时加载。普通集成设计冲突继续按 deviation/upstream owner 处理。
3
+ 只在 `git status` 证明仓库正处于 merge/rebase 冲突时加载。
4
4
 
5
5
  ## 流程
6
6
 
7
- 1. 读取 Git 状态、操作类型、冲突文件、base/ours/theirs commit、当前 Ticket/Evidence,以及是否存在匹配的 `terminal_action=integrate` worktree 记录。
8
- 2. 追溯双方意图:commit message、冻结的 source、Spec、Ticket、ADR、测试和调用者。二者缺失时不凭代码表面猜测产品行为。
9
- 3. conflict hunk 写出双方意图、共同约束和建议结果。只合并既有意图;需要发明新行为或改变上层合同则停止并登记 deviation。
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、无未声明路径、双方要求及测试仍成立。
7
+ 1. 读取 Git 状态、操作类型、冲突路径、base/ours/theirs SHA、Ticket/Evidence 与匹配的 candidate integration 记录。
8
+ 2. commitsource、Spec、Ticket、ADR、测试和调用者追溯双方意图;信息不足时不猜产品行为。
9
+ 3. 对每个 hunk 写出双方意图、共同约束和唯一可推导结果;需要新行为或上层决定时停止并登记 deviation。
10
+ 4. 在授权路径内解决文本,运行受影响的非 E2E 检查;candidate checkout 中按 finalize 合同运行父状态检查/E2E。
11
+ 5. 匹配的 local candidate integration 授权包含 `git add`、candidate merge commit、必要的 `git merge --abort` 和 transient candidate checkout/branch 生命周期;不扩展到来源 branch/worktree cleanup 或远端动作。
12
+ 6. 需要改变 Spec/ADR、安全/迁移决定、越过 owner 或无法同时保持既有意图时,在 Lead-created candidate 中执行 `git merge --abort`,记录 blocker 并保留来源 worktree;未知普通冲突现场不擅自 abort。
13
+ 7. 重读 Git 状态、parents diff,确认无 marker、无未声明路径、双方合同及验证仍成立。
14
14
 
15
15
  ## 完成标准
16
16
 
17
- - 每个 hunk 的结果可追溯到双方意图;
17
+ - 每个 hunk 可追溯到既有意图;
18
18
  - 新产品决定没有藏在冲突解决中;
19
- - 项目验证有命令、退出码和关键输出;
20
- - Git 副作用来自逐动作授权,或来自可核对 worktree 记录中的持久本地集成授权;
21
- - 完成或暂停状态可以从 EvidenceGit 状态恢复。
19
+ - 验证记录命令、运行环境、退出码和摘要;
20
+ - Git 副作用来自明确的 candidate integration 或其他逐动作授权;
21
+ - 完成/暂停可以从 Git、change status Evidence 恢复。