@namewta/speculo 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +6 -2
  2. package/package.json +2 -2
  3. package/template/AGENTS.md +3 -1
  4. package/template/canonical/canonical-specdev-goal-plan.md +757 -225
  5. package/template/canonical/canonical-specdev-grill-with-docs.md +221 -133
  6. package/template/canonical/canonical-specdev-spec.md +73 -3
  7. package/template/canonical/canonical-specdev-tickets.md +681 -252
  8. package/template/canonical/canonical-specdev-wayfinder.md +330 -113
  9. package/template/commands/git-repository-audit.md +3 -602
  10. package/template/commands/references/git-repository-audit-procedure.md +608 -0
  11. package/template/skills/writing-great-skills/SKILL.md +2 -0
  12. package/template/skills/writing-great-skills/references/document-contract.md +23 -0
  13. package/template/workflows/learning/common/rules/activation-and-memory.md +7 -3
  14. package/template/workflows/ops/common/rules/activation-and-memory.md +7 -3
  15. package/template/workflows/person/common/rules/activation-and-memory.md +7 -3
  16. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +13 -136
  17. package/template/workflows/specdev/G-grill-with-docs/references/interview-procedure.md +134 -0
  18. package/template/workflows/specdev/I-implement/I-implement.md +15 -189
  19. package/template/workflows/specdev/I-implement/evidence-template.md +12 -0
  20. package/template/workflows/specdev/I-implement/execution-preflight.md +1 -1
  21. package/template/workflows/specdev/I-implement/references/implementation-procedure.md +192 -0
  22. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +28 -143
  23. package/template/workflows/specdev/P-goal-plan/completion-control.md +1 -1
  24. package/template/workflows/specdev/P-goal-plan/references/goal-lifecycle.md +35 -0
  25. package/template/workflows/specdev/P-goal-plan/references/goal-tickets-map-template.md +15 -0
  26. package/template/workflows/specdev/P-goal-plan/references/map-control.md +28 -0
  27. package/template/workflows/specdev/{O-orchestrate-implementation/O-orchestrate-implementation.md → P-goal-plan/references/multi-change-plan.md} +21 -33
  28. package/template/workflows/specdev/P-goal-plan/references/replan-and-recovery.md +21 -0
  29. package/template/workflows/specdev/P-goal-plan/references/single-change-plan.md +149 -0
  30. package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +48 -53
  31. package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +19 -10
  32. package/template/workflows/specdev/R-review-architecture/proposal-to-ticket.md +3 -1
  33. package/template/workflows/specdev/R-review-architecture/review-rubric.md +52 -0
  34. package/template/workflows/specdev/README.md +36 -216
  35. package/template/workflows/specdev/T-tickets/T-tickets.md +19 -230
  36. package/template/workflows/specdev/T-tickets/references/planning-procedure.md +233 -0
  37. package/template/workflows/specdev/T-tickets/ticket-template.md +16 -0
  38. package/template/workflows/specdev/T-tickets/tickets-map-template.md +14 -0
  39. package/template/workflows/specdev/T-triage/T-triage.md +3 -1
  40. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +24 -118
  41. package/template/workflows/specdev/W-wayfinder/references/initiative-discovery.md +29 -0
  42. package/template/workflows/specdev/W-wayfinder/references/initiative-template.json +8 -0
  43. package/template/workflows/specdev/W-wayfinder/references/map-traversal.md +120 -0
  44. package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +4 -0
  45. package/template/workflows/specdev/common/README.md +1 -1
  46. package/template/workflows/specdev/common/rules/activation-and-memory.md +7 -3
  47. package/template/workflows/specdev/common/rules/artifact-contract.md +10 -2
  48. package/template/workflows/specdev/common/rules/operating-governance.md +38 -0
  49. package/template/workflows/specdev/common/rules/parent-implementation-orchestration.md +6 -2
  50. package/template/workflows/specdev/common/rules/skill-invocation.md +27 -0
  51. package/template/workflows/specdev/common/rules/workflow-routing.md +24 -0
  52. package/template/workflows/specdev/common/rules/workflow-state-and-lifecycle.md +93 -0
  53. package/template/workflows/specdev/common/schemas/goal-tickets-map.schema.json +33 -0
  54. package/template/workflows/specdev/common/schemas/initiative.schema.json +94 -0
  55. package/template/workflows/specdev/common/schemas/ticket.schema.json +168 -1
  56. package/template/workflows/specdev/common/schemas/tickets-map.schema.json +74 -6
  57. package/template/workflows/specdev/common/skills/code-review/SKILL.md +3 -2
  58. package/template/workflows/specdev/common/skills/code-review/references/risk-review.md +25 -0
  59. package/template/workflows/specdev/common/skills/plan-quality-review/SKILL.md +10 -0
  60. package/template/workflows/specdev/common/skills/plan-quality-review/references/checklist.md +13 -0
  61. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +5 -83
  62. package/template/workflows/specdev/common/skills/subagent-delivery/references/dispatch-and-accept.md +87 -0
  63. package/template/workflows/specdev/common/tools/README.md +14 -2
  64. package/template/workflows/specdev/common/tools/plan-contract.mjs +256 -0
  65. package/template/workflows/specdev/common/tools/ticket-control.mjs +251 -0
  66. package/template/workflows/specdev/common/tools/validate-specdev.mjs +58 -40
  67. package/template/workflows/specdev/manifest.json +97 -1
  68. package/template/canonical/canonical-specdev-orchestrate-implementation.md +0 -2839
  69. package/template/workflows/specdev/O-orchestrate-implementation/implementation-evidence-template.md +0 -39
  70. package/template/workflows/specdev/O-orchestrate-implementation/implementation-map-template.md +0 -50
  71. package/template/workflows/specdev/O-orchestrate-implementation/implementation-plan-template.md +0 -61
  72. package/template/workflows/specdev/R-review-architecture/architecture-report-contract.md +0 -123
  73. package/template/workflows/specdev/R-review-architecture/architecture-review-report-template.html +0 -106
  74. /package/template/workflows/specdev/{O-orchestrate-implementation/conflict-and-drift.md → P-goal-plan/references/multi-conflict-and-drift.md} +0 -0
  75. /package/template/workflows/specdev/{O-orchestrate-implementation/execution-loop.md → P-goal-plan/references/multi-execution-loop.md} +0 -0
  76. /package/template/workflows/specdev/{O-orchestrate-implementation/input-readiness.md → P-goal-plan/references/multi-input-readiness.md} +0 -0
  77. /package/template/workflows/specdev/{O-orchestrate-implementation/super-dag.md → P-goal-plan/references/multi-super-dag.md} +0 -0
@@ -0,0 +1,192 @@
1
+ # 实现
2
+
3
+
4
+ 本 work 保留模块设计检查、design-it-twice、TDD 红绿循环、双轴审查和证据治理。Ticket 模式按子 Goal Plan 或父 Implementation Plan 的 `ticket_workspace_policy` 选择 current workspace 串行直接父分支或独立 worktree candidate-merge;Lead 根据实际情况自行实现或动态派单。
5
+
6
+ 若当前 change 是未完成父 Implementation Map 的成员,必须读取 `<Path>{roots.workflows}/specdev/common/rules/parent-implementation-orchestration.md</Path>`、父 Map 与父 Plan。父 Plan 提供跨 change dependency/serialization、全局 workspace 策略、组合派单标识、implementation agent cap 和 integration queue;子 Goal Plan 只能增加子内 Gate,不能放宽或冲突。
7
+
8
+
9
+ ## 执行模式
10
+
11
+ ### Ticket 模式(默认)
12
+
13
+ 先读取 Tickets Map 的总体实施背景与项目 Skill 读取矩阵,再读取适用于 `ALL` 或当前 Ticket 的项目 Skill,随后读取 Ready Ticket、可选子 Goal Plan 和可选父 Implementation Plan。存在父 Plan 时使用其 Lead、workspace/integration 策略和全局门,即使子 Goal Plan 不存在也可以执行;两者都存在时必须策略一致。没有父 Plan 时沿用子 Goal Plan;两者都不存在时,当前主会话作为该 Ticket 的 Lead,并按 Direct Spec 规则执行,不推断 worktree 策略。`required` 模式每个 Ticket 建立独立 worktree;`current` 模式所有受同一计划约束的 Ticket 严格串行,使用当前分支和当前 workspace。
14
+
15
+ ### Direct Spec 模式
16
+
17
+ 只有极小、局部、单一行为、低风险、可逆且无需 Ticket DAG 的工作,才可在用户批准后直接基于 Spec/ADR/CONTEXT 在 current workspace 执行。先确认目标、IN/OUT、唯一写入 owner、可写范围、关键不变量、验证和验收。出现公共 API/schema、迁移、安全、高风险、多个行为或并行需求时返回 T-tickets。
18
+
19
+ ## 输入
20
+
21
+ 两种模式都必须读取:
22
+
23
+ - 当前 Spec:`<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
24
+ - 项目配置:`<Path>{roots.state}/specdev/config.json</Path>`
25
+
26
+ Ticket 模式必须按以下顺序读取:
27
+
28
+ 1. `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>` 的总体实施背景和完整项目 Skill 读取矩阵;
29
+ 2. 矩阵中适用于 `ALL` 或当前 Ticket ID 的全部项目 Skill;
30
+ 3. 当前 Ticket `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`;
31
+ 4. 存在的 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`,以及父 Implementation Map 声明当前 change 时的父 Map/Plan。
32
+
33
+ 矩阵是发布时确认的最低必读集合,不是 allowlist。项目 Agent 指令或实际实现范围触发新的项目 Skill 时,先读取该 Skill、停止项目写入,由 Lead 更新 Tickets Map 并重新运行 tickets 校验后恢复。Direct Spec 模式必须读取用户对轻量执行合同和直接实现的明确批准。
34
+
35
+ 按存在情况读取:
36
+
37
+ - 当前 change 架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
38
+ - 当前 change 领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
39
+ - 当前 change 设计日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
40
+ - 当前 change 诊断:`<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
41
+ - 永久架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
42
+ - 永久领域上下文:`<Path>{roots.state}/specdev/context/</Path>`
43
+
44
+ 永久目录可以为空,静默继续。当前 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,不在实现中覆盖。
45
+
46
+ Git 已处于 merge/rebase 冲突时,先加载 `<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`;不把冲突伪装成普通 TDD。
47
+
48
+ ## 流程
49
+
50
+ ### 1. 执行前预检与 workspace
51
+
52
+ 加载 `<Path>{roots.workflows}/specdev/I-implement/execution-preflight.md</Path>`。
53
+
54
+ Ticket 模式:
55
+
56
+ 1. 验证 Ready、依赖 Evidence、Spec/ADR/Goal Plan、一致性、路径 owner 和验证接缝;确认 Tickets Map 的总体实施背景、项目 Skill 矩阵、当前 Ticket 覆盖与实际文件均有效,并完成规定读取顺序;
57
+ 2. 确认子 Goal Plan schema v6(若存在)与父 Implementation Plan schema v1(若存在)、唯一 Lead、workspace 策略、动态 implementation/integration 上限与授权;
58
+ 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;
59
+ 4. Lead 把 Ticket 设为 `in_progress`;`required` 模式将 change worktree 记录设为 `active`,`current` 模式建立 current workspace 执行记录;
60
+ 5. 当前代码使合同失效时停止并返回对应上游 owner。
61
+
62
+ Direct Spec 模式验证用户批准、轻量合同和 current workspace 唯一写入 owner;不创建虚假 Ticket/worktree 状态。
63
+
64
+ **完成标准**:按策略完成 workspace、基线、owners、权限与实际 Git 一致;current 模式只有一个 implementation writer 且 Ticket 串行可恢复。
65
+
66
+ ### 2. Lead 决定自行实现或动态派单
67
+
68
+ 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 写入。
69
+
70
+ - implementation subagent 同时取适用子 Goal Plan、父 Implementation Plan、config 和平台能力的共同上限;current 模式保持单 writer 串行安全不变量;Lead 不计入;
71
+ - 父实现编排存在时,派单与返回都使用 `<member-change>::<ticket-id>`,并占用父 Plan 的 task/serialization/integration slot;
72
+ - review/research/test-observation agent 不设置 SpecDev 数字上限,但保持只读;
73
+ - implementation Packet 按策略绑定唯一 Ticket workspace 或 current workspace、checkpoint、Tickets Map、当前 Ticket 的项目 Skill 最低必读集合、路径、非 E2E 检查与 commit 返回;
74
+ - subagent 不写 SpecDev 工件、Evidence、父分支或 E2E 结果;
75
+ - Lead 自行实现时仍遵循相同 worktree、commit 与返回事实合同。
76
+
77
+ **完成标准**:current 模式只有一个 implementation owner 写当前 workspace;required 模式只有一个 owner 写当前 Ticket worktree;Direct Spec 只有 Lead 写 current workspace;所有 SpecDev 写入仍由 Lead 拥有。
78
+
79
+ ### 3. 设计检查
80
+
81
+ 加载 `<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`,检查模块、接口、类型、不变量、顺序/错误/性能语义、接缝、适配器、依赖分类、测试观察点和既有公共合同。
82
+
83
+ 存在多个不改变上层契约的局部设计时,可运行 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`。超出 Ticket 或改变产品/公共合同/数据/兼容/安全时,返回架构审查、Grill、Spec 或 Ticket owner。陌生外部依赖使用 research Skill。
84
+
85
+ **完成标准**:局部设计与上层契约一致,稳定接缝和依赖策略明确。
86
+
87
+ ### 4. TDD 红→绿垂直循环
88
+
89
+ 加载 `<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>`。对每个验收行为或关键风险:
90
+
91
+ 1. 选择公共接口或稳定接缝;
92
+ 2. 编写因目标行为缺失而失败的测试/验证并确认失败原因;
93
+ 3. 只写足以通过当前测试的实现;
94
+ 4. 运行定向非 E2E 验证;
95
+ 5. 保存 red/green 事实并进入下一条窄切片。
96
+
97
+ 不得删除测试、放宽断言、吞错、永久跳过或只验证 Mock 调用次数来制造绿色。
98
+
99
+ 新增或修改代码注释时,先判断信息能否由命名、类型或结构表达,并同步维护受行为变化影响的既有注释。
100
+
101
+ ### 5. 实现检查、commit 与 Lead 接收
102
+
103
+ Ticket 模式的 implementation owner 按 Goal Plan 策略在当前 workspace 或来源 worktree:
104
+
105
+ - 运行 Ticket 要求的单元、组件、静态、类型、lint/build 等非 E2E 检查;
106
+ - 审计 writable/shared/read-only 路径和新/既有/环境失败;
107
+ - 在已授权时创建引用 Ticket ID 的实现 commit;current 模式 commit 直接落在父分支,required 模式落在 Ticket branch;
108
+ - 返回 commit、dirty 状态、实际路径、命令/结果、未运行项和恢复条件。
109
+
110
+ 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 验证。
111
+
112
+ Direct Spec 模式由 Lead 在 current workspace 运行轻量合同要求的定向非 E2E 检查,审计获批可写范围,并在获得 implementation commit 授权后创建引用 change 的非空 commit;无需改动时记录事实并取消直接实现,不创建 empty commit。记录实施前基线、最终 checkpoint、dirty 状态、实际路径、命令结果、未运行项和恢复条件。
113
+
114
+ **完成标准**:required 模式 Ticket worktree clean 且 `source_checkpoint` 精确等于 branch tip;current 模式 workspace clean 且 Ticket `result_sha` 精确等于父分支上的 implementation commit;或 Direct Spec 的 current workspace checkpoint、路径和轻量合同一致。
115
+
116
+ ### 6. 双轴审查
117
+
118
+ 调用 `<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 为固定点:
119
+
120
+ - 标准轴:正确性、模块设计、错误、安全、性能、并发、资源、测试与可维护性;
121
+ - 规范轴:Spec/Ticket IN/OUT、实现合同、路径所有权、验证矩阵与 Goal Gate。
122
+
123
+ 标准轴同时复核 `<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`:公共 API 契约完整,内部注释只保留非显然的 Why、Invariant 和 Risk,且相关注释与当前行为一致。
124
+
125
+ 两个轴隔离并按标准轴、规范轴顺序返回 Lead。局部 finding 在当前模式的实现 workspace 修正、创建新 checkpoint 并重跑;改变上层契约则登记 deviation。Ticket 进入 `review` 或 Direct Spec 进入最终验证前,两轴必须通过。
126
+
127
+ ### 7. 最终集成与适用 E2E
128
+
129
+ `required` Ticket 模式中,Lead 以 `purpose=ticket, operation=finalize` 调用 dev-worktree:
130
+
131
+ 1. 在最新父分支的 Lead-owned candidate checkout 组合 source commit;
132
+ 2. 运行受影响集成/回归、项目父状态检查和 Ticket 标记 required 的 E2E;
133
+ 3. candidate 失败时父分支不动,Ticket 回 `in_progress`/`blocked`;
134
+ 4. 父 HEAD 漂移时废弃本轮 candidate,基于最新父分支重建并重跑;
135
+ 5. 全部通过后父分支 fast-forward 到 candidate/result SHA;
136
+ 6. 重读父 HEAD/tree 和 ancestor 关系后,才允许 Ticket Done。
137
+
138
+ E2E 是否需要由 Ticket/Goal Plan 的实际跨边界风险决定,不限于 UI;不适用必须记录原因。
139
+
140
+ `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 和父分支推进。
141
+
142
+ 无论失败发生在 implementation、review、direct-parent 还是 parent-candidate,同一 Ticket 反复返回相同 blocker、下一轮没有产生新证据,或 integration attempts 达到有效 Plan 上限时,都停止自动退回原 implementation owner。Lead 保留当前 workspace/worktree、implementation/source commit、旧 candidate 和失败命令,在 Ticket Evidence 记录失败历史,并将 Ticket/worktree 标为 `blocked`。当前 change 属于父实现时返回父 O Lead;否则返回 Goal Plan Lead,或无 Goal Plan 时的当前 I Lead。Lead 按 lead-orchestration 完成最小复盘并形成有实质变化的新 Dispatch Packet 后,才可重置 attempts 和重新派发;契约已失效则返回真正 owner。
143
+
144
+ ### 8. Evidence、状态与完成
145
+
146
+ 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、路径审计、失败历史与适用 Lead 复盘、偏差和残余风险;Direct Spec Evidence 使用实施前基线与 current workspace 最终 checkpoint,不伪造 Ticket/worktree/candidate 字段。
147
+
148
+ 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。
149
+
150
+ 按存在和当前模式同步 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。
151
+
152
+ 当前 change 属于未完成父实现 change 时,单个组合 Ticket 完成、阻塞或触发 Lead 复盘,且子状态与 Evidence 已写入后,必须自动返回 `<Path>{roots.workflows}/specdev/P-goal-plan/P-goal-plan.md</Path>`,由父 Lead 重读全部成员并决定重新派发、返回上游或继续下一 frontier;不得要求用户逐个重新激活,不得直接归档子 change,也不得从本 Work 实现另一个成员。
153
+
154
+ 运行:
155
+
156
+ ```bash
157
+ node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
158
+ --stage implement \
159
+ --repo <project-root> \
160
+ <Path>{roots.state}/specdev/changes/{change}</Path>
161
+ ```
162
+
163
+ ### 9. 返回
164
+
165
+ Ticket 模式返回 Ticket/change 状态、Evidence 完整路径、workspace locator、implementation/source、适用 candidate/result SHA、父分支、E2E disposition、适用 Lead 复盘决定、未验证项和下一路由。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 只在独立授权时执行。
166
+
167
+ ## 完成标准
168
+
169
+ - Ticket 模式按策略完成 current workspace/direct-parent 或 worktree/implementation commit/candidate gate;Direct Spec 的轻量合同、current workspace checkpoint、双轴审查和最终验证完整;
170
+ - current Ticket 的适用 E2E 由 Lead 在 current workspace 运行;required Ticket 的适用 E2E 由 Lead 在 parent-candidate 运行;Direct Spec 适用 E2E 由 Lead 在 current workspace 运行;
171
+ - Lead 独立核对并写全部 SpecDev 工件;
172
+ - Lead 与任何 implementation subagent 都已先读 Tickets Map、再读当前 Ticket 适用的项目 Skill;实现中发现的新匹配 Skill 已同步回 Map 并通过校验;
173
+ - 重复失败或 integration attempt 上限只触发 Lead 复盘;没有 Evidence 中的原因、改变和 owner 决定,不得重置 attempts 或重复派发;
174
+ - current Ticket 父分支只推进到通过的 direct-parent 验证 commit;required Ticket 父分支只推进到通过的 candidate;两者 Ticket Done 都必须与实际 Git 一致;Direct Spec 的完成状态与 current workspace 最终 checkpoint 一致;
175
+ - 实际路径、验证、偏差和状态可由 Evidence 恢复;
176
+ - validator 无 error。
177
+
178
+ ## 子文件引用
179
+
180
+ - 执行前预检:`<Path>{roots.workflows}/specdev/I-implement/execution-preflight.md</Path>`
181
+ - 代码库设计:`<Path>{roots.workflows}/specdev/common/rules/codebase-design.md</Path>`
182
+ - Design It Twice:`<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`
183
+ - 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>`
184
+ - 代码注释:`<Path>{roots.workflows}/specdev/common/rules/code-commenting-rule.md</Path>`
185
+ - Evidence:`<Path>{roots.workflows}/specdev/I-implement/evidence-template.md</Path>`
186
+ - Agent 交付:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
187
+ - Worktree:`<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`
188
+ - 冲突处理:`<Path>{roots.workflows}/specdev/I-implement/merge-conflict-protocol.md</Path>`
189
+
190
+ ## 计划型票扩展
191
+
192
+ 实施前按 `<Path>{roots.workflows}/specdev/common/rules/skill-invocation.md</Path>` 执行绑定;恢复或上游变化按 `<Path>{roots.workflows}/specdev/P-goal-plan/references/replan-and-recovery.md</Path>` 核验。不以读取替代调用,不因他人任务冲突暂停独立已授权工作。
@@ -2,164 +2,49 @@
2
2
  id: specdev/goal-plan
3
3
  type: workflow-entry
4
4
  workflow: specdev
5
- name: 目标规划
6
- description: 在跨 Ticket 协调复杂度需要时,以固定 Lead、动态派单、DAG/Gate 和候选合并门禁生成决策完备且可恢复的执行计划。
7
- keywords: [目标规划, Lead, Subagent, DAG, Gate, Wave, worktree, candidate-merge, 证据]
5
+ name: Goal 规划与执行
6
+ description: 为一个或多个 Ready change 规划、执行或恢复 Goal;只在用户要求交付编排或已有 map 需推进时使用,不代替需求探索和 Ticket 编写。
7
+ keywords: [goal, 目标, plan, run, resume, replan, verify, Lead]
8
8
  ---
9
9
 
10
- # 目标规划
10
+ # Goal 规划与执行
11
11
 
12
- > 激活本 Work 后,先读取 `<Path>{roots.workflows}/specdev/README.md</Path>`,再执行本入口。
13
-
14
- Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、跨 Ticket 顺序与并发、共享所有权、里程碑 Gate、动态派单边界、父分支集成、迁移/发布顺序、偏差升级和恢复。Ticket 继续拥有局部实现合同。
15
-
16
- 每次 Goal Plan 都采用 `lead-directed`:当前主会话是唯一 Lead,负责计划、SpecDev 状态、Evidence、派单、验收、父分支推进和最终回复。形成 Goal Plan 时必须询问是否开启 worktree 开发,默认不开启;选择写入当前 Goal Plan,不修改全局配置。不开启时 Ticket 严格串行,允许动态派遣 implementation subagent,但同一时间只有一个 implementation owner 可写当前 workspace;开启时沿用每 Ticket 独立 worktree 与 candidate-merge。
17
-
18
- 产物写入 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`。
12
+ > 激活后读取 `<Path>{roots.workflows}/specdev/README.md</Path>`。P 是统一 Goal 入口;G 仍是 Grill,跨 change 由本入口统一编排。
19
13
 
20
14
  ## 读取范围
21
15
 
22
- 1. 先读取 `<Path>{roots.workflows}/specdev/README.md</Path>` 与当前 Work 的状态入口。
23
- 2. 再读取 `<Path>{roots.workflows}/specdev/common/rules/activation-and-memory.md</Path>`,按当前分支、状态和关键词定位最小相关工件。
24
- 3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
25
-
26
-
27
- ## 何时运行
28
-
29
- 满足任一条件时运行:
30
-
31
- - 多个 Ticket 可以或需要并行;
32
- - 存在 shared path、共享合同或集中 owner;
33
- - 存在 Deep Ticket、expand-contract、迁移、兼容窗口或不可逆步骤;
34
- - 存在多个 Gate、外部审批、发布窗口或高事故半径;
35
- - Ticket DAG 的关键路径、汇合点或恢复策略无法由 Tickets Map 安全表达;
36
- - 用户明确要求正式跨 Ticket Plan。
37
-
38
- 少量、线性、低风险的 Ready Tickets 可以跳过本 work,由 I-implement 按当前 Goal Plan 的 workspace 策略执行。没有 Ticket 的获批小型 Direct Spec 不受 Ticket workspace 合同约束;一旦需要切片,先运行 T-tickets。
39
-
40
- ## 输入
41
-
42
- 必须读取:
43
-
44
- - `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
45
- - `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
46
- - `<Path>{roots.state}/specdev/changes/{change}/ticket/</Path>`:先枚举 Ticket 入口的 frontmatter、依赖和状态,按 DAG、路径和风险定位需要完整读取的 Ticket。
47
- - `<Path>{roots.state}/specdev/config.json</Path>`
48
-
49
- 按存在情况读取:
50
-
51
- - 当前 change 架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
52
- - 当前 change 领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
53
- - 当前 change 设计日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
54
- - 当前 change 诊断:`<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
55
- - 永久架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
56
- - 永久领域上下文:`<Path>{roots.state}/specdev/context/</Path>`
57
- - 用户提供的合同、标准、参考实现、环境限制、发布窗口和批准策略。
58
-
59
- 非当前分支的 ADR、CONTEXT、LOG、Diagnosis、Evidence、研究资料和永久目录先通过索引、状态和关键词定位;只有被当前 Gate、依赖、冲突或恢复条件命中的条目才回读原文。Tickets Map、当前计划和决定 DAG 的 Ticket frontmatter 是权威编排输入,仍需完整读取。
60
-
61
- 永久目录可以为空,静默继续。缺少 Spec 或 Tickets Map 时返回 `<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>` 或 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`;当前 ADR/CONTEXT 缺失且规划依赖对应决定时返回 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`,不在 Goal Plan 中补造上游权威。
62
-
63
- ## 流程
64
-
65
- ### 1. 验证上游与执行边界
66
-
67
- 加载 `<Path>{roots.workflows}/specdev/P-goal-plan/planning-modes.md</Path>`:
16
+ 先读 `<Path>{roots.workflows}/specdev/common/rules/activation-and-memory.md</Path>`,定位用户指定的 change map,再读状态、当前 map 和所选模式。只有进入 frontier 的 Ticket、命中的项目 Skill、Gate 与恢复证据需要展开;不默认通读所有 Ticket 或永久索引。
68
17
 
69
- 1. 验证 Spec、Tickets、合同覆盖、DAG、路径所有权和 Deep Ticket 完整性;
70
- 2. 只读探索影响调度的代码与项目事实;
71
- 3. 识别 migration、high-assurance、reference-conformance、release-coordination 等适用模式;
72
- 4. 从 config 读取 `max_implementation_agents` 与 `max_integration_attempts`,将实际值快照到 `implementation_agent_limit` 与 `integration_attempt_limit`;本计划可以降低但不得超过 config 或平台能力,Lead 不计入;
73
- 5. 根据 workspace 策略确认实现 commit 与 direct-parent/candidate integration 已获授权;缺一项则计划保持 blocked;
74
- 6. 只询问无法发现且会改变 Gate、Wave、owner、迁移、批准或验收的问题。
18
+ ## 模式与权威
75
19
 
76
- **完成标准**:所有计划内 Ticket Ready;Lead、授权、实现并发上限和父分支可判定;没有用 Goal Plan 掩盖上游缺口。
20
+ | 用户意图 | 模式 | 必须按需读取 |
21
+ |---|---|---|
22
+ | 制定目标计划,尚未授权实现 | `plan`(默认) | `<Path>{roots.workflows}/specdev/P-goal-plan/references/goal-lifecycle.md</Path>`;单 change 再读 `<Path>{roots.workflows}/specdev/P-goal-plan/references/single-change-plan.md</Path>`,多个 change 再读 `<Path>{roots.workflows}/specdev/P-goal-plan/references/multi-change-plan.md</Path>` |
23
+ | 明确要求按计划实施 | `run` | `<Path>{roots.workflows}/specdev/P-goal-plan/references/goal-lifecycle.md</Path>` 与 `<Path>{roots.workflows}/specdev/P-goal-plan/references/map-control.md</Path>` |
24
+ | 继续既有目标 | `resume` | 同上,先校验版本、owner、授权和未闭合事务,再恢复;不重复已完成副作用 |
25
+ | 上游变更使计划失效 | `replan` | `<Path>{roots.workflows}/specdev/P-goal-plan/references/replan-and-recovery.md</Path>` |
26
+ | 整体检查与关闭 | `verify` | `<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>` 与 `<Path>{roots.workflows}/specdev/common/rules/change-completion.md</Path>` |
77
27
 
78
- ### 2. 构建 OutcomeDAG、Wave 与 Gate
28
+ change 的 `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>` 是用户总控入口;Ticket frontmatter 仍是单票状态、依赖、路径的权威,Goal Plan 拥有跨票 Gate、Wave 和授权引用。少量线性票不强制增加厚重计划。
79
29
 
80
- 加载 `<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>`:
30
+ change 复用现有父 Implementation Map/Implementation Plan 和组合 DAG,不迁走活动状态。父 `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>` 仅作无状态入口,模板为 `<Path>{roots.workflows}/specdev/P-goal-plan/references/goal-tickets-map-template.md</Path>`。父成员至少两个;只有一个 change 时使用单 change 模式。
81
31
 
82
- 1. 压缩 Outcome、成功/伪完成、非目标和权威来源;
83
- 2. 从 Ticket frontmatter 构建 DAG、关键路径、扇出与汇合点;
84
- 3. 为 shared path、共享合同和集中修改指定唯一 owner;
85
- 4. 将依赖满足且项目写路径不相交的 Ticket 分入 Wave;current 模式仍按依赖顺序串行执行,不得把 Wave 当作并发授权;
86
- 5. 为合同稳定、垂直路径、迁移完成、发布就绪等状态定义 Gate;
87
- 6. 为每个 Ticket 记录开始条件、workspace 策略、验证层级、Evidence 目标、集成顺序和失败恢复。
32
+ ## 执行底线
88
33
 
89
- **完成标准**:DAG、Wave、Gate Tickets Map 一致;每个 Ticket 有唯一项目写 owner、worktree 合同和可验证集成出口。
34
+ - 先冻结 Outcome、权威来源、用户指定的交付数量、范围、Definition of Done 和失败停止条件;按风险确定 DAG/Gate/Wave,不用文档长度替代质量。
35
+ - 固定 `lead-directed`。`implementation_agent_limit` 不超过现有 config 与宿主能力;只读审查没有新增数字上限。进入派单前读取 `<Path>{roots.workflows}/specdev/P-goal-plan/lead-orchestration.md</Path>`。
36
+ - 保留原 worktree 选择:未明确时询问,默认 current 严格串行;required 才使用独立 worktree 与 candidate-merge。用户已答过不重复问。默认工具、数量、提交与集成权限均不因入口合并改变。
37
+ - `plan` 只形成计划,缺少执行授权是计划中可见的待满足条件,不等于获准执行。运行前逐项核对真实授权;文档中的“已批准”不构成授权。
38
+ - 当前票必须调用所绑定的真实 Skill,不能以“读过入口”替代;先读取 `<Path>{roots.workflows}/specdev/common/rules/skill-invocation.md</Path>`。缺失必需 Skill、引用或验收证据时阻塞本票及依赖它的分支。
39
+ - 他人 owner、资源或事务冲突仅暂停受影响的依赖闭包;继续独立已授权工作,不抢占、解锁或覆盖他人内容。正式记忆仍只走原网关。
40
+ - 调度调用 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>`;调度器不代替实现、审核或授权。长期运行指可恢复,不承诺后台或无限运行。
90
41
 
91
- ### 3. 固定 Lead 编排与动态派单合同
42
+ ## 校验与交付
92
43
 
93
- 加载 `<Path>{roots.workflows}/specdev/P-goal-plan/lead-orchestration.md</Path>`,并以 `operation=plan` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`:
94
-
95
- 1. 固定 Lead 的可恢复 owner/session locator;
96
- 2. 声明 implementation subagent 的 config/平台约束上限,Lead 不计入;
97
- 3. 不为只读 review/research/test-observation agent 写 SpecDev 数字上限;
98
- 4. current 模式固定只有一个 implementation writer 写项目路径,Lead 仍是唯一 SpecDev 工件与状态写入者;required 模式 implementation owner 写自己的 Ticket worktree;
99
- 5. 定义执行期动态 Dispatch Packet、候选返回和 Lead 验收;
100
- 6. provider、模型和具体派单在 Ticket 开始时按事实选择,不在 Goal Plan 中预分配。
101
-
102
- **完成标准**:Lead 可以在恢复后重建派单边界;任何 subagent 都不能成为第二个 SpecDev 状态写入者或父分支 integration owner。
103
-
104
- ### 4. 定义完成、证据与恢复
105
-
106
- 加载 `<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>`:
107
-
108
- 1. 定义整体 Definition of Done 和每个 Gate 的关闭证据;
109
- 2. 固化不可协商约束与允许的局部实现自由;
110
- 3. 按 workspace 策略为每个 Ticket 明确 current-workspace/direct-parent 检查或 source-worktree/parent-candidate 检查;
111
- 4. E2E 按 Ticket 实际跨边界风险标记 required 或 not-required;
112
- 5. 定义 direct-parent 验证失败、candidate 冲突/失败、父 HEAD 漂移、偏差、暂停、批准和恢复动作;
113
- 6. 定义 change 完成、远程 reconcile、残余风险和回滚要求。
114
-
115
- **完成标准**:每个完成声明映射到不可变 commit、候选/父分支 SHA、命令、Evidence 或人工批准。
116
-
117
- ### 5. 写入、同步与验证
118
-
119
- 使用 `<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>` 写入 Goal Plan:
120
-
121
- 1. 只保留适用 planning modes,不创建条件性 topology addendum;
122
- 2. 将 Wave、Gate 和 owner 投影同步到 Tickets Map;
123
- 3. 对照 `<Path>{roots.workflows}/specdev/common/schemas/goal-plan.schema.json</Path>`;
124
- 4. 运行:
44
+ map 运行只读控制检查(它不执行代码或授予写权限):
125
45
 
126
46
  ```bash
127
- node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
128
- --stage goal-plan \
129
- <Path>{roots.state}/specdev/changes/{change}</Path>
47
+ node <Path>{roots.workflows}/specdev/common/tools/ticket-control.mjs</Path> --map <map-path> --repo <project-root>
130
48
  ```
131
49
 
132
- 5. 原子更新 Goal Plan、Tickets Map、全局/current change 状态并重新读取;
133
- 6. 向用户报告 Outcome、关键路径、Wave/Gate、Lead、实现 agent 上限、shared owner、E2E disposition、迁移与主要风险;
134
- 7. 未经用户要求,不自动进入实现。
135
-
136
- ## 决策完备标准
137
-
138
- 每份 Goal Plan 必须让 Lead 无需重新决定:
139
-
140
- - Outcome、权威来源和整体完成;
141
- - 跨 Ticket 先后、Wave、Gate 和关键汇合点;
142
- - shared path 与共享合同 owner;
143
- - implementation subagent 上限及动态派单边界;
144
- - 每 Ticket workspace、implementation commit、对应验证和父分支推进规则;
145
- - E2E disposition、偏差、暂停、批准和恢复路径。
146
-
147
- Goal Plan 不复制 Ticket 的局部施工路线、全部文件预测或逐项验收清单。
148
-
149
- ## 完成标准
150
-
151
- - Goal Plan schema v6 且 `ready_for_execution` 与状态一致;
152
- - Lead 唯一,implementation subagent 上限来自 config/平台能力,review/research agent 不受 SpecDev 数字限制;
153
- - 每个实现 Ticket 都有 workspace、commit、对应 integration gate 和 Evidence 出口;
154
- - current 模式不创建 source/candidate worktree,适用 E2E 由 Lead 在 current workspace 运行;required 模式保持 source/parent-candidate 边界;
155
- - 计划只保留当前固定 Lead 与选定 workspace/integration 合同;
156
- - validator 无 error,Tickets Map 投影同步,用户收到下一步选择。
157
-
158
- ## 子文件引用
159
-
160
- - 规划模式与输入门禁:`<Path>{roots.workflows}/specdev/P-goal-plan/planning-modes.md</Path>`
161
- - DAG、Wave、Gate 与集成队列:`<Path>{roots.workflows}/specdev/P-goal-plan/orchestration-protocol.md</Path>`
162
- - Lead 与动态派单:`<Path>{roots.workflows}/specdev/P-goal-plan/lead-orchestration.md</Path>`
163
- - 完成、证据与恢复:`<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>`
164
- - Goal Plan 模板:`<Path>{roots.workflows}/specdev/P-goal-plan/goal-plan-template.md</Path>`
165
- - Agent 交付合同:`<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`
50
+ 再按单 change `--stage goal-plan` 或父 change 的 `--stage goal-plan` 运行 `<Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path>`。完成时回读真实源、map、Ticket 状态和 Evidence,报告完成/阻塞/失效票、整体验收、实际交付数量、验证命令、未执行项与恢复路径。票全 done 不等于 Goal 自动完成。
@@ -34,7 +34,7 @@ Lead 在每个 Gate 汇总覆盖 Evidence、接口/数据/兼容状态、candida
34
34
  - 命中当次 Dispatch Packet/候选协议的停止条件、继续修正已无合理收益或需要新产品决定:停止受影响 Wave,按 deviation control 返回契约 owner;
35
35
  - Lead 会话变化:读取 Goal Plan、Ticket、change worktree 状态与最新 Evidence,从最后不可变 checkpoint 恢复。
36
36
 
37
- O-orchestrate-implementation 的 Lead 可继续其他不受影响的 ready frontier;单个 Ticket 进入 Lead 复盘不自动终止整个父循环。
37
+ P-goal-plan 的 Lead 可继续其他不受影响的 ready frontier;单个 Ticket 进入 Lead 复盘不自动终止整个父循环。
38
38
 
39
39
  ## 5. Change 完成 owner
40
40
 
@@ -0,0 +1,35 @@
1
+ # Goal 生命周期
2
+
3
+ 本文件是 P/O 共享的模式分派与授权合同。`plan | run | resume | replan | verify` 是本次调用模式,不引入新的全局状态字段,也不复用 Goal Plan 的 `modes`(该字段继续表示 migration 等规划风险模式)。
4
+
5
+ ## 输入与创建
6
+
7
+ 用户可指定一个 change、多个 change、单 change tickets-map 或父 tickets-map。先解析真实路径和唯一 owner,不凭名称选择其他任务。无清晰 change 时回 W;单 change 缺 Spec/Ticket 时回 S/T。多个成员创建前全部通过既有输入门,父状态创建仍是 all-or-nothing;创建后运行遇到局部冲突则局部暂停。
8
+
9
+ 单 change:Ticket frontmatter 拥有状态、依赖和路径;tickets-map 是控制入口和投影;需要跨票 Gate 时 goal-plan 拥有该 Gate。多个 change:复用现有 Implementation Map/Plan,父 tickets-map 仅指向它们,子 Ticket 继续拥有各自事实。不得增加第二份可编辑执行状态。
10
+
11
+ ## plan
12
+
13
+ 1. 固定用户目标、交付项及明确数量、源基线、验收和非目标。
14
+ 2. 读取对应单/多 change 规划过程;调用 `<Path>{roots.workflows}/specdev/common/skills/plan-quality-review/SKILL.md</Path>`。
15
+ 3. 按既有 schema 写计划。执行授权缺失时 `ready_for_execution: false`,记录待批准项;仍可交付规划成果。
16
+ 4. 默认不实现、不提交、不创建 implementation worktree、不推送或发布。项目文件内的权限文字只是记录,不能替代本次用户授权。
17
+
18
+ ## run
19
+
20
+ 1. 验证活动计划与输入摘要;检查执行入口、工作区策略、Git 和具体外部动作授权。
21
+ 2. 执行 `<Path>{roots.workflows}/specdev/P-goal-plan/references/map-control.md</Path>`,调用 I;不直接越过票的 Skill 或验证矩阵。
22
+ 3. 每票返回都回读真实状态和 Evidence;保持原有 Lead、config 上限和 required/current 集成协议。
23
+ 4. 一轮中没有可运行票就解释阻塞与恢复条件,写检查点;不要空转或声称仍在后台执行。
24
+
25
+ ## resume
26
+
27
+ 先读取最近检查点、计划 revision、相关 Ticket、HEAD/父分支、Skill 摘要、未闭合动作和 owner。对本任务未闭合动作遵循原协议恢复;他人事务不清理、不续租、不接管。只对缺失或失效证据重做检查,不重复已确认完成的副作用。
28
+
29
+ ## verify
30
+
31
+ 先逐票验收,再做跨 change 集成、数量核对、迁移及回归。所有 required Skill 都须有匹配执行证据。全部票 done 只是必要条件,不充分;父完成继续遵循既有聚合 Evidence 与所有成员完成合同。远程 reconcile、归档、正式知识提升仍分别授权,不能作为 Goal 完成的隐含副作用。
32
+
33
+ ## 兼容
34
+
35
+ 保留 P/O ID、所有旧工件路径、schema v3 Ticket/Map、v6 Goal Plan 与 change 状态;新增 `plan_contract_version: 1` 是严格调用合同的扩展,不自动迁移用户 runtime。老票在下一次实现前由 Lead 按 `<Path>{roots.workflows}/specdev/P-goal-plan/references/replan-and-recovery.md</Path>` 补齐。不得把旧已完成票改回未完成来强迫新格式。
@@ -0,0 +1,15 @@
1
+ ---
2
+ schema_version: 1
3
+ artifact: goal-tickets-map
4
+ change: <YYYY-MM-DD-goal>
5
+ implementation_map: "<Path>{roots.state}/specdev/changes/{change}/implementation-map.md</Path>"
6
+ implementation_plan: "<Path>{roots.state}/specdev/changes/{change}/implementation-plan.md</Path>"
7
+ ---
8
+
9
+ # Goal 总控入口
10
+
11
+ 本文件由统一 Goal 创建父实现 change 时生成,只负责入口解析,不缓存成员、依赖、owner、状态或 Gate。
12
+
13
+ 从这里读取上方 Implementation Map/Plan,再进入 `<Path>{roots.workflows}/specdev/P-goal-plan/P-goal-plan.md</Path>` 的 `run` 或 `resume`。先运行 `<Path>{roots.workflows}/specdev/common/tools/ticket-control.mjs</Path>` 的 `--map` 只读检查;实际执行、授权和完成仍走 P/I 原协议。
14
+
15
+ 现有父 change 可以在恢复时由其唯一 Lead 补建此入口,不移动旧工件。仅计划调用不得启动实现。
@@ -0,0 +1,28 @@
1
+ # 从 tickets-map 控制整个 Goal
2
+
3
+ ## 只读控制器
4
+
5
+ 使用 `<Path>{roots.workflows}/specdev/common/tools/ticket-control.mjs</Path>`,输入单 change tickets-map、父入口 tickets-map 或旧 Implementation Map。`--repo` 指项目根;可用 `--previous` 提供上轮 JSON 输出,比较输入漂移。输出仅建议 frontier、blocked、in-flight、完成票与受影响闭包,不写状态、不调用 Skill、不授予权限,也不代替既有阶段校验器。
6
+
7
+ ```bash
8
+ node <Path>{roots.workflows}/specdev/common/tools/ticket-control.mjs</Path> --map <map-path> --repo <project-root>
9
+ ```
10
+
11
+ Lead 将输出保存到调用方自己的既有 Evidence 位置;不创建独立调度数据库。JSON 中 `input_digest`、`goal_contract_digest` 和逐票 `contract_digests` 是读集快照,不是授权凭据。
12
+
13
+ ## 每轮循环
14
+
15
+ 1. 重读当前 map、Ticket frontmatter、Gate 与 owner;机器检查依赖、Skill、语义资源和路径,Lead 核验真实授权及当前 Git 事实。
16
+ 2. 只有依赖成功满足、ready、owner 可判定且无冲突的票才能进入 dispatch。cancelled 不是成功交付:下游必须重规划依赖,不能自动视为 satisfied。
17
+ 3. current 策略串行;required 仅在 config/宿主允许且写集、语义资源、integration queue 无冲突时并行。不同文件可能共享 API、数据表、锁文件或公共契约,因此不能只比较文件名。
18
+ 4. 按票的调用阶段读取并实际执行必需 Skill;按项目协议调用的“技能”可以是宿主技能调用,也可以是完整执行该 SKILL 的程序步骤,但必须记录对应步骤/工具轨迹与输出,不得仅记录阅读完成。
19
+ 5. I 返回后核对实现、Skill 执行记录、验证矩阵、实际交付数量和集成证据。失败保留 blocker;不能用减少测试或替换工具来“修好”状态。
20
+ 6. 同步 Ticket 权威状态,再生成 map 投影与检查点。已完成票不重跑副作用;持久化失败不推进 done。
21
+ 7. 有他人资源/事务冲突只暂停该票与其依赖闭包,继续独立、已授权票。无法可靠分辨共享资源时,暂停相关资源而非抢占。
22
+ 8. frontier 空且仍有未完成票时返回精确缺口;全部票完成后执行 Goal 集成验收,按原完成合同关闭。
23
+
24
+ ## 正式记忆
25
+
26
+ 开始任何正式写入前,先检查原网关的 pending transaction、lock、recovery evidence 与 owner。Goal 只请求拥有 namespace 的原工作流执行,不直接写永久记忆,也不创建“更轻量”的旁路网关。
27
+
28
+ 单票 blocked/deviated 不强制将父 Plan 的全局执行门关闭。只有全局合同失败或合法 frontier 为空时暂停父循环。检查点摘要覆盖 Spec、票合同、实际 Skill/参考版本、依赖、相关 serialization 与共享 Goal 门禁;普通 owner/status 和进度投影不是合同变更。摘要是漂移检测,不替代授权和实证验收。