@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.
- package/README.md +11 -11
- package/dist/src/cli.js +36 -128
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +2 -4
- package/dist/src/index.js +173 -151
- package/dist/src/index.js.map +1 -1
- package/package.json +6 -4
- package/template/.speculo/README.md +4 -0
- package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +133 -141
- package/template/canonical/canonical-specdev-goal-plan.md +394 -377
- package/template/canonical/canonical-specdev-grill-with-docs.md +241 -178
- package/template/canonical/canonical-specdev-spec.md +132 -122
- package/template/canonical/canonical-specdev-tickets.md +176 -156
- package/template/canonical/canonical-specdev-wayfinder.md +106 -108
- package/template/commands/archive-and-consolidate.md +10 -8
- package/template/commands/handoff.md +2 -0
- package/template/commands/retro.md +3 -3
- package/template/commands/status.md +5 -4
- package/template/skills/archive-and-consolidate/SKILL.md +5 -9
- package/template/skills/archive-and-consolidate/assets/archive-plan-template.md +1 -1
- package/template/skills/archive-and-consolidate/references/archive-rules.md +4 -4
- package/template/skills/archive-and-consolidate/references/consolidation-rules.md +7 -8
- package/template/skills/archive-and-consolidate/references/knowledge-graduation.md +5 -2
- package/template/skills/github-npm-ops/SKILL.md +4 -2
- package/template/skills/github-npm-ops/references/issue-transport.md +26 -0
- package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
- package/template/skills/github-npm-ops/scripts/issue-transport.mjs +227 -0
- package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +31 -145
- package/template/workflows/specdev/A-archive-and-consolidate/consolidation-interview.md +4 -6
- package/template/workflows/specdev/C-code-review/C-code-review.md +42 -0
- package/template/workflows/specdev/C-code-review/code-review-template.md +42 -0
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +45 -48
- package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +44 -40
- package/template/workflows/specdev/D-diagnose-bugs/feedback-loop.md +41 -0
- package/template/workflows/specdev/D-diagnose-bugs/hypothesis-and-instrumentation.md +32 -0
- package/template/workflows/specdev/D-diagnose-bugs/scripts/hitl-loop.template.sh +26 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +3 -3
- package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +5 -20
- package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +17 -10
- package/template/workflows/specdev/G-grill-with-docs/adr-format.md +31 -17
- package/template/workflows/specdev/G-grill-with-docs/context-format.md +9 -29
- package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +10 -5
- package/template/workflows/specdev/G-grill-with-docs/stakeholder-questionnaire.md +45 -0
- package/template/workflows/specdev/I-implement/I-implement.md +29 -14
- package/template/workflows/specdev/I-implement/delegated-evidence-template.md +11 -0
- package/template/workflows/specdev/I-implement/evidence-template.md +24 -10
- package/template/workflows/specdev/I-implement/execution-preflight.md +4 -4
- package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +20 -0
- package/template/workflows/specdev/I-implement/tdd-mocking.md +19 -0
- package/template/workflows/specdev/I-implement/tdd-rules.md +14 -12
- package/template/workflows/specdev/I-implement/tdd-test-design.md +25 -0
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +12 -9
- package/template/workflows/specdev/I-init-setup/config-template.json +1 -1
- package/template/workflows/specdev/I-init-setup/domain-layout-template.md +2 -2
- package/template/workflows/specdev/I-init-setup/status-template.json +2 -3
- package/template/workflows/specdev/I-init-setup/tracking-template.md +3 -0
- package/template/workflows/specdev/INDEX.md +64 -26
- package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +48 -38
- package/template/workflows/specdev/P-goal-plan/completion-control.md +19 -53
- package/template/workflows/specdev/P-goal-plan/delegated-execution-template.md +33 -0
- package/template/workflows/specdev/P-goal-plan/delegated-execution.md +53 -0
- package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +9 -40
- package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +16 -68
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +20 -48
- package/template/workflows/specdev/P-prototype/P-prototype.md +46 -0
- package/template/workflows/specdev/P-prototype/logic-prototype.md +24 -0
- package/template/workflows/specdev/P-prototype/prototype-record-template.md +46 -0
- package/template/workflows/specdev/P-prototype/ui-prototype.md +21 -0
- package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +1 -1
- package/template/workflows/specdev/S-spec/S-spec.md +2 -1
- package/template/workflows/specdev/T-tickets/T-tickets.md +3 -2
- package/template/workflows/specdev/T-tickets/ticket-readiness.md +1 -1
- package/template/workflows/specdev/T-tickets/ticket-template.md +1 -1
- package/template/workflows/specdev/T-tickets/tickets-map-template.md +1 -1
- package/template/workflows/specdev/T-triage/T-triage.md +65 -26
- package/template/workflows/specdev/T-triage/intake-protocol.md +32 -0
- package/template/workflows/specdev/T-triage/reconcile-protocol.md +34 -0
- package/template/workflows/specdev/T-triage/source-template.md +30 -0
- package/template/workflows/specdev/T-triage/triage-template.md +38 -24
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +3 -1
- package/template/workflows/specdev/_state/status.json +2 -3
- package/template/workflows/specdev/common/README.md +9 -2
- package/template/workflows/specdev/common/rules/artifact-contract.md +20 -9
- package/template/workflows/specdev/common/rules/change-completion.md +33 -0
- package/template/workflows/specdev/common/rules/deviation-control.md +2 -2
- package/template/workflows/specdev/common/rules/evidence-and-verification.md +1 -1
- package/template/workflows/specdev/common/rules/path-ownership.md +3 -3
- package/template/workflows/specdev/common/schemas/change-status.schema.json +43 -0
- package/template/workflows/specdev/common/schemas/code-review.schema.json +22 -0
- package/template/workflows/specdev/common/schemas/diagnosis.schema.json +19 -0
- package/template/workflows/specdev/common/schemas/prototype-record.schema.json +24 -0
- package/template/workflows/specdev/common/schemas/source.schema.json +20 -0
- package/template/workflows/specdev/common/schemas/status.schema.json +20 -78
- package/template/workflows/specdev/common/schemas/triage.schema.json +21 -0
- package/template/workflows/specdev/common/skills/code-review/SKILL.md +49 -0
- package/template/workflows/specdev/common/skills/code-review/references/fowler-smells.md +18 -0
- package/template/workflows/specdev/common/skills/code-review/references/reviewer-contracts.md +13 -0
- package/template/workflows/specdev/common/skills/code-review/references/source-discovery.md +22 -0
- package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +12 -9
- package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +18 -13
- package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +8 -6
- package/template/workflows/specdev/common/skills/research/SKILL.md +38 -26
- package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +3 -5
- package/template/workflows/specdev/common/tools/README.md +3 -0
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +496 -30
- package/dist/src/migrate.d.ts +0 -38
- package/dist/src/migrate.js +0 -642
- package/dist/src/migrate.js.map +0 -1
- package/dist/src/skills-mirror.d.ts +0 -38
- package/dist/src/skills-mirror.js +0 -160
- package/dist/src/skills-mirror.js.map +0 -1
- package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +0 -15
- package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +0 -32
- package/template/workflows/specdev/I-implement/code-review-process.md +0 -17
- package/template/workflows/specdev/I-implement/tdd-examples.md +0 -14
- package/template/workflows/specdev/I-init-setup/status-labels-template.md +0 -55
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
按存在情况读取:
|
|
48
48
|
|
|
49
|
-
- 原始请求:`specdev/changes/{change}/source
|
|
49
|
+
- 原始请求:`specdev/changes/{change}/source.md`
|
|
50
50
|
- 分诊结果:`specdev/changes/{change}/triage.md`
|
|
51
51
|
- 诊断结果:`specdev/changes/{change}/diagnosis.md`
|
|
52
52
|
- 当前领域上下文:`specdev/changes/{change}/CONTEXT.md`
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
2. 选择用户指定 change、唯一活跃 change,或按 SpecDev 协议创建新 change;多个候选必须先消歧;
|
|
79
79
|
3. 确认 `specdev/config.json` 存在;不存在时先进入 “初始化设置阶段”;
|
|
80
80
|
4. 读取全局状态、change 状态和已有主产物;存在未完成会话时从其 `current_phase` 与未决问题恢复,不重新盘问已记录内容;
|
|
81
|
-
5.
|
|
81
|
+
5. 若当前 change 的 `current_work` 已是 `specdev/engineering-cognitive-mentor` 则恢复;为 null 时设置为该 id;指向其他 Work 时停止并先完成显式 handoff;
|
|
82
82
|
6. 主产物不存在时按模板初始化,存在时只做兼容性读取和真实增量更新。
|
|
83
83
|
|
|
84
84
|
**完成标准:**workspace 与 change 唯一;状态已登记;主产物已初始化或成功恢复;没有覆盖历史记录。
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
- 用户确认当前没有其他问题,或剩余问题被显式延后;
|
|
209
209
|
- 主产物包含完整 `MLOG`、最终综合和后续路线。
|
|
210
210
|
|
|
211
|
-
关闭时更新全局状态与 change
|
|
211
|
+
关闭时更新全局状态与 change 状态,将本 Work 去重加入 `works_run` 并清空 `current_work`,返回主产物完整路径及适用的下一 Work 完整路径。关闭本 Work 不等于完成或归档整个 change。
|
|
212
212
|
|
|
213
213
|
**完成标准:**主产物状态与全局状态一致;完整日志可恢复;未伪造理解或 change 完成状态。
|
|
214
214
|
|
|
@@ -1156,26 +1156,13 @@ change 状态:`specdev/changes/{change}/.status.json`。
|
|
|
1156
1156
|
### 开始
|
|
1157
1157
|
|
|
1158
1158
|
- 在 `active` 中找到或创建当前 change;
|
|
1159
|
-
-
|
|
1159
|
+
- `current_work` 已是 `specdev/engineering-cognitive-mentor` 时恢复,为 null 时设置为该 id;指向其他 Work 时停止并要求先完成显式 handoff;
|
|
1160
1160
|
- `specdev/changes/{change}/.status.json` 的 `current_work` 同步设置为相同值;
|
|
1161
|
-
-
|
|
1162
|
-
|
|
1163
|
-
```json
|
|
1164
|
-
{
|
|
1165
|
-
"change": "<change>",
|
|
1166
|
-
"work_id": "specdev/engineering-cognitive-mentor",
|
|
1167
|
-
"started_at": "<ISO-8601>",
|
|
1168
|
-
"completed_at": null,
|
|
1169
|
-
"result": null
|
|
1170
|
-
}
|
|
1171
|
-
```
|
|
1172
|
-
|
|
1173
|
-
若存在两条以上未完成记录,记录状态异常并停止自动写入,先请求消歧或修复。
|
|
1161
|
+
- 全局索引不创建逐次调用日志;开始时间与恢复阶段由主产物 frontmatter、MLOG 和 `specdev/changes/{change}/.status.json` 承载。
|
|
1174
1162
|
|
|
1175
1163
|
### 等待用户或跨会话暂停
|
|
1176
1164
|
|
|
1177
1165
|
- 保持 `current_work` 为本 Work;
|
|
1178
|
-
- 保持唯一 `work_history` 记录未完成;
|
|
1179
1166
|
- 更新主产物 `updated_at`、`current_phase`、`next_question`、`unresolved_questions` 与 `last_mlog_id`;
|
|
1180
1167
|
- 每轮在回复前先落盘,确保用户即使中断也可恢复。
|
|
1181
1168
|
|
|
@@ -1183,10 +1170,9 @@ change 状态:`specdev/changes/{change}/.status.json`。
|
|
|
1183
1170
|
|
|
1184
1171
|
### 正常关闭
|
|
1185
1172
|
|
|
1186
|
-
- 将唯一未完成 `work_history` 的 `completed_at` 写为当前时间,`result` 写为 `completed`;
|
|
1187
1173
|
- 将本 Work id 以去重方式加入 active change 的 `works_run`;
|
|
1188
1174
|
- active change 的 `current_work` 与 `specdev/changes/{change}/.status.json` 的 `current_work` 设为 null;
|
|
1189
|
-
- 不改变整个 change 的 `
|
|
1175
|
+
- 不改变整个 change 的 `change_status`,除非用户明确结束或外部阻塞确实影响整个 change;
|
|
1190
1176
|
- 主产物 `status` 写为 `completed`,记录 `closed_at` 与理解确认状态。
|
|
1191
1177
|
|
|
1192
1178
|
### 外部阻塞
|
|
@@ -1195,15 +1181,14 @@ change 状态:`specdev/changes/{change}/.status.json`。
|
|
|
1195
1181
|
|
|
1196
1182
|
- 主产物 `status: blocked`;
|
|
1197
1183
|
- 记录 blocker、已知事实、所需输入和恢复条件;
|
|
1198
|
-
-
|
|
1184
|
+
- 保留 `current_work` 作为唯一恢复指针;
|
|
1199
1185
|
- change 是否设为 blocked 取决于该阻塞是否阻止整个 change,不自动扩大。
|
|
1200
1186
|
|
|
1201
1187
|
### 用户取消
|
|
1202
1188
|
|
|
1203
1189
|
- 主产物 `status: cancelled`;
|
|
1204
1190
|
- 保存当前综合和完整 MLOG;
|
|
1205
|
-
- `
|
|
1206
|
-
- 清空 current_work;
|
|
1191
|
+
- 清空全局与 change 状态的 `current_work`,但不将本 Work 加入 `works_run`;
|
|
1207
1192
|
- 不删除工件或日志。
|
|
1208
1193
|
|
|
1209
1194
|
## 3. 主产物幂等初始化
|
|
@@ -1433,33 +1418,44 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1433
1418
|
|
|
1434
1419
|
| 工件 | 具体位置 | 必须决定 | 不应决定 |
|
|
1435
1420
|
|---|---|---|---|
|
|
1436
|
-
|
|
|
1421
|
+
| 来源快照 | `specdev/changes/{change}/source.md` | 原始请求、捕获时间、locator、hash 和关闭能力 | 当前产品合同或实现状态 |
|
|
1422
|
+
| 分诊 | `specdev/changes/{change}/triage.md` | 请求类别、影响、风险、缺失输入、下一 work 和远程 reconcile 状态 | 详细实现方案或开发进度 |
|
|
1437
1423
|
| 诊断 | `specdev/changes/{change}/diagnosis.md` | 复现、证据、根因、修复不变量和回归契约 | 未经验证的修复实现 |
|
|
1438
1424
|
| 设计日志 | `specdev/changes/{change}/LOG.md` | 讨论轨迹、确认、延后、替代与废弃结论 | 当前架构权威摘要 |
|
|
1439
1425
|
| 设计树 | `specdev/changes/{change}/design-tree.json` | 决策节点、依赖、当前 frontier、轮次与共识状态 | 领域真相或架构决定正文 |
|
|
1440
|
-
| 领域上下文 | `specdev/changes/{change}/CONTEXT.md` |
|
|
1441
|
-
| 架构决策 | `specdev/changes/{change}/ADR.md` |
|
|
1426
|
+
| Change 领域上下文 | `specdev/changes/{change}/CONTEXT.md` | 本 change 已确认、供下游使用的领域术语和语义 | 永久领域知识或临时会议记录 |
|
|
1427
|
+
| Change 架构决策 | `specdev/changes/{change}/ADR.md` | 已成为本 change 下游合同的架构决策、原因、后果和替代关系 | 永久项目 ADR 或尚未决定的方案集合 |
|
|
1442
1428
|
| Spec | `specdev/changes/{change}/spec.md` | 用户问题、外部行为、范围、验收合同、非功能要求和已锁定实现约束 | 文件级施工步骤 |
|
|
1443
1429
|
| Ticket | `specdev/changes/{change}/ticket/NN-<ticket-name>.md` | 单一垂直切片的行为、决策、范围、路径所有权、执行路线和验证证据 | 跨 Ticket 里程碑治理 |
|
|
1444
1430
|
| Tickets Map | `specdev/changes/{change}/tickets-map.md` | 依赖 DAG、合同覆盖、Ready 投影、并行候选和路径冲突 | 单 Ticket 的完整实现契约 |
|
|
1445
1431
|
| Goal Plan | `specdev/changes/{change}/goal-plan.md` | 跨 Ticket 调度、Gate、共享所有权、迁移顺序、集成和偏差治理 | 复制 Ticket 全文 |
|
|
1446
1432
|
| Evidence | `specdev/changes/{change}/evidence/T-NN.md` | 实际修改、命令、结果、验收映射、偏差、风险和提交引用 | 新的产品或架构决策 |
|
|
1433
|
+
| 代码审查 | `specdev/changes/{change}/reviews/CR-###.md` | 固定点、标准轴和规范轴 finding | 实施修复或合并两轴排名 |
|
|
1434
|
+
| 原型记录 | `specdev/changes/{change}/prototypes/{prototype-id}/record.md` | 一个问题、分支、资产、答案、promotion 和清理 | 生产实现或多个问题的计划 |
|
|
1435
|
+
| Stakeholder 问卷 | `specdev/changes/{change}/questionnaires/{slug}.md` | 第三方原始回答和恢复条件 | 未经转录确认的产品/架构决定 |
|
|
1447
1436
|
| Wayfinder 地图 | `specdev/changes/{change}/wayfinder-map.md` | 目的地、说明、已关闭决策索引、战争迷雾和范围之外 | 开放 Ticket 正文或答案详情 |
|
|
1448
1437
|
| Wayfinder Ticket | `specdev/changes/{change}/investigation/{investigation-id}.md` | 一个可精确陈述的问题、类型、阻塞和关闭状态 | 解决方案评论或交付目标 |
|
|
1449
1438
|
| Wayfinder solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` | Ticket 的答案、结果事实和资产指针 | 地图索引或产品实现 |
|
|
1450
1439
|
| 架构审查 | `specdev/changes/{change}/architecture-review.md` 与 `specdev/changes/{change}/architecture-review.html` | 深化候选、证据、可视化、选择和访谈状态 | 未经用户选择的执行契约 |
|
|
1451
1440
|
|
|
1441
|
+
Change CONTEXT/ADR 是 active change 内的执行权威,不是 workflow 级永久知识。G 和其他设计/执行 Works 只读 `specdev/context/` 与 `specdev/adr/`;只有 A 在 change 完成、实现证据验证、毕业评估和用户确认后才能写入永久 namespace。未毕业内容随归档 change 保留,不能从 change 工件消失。
|
|
1442
|
+
|
|
1452
1443
|
## 2. 权威顺序
|
|
1453
1444
|
|
|
1454
1445
|
同一事项冲突时按下列顺序裁决:
|
|
1455
1446
|
|
|
1456
1447
|
1. 用户最新明确决定;
|
|
1457
|
-
2.
|
|
1458
|
-
3.
|
|
1459
|
-
4.
|
|
1460
|
-
5.
|
|
1461
|
-
6.
|
|
1462
|
-
7.
|
|
1448
|
+
2. 当前 change 已接受的架构决策:`specdev/changes/{change}/ADR.md`;
|
|
1449
|
+
3. 永久 ADR 与领域上下文:`specdev/adr/`、`specdev/context/`;
|
|
1450
|
+
4. 当前外部行为权威:`specdev/changes/{change}/spec.md`;
|
|
1451
|
+
5. 当前 Ticket 契约:`specdev/changes/{change}/ticket/NN-<ticket-name>.md`;
|
|
1452
|
+
6. 当前跨 Ticket 编排:`specdev/changes/{change}/goal-plan.md`;
|
|
1453
|
+
7. 当前代码与运行事实;
|
|
1454
|
+
8. 旧计划、旧日志和未经确认的推断。
|
|
1455
|
+
|
|
1456
|
+
当前 change 决定与永久知识冲突时,必须在 LOG/ADR 中显式说明替代关系;它只约束当前 change,直到 A 决定是否提升并更新永久版本。
|
|
1457
|
+
|
|
1458
|
+
`specdev/changes/{change}/source.md` 只对“原始输入是什么”具有权威;后续用户决定、ADR 和 Spec 可以显式演进该意图。远程来源在摄入后发生变化不会自动改写本地合同,必须重新 Triage。
|
|
1463
1459
|
|
|
1464
1460
|
代码事实可以证明计划已过时,但不能静默改写用户目标或已接受契约。出现这种情况时,按 下方 `<deviation-control>` 标签 退回相应工件修订。
|
|
1465
1461
|
|
|
@@ -1499,7 +1495,7 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1499
1495
|
## 1. 偏差等级
|
|
1500
1496
|
|
|
1501
1497
|
- **local**:只改变局部实现,不改变 Ticket 的行为、范围、公共契约、路径所有权或验证;记录到 Evidence 后可继续。
|
|
1502
|
-
- **ticket**:改变 Ticket 的执行路线、可写范围、局部契约或验收映射,但不改变 Spec;必须停止相关修改、更新 Ticket
|
|
1498
|
+
- **ticket**:改变 Ticket 的执行路线、可写范围、局部契约或验收映射,但不改变 Spec;必须停止相关修改、更新 Ticket 并获得该 Ticket 或计划明确的批准 owner 同意。
|
|
1503
1499
|
- **spec**:改变外部行为、范围、用户故事、验收合同或非功能要求;必须返回 “编写 Spec 阶段”。
|
|
1504
1500
|
- **architecture**:改变已接受架构决策或公共架构约束;必须返回 “设计访谈能力” 并更新 `specdev/changes/{change}/ADR.md`。
|
|
1505
1501
|
- **release**:改变迁移、兼容窗口、发布门禁、回滚或不可逆批准点;必须停止并获得明确人工批准。
|
|
@@ -1534,7 +1530,7 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1534
1530
|
|
|
1535
1531
|
- 未批准的 ticket、spec、architecture 或 release 偏差不得继续实现。
|
|
1536
1532
|
- 不得通过扩大 `writable_paths`、删除测试、降低断言或把风险改写成“已知限制”来绕过停止。
|
|
1537
|
-
-
|
|
1533
|
+
- 偏差影响普通并行执行时,当前集成 owner 必须暂停受影响 Wave,重新计算路径所有权、依赖和 Gate;委派执行由 Lead 承担同一责任。
|
|
1538
1534
|
|
|
1539
1535
|
</deviation-control>
|
|
1540
1536
|
|
|
@@ -1542,42 +1538,54 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1542
1538
|
|
|
1543
1539
|
# SpecDev Research
|
|
1544
1540
|
|
|
1545
|
-
##
|
|
1541
|
+
## 输入
|
|
1542
|
+
|
|
1543
|
+
- `decision`:研究要支持的一个具体决定;
|
|
1544
|
+
- `questions`:需要回答的穷尽问题集;
|
|
1545
|
+
- `stop_condition`:何时证据已足够;
|
|
1546
|
+
- `caller`:D、G、S、W、R、T 或 I;
|
|
1547
|
+
- `target_artifact`:调用方拥有且将接收结果的完整 Path。
|
|
1546
1548
|
|
|
1547
|
-
|
|
1549
|
+
缺少 owner 或 target 时返回阻塞,不创建 `{change}/research/` 等共享 namespace。
|
|
1548
1550
|
|
|
1549
1551
|
## 流程
|
|
1550
1552
|
|
|
1551
|
-
1.
|
|
1552
|
-
2.
|
|
1553
|
-
3.
|
|
1554
|
-
4.
|
|
1555
|
-
5.
|
|
1556
|
-
6.
|
|
1557
|
-
7. 长期有效且经实现验证后才可由 Archive 提升到永久 research。
|
|
1553
|
+
1. 固定问题、版本、环境和停止条件。
|
|
1554
|
+
2. 优先官方文档、规范、源代码、论文或维护者材料;技术问题使用一手来源。
|
|
1555
|
+
3. 核对发布日期、版本、适用环境、限制和已知冲突。
|
|
1556
|
+
4. 对每个会改变决定的实质声明就近给出来源;关键结论交叉验证,来源冲突时并列呈现。
|
|
1557
|
+
5. 区分来源事实、代码库事实、推断、建议和未知项。
|
|
1558
|
+
6. 返回一个 Markdown block,由 caller 原子写入 `target_artifact`;本 Skill 不自行写 state。
|
|
1558
1559
|
|
|
1559
|
-
##
|
|
1560
|
+
## 输出
|
|
1560
1561
|
|
|
1561
1562
|
```markdown
|
|
1562
|
-
|
|
1563
|
-
-
|
|
1564
|
-
-
|
|
1565
|
-
-
|
|
1563
|
+
## Research: <问题>
|
|
1564
|
+
- Decision / target:
|
|
1565
|
+
- Scope / version:
|
|
1566
|
+
- Stop condition:
|
|
1566
1567
|
|
|
1567
|
-
## Findings
|
|
1568
1568
|
### R-001
|
|
1569
|
-
-
|
|
1570
|
-
-
|
|
1571
|
-
-
|
|
1572
|
-
-
|
|
1573
|
-
-
|
|
1574
|
-
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1569
|
+
- Claim:
|
|
1570
|
+
- Type: official fact / code fact / inference / recommendation
|
|
1571
|
+
- Source:
|
|
1572
|
+
- Confidence:
|
|
1573
|
+
- Limits:
|
|
1574
|
+
- Artifact impact:
|
|
1575
|
+
|
|
1576
|
+
### Conflicts and Unknowns
|
|
1577
|
+
### Recommendation
|
|
1578
1578
|
```
|
|
1579
1579
|
|
|
1580
|
-
|
|
1580
|
+
不得长篇复制受版权保护内容。长期有效且经实现验证的结论只能由 Archive 从调用方工件提升到永久 research。
|
|
1581
|
+
|
|
1582
|
+
## 完成标准
|
|
1583
|
+
|
|
1584
|
+
- 每个输入问题有答案或明确未知;
|
|
1585
|
+
- 每个实质声明就近引用一手来源;
|
|
1586
|
+
- 版本、限制、冲突和置信度已记录;
|
|
1587
|
+
- 结果有唯一 owning artifact;
|
|
1588
|
+
- 本 Skill 没有创建自己的 state 路径。
|
|
1581
1589
|
|
|
1582
1590
|
</research>
|
|
1583
1591
|
|
|
@@ -1596,7 +1604,7 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1596
1604
|
"execution": {
|
|
1597
1605
|
"max_parallel": 3,
|
|
1598
1606
|
"deep_ticket_human_approval": true,
|
|
1599
|
-
"shared_path_owner": "
|
|
1607
|
+
"shared_path_owner": "explicit"
|
|
1600
1608
|
},
|
|
1601
1609
|
"verification": {
|
|
1602
1610
|
"test": null,
|
|
@@ -1679,11 +1687,10 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1679
1687
|
|
|
1680
1688
|
```json
|
|
1681
1689
|
{
|
|
1682
|
-
"schema_version":
|
|
1690
|
+
"schema_version": 4,
|
|
1683
1691
|
"workflow": "specdev",
|
|
1684
1692
|
"active": [],
|
|
1685
|
-
"
|
|
1686
|
-
"completed": []
|
|
1693
|
+
"archived": []
|
|
1687
1694
|
}
|
|
1688
1695
|
```
|
|
1689
1696
|
|
|
@@ -1694,19 +1701,18 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1694
1701
|
```json
|
|
1695
1702
|
{
|
|
1696
1703
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1697
|
-
"$id": "urn:speculo:specdev:status:
|
|
1704
|
+
"$id": "urn:speculo:specdev:status:v4",
|
|
1698
1705
|
"title": "SpecDev Global Status",
|
|
1699
1706
|
"type": "object",
|
|
1700
1707
|
"required": [
|
|
1701
1708
|
"schema_version",
|
|
1702
1709
|
"workflow",
|
|
1703
1710
|
"active",
|
|
1704
|
-
"
|
|
1705
|
-
"completed"
|
|
1711
|
+
"archived"
|
|
1706
1712
|
],
|
|
1707
1713
|
"properties": {
|
|
1708
1714
|
"schema_version": {
|
|
1709
|
-
"const":
|
|
1715
|
+
"const": 4
|
|
1710
1716
|
},
|
|
1711
1717
|
"workflow": {
|
|
1712
1718
|
"const": "specdev"
|
|
@@ -1718,30 +1724,27 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1718
1724
|
"required": [
|
|
1719
1725
|
"change",
|
|
1720
1726
|
"current_work",
|
|
1721
|
-
"works_run"
|
|
1722
|
-
"result"
|
|
1727
|
+
"works_run"
|
|
1723
1728
|
],
|
|
1724
1729
|
"properties": {
|
|
1725
1730
|
"change": {
|
|
1726
|
-
"type": "string"
|
|
1731
|
+
"type": "string",
|
|
1732
|
+
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
1727
1733
|
},
|
|
1728
1734
|
"current_work": {
|
|
1729
1735
|
"type": [
|
|
1730
1736
|
"string",
|
|
1731
1737
|
"null"
|
|
1732
|
-
]
|
|
1738
|
+
],
|
|
1739
|
+
"pattern": "^specdev/"
|
|
1733
1740
|
},
|
|
1734
1741
|
"works_run": {
|
|
1735
1742
|
"type": "array",
|
|
1736
1743
|
"items": {
|
|
1737
|
-
"type": "string"
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
"type": [
|
|
1742
|
-
"string",
|
|
1743
|
-
"null"
|
|
1744
|
-
]
|
|
1744
|
+
"type": "string",
|
|
1745
|
+
"pattern": "^specdev/"
|
|
1746
|
+
},
|
|
1747
|
+
"uniqueItems": true
|
|
1745
1748
|
},
|
|
1746
1749
|
"claimed_investigations": {
|
|
1747
1750
|
"type": "array",
|
|
@@ -1769,77 +1772,23 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
1769
1772
|
"type": "string"
|
|
1770
1773
|
}
|
|
1771
1774
|
},
|
|
1772
|
-
"additionalProperties":
|
|
1775
|
+
"additionalProperties": false
|
|
1773
1776
|
}
|
|
1774
1777
|
}
|
|
1775
1778
|
},
|
|
1776
|
-
"additionalProperties":
|
|
1779
|
+
"additionalProperties": false
|
|
1777
1780
|
}
|
|
1778
1781
|
},
|
|
1779
|
-
"
|
|
1780
|
-
"type": "array",
|
|
1781
|
-
"items": {
|
|
1782
|
-
"type": "object",
|
|
1783
|
-
"required": [
|
|
1784
|
-
"change",
|
|
1785
|
-
"work_id",
|
|
1786
|
-
"started_at",
|
|
1787
|
-
"completed_at",
|
|
1788
|
-
"result"
|
|
1789
|
-
],
|
|
1790
|
-
"properties": {
|
|
1791
|
-
"change": {
|
|
1792
|
-
"type": "string"
|
|
1793
|
-
},
|
|
1794
|
-
"work_id": {
|
|
1795
|
-
"type": "string",
|
|
1796
|
-
"pattern": "^specdev/"
|
|
1797
|
-
},
|
|
1798
|
-
"started_at": {
|
|
1799
|
-
"type": "string"
|
|
1800
|
-
},
|
|
1801
|
-
"completed_at": {
|
|
1802
|
-
"type": [
|
|
1803
|
-
"string",
|
|
1804
|
-
"null"
|
|
1805
|
-
]
|
|
1806
|
-
},
|
|
1807
|
-
"result": {
|
|
1808
|
-
"type": [
|
|
1809
|
-
"string",
|
|
1810
|
-
"null"
|
|
1811
|
-
]
|
|
1812
|
-
}
|
|
1813
|
-
},
|
|
1814
|
-
"additionalProperties": true
|
|
1815
|
-
}
|
|
1816
|
-
},
|
|
1817
|
-
"completed": {
|
|
1782
|
+
"archived": {
|
|
1818
1783
|
"type": "array",
|
|
1819
1784
|
"items": {
|
|
1820
|
-
"type": "
|
|
1821
|
-
"
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
"archive_path"
|
|
1825
|
-
],
|
|
1826
|
-
"properties": {
|
|
1827
|
-
"change": {
|
|
1828
|
-
"type": "string"
|
|
1829
|
-
},
|
|
1830
|
-
"archived_at": {
|
|
1831
|
-
"type": "string"
|
|
1832
|
-
},
|
|
1833
|
-
"archive_path": {
|
|
1834
|
-
"type": "string",
|
|
1835
|
-
"pattern": "^specdev/archive/[0-9]{4}-[0-9]{2}/.+/$"
|
|
1836
|
-
}
|
|
1837
|
-
},
|
|
1838
|
-
"additionalProperties": true
|
|
1839
|
-
}
|
|
1785
|
+
"type": "string",
|
|
1786
|
+
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
1787
|
+
},
|
|
1788
|
+
"uniqueItems": true
|
|
1840
1789
|
}
|
|
1841
1790
|
},
|
|
1842
|
-
"additionalProperties":
|
|
1791
|
+
"additionalProperties": false
|
|
1843
1792
|
}
|
|
1844
1793
|
```
|
|
1845
1794
|
|
|
@@ -2017,6 +1966,49 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
2017
1966
|
}
|
|
2018
1967
|
},
|
|
2019
1968
|
"allOf": [
|
|
1969
|
+
{
|
|
1970
|
+
"if": {
|
|
1971
|
+
"properties": {
|
|
1972
|
+
"worktrees": {
|
|
1973
|
+
"contains": {
|
|
1974
|
+
"properties": {
|
|
1975
|
+
"provider": {
|
|
1976
|
+
"const": "git"
|
|
1977
|
+
}
|
|
1978
|
+
},
|
|
1979
|
+
"required": [
|
|
1980
|
+
"provider"
|
|
1981
|
+
]
|
|
1982
|
+
}
|
|
1983
|
+
}
|
|
1984
|
+
}
|
|
1985
|
+
},
|
|
1986
|
+
"then": {
|
|
1987
|
+
"properties": {
|
|
1988
|
+
"worktrees": {
|
|
1989
|
+
"items": {
|
|
1990
|
+
"if": {
|
|
1991
|
+
"properties": {
|
|
1992
|
+
"provider": {
|
|
1993
|
+
"const": "git"
|
|
1994
|
+
}
|
|
1995
|
+
},
|
|
1996
|
+
"required": [
|
|
1997
|
+
"provider"
|
|
1998
|
+
]
|
|
1999
|
+
},
|
|
2000
|
+
"then": {
|
|
2001
|
+
"properties": {
|
|
2002
|
+
"workspace_ref": {
|
|
2003
|
+
"pattern": "^specdev-worktree/T-[0-9]{2,}$"
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
2006
|
+
}
|
|
2007
|
+
}
|
|
2008
|
+
}
|
|
2009
|
+
}
|
|
2010
|
+
}
|
|
2011
|
+
},
|
|
2020
2012
|
{
|
|
2021
2013
|
"if": {
|
|
2022
2014
|
"properties": {
|