@namewta/speculo 0.3.0 → 0.3.2
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 +1 -2
- package/dist/src/cli.js +40 -6
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/skills-mirror.d.ts +38 -0
- package/dist/src/skills-mirror.js +160 -0
- package/dist/src/skills-mirror.js.map +1 -0
- package/package.json +3 -2
- package/template/canonical/README.md +7 -1
- package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +2040 -0
- package/template/canonical/canonical-specdev-goal-plan.md +1379 -0
- package/template/canonical/canonical-specdev-grill-with-docs.md +848 -285
- package/template/canonical/canonical-specdev-spec.md +1061 -46
- package/template/canonical/canonical-specdev-tickets.md +1529 -175
- package/template/canonical/canonical-specdev-wayfinder.md +677 -107
- package/template/commands/git-repository-audit.md +682 -0
- package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +69 -36
- package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +15 -0
- package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +32 -0
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +51 -51
- package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +64 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +252 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/architecture-guidance.md +90 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/bug-guidance.md +80 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/codebase-guidance.md +107 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/comprehension-and-closure.md +95 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/domain-learning-guidance.md +62 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/evidence-and-options.md +132 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/interaction-protocol.md +116 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/mentor-report-template.md +135 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/mode-routing.md +47 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +147 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/requirements-guidance.md +92 -0
- package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +100 -30
- package/template/workflows/specdev/G-grill-with-docs/adr-format.md +22 -77
- package/template/workflows/specdev/G-grill-with-docs/context-format.md +27 -53
- package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +6 -82
- package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +32 -49
- package/template/workflows/specdev/G-grill-with-docs/log-format.md +16 -98
- package/template/workflows/specdev/I-implement/I-implement.md +168 -52
- package/template/workflows/specdev/I-implement/code-review-process.md +10 -76
- package/template/workflows/specdev/I-implement/codebase-design-glossary.md +12 -109
- package/template/workflows/specdev/I-implement/deepening.md +12 -32
- package/template/workflows/specdev/I-implement/design-it-twice.md +6 -41
- package/template/workflows/specdev/I-implement/evidence-template.md +69 -0
- package/template/workflows/specdev/I-implement/execution-preflight.md +20 -0
- package/template/workflows/specdev/I-implement/tdd-examples.md +10 -135
- package/template/workflows/specdev/I-implement/tdd-rules.md +12 -28
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +81 -86
- package/template/workflows/specdev/I-init-setup/change-status-template.json +15 -0
- package/template/workflows/specdev/I-init-setup/config-template.json +26 -0
- package/template/workflows/specdev/I-init-setup/domain-layout-template.md +23 -0
- package/template/workflows/specdev/I-init-setup/status-labels-template.md +55 -0
- package/template/workflows/specdev/I-init-setup/status-template.json +7 -0
- package/template/workflows/specdev/I-init-setup/tracking-template.md +10 -0
- package/template/workflows/specdev/INDEX.md +165 -82
- package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +108 -44
- package/template/workflows/specdev/P-goal-plan/completion-control.md +79 -0
- package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +105 -0
- package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +115 -0
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +70 -0
- package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +103 -40
- package/template/workflows/specdev/R-review-architecture/architecture-review-report-template.html +58 -0
- package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +68 -0
- package/template/workflows/specdev/R-review-architecture/proposal-to-ticket.md +11 -0
- package/template/workflows/specdev/S-spec/S-spec.md +103 -49
- package/template/workflows/specdev/S-spec/spec-readiness.md +16 -0
- package/template/workflows/specdev/S-spec/spec-template.md +95 -0
- package/template/workflows/specdev/T-tickets/T-tickets.md +146 -133
- package/template/workflows/specdev/T-tickets/decomposition-rules.md +56 -0
- package/template/workflows/specdev/T-tickets/ticket-readiness.md +45 -0
- package/template/workflows/specdev/T-tickets/ticket-template.md +124 -0
- package/template/workflows/specdev/T-tickets/tickets-map-template.md +52 -50
- package/template/workflows/specdev/T-triage/T-triage.md +32 -63
- package/template/workflows/specdev/T-triage/triage-template.md +29 -0
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +88 -155
- package/template/workflows/specdev/W-wayfinder/investigation-ticket-template.md +50 -0
- package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +46 -0
- package/template/workflows/specdev/_state/status.json +1 -1
- package/template/workflows/specdev/common/README.md +47 -0
- package/template/workflows/specdev/common/rules/artifact-contract.md +57 -0
- package/template/workflows/specdev/common/rules/code-commenting-rule.md +39 -0
- package/template/workflows/specdev/common/rules/deviation-control.md +43 -0
- package/template/workflows/specdev/common/rules/evidence-and-verification.md +57 -0
- package/template/workflows/specdev/common/rules/path-ownership.md +35 -0
- package/template/workflows/specdev/common/rules/path-reference-contract.md +116 -0
- package/template/workflows/specdev/common/rules/planning-principles.md +57 -0
- package/template/workflows/specdev/common/rules/readiness-and-depth.md +51 -0
- package/template/workflows/specdev/common/schemas/change-status.schema.json +170 -0
- package/template/workflows/specdev/common/schemas/config.schema.json +54 -0
- package/template/workflows/specdev/common/schemas/goal-plan.schema.json +21 -0
- package/template/workflows/specdev/common/schemas/spec.schema.json +16 -0
- package/template/workflows/specdev/common/schemas/status.schema.json +149 -0
- package/template/workflows/specdev/common/schemas/ticket.schema.json +130 -0
- package/template/workflows/specdev/common/schemas/tickets-map.schema.json +14 -0
- package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +28 -0
- package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +30 -0
- package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +16 -0
- package/template/workflows/specdev/common/skills/research/SKILL.md +43 -0
- package/template/workflows/specdev/common/tools/README.md +16 -0
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +1155 -0
- package/template/canonical/canonical-teach.md +0 -301
- package/template/workflows/specdev/A-archive-and-consolidate/archive-rules.md +0 -49
- package/template/workflows/specdev/A-archive-and-consolidate/cleanup-rules.md +0 -80
- package/template/workflows/specdev/A-archive-and-consolidate/consolidation-rules.md +0 -122
- package/template/workflows/specdev/A-archive-and-consolidate/discrimination-guide.md +0 -96
- package/template/workflows/specdev/A-archive-and-consolidate/knowledge-graduation.md +0 -51
- package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +0 -37
- package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +0 -84
- package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +0 -46
- package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +0 -51
- package/template/workflows/specdev/I-init-setup/domain-layout.md +0 -55
- package/template/workflows/specdev/I-init-setup/status-labels.md +0 -53
- package/template/workflows/specdev/I-init-setup/tracking-convention.md +0 -52
- package/template/workflows/specdev/P-goal-plan/execution-sections.md +0 -126
- package/template/workflows/specdev/P-goal-plan/governance-sections.md +0 -103
- package/template/workflows/specdev/P-goal-plan/input-validation.md +0 -94
- package/template/workflows/specdev/P-goal-plan/lead-orchestration-protocol.md +0 -158
- package/template/workflows/specdev/P-goal-plan/quick-reference-table.md +0 -60
- package/template/workflows/specdev/P-goal-plan/vision-sections.md +0 -80
- package/template/workflows/specdev/R-review-architecture/exploration-guide.md +0 -103
- package/template/workflows/specdev/R-review-architecture/html-report-template.md +0 -124
- package/template/workflows/specdev/T-triage/artifact-templates.md +0 -122
- package/template/workflows/specdev/T-triage/intake-rules.md +0 -71
- package/template/workflows/specdev/T-triage/routing-rules.md +0 -70
- package/template/workflows/specdev/T-triage/understanding-rules.md +0 -102
- package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
- package/template/workflows/specdev/_state/context/.gitkeep +0 -0
- package/template/workflows/specdev/_state/research/.gitkeep +0 -0
- package/template/workflows/specdev/common/dev-worktree/SKILL.md +0 -48
- package/template/workflows/specdev/common/dev-worktree/references/create.md +0 -63
- package/template/workflows/specdev/common/dev-worktree/references/finalize.md +0 -102
- package/template/workflows/specdev/common/handoff/SKILL.md +0 -42
- package/template/workflows/specdev/common/neat-freak/SKILL.md +0 -210
- package/template/workflows/specdev/common/neat-freak/references/agent-paths.md +0 -72
- package/template/workflows/specdev/common/neat-freak/references/governance.md +0 -88
- package/template/workflows/specdev/common/neat-freak/references/sync-matrix.md +0 -77
- package/template/workflows/specdev/common/neat-freak/references/verification.md +0 -92
- package/template/workflows/specdev/common/neat-freak/scripts/audit-inventory.sh +0 -106
- package/template/workflows/specdev/common/prototype/LOGIC.md +0 -89
- package/template/workflows/specdev/common/prototype/SKILL.md +0 -78
- package/template/workflows/specdev/common/prototype/UI.md +0 -120
- package/template/workflows/specdev/common/research/SKILL.md +0 -54
- package/template/workflows/specdev/common/resolving-merge-conflicts/SKILL.md +0 -14
- package/template/workflows/specdev/common/scripts/hitl-loop.template.sh +0 -41
- package/template/workflows/specdev/common/triage/AGENT-BRIEF.md +0 -204
- package/template/workflows/specdev/common/triage/OUT-OF-SCOPE.md +0 -104
- package/template/workflows/specdev/common/triage/SKILL.md +0 -112
|
@@ -3,71 +3,104 @@ id: specdev/archive-and-consolidate
|
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
5
|
name: 归档与沉淀
|
|
6
|
-
description:
|
|
7
|
-
keywords: [归档,
|
|
6
|
+
description: 在验证完成和用户授权后归档 change,并以证据判断哪些架构决策、术语和研究应创建、合并、替代、废弃或不提升。
|
|
7
|
+
keywords: [归档, consolidation, ADR, context, research, knowledge]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# 归档与沉淀
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
归档不是把整个 change 无差别复制到永久知识库。永久知识只保存“当前仍真实、超出单个 change 仍有用、已有实现证据”的结论,同时保留历史和 supersedes 关系。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## 输入
|
|
15
|
+
|
|
16
|
+
- change 根:`<Path>{roots.state}/specdev/changes/{change}/</Path>`
|
|
17
|
+
- change 状态:`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`
|
|
18
|
+
- 全局状态:`<Path>{roots.state}/specdev/status.json</Path>`
|
|
19
|
+
- 当前架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
20
|
+
- 当前领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
|
|
21
|
+
- 当前设计日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
|
|
22
|
+
- 当前 Spec:`<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
|
|
23
|
+
- 当前 Tickets Map:`<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
|
|
24
|
+
- 当前 Goal Plan:`<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`
|
|
25
|
+
- Evidence:`<Path>{roots.state}/specdev/changes/{change}/evidence/</Path>`
|
|
26
|
+
- 永久架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
|
|
27
|
+
- 永久领域上下文:`<Path>{roots.state}/specdev/context/</Path>`
|
|
28
|
+
- 永久研究:`<Path>{roots.state}/specdev/research/</Path>`
|
|
15
29
|
|
|
16
30
|
## 流程
|
|
17
31
|
|
|
18
|
-
### 1.
|
|
32
|
+
### 1. 完成检查
|
|
19
33
|
|
|
20
|
-
|
|
34
|
+
加载 `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/archive-checklist.md</Path>`,检查 Ticket、Evidence、Spec 合同、Goal Gate、偏差、迁移、状态和用户授权。
|
|
21
35
|
|
|
22
|
-
|
|
36
|
+
未完成、验证失败、存在未批准 deviation 或用户未授权时停止,不得标 completed 或 archived。
|
|
23
37
|
|
|
24
|
-
### 2.
|
|
38
|
+
### 2. 冻结归档快照
|
|
25
39
|
|
|
26
|
-
|
|
40
|
+
记录:
|
|
27
41
|
|
|
28
|
-
|
|
42
|
+
- 归档时间;
|
|
43
|
+
- 最终基线、提交或 PR;
|
|
44
|
+
- 全局验证摘要;
|
|
45
|
+
- 已知残余风险;
|
|
46
|
+
- 被批准的 cancelled/deferred 条目;
|
|
47
|
+
- 归档目标 `<Path>{roots.state}/specdev/archive/YYYY-MM/{change}/</Path>`。
|
|
29
48
|
|
|
30
|
-
|
|
49
|
+
归档前不得删除设计日志、Evidence 或被替代 ADR。
|
|
31
50
|
|
|
32
|
-
|
|
51
|
+
### 3. 评估长期知识
|
|
33
52
|
|
|
34
|
-
|
|
53
|
+
加载 `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md</Path>`,逐条评估当前 change 的架构决策、领域术语和研究结论。
|
|
35
54
|
|
|
36
|
-
|
|
55
|
+
每条结论执行:`create | update | merge | supersede | deprecate | skip`。无法判断当前真相时不提升,创建治理问题或新 change。
|
|
37
56
|
|
|
38
|
-
|
|
57
|
+
### 4. 提升与冲突处理
|
|
39
58
|
|
|
40
|
-
|
|
59
|
+
- 架构决策提升到 `<Path>{roots.state}/specdev/adr/</Path>`;
|
|
60
|
+
- 领域术语提升到 `<Path>{roots.state}/specdev/context/</Path>`;
|
|
61
|
+
- 经实现验证、长期有效的研究提升到 `<Path>{roots.state}/specdev/research/</Path>`;
|
|
62
|
+
- 冲突 ADR 建立 supersedes 双向引用,不静默覆盖;
|
|
63
|
+
- 历史结论保留状态和来源,不通过删除历史制造一致性。
|
|
41
64
|
|
|
42
|
-
### 5.
|
|
65
|
+
### 5. 移动归档并更新状态
|
|
43
66
|
|
|
44
|
-
|
|
67
|
+
将 `<Path>{roots.state}/specdev/changes/{change}/</Path>` 移动到 `<Path>{roots.state}/specdev/archive/YYYY-MM/{change}/</Path>`。
|
|
45
68
|
|
|
46
|
-
|
|
69
|
+
更新 `<Path>{roots.state}/specdev/status.json</Path>`:从 active 移除,追加 completed/archived 记录;归档内 `<Path>{roots.state}/specdev/archive/YYYY-MM/{change}/.status.json</Path>` 写入完成时间、归档路径和 promotion 摘要。
|
|
47
70
|
|
|
48
|
-
|
|
71
|
+
任何删除、移动或 Git 副作用均需用户授权。
|
|
49
72
|
|
|
50
|
-
|
|
73
|
+
### 6. 校验与汇报
|
|
51
74
|
|
|
52
|
-
|
|
75
|
+
运行包级和归档链接检查,确认:
|
|
53
76
|
|
|
54
|
-
|
|
77
|
+
- 归档路径存在;
|
|
78
|
+
- 全局状态与归档状态一致;
|
|
79
|
+
- 永久知识引用有效;
|
|
80
|
+
- supersedes 链无断裂;
|
|
81
|
+
- 无敏感信息进入永久知识。
|
|
55
82
|
|
|
56
|
-
|
|
83
|
+
输出 promotion report:每条候选知识、执行动作、目标路径、证据和未提升原因。
|
|
57
84
|
|
|
58
|
-
|
|
85
|
+
## 禁止
|
|
59
86
|
|
|
60
|
-
|
|
87
|
+
- 未完成或验证失败的 change 标 completed;
|
|
88
|
+
- 把临时实现细节、一次性命令或未经验证假设提升为永久知识;
|
|
89
|
+
- 静默覆盖冲突 ADR;
|
|
90
|
+
- 删除历史以制造一致性;
|
|
91
|
+
- 在归档或永久知识中写入秘密、令牌、敏感日志或个人隐私;
|
|
92
|
+
- 未经用户授权移动、删除、提交或推送。
|
|
61
93
|
|
|
62
|
-
|
|
63
|
-
|------|----------|
|
|
64
|
-
| `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/discrimination-guide.md</Path>` | 进入步骤 3「知识评估与鉴别」时加载——智能比对四步法、六种处置动作判定规则、冲突标注格式 |
|
|
65
|
-
| `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/archive-rules.md</Path>` | 进入步骤 4「生成归档计划」时加载——预检清单、批量原子性规则、移动与验证规程 |
|
|
66
|
-
| `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/consolidation-rules.md</Path>` | 进入步骤 5「生成知识沉淀计划」时加载——adr/context/research 三库的写入规则、合并策略、保护规则 |
|
|
67
|
-
| `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/knowledge-graduation.md</Path>` | 进入步骤 5「生成知识沉淀计划」时加载——三文件模型毕业标准、反毕业条件、知识类型到知识库的映射 |
|
|
68
|
-
| `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/cleanup-rules.md</Path>` | 进入步骤 6「生成清理计划」时加载——五种清理分类、反模式扫描规则、保护规则 |
|
|
94
|
+
## 完成标准
|
|
69
95
|
|
|
70
|
-
|
|
96
|
+
- `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/archive-checklist.md</Path>` 全部适用项通过;
|
|
97
|
+
- change 已移动到 `<Path>{roots.state}/specdev/archive/YYYY-MM/{change}/</Path>`;
|
|
98
|
+
- 全局和归档状态一致;
|
|
99
|
+
- 长期知识已按证据处理;
|
|
100
|
+
- promotion report 已向用户汇报;
|
|
101
|
+
- 无未批准副作用。
|
|
102
|
+
|
|
103
|
+
## 子文件引用
|
|
71
104
|
|
|
72
|
-
-
|
|
73
|
-
-
|
|
105
|
+
- 归档检查:`<Path>{roots.workflows}/specdev/A-archive-and-consolidate/archive-checklist.md</Path>`
|
|
106
|
+
- 知识提升规则:`<Path>{roots.workflows}/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md</Path>`
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# 归档检查
|
|
2
|
+
|
|
3
|
+
本清单由 `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md</Path>` 使用。
|
|
4
|
+
|
|
5
|
+
- [ ] `<Path>{roots.state}/specdev/changes/{change}/ticket/</Path>` 内计划 Ticket 均为 `done` 或有批准理由的 `cancelled`。
|
|
6
|
+
- [ ] 每个 `done` Ticket 都有 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`。
|
|
7
|
+
- [ ] `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` 的 AC/合同已覆盖,无未批准 deviation。
|
|
8
|
+
- [ ] `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 中适用 Gate 已关闭。
|
|
9
|
+
- [ ] 项目级验证通过,或已有明确接受的既有/环境失败记录。
|
|
10
|
+
- [ ] 迁移、兼容、监控、回滚和不可逆操作已完成或明确移交。
|
|
11
|
+
- [ ] `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`、Ticket、Evidence 和状态一致。
|
|
12
|
+
- [ ] 校验器无 error。
|
|
13
|
+
- [ ] 永久知识候选均有来源、范围和实现证据。
|
|
14
|
+
- [ ] 敏感值扫描通过。
|
|
15
|
+
- [ ] 用户已授权归档及需要的移动、Git 或外部副作用。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# 知识提升规则
|
|
2
|
+
|
|
3
|
+
本规则由 `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md</Path>` 使用,并遵循 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>`。
|
|
4
|
+
|
|
5
|
+
## 资格
|
|
6
|
+
|
|
7
|
+
永久知识必须同时满足:
|
|
8
|
+
|
|
9
|
+
- 当前代码或实际行为已有验证支持;
|
|
10
|
+
- 超出单个 change 仍有用;
|
|
11
|
+
- 有明确来源、适用范围和状态;
|
|
12
|
+
- 不只是计划、假设、一次性操作记录或临时 workaround;
|
|
13
|
+
- 与现有永久知识的关系已判断。
|
|
14
|
+
|
|
15
|
+
## 操作
|
|
16
|
+
|
|
17
|
+
- **create**:没有等价条目;
|
|
18
|
+
- **update**:同一决策或术语的非语义性补充;
|
|
19
|
+
- **merge**:多个条目表达同一当前真相,保留全部来源;
|
|
20
|
+
- **supersede**:新决策替代旧决策,建立双向引用;
|
|
21
|
+
- **deprecate**:不再推荐但仍需历史或兼容说明;
|
|
22
|
+
- **skip**:临时、局部、未经验证、已过期或不具长期价值。
|
|
23
|
+
|
|
24
|
+
## 目标
|
|
25
|
+
|
|
26
|
+
- 架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
|
|
27
|
+
- 领域上下文:`<Path>{roots.state}/specdev/context/</Path>`
|
|
28
|
+
- 研究结论:`<Path>{roots.state}/specdev/research/</Path>`
|
|
29
|
+
|
|
30
|
+
## 冲突
|
|
31
|
+
|
|
32
|
+
无法确定哪条代表当前真相时不提升。创建治理问题或新 change,并保留冲突来源。永久知识库必须反映当前状态,同时保存历史关系,而不是把冲突藏起来。
|
|
@@ -2,86 +2,86 @@
|
|
|
2
2
|
id: specdev/diagnose-bugs
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
|
-
name: 诊断
|
|
6
|
-
description:
|
|
7
|
-
keywords: [
|
|
5
|
+
name: 诊断 Bug
|
|
6
|
+
description: 通过复现、反馈回路、可证伪假设与最小插桩定位根因,输出修复契约而不是猜测性补丁。
|
|
7
|
+
keywords: [bug, 诊断, 根因, 复现, 假设]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# 诊断
|
|
10
|
+
# 诊断 Bug
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
诊断阶段默认只读项目代码;可以在当前 change 内创建诊断记录,并进行临时、可撤销的本地实验。未经用户授权,不提交修复、不部署、不执行不可逆操作。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## 输入与产物
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
- 原始请求:`<Path>{roots.state}/specdev/changes/{change}/source-issue.md</Path>`
|
|
17
|
+
- 分诊结果:`<Path>{roots.state}/specdev/changes/{change}/triage.md</Path>`
|
|
18
|
+
- 当前领域上下文:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
|
|
19
|
+
- 当前架构决策:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
20
|
+
- 诊断产物:`<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
|
|
21
|
+
- 诊断模板:`<Path>{roots.workflows}/specdev/D-diagnose-bugs/diagnosis-template.md</Path>`
|
|
20
22
|
|
|
21
23
|
## 流程
|
|
22
24
|
|
|
23
|
-
### 1.
|
|
24
|
-
|
|
25
|
-
读取 `<Path>{roots.state}/specdev/status.json</Path>` 确认活跃变更。读取 CONTEXT.md 获取领域词汇表——使用其中已定义的术语。读取 ADR.md 了解已做出的架构决策——诊断过程中涉及的模块若与已有 ADR 相关,在假设中引用。
|
|
25
|
+
### 1. 建立最短反馈回路
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
定义最短复现命令、输入、环境、期望、实际、复现率和观测位置。不能稳定复现时,先缩小观测范围、记录环境差异或建立最小探针,不直接修改业务逻辑。
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
### 2. 收集事实
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
读取相关日志、调用链、测试、配置、版本差异、最近变更、运行环境和相邻成功路径。所有条目标注为事实、推断或用户报告;不得把日志缺失当作行为不存在。
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
外部依赖、版本行为或协议不清楚时,使用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
### 3. 假设排名
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
列出 3–7 个可证伪假设,按“证据支持度 × 解释范围 ÷ 验证成本”排序。每个假设必须说明:
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
- 支持证据;
|
|
40
|
+
- 预期可观察结果;
|
|
41
|
+
- 反证实验;
|
|
42
|
+
- 若被证伪,下一个候选是什么。
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
### 4. 最小实验
|
|
42
45
|
|
|
43
|
-
|
|
46
|
+
一次只改变一个变量。优先使用定向测试、断言、日志、追踪、调试器、配置切换或隔离环境。插桩必须可移除,不得把诊断日志、永久重试或吞错当作修复。
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
### 5. 根因确认
|
|
46
49
|
|
|
47
|
-
|
|
50
|
+
根因必须同时解释:
|
|
48
51
|
|
|
49
|
-
|
|
52
|
+
- 触发条件;
|
|
53
|
+
- 失败机制;
|
|
54
|
+
- 为什么此前未被测试或监控捕获;
|
|
55
|
+
- 影响范围;
|
|
56
|
+
- 为什么拟议修复能阻断机制;
|
|
57
|
+
- 修复可能引入的回归风险。
|
|
50
58
|
|
|
51
|
-
|
|
59
|
+
只能缓解症状时明确标注 workaround,不宣称根因已确认。
|
|
52
60
|
|
|
53
|
-
|
|
61
|
+
### 6. 写入修复契约
|
|
54
62
|
|
|
55
|
-
|
|
63
|
+
使用 `<Path>{roots.workflows}/specdev/D-diagnose-bugs/diagnosis-template.md</Path>` 写入 `<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`,包含根因、受影响范围、修复不变量、回归测试、非目标、风险和回滚。
|
|
56
64
|
|
|
57
|
-
|
|
65
|
+
修复前回归测试应失败,修复后应通过。诊断产物不夹带未经批准的实现。
|
|
58
66
|
|
|
59
|
-
|
|
60
|
-
- **最小复现场景**——阶段 3 产出的最小化复现,可直接转为回归测试
|
|
61
|
-
- **建议的修复接缝**——在哪个模块/接口处修复最合适
|
|
67
|
+
### 7. 发布诊断
|
|
62
68
|
|
|
63
|
-
|
|
69
|
+
同步 `<Path>{roots.state}/specdev/status.json</Path>` 的 `current_work`、`work_history` 和当前 change 状态,返回 `<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`、状态及下一 Work 的完整路径。
|
|
64
70
|
|
|
65
|
-
|
|
71
|
+
- 单一、局部、低风险且契约完全明确:可进入 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>` 生成 Lite/Standard Ticket,或在用户批准后由 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 使用 Direct Spec 模式;
|
|
72
|
+
- 多行为、公共接口、迁移、安全或高风险:进入 `<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>` 或 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`;
|
|
73
|
+
- 根因仍未知:保持 blocked,继续诊断或进入 `<Path>{roots.workflows}/specdev/W-wayfinder/W-wayfinder.md</Path>`。
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
## 完成标准
|
|
68
76
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
77
|
+
- 有可重复复现,或明确说明为何暂时无法复现;
|
|
78
|
+
- 根因有证据和反证过程;
|
|
79
|
+
- 回归测试契约在修复前应失败;
|
|
80
|
+
- 诊断产物区分根因、workaround 和残余未知;
|
|
81
|
+
- 修复契约决策完备;
|
|
82
|
+
- 状态、诊断路径和下一 Work 路径已返回;
|
|
83
|
+
- 未在诊断阶段偷偷提交修复。
|
|
74
84
|
|
|
75
85
|
## 子文件引用
|
|
76
86
|
|
|
77
|
-
|
|
78
|
-
|------|------|---------|
|
|
79
|
-
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/feedback-loop-techniques.md</Path>` | 10 种反馈回路构建技术、收紧回路、非确定性 bug 策略、无法构建回路时的升级路径、最小化协议 | 步骤 2「构建反馈回路」和步骤 3「复现与最小化」进入时 |
|
|
80
|
-
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/hypothesis-format.md</Path>` | 可证伪假设格式模板、排名规则、用户 Plan 呈现模板、AFK 默认行为 | 步骤 4「提出诊断计划」进入时 |
|
|
81
|
-
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/instrumentation-rules.md</Path>` | 探测映射规则、工具偏好、`[DEBUG-xxxx]` 标记约定、性能分支处理 | 步骤 5「插桩验证」进入时 |
|
|
82
|
-
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/cleanup-postmortem.md</Path>` | 清理检查清单、事后分析问题、预防建议记录格式 | 步骤 7「清理与复盘」进入时 |
|
|
83
|
-
|
|
84
|
-
## 依赖关系
|
|
85
|
-
|
|
86
|
-
- 依赖 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 执行修复——步骤 6 移交已确认的根因和最小复现
|
|
87
|
-
- 依赖 `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>` 和 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 提供领域上下文——步骤 1 加载
|
|
87
|
+
- 诊断模板:`<Path>{roots.workflows}/specdev/D-diagnose-bugs/diagnosis-template.md</Path>`
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Diagnosis: <问题>
|
|
2
|
+
|
|
3
|
+
- **Change:** `<change>`
|
|
4
|
+
- **来源:** `<Path>{roots.state}/specdev/changes/{change}/source-issue.md</Path>` / `<Path>{roots.state}/specdev/changes/{change}/triage.md</Path>`
|
|
5
|
+
- **诊断状态:** gathering / reproducing / testing-hypotheses / root-cause-confirmed / blocked
|
|
6
|
+
- **诊断工件:** `<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
|
|
7
|
+
|
|
8
|
+
## 1. 现象与影响
|
|
9
|
+
|
|
10
|
+
只记录可观察现象、受影响对象、严重度和时间范围;把解释留到假设部分。
|
|
11
|
+
|
|
12
|
+
## 2. 复现契约
|
|
13
|
+
|
|
14
|
+
- **环境:** 版本、配置、数据前置条件
|
|
15
|
+
- **输入/步骤:** 最小稳定复现路径
|
|
16
|
+
- **期望:** 来自契约、测试或已确认行为
|
|
17
|
+
- **实际:** 可观察输出
|
|
18
|
+
- **复现率:**
|
|
19
|
+
- **对照组:** 能正常工作的最接近路径
|
|
20
|
+
- **相关路径:** `<Path>src/example.ts</Path>` / 无
|
|
21
|
+
|
|
22
|
+
## 3. 证据时间线
|
|
23
|
+
|
|
24
|
+
| 时间/阶段 | 观察 | 来源 | 可信度 |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| ... | ... | 日志、测试、代码、配置或用户报告 | high / medium / low |
|
|
27
|
+
|
|
28
|
+
## 4. 假设与证伪
|
|
29
|
+
|
|
30
|
+
| 排名 | 可证伪假设 | 支持证据 | 区分性实验 | 预期反证 | 结果 |
|
|
31
|
+
|---|---|---|---|---|---|
|
|
32
|
+
| 1 | ... | ... | ... | ... | confirmed / rejected / pending |
|
|
33
|
+
|
|
34
|
+
每个实验应尽量只区分一个机制。插桩、日志或临时探针必须记录撤销方式,不能成为无主永久代码。
|
|
35
|
+
|
|
36
|
+
## 5. 已确认根因
|
|
37
|
+
|
|
38
|
+
- **触发条件:**
|
|
39
|
+
- **失败机制:** 从输入到错误结果的因果链
|
|
40
|
+
- **根因位置:** `<Path>src/example.ts</Path>`
|
|
41
|
+
- **为何不是其他候选:**
|
|
42
|
+
- **漏检原因:** 测试、监控、契约或流程缺口
|
|
43
|
+
- **确认实验:** 能稳定使问题出现和消失的最小变化
|
|
44
|
+
|
|
45
|
+
根因未确认时不得把“最可能”写成结论,也不得直接把 change 标记为实现就绪。
|
|
46
|
+
|
|
47
|
+
## 6. 修复契约
|
|
48
|
+
|
|
49
|
+
- **必须改变:**
|
|
50
|
+
- **必须保持:** 不变量、兼容性和无关行为
|
|
51
|
+
- **回归测试:** 能在旧实现失败、修复后通过的验证
|
|
52
|
+
- **防复发措施:** 测试、监控、断言或治理修正
|
|
53
|
+
- **OUT:** 本次明确不处理的相邻问题
|
|
54
|
+
- **风险与回滚:**
|
|
55
|
+
- **推荐下游:** S-spec / T-tickets / I-implement / R-review-architecture
|
|
56
|
+
|
|
57
|
+
## 7. 诊断完成门禁
|
|
58
|
+
|
|
59
|
+
- [ ] 复现或无法复现的边界已明确;
|
|
60
|
+
- [ ] 根因由区分性证据支持;
|
|
61
|
+
- [ ] 症状、触发条件与失败机制没有混为一谈;
|
|
62
|
+
- [ ] 回归验证可执行;
|
|
63
|
+
- [ ] 修复边界与必须保持项明确;
|
|
64
|
+
- [ ] 未撤销的临时插桩为零,或已登记 owner 与后续删除条件。
|