@namewta/speculo 0.6.0 → 0.7.0

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 (116) hide show
  1. package/README.md +11 -11
  2. package/dist/src/cli.js +36 -128
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/index.d.ts +2 -4
  5. package/dist/src/index.js +173 -151
  6. package/dist/src/index.js.map +1 -1
  7. package/package.json +6 -4
  8. package/template/.speculo/README.md +4 -0
  9. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +133 -141
  10. package/template/canonical/canonical-specdev-goal-plan.md +394 -377
  11. package/template/canonical/canonical-specdev-grill-with-docs.md +241 -178
  12. package/template/canonical/canonical-specdev-spec.md +132 -122
  13. package/template/canonical/canonical-specdev-tickets.md +176 -156
  14. package/template/canonical/canonical-specdev-wayfinder.md +106 -108
  15. package/template/commands/archive-and-consolidate.md +10 -8
  16. package/template/commands/handoff.md +2 -0
  17. package/template/commands/retro.md +3 -3
  18. package/template/commands/status.md +5 -4
  19. package/template/skills/archive-and-consolidate/SKILL.md +5 -9
  20. package/template/skills/archive-and-consolidate/assets/archive-plan-template.md +1 -1
  21. package/template/skills/archive-and-consolidate/references/archive-rules.md +4 -4
  22. package/template/skills/archive-and-consolidate/references/consolidation-rules.md +7 -8
  23. package/template/skills/archive-and-consolidate/references/knowledge-graduation.md +5 -2
  24. package/template/skills/github-npm-ops/SKILL.md +4 -2
  25. package/template/skills/github-npm-ops/references/issue-transport.md +26 -0
  26. package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
  27. package/template/skills/github-npm-ops/scripts/issue-transport.mjs +227 -0
  28. package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +31 -145
  29. package/template/workflows/specdev/A-archive-and-consolidate/consolidation-interview.md +4 -6
  30. package/template/workflows/specdev/C-code-review/C-code-review.md +42 -0
  31. package/template/workflows/specdev/C-code-review/code-review-template.md +42 -0
  32. package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +45 -48
  33. package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +44 -40
  34. package/template/workflows/specdev/D-diagnose-bugs/feedback-loop.md +41 -0
  35. package/template/workflows/specdev/D-diagnose-bugs/hypothesis-and-instrumentation.md +32 -0
  36. package/template/workflows/specdev/D-diagnose-bugs/scripts/hitl-loop.template.sh +26 -0
  37. package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +3 -3
  38. package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +5 -20
  39. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +17 -10
  40. package/template/workflows/specdev/G-grill-with-docs/adr-format.md +31 -17
  41. package/template/workflows/specdev/G-grill-with-docs/context-format.md +9 -29
  42. package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +10 -5
  43. package/template/workflows/specdev/G-grill-with-docs/stakeholder-questionnaire.md +45 -0
  44. package/template/workflows/specdev/I-implement/I-implement.md +29 -14
  45. package/template/workflows/specdev/I-implement/delegated-evidence-template.md +11 -0
  46. package/template/workflows/specdev/I-implement/evidence-template.md +24 -10
  47. package/template/workflows/specdev/I-implement/execution-preflight.md +4 -4
  48. package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +20 -0
  49. package/template/workflows/specdev/I-implement/tdd-mocking.md +19 -0
  50. package/template/workflows/specdev/I-implement/tdd-rules.md +14 -12
  51. package/template/workflows/specdev/I-implement/tdd-test-design.md +25 -0
  52. package/template/workflows/specdev/I-init-setup/I-init-setup.md +12 -9
  53. package/template/workflows/specdev/I-init-setup/config-template.json +1 -1
  54. package/template/workflows/specdev/I-init-setup/domain-layout-template.md +2 -2
  55. package/template/workflows/specdev/I-init-setup/status-template.json +2 -3
  56. package/template/workflows/specdev/I-init-setup/tracking-template.md +3 -0
  57. package/template/workflows/specdev/INDEX.md +64 -26
  58. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +48 -38
  59. package/template/workflows/specdev/P-goal-plan/completion-control.md +19 -53
  60. package/template/workflows/specdev/P-goal-plan/delegated-execution-template.md +33 -0
  61. package/template/workflows/specdev/P-goal-plan/delegated-execution.md +53 -0
  62. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +9 -40
  63. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +16 -68
  64. package/template/workflows/specdev/P-goal-plan/planning-modes.md +20 -48
  65. package/template/workflows/specdev/P-prototype/P-prototype.md +46 -0
  66. package/template/workflows/specdev/P-prototype/logic-prototype.md +24 -0
  67. package/template/workflows/specdev/P-prototype/prototype-record-template.md +46 -0
  68. package/template/workflows/specdev/P-prototype/ui-prototype.md +21 -0
  69. package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +1 -1
  70. package/template/workflows/specdev/S-spec/S-spec.md +2 -1
  71. package/template/workflows/specdev/T-tickets/T-tickets.md +3 -2
  72. package/template/workflows/specdev/T-tickets/ticket-readiness.md +1 -1
  73. package/template/workflows/specdev/T-tickets/ticket-template.md +1 -1
  74. package/template/workflows/specdev/T-tickets/tickets-map-template.md +1 -1
  75. package/template/workflows/specdev/T-triage/T-triage.md +65 -26
  76. package/template/workflows/specdev/T-triage/intake-protocol.md +32 -0
  77. package/template/workflows/specdev/T-triage/reconcile-protocol.md +34 -0
  78. package/template/workflows/specdev/T-triage/source-template.md +30 -0
  79. package/template/workflows/specdev/T-triage/triage-template.md +38 -24
  80. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +3 -1
  81. package/template/workflows/specdev/_state/status.json +2 -3
  82. package/template/workflows/specdev/common/README.md +9 -2
  83. package/template/workflows/specdev/common/rules/artifact-contract.md +20 -9
  84. package/template/workflows/specdev/common/rules/change-completion.md +33 -0
  85. package/template/workflows/specdev/common/rules/deviation-control.md +2 -2
  86. package/template/workflows/specdev/common/rules/evidence-and-verification.md +1 -1
  87. package/template/workflows/specdev/common/rules/path-ownership.md +3 -3
  88. package/template/workflows/specdev/common/schemas/change-status.schema.json +43 -0
  89. package/template/workflows/specdev/common/schemas/code-review.schema.json +22 -0
  90. package/template/workflows/specdev/common/schemas/diagnosis.schema.json +19 -0
  91. package/template/workflows/specdev/common/schemas/prototype-record.schema.json +24 -0
  92. package/template/workflows/specdev/common/schemas/source.schema.json +20 -0
  93. package/template/workflows/specdev/common/schemas/status.schema.json +20 -78
  94. package/template/workflows/specdev/common/schemas/triage.schema.json +21 -0
  95. package/template/workflows/specdev/common/skills/code-review/SKILL.md +49 -0
  96. package/template/workflows/specdev/common/skills/code-review/references/fowler-smells.md +18 -0
  97. package/template/workflows/specdev/common/skills/code-review/references/reviewer-contracts.md +13 -0
  98. package/template/workflows/specdev/common/skills/code-review/references/source-discovery.md +22 -0
  99. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +12 -9
  100. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +18 -13
  101. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +8 -6
  102. package/template/workflows/specdev/common/skills/research/SKILL.md +38 -26
  103. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +3 -5
  104. package/template/workflows/specdev/common/tools/README.md +3 -0
  105. package/template/workflows/specdev/common/tools/validate-specdev.mjs +496 -30
  106. package/dist/src/migrate.d.ts +0 -38
  107. package/dist/src/migrate.js +0 -642
  108. package/dist/src/migrate.js.map +0 -1
  109. package/dist/src/skills-mirror.d.ts +0 -38
  110. package/dist/src/skills-mirror.js +0 -160
  111. package/dist/src/skills-mirror.js.map +0 -1
  112. package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +0 -15
  113. package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +0 -32
  114. package/template/workflows/specdev/I-implement/code-review-process.md +0 -17
  115. package/template/workflows/specdev/I-implement/tdd-examples.md +0 -14
  116. package/template/workflows/specdev/I-init-setup/status-labels-template.md +0 -55
@@ -28,7 +28,7 @@ ready_for_execution: false
28
28
  | 优先级 | 来源 | 负责内容 | 冲突处理 |
29
29
  |---|---|---|---|
30
30
  | 1 | 用户最新明确决定 | 产品取舍与批准 | 更新真正拥有该决策的工件 |
31
- | 2 | `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` | 已接受架构决策 | 通过新决策替代 |
31
+ | 2 | `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` | 当前 change 架构决定 | 通过新决定替代 |
32
32
  | 3 | `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` | 外部行为、范围与验收 | 下游不得改写 |
33
33
  | 4 | `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>` | 单 Ticket 契约 | Goal Plan 只编排 |
34
34
  | 5 | 当前代码事实 | 现状与可行性 | 冲突时触发偏差 |
@@ -48,11 +48,9 @@ ready_for_execution: false
48
48
 
49
49
  ### Ticket Quick Reference
50
50
 
51
- <!-- Ticket 较多或执行者需要时添加;数据从 Ticket 与 Tickets Map 提取。 -->
52
-
53
51
  | ID | Ticket | 行为产出 | Depth/Risk | Dependencies | Wave/Gate | Owner | Evidence |
54
52
  |---|---|---|---|---|---|---|---|
55
- | T-01 | `<Path>{roots.state}/specdev/changes/{change}/ticket/01-<name>.md</Path>` | ... | standard/medium | — | W0/G0 | lead | `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` |
53
+ | T-01 | `<Path>{roots.state}/specdev/changes/{change}/ticket/01-<name>.md</Path>` | ... | standard/medium | — | W0/G0 | `<owner>` | `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` |
56
54
 
57
55
  ## 3. Gates and Completion Evidence
58
56
 
@@ -70,17 +68,10 @@ ready_for_execution: false
70
68
 
71
69
  ## 4. Execution and Integration Protocol
72
70
 
73
- ### Delivery Contract
71
+ ### Ticket Execution Order
74
72
 
75
- | 字段 | |
76
- |---|---|
77
- | Execution model | direct / native-subagent / external-web-subagent |
78
- | Lead / Provider | `<owner>` / `<provider-or-none>` |
79
- | Repository / Branch | `<repository-or-local>` / `<branch-or-n/a>` |
80
- | Checkpoint policy | immutable SHA / local baseline |
81
- | Source delivery | none / repository-url / source-package / combination |
82
- | Max concurrency / corrections | `<n>` / `3` |
83
- | Review | standards + spec + Lead verification + conditional E2E |
73
+ | Ticket | 开始条件 | 执行 owner | 必跑验证 | Evidence | 集成条件 |
74
+ |---|---|---|---|---|---|
84
75
 
85
76
  ### Authorization Matrix
86
77
 
@@ -92,31 +83,9 @@ ready_for_execution: false
92
83
  | Deploy / Migration | allowed / not-authorized | ... |
93
84
  | Production configuration / feature / real user data | allowed / not-authorized | ... |
94
85
 
95
- ### Per-Ticket Dispatch Packets
96
-
97
- #### Dispatch: T-01
98
-
99
- - **Goal / observable result:**
100
- - **Priority on conflict:** correctness > contract completeness > speed,或当前项目裁决
101
- - **Implement / Ticket:** `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>`;`<Path>{roots.state}/specdev/changes/{change}/ticket/01-<name>.md</Path>`
102
- - **Authority / dependencies:** 相关合同、ADR/CONTEXT、已完成依赖 Evidence
103
- - **Wave / Gate / hard constraints:**
104
- - **Writable / read-only / shared owner:**
105
- - **Baseline / branch / workspace or session locator / package hash:**
106
- - **Preflight receipt:** 在 `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` 记录目标、顺序、最大风险和基线差异,不超过 10 行
107
- - **Verification / baseline / reverse check:**
108
- - **Authorization / deviation / correction limit:**
109
- - **Return:** 状态、Evidence、locator、最终 checkpoint、commit/PR、未验证项、待 Lead E2E
110
-
111
- 并行写代码时记录统一 `base_sha`,并为每个 Ticket 指定分支、`workspace_ref` 和 worktree owner。每个派单块可以独立投递,但不复制完整 Ticket 或历史对话。
112
-
113
- ### Ticket Execution
114
-
115
- 引用 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 和对应 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`,不复制 Ticket 全文。
116
-
117
86
  ### Evidence Return and Integration
118
87
 
119
- Worker Ticket 推进到 `review`,返回 Ticket ID 与状态、Evidence 路径、`workspace_ref`、commit PR 引用,以及条件性 Lead E2E;Lead 负责集成、回归和 worktree 收尾。
88
+ 每个实现者按 I-implement 与对应 Ticket 执行,写入 Evidence 并同步 Ticket/Map/Goal Plan。最后一个计划内 Implement 汇总 Gate、运行适用集成验证,并按完成合同关闭 change。
120
89
 
121
90
  ## 5. Constraints, Risk and Recovery
122
91
 
@@ -140,15 +109,15 @@ Worker 将 Ticket 推进到 `review`,返回 Ticket ID 与状态、Evidence 路
140
109
 
141
110
  ### Current Status
142
111
 
143
- 记录 Wave/Gate、Ticket、checkpoint、workspace/session locator、修正轮次和未验证项;不使用主观百分比。
112
+ 记录 Wave/Gate、Ticket、最近验证证据和未验证项;不使用主观百分比。
144
113
 
145
114
  ### Pending Decisions and Blockers
146
115
 
147
- 达到修正上限时记录最后可信 checkpoint、失败命令、已通过行为、owner 和恢复条件。
116
+ 记录失败命令、已通过行为、owner 和恢复条件。
148
117
 
149
118
  ### Resume Protocol
150
119
 
151
- 恢复时读取本 Goal Plan、当前 Ticket、最新 Evidence 和 change 状态,从最后已验证 checkpoint 继续。
120
+ 恢复时读取本 Goal Plan、当前 Ticket、最新 Evidence 和 change 状态,从最后已验证事实继续。
152
121
 
153
122
  ### Reporting Format
154
123
 
@@ -1,6 +1,6 @@
1
- # Goal Plan 编排协议
1
+ # Goal Plan 核心编排协议
2
2
 
3
- 本文件定义 DAG、Wave、Gate、路径所有权、Delivery Contract、Dispatch Packet、Evidence 返回和集成规则。
3
+ 本文件定义所有 Goal Plan 都需要的 DAG、Wave、Gate、路径所有权、Evidence 返回和集成规则。它不建立 Lead/subagent 角色或 Agent 交付合同。
4
4
 
5
5
  ## 1. DAG 与关键路径
6
6
 
@@ -19,20 +19,13 @@ Wave 内 Ticket 必须同时满足:
19
19
  - 项目写路径不相交;
20
20
  - shared path 已由 owner 稳定;
21
21
  - 适用 Gate 已打开;
22
- - 基线和外部合同版本一致。
22
+ - 源码基线和外部合同版本一致。
23
23
 
24
- 最大并发从 `<Path>{roots.state}/specdev/config.json</Path>` 读取。并发上限是资源约束,不是强制填满的目标。
24
+ 最大并发从 `<Path>{roots.state}/specdev/config.json</Path>` 读取。并发上限是资源约束,不是必须填满的目标;Wave 也不意味着必须使用多个 Agent。
25
25
 
26
26
  ## 3. Gate
27
27
 
28
- Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条件。每个 Gate 必须写明:
29
-
30
- - 业务或工程状态;
31
- - 开启条件;
32
- - 关闭证据;
33
- - 阻塞范围;
34
- - owner 与批准人;
35
- - 失败时恢复动作。
28
+ Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条件。每个 Gate 必须写明业务或工程状态、开启条件、关闭证据、阻塞范围、owner/批准人和失败恢复。
36
29
 
37
30
  常见 Gate 包括共享合同稳定、首条垂直路径通过、迁移完成、旧调用点归零、发布就绪和观察期结束。名称按项目语义自定义。
38
31
 
@@ -40,11 +33,11 @@ Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条
40
33
 
41
34
  规则遵循 `<Path>{roots.workflows}/specdev/common/rules/path-ownership.md</Path>`:
42
35
 
43
- 1. 由专用 owner Ticket Lead 修改共享路径;
36
+ 1. 由专用 owner Ticket 或计划指定的唯一 owner 修改共享路径;
44
37
  2. 形成可验证稳定基线;
45
38
  3. 下游消费者在新基线上重新运行 preflight;
46
- 4. 才允许扇出并行;
47
- 5. 共享契约需要变化时暂停消费者并修订上游,不通过多个 Agent 同时修改解决。
39
+ 4. 才允许扇出或继续后续 Ticket;
40
+ 5. 共享契约需要变化时暂停消费者并修订上游,不通过多个执行者同时修改解决。
48
41
 
49
42
  ## 5. Expand-contract
50
43
 
@@ -58,62 +51,17 @@ Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条
58
51
 
59
52
  收缩不得仅以“所有迁移 Ticket 已完成”为依据。
60
53
 
61
- ## 6. Lead Delivery Contract
62
-
63
- Lead 负责源码基线、DAG、Wave、shared owner、Gate、权限、Evidence 汇总和集成;已派发 Ticket 的实现由对应执行者负责,Lead 不制造双重 owner。
64
-
65
- Goal Plan 选择唯一 execution model:`direct`、`native-subagent` 或 `external-web-subagent`。Lead 以 `operation=plan` 调用 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>`,生成里程碑级 Delivery Contract;Implement 阶段以 `operation=execute` 调用同一 Skill 做恢复和验收。
66
-
67
- Delivery Contract 必须固定:
68
-
69
- - execution model、Lead、provider 和可恢复 workspace/session locator;
70
- - repository、branch、不可变 checkpoint 与源码交付方式;
71
- - 最大并发和默认 3 轮的 `max_correction_rounds`;
72
- - 标准轴、规范轴、Lead 独立验证和条件性 E2E;
73
- - local changes、commit、push、PR、merge、deploy、migration 和生产动作的逐项授权;
74
- - 完成、阻塞、偏差、恢复和返回协议。
75
-
76
- 并行写代码且配置允许时,Lead 为每个 Ticket 调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`。所有并行 Ticket 固定同一 `base_sha`,每个 Ticket 使用独立分支和 `workspace_ref`;Lead 创建、恢复、集成和清理,Worker 只推进到 `review`。只读调查和顺序执行不为形式创建 worktree。
77
-
78
- **完成标准**:整个 Goal Plan 只有一个 execution model 和 Lead;每个高影响动作都有明确授权状态。
79
-
80
- ## 7. Dispatch Packet
54
+ ## 6. Ticket 执行、Evidence 与集成
81
55
 
82
- 每个计划 Ticket 都生成一个可独立投递的 Dispatch Packet。它不是 Ticket 副本,而是进入权威工件和当前基线的紧凑入口,至少包含:
56
+ 每个计划 Ticket 必须写明开始条件、依赖 Evidence、项目路径合同、适用 Gate、必跑验证、Evidence 目标和失败恢复。实际执行仍由 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 与 Ticket 拥有,不在 Goal Plan 复制局部施工步骤。
83
57
 
84
- 1. Ticket ID、目标、可观察完成结果和优先级冲突裁决;
85
- 2. `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 与 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`;
86
- 3. 相关 Spec 合同、ADR/CONTEXT 条目、Wave、Gate 和不可协商约束;
87
- 4. 已完成依赖及其 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`;
88
- 5. 项目 `writable_paths`、`read_only_paths`、`shared_paths` 与唯一 shared owner;
89
- 6. `base_sha`、branch、workspace/session locator 和 source package hash;
90
- 7. 必跑验证、基线指标、可静默失效门禁的反向验证,以及明确不适用项;
91
- 8. 当前授权、偏差升级、修正上限、Evidence 路径和返回字段。
58
+ 每个实现者完成或阻塞时:
92
59
 
93
- 派单块将不可违反项写为 Hard Constraints,将低影响实现自由写为 Guidance。执行者必须先核对 checkpoint、项目指令、路径和验证命令,再在 Ticket Evidence 记录不超过 10 行的开工回执:目标、执行顺序、最大风险和发现的基线差异。事实不一致时停止受影响路径并升级,不用更详细文字掩盖失效前提。
94
-
95
- Agent 的最小读取顺序为 Implement work、当前 Ticket、Goal Plan 中适用的 Delivery Contract/Dispatch Packet、相关 Spec/ADR/CONTEXT、项目 Agent 指令和当前代码事实。不投递完整历史对话、全部 Ticket 或无关研究。
96
-
97
- **完成标准**:每个 Dispatch Packet 可在新上下文中定位全部权威输入、边界、基线、验证、恢复点和返回目标。
98
-
99
- ## 8. Evidence 返回与集成
100
-
101
- Agent 完成或阻塞时:
102
-
103
- 1. 写入 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`,包含实际修改、命令与退出状态、验收映射、反向验证、修正轮次、checkpoint 和未验证项;
60
+ 1. 写入 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`;
104
61
  2. 同步 Ticket、Tickets Map、Goal Plan 和 change 状态;
105
- 3. Lead 返回 Ticket ID 与状态、Evidence 完整路径、workspace/session locator、最终 checkpoint、commit/PR 引用和条件性 Lead E2E。
106
-
107
- Lead 接收原生或外部候选交付时:
108
-
109
- 1. 读取 Dispatch Packet、Ticket、Evidence、Goal Plan 和对应代码引用;
110
- 2. 检查 checkpoint、附件 hash、路径授权、依赖和敏感信息边界;
111
- 3. 在隔离基线上应用交付,复跑定向验证和受影响回归;
112
- 4. 仅当用户界面交互受影响时,由 Lead 运行最小 E2E;
113
- 5. 将 provider 声明、模拟结果和静态推断保持为 `unverified`,直到有独立证据;
114
- 6. 验证通过后集成,并按 dev-worktree Skill 更新或清理 worktree;
115
- 7. 同步 Ticket、Map、Evidence 和 Goal Plan,检查 Gate 是否可关闭。
62
+ 3. 检查依赖、路径所有权、合同覆盖和适用 Gate;
63
+ 4. 返回 Ticket 状态、Evidence 路径、代码引用、未验证项和恢复条件。
116
64
 
117
- 同一验收项达到修正上限时标记 blocker,记录最后 checkpoint、错误、已通过行为、责任方和恢复条件。逻辑冲突返回契约 owner 解决,不机械选择某一侧版本。
65
+ 最后一个计划内 Implement `<Path>{roots.workflows}/specdev/P-goal-plan/completion-control.md</Path>` 汇总核心计划的 Gate 和 Evidence。委派分支的候选交付与 Lead 集成由独立委派协议拥有,不写入本文件。
118
66
 
119
- **完成标准**:每个完成声明可追溯到 Lead 核对的代码状态和 Evidence;失败也具有可恢复的最后可信 checkpoint。
67
+ **完成标准**:每个执行结果可追溯到代码状态和 Evidence;普通 Goal Plan 可以在不建立角色交付合同的情况下完整恢复和完成。
@@ -1,6 +1,6 @@
1
1
  # Goal Plan 规划模式与输入门禁
2
2
 
3
- 本文件由 `<Path>{roots.workflows}/specdev/P-goal-plan/P-goal-plan.md</Path>` 在上游验证和模式选择时加载。
3
+ 本文件由 `<Path>{roots.workflows}/specdev/P-goal-plan/P-goal-plan.md</Path>` 在上游验证和角色分支确认时加载。
4
4
 
5
5
  ## 1. 必需输入门禁
6
6
 
@@ -25,75 +25,45 @@
25
25
  - 合同 uncovered 且未批准 deferred;
26
26
  - 并行候选写路径相交且无 owner 或顺序;
27
27
  - Ticket 改写了 Spec 的外部行为、范围或验收;
28
- - Ticket 与 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 的已接受决策冲突;
28
+ - Ticket 与 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 的已接受决定冲突;
29
29
  - Deep Ticket 缺少关键迁移或恢复信息;
30
30
  - 当前代码事实使 Ticket 的核心行为、接口或验证不可执行;
31
31
  - 必需外部合同或参考权威不可获得;
32
- - 选择 delegated execution,但 Lead、checkpoint、可恢复 locator 或交付通道无法建立;
32
+ - 已选择委派,但 Lead、checkpoint、可恢复 locator 或交付通道无法建立;
33
33
  - 用户要求的远程或生产动作没有逐动作授权。
34
34
 
35
35
  按 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>` 和 `<Path>{roots.workflows}/specdev/common/rules/deviation-control.md</Path>` 返回真正拥有该决策的工件。
36
36
 
37
- ## 3. 可组合模式
37
+ ## 3. 可组合规划模式
38
38
 
39
- ### coordination
40
-
41
- 适用于多 Wave、扇出/汇合、shared path 或 Lead/Subagent。重点是 DAG、owner、Evidence 返回、集成和状态同步。
42
-
43
- ### migration
44
-
45
- 适用于 expand-contract、数据迁移、协议迁移或兼容窗口。重点是扩展、分批迁移、收缩条件、数据核对、监控和回滚。
46
-
47
- ### high-assurance
48
-
49
- 适用于安全、隐私、资金、数据完整性、法规或不可逆操作。重点是独立审查、人工批准、Evidence 完整性和失败恢复。
50
-
51
- ### reference-conformance
52
-
53
- 适用于外部合同、标准、官方实现或指定兼容行为。重点是来源版本、符合性矩阵和冲突裁决。
54
-
55
- ### release-coordination
56
-
57
- 适用于发布窗口、跨团队依赖、部署顺序或运营交接。重点是环境前置条件、Gate、观察期和回退。
39
+ - **coordination**:多 Wave、扇出/汇合或 shared path;重点是 DAG、owner、Evidence 返回、集成和状态同步。
40
+ - **migration**:expand-contract、数据或协议迁移;重点是扩展、分批迁移、收缩条件、数据核对、监控和回滚。
41
+ - **high-assurance**:安全、隐私、资金、数据完整性、法规或不可逆操作;重点是独立审查、人工批准、Evidence 完整性和失败恢复。
42
+ - **reference-conformance**:外部合同、标准、官方实现或指定兼容行为;重点是来源版本、符合性矩阵和冲突裁决。
43
+ - **release-coordination**:发布窗口、跨团队依赖、部署顺序或运营交接;重点是环境前置条件、Gate、观察期和回退。
58
44
 
59
45
  模式可以组合。仅有线性低风险 Ticket 时不应为了形式生成重型 Goal Plan。
60
46
 
61
- ## 4. 执行模型与交付事实
47
+ ## 4. 每次确认角色分支
62
48
 
63
- 规划模式描述“为什么需要治理”,execution model 描述“每个 Ticket 怎样被执行”,两者不得混为同一枚举。每份 Goal Plan 只选一个主 execution model:
49
+ 规划模式描述为什么需要跨 Ticket 治理,不决定是否启用 Lead/subagent。每次运行 P 都向用户提供两个选择:
64
50
 
65
- - `direct`:Lead 或当前执行者直接运行 Ticket,不创建子代理交付通道;
66
- - `native-subagent`:Lead 可直接管理隔离 Agent,写代码并行时配合 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`;
67
- - `external-web-subagent`:通过网页 provider 交付,输出在 Lead 独立核对前保持候选状态。
51
+ - **普通 Goal Plan**:由实现者按核心计划推进,不创建严格角色、交付通道或派单合同;最终产物不记录一个名为 direct 的模式。
52
+ - **委派 Goal Plan**:启用唯一 Lead 与 `native-subagent` `external-web-subagent`,并加载委派协议。
68
53
 
69
- 选择模型前先发现当前平台能力、项目配置和用户请求。只有用户明确指定 provider 或交付通道时才把偏好当作约束;否则优先使用能保留隔离、checkpoint Evidence 的现有原生能力。
54
+ 不得根据 Ticket 数量、并行机会或平台能力静默启用委派。选择普通分支后,AI 自适应决定核心计划的适用细节,不把本次角色选择写入 frontmatter,也不在正文生成空章节或“不适用”说明。
70
55
 
71
- 必须固定:
56
+ 选择委派后才固定:Lead、provider、repository/branch、不可变 `base_sha` 或等价基线、源码交付方式、`max_correction_rounds` 和逐动作授权。认证秘密和机器绝对路径不得进入 Goal Plan。
72
57
 
73
- - `lead` 与不可转移责任;
74
- - provider 和稳定 workspace/session locator,direct 时为不适用;
75
- - repository/branch 与不可变 `base_sha` 或等价本地基线;
76
- - `source_delivery`:none、repository-url、source-package 或 combination;
77
- - `max_correction_rounds`,默认 3;
78
- - local changes、commit、push、PR、merge、deploy、migration、production configuration、production feature、real user data 的逐动作授权。
58
+ ## 5. 规划摘要
79
59
 
80
- GitHub checkpoint、源码包和 provider 分支由 `<Path>{roots.workflows}/specdev/common/skills/subagent-delivery/SKILL.md</Path>` 按需加载。认证秘密和机器绝对路径不得进入 Goal Plan。
81
-
82
- ## 5. 模式摘要
83
-
84
- 写入 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 前形成:
60
+ 写入前形成核心摘要:
85
61
 
86
62
  ```text
87
63
  modes=<mode-list>
88
- execution_model=<direct|native-subagent|external-web-subagent>
89
- lead=<owner>
90
- provider=<id|none>
91
64
  tickets=<count>
92
65
  critical_path=<ticket-list>
93
66
  parallel_capacity=<n>
94
- checkpoint=<sha-or-local-baseline>
95
- source_delivery=<mode>
96
- max_correction_rounds=<n>
97
67
  shared_owners=<owner-map>
98
68
  gates=<gate-list>
99
69
  authorization=<action-summary>
@@ -101,4 +71,6 @@ hard_stops=<none-or-list>
101
71
  adopted_assumptions=<low-impact-only>
102
72
  ```
103
73
 
104
- **完成标准**:可组合 modes 与唯一 execution model 分离;源码、交付、权限和恢复字段都有可验证值。
74
+ 委派分支额外形成 `execution_model`、`lead`、`provider`、`checkpoint`、`source_delivery`、`max_correction_rounds` locator;这些字段只进入委派附录。
75
+
76
+ **完成标准**:规划 modes 与角色选择互不代替;普通计划没有委派痕迹;委派计划的源码、交付、权限和恢复字段都有可验证值。
@@ -0,0 +1,46 @@
1
+ ---
2
+ id: specdev/prototype
3
+ type: workflow-entry
4
+ workflow: specdev
5
+ name: 原型
6
+ description: 在获授权的临时 branch/worktree 中构建一次性 Logic 或 UI 原型,回答一个明确设计问题并持久化答案、资产定位和清理状态。
7
+ keywords: [prototype, 原型, logic, UI, variant, 一次性代码, 设计问题]
8
+ ---
9
+
10
+ # 原型
11
+
12
+ 原型是**回答一个问题的一次性代码**。P 不交付生产实现,也不把原型代码提升到 main;它把答案和一手资料 locator 交给后续 G/S/Tickets/I。
13
+
14
+ ## 输入与所有权
15
+
16
+ - 一个可精确陈述的问题,来自用户、G、Spec 或 `<Path>{roots.state}/specdev/changes/{change}/investigation/{investigation-id}.md</Path>`;
17
+ - 相关代码、组件系统、领域上下文和 ADR;
18
+ - 获授权的项目可写范围及临时 branch/worktree。
19
+
20
+ P 拥有 `<Path>{roots.state}/specdev/changes/{change}/prototypes/{prototype-id}/record.md</Path>`。代码写在临时 workspace 的项目路径附近;state 只保存项目相对 Path、branch、commit 和可迁移 `workspace_ref`。
21
+
22
+ ## 流程
23
+
24
+ 1. **锁定问题**:一个 record 只回答一个问题。业务逻辑、状态转换或数据形态使用 Logic;页面外观、信息层级或交互布局使用 UI。问题含糊且用户不在线时按周围代码选择,并在 record 写明假设。
25
+ 2. **建立临时工作区**:按 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>` 创建/恢复工作区。创建 branch、commit 或删除 worktree 分别遵守现有授权边界;路径名明确包含 prototype。
26
+ 3. **执行分支**:Logic 加载 `<Path>{roots.workflows}/specdev/P-prototype/logic-prototype.md</Path>`;UI 加载 `<Path>{roots.workflows}/specdev/P-prototype/ui-prototype.md</Path>`。两个分支都把完整状态呈现给评审者,不依赖生产数据写入。
27
+ 4. **捕获答案**:使用 `<Path>{roots.workflows}/specdev/P-prototype/prototype-record-template.md</Path>` 记录问题、运行方法、资产、验证反馈、赢家/拒绝项、结论、promotion target 和清理状态,原子重读。
28
+ 5. **关闭或阻塞**:答案已确认时 `status: answered`;用户选择不继续时 `discarded`;原型无法回答问题时 `blocked` 并说明缺失输入。Wayfinder 调用时,把 record/branch/URL 写入当前 Ticket 的 solution comment,并只关闭该 Ticket。
29
+ 6. **验证与路由**:使用 `<Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path>` 的 `--stage prototype` 校验当前 change。需要产品决定返回 G,需要外部行为合同返回 S,需要执行计划返回 Tickets;生产实现只进入 I。
30
+
31
+ ## 完成标准
32
+
33
+ - 只有一个问题和一个正确分支;
34
+ - 原型极易运行,完整状态可见;
35
+ - 临时 branch/worktree 与项目路径可恢复且不含机器绝对路径;
36
+ - 原型没有测试、生产数据库依赖或伪装成生产代码;
37
+ - 答案、资产、赢家、拒绝项、promotion target 和清理状态完整;
38
+ - main 不保留落选变体、switcher 或原型外壳;
39
+ - Wayfinder Ticket、solution comment 与 prototype record 可互相定位。
40
+
41
+ ## 子文件引用
42
+
43
+ - Logic:`<Path>{roots.workflows}/specdev/P-prototype/logic-prototype.md</Path>`
44
+ - UI:`<Path>{roots.workflows}/specdev/P-prototype/ui-prototype.md</Path>`
45
+ - Record:`<Path>{roots.workflows}/specdev/P-prototype/prototype-record-template.md</Path>`
46
+ - Schema:`<Path>{roots.workflows}/specdev/common/schemas/prototype-record.schema.json</Path>`
@@ -0,0 +1,24 @@
1
+ # Logic Prototype
2
+
3
+ 当问题涉及业务逻辑、状态转换或数据形态时使用。
4
+
5
+ ## 形态
6
+
7
+ 构建单个自包含 HTML/CSS/JS 文件,无框架、打包器或服务器,双击即可运行。顶部用领域语言写明唯一问题。
8
+
9
+ 实际逻辑放在独立纯模块中,可使用 reducer、状态机、纯函数集或有清晰方法面的模块;逻辑不得引用 DOM。页面只是调用模块的薄外壳。
10
+
11
+ ## 界面
12
+
13
+ 按顺序呈现:
14
+
15
+ 1. 问题与一行说明;
16
+ 2. 带字段标签的完整当前状态;
17
+ 3. 每个动作一个、始终可用的自由按钮;
18
+ 4. 至少 happy、edge、illegal 三个引导演练,每次从已知初始状态开始。
19
+
20
+ 每次操作后重绘完整相关状态,并说明刚发生的变化。标签使用业务语言,不显示 reducer/内部代码术语。
21
+
22
+ ## 边界
23
+
24
+ 默认内存状态;问题明确涉及持久化时才使用标记为 `PROTOTYPE - DELETE` 的临时本地数据。无测试、生产数据库、抽象层或超出问题的错误处理。答案确认后由 I 正式实现;HTML 外壳只保留在临时分支。
@@ -0,0 +1,46 @@
1
+ ---
2
+ schema_version: 1
3
+ artifact: prototype-record
4
+ change: <YYYY-MM-DD-topic>
5
+ prototype_id: PROTO-001
6
+ question: <one design question>
7
+ branch: logic
8
+ status: active
9
+ workspace_ref: <portable-locator>
10
+ project_paths: []
11
+ assets: []
12
+ winner: null
13
+ promotion_target: null
14
+ cleanup_status: pending
15
+ updated_at: <ISO-8601>
16
+ ---
17
+
18
+ # Prototype PROTO-001: <问题短名>
19
+
20
+ ## Question and Assumption
21
+
22
+ - **Question:**
23
+ - **Why a prototype is needed:**
24
+ - **Branch selection evidence:**
25
+ - **Assumption when user was unavailable:** none / ...
26
+
27
+ ## Run and Assets
28
+
29
+ - **Command or URL:**
30
+ - **Branch / commit:**
31
+ - **Workspace locator:**
32
+ - **Project-relative assets:**
33
+
34
+ ## Evaluation
35
+
36
+ - **Scenarios or variants reviewed:**
37
+ - **Observed feedback:**
38
+ - **Answer:** unresolved / ...
39
+ - **Winner and rejected options:**
40
+
41
+ ## Promotion and Cleanup
42
+
43
+ - **Promotion target:** none / `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`
44
+ - **Main cleanup:** pending / clean
45
+ - **Temporary branch retained:** yes / no / pending authorization
46
+ - **Wayfinder solution comment:** not-applicable / `<Path>{roots.state}/specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md</Path>`
@@ -0,0 +1,21 @@
1
+ # UI Prototype
2
+
3
+ 当问题是页面外观、信息层级或交互布局时使用。
4
+
5
+ ## 选择宿主
6
+
7
+ 优先把变体嵌入现有页面,保留真实页头、侧栏、数据获取、参数和认证,只切换渲染子树。确实没有合理宿主时,才按项目约定创建明显标注 prototype 的临时路由。
8
+
9
+ ## 变体
10
+
11
+ 默认 3 个,最多 5 个。每个变体必须在布局、信息层级或主要操作入口上结构不同,不能只换颜色或文案。使用项目现有组件和样式系统,但不要共享会限制结构探索的布局抽象。
12
+
13
+ ## 切换器
14
+
15
+ 使用 `?variant=` 保存并分享选择。浮动底栏提供前一项、当前名称、后一项和循环切换;左右方向键可切换,但 input、textarea 或 contenteditable 聚焦时不截获。切换器必须在 production build 隐藏。
16
+
17
+ 变更操作使用桩;UI 原型不写生产数据。完整相关状态在每个变体中可见。
18
+
19
+ ## 收束
20
+
21
+ 记录赢家、组合选择和理由。I 依据答案正确重写生产实现;落选变体、临时路由和 switcher 从 main 删除,完整集合保留在临时分支作为一手资料。
@@ -96,7 +96,7 @@ keywords: [architecture, review, module, interface, depth, seam, adapter, levera
96
96
 
97
97
  - 新概念加入 change CONTEXT;永久 CONTEXT 不存在时延迟到归档提升;
98
98
  - 模糊术语当场精炼;
99
- - 用户以长期有效理由拒绝候选时,询问是否记录 ADR,暂时性或自明理由不制造 ADR;
99
+ - 用户的选择同时难以逆转、没有上下文会令人惊讶且来自真实权衡时,询问是否记录 ADR;任一条件不满足就留在 LOG/Ticket,不制造 ADR;
100
100
  - 替代 interface 需要探索时使用 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`。
101
101
 
102
102
  将选择、访谈状态与结论同步到 Markdown/HTML;每次运行只访谈用户选择的候选,不批量迫使用户决定所有卡片。
@@ -17,7 +17,7 @@ Spec 决定“为什么、为谁、系统应表现为何”。它可以锁定影
17
17
 
18
18
  按存在情况读取:
19
19
 
20
- - `<Path>{roots.state}/specdev/changes/{change}/source-issue.md</Path>`
20
+ - `<Path>{roots.state}/specdev/changes/{change}/source.md</Path>`
21
21
  - `<Path>{roots.state}/specdev/changes/{change}/triage.md</Path>`
22
22
  - `<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
23
23
  - `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
@@ -121,6 +121,7 @@ Spec 决定“为什么、为谁、系统应表现为何”。它可以锁定影
121
121
 
122
122
  ```bash
123
123
  node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
124
+ --stage spec \
124
125
  <Path>{roots.state}/specdev/changes/{change}</Path>
125
126
  ```
126
127
 
@@ -111,7 +111,7 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
111
111
  - 有序执行路线和安全落点;
112
112
  - expected、writable、read-only、shared 路径;
113
113
  - 正常、失败和回归验证矩阵;
114
- - 用户界面交互受影响时的 Lead E2E Gate;
114
+ - 用户界面交互受影响时的 E2E Gate 与执行 owner;后续委派 Goal Plan 可以显式把该 Gate 转交 Lead
115
115
  - Deep 的迁移、兼容窗口、监控、回滚和不可逆批准点;
116
116
  - 可判定验收标准。
117
117
 
@@ -124,7 +124,7 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
124
124
  3. 识别根 Ticket、汇合点、扇出与收缩点;
125
125
  4. 为每个 Spec 验收合同映射至少一个 Ticket;
126
126
  5. 检查并行候选的 `writable_paths` 是否相交;
127
- 6. 共享路径必须指定唯一 owner,通常由 Lead 或专门 Ticket 修改;
127
+ 6. 共享路径必须指定唯一 owner,通常由专门 Ticket 或明确的集成 owner 修改;
128
128
  7. 不得用依赖边表达“可能更方便”或纯粹的人员交接。
129
129
 
130
130
  使用 `<Path>{roots.workflows}/specdev/T-tickets/tickets-map-template.md</Path>` 草拟总体 Map。
@@ -192,6 +192,7 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
192
192
 
193
193
  ```bash
194
194
  node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
195
+ --stage tickets \
195
196
  <Path>{roots.state}/specdev/changes/{change}</Path>
196
197
  ```
197
198
 
@@ -14,7 +14,7 @@
14
14
  - [ ] `writable_paths` 非空,或明确为仅文档、调查或无代码变更。
15
15
  - [ ] 每个 shared path 在 `shared_path_owners` 中有唯一 owner。
16
16
  - [ ] 正常、失败和回归至少各有一条验证,或有可信的不适用原因。
17
- - [ ] 仅当用户界面交互受影响时定义 E2E,且 owner Lead 集成 Gate。
17
+ - [ ] 仅当用户界面交互受影响时定义 E2E 与当前执行 owner;Ticket 不预设 Lead/Worker,委派 Goal Plan 可以显式改由 Lead 集成。
18
18
  - [ ] Evidence 位置明确为 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`。
19
19
  - [ ] 单个全新上下文能够完成;否则已拆分。
20
20
  - [ ] 所有内部文件与目录引用使用完整根变量 Path 标签。
@@ -102,7 +102,7 @@ shared_path_owners: []
102
102
 
103
103
  不适用的关键风险类别必须写“不适用:原因”。
104
104
 
105
- 仅当用户界面交互受影响时增加 E2E 行;owner 固定为 Lead 集成 Gate,Worker 只提供场景与预期。
105
+ 仅当用户界面交互受影响时增加 E2E 行并指定当前执行 owner。若后续 Goal Plan 含委派附录,再由该计划显式转交 Lead;Ticket 不预设 Lead/Worker 角色。
106
106
 
107
107
  ## 9. 发布、迁移与恢复
108
108
 
@@ -47,7 +47,7 @@ T-01 [READY]
47
47
  ## 5. 并行与路径所有权
48
48
 
49
49
  - 最大并发来自 `<Path>{roots.state}/specdev/config.json</Path>`。
50
- - shared owner Lead 或专用 Ticket。
50
+ - shared owner 为专用 Ticket 或明确的集成 owner;只有委派 Goal Plan 才使用 Lead 角色。
51
51
  - 项目路径契约以 Ticket frontmatter 为准。
52
52
  - 并行写代码的 Ticket 使用独立 worktree;只读调查不需要。
53
53