@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.
Files changed (149) hide show
  1. package/README.md +1 -2
  2. package/dist/src/cli.js +40 -6
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/index.js +5 -0
  5. package/dist/src/index.js.map +1 -1
  6. package/dist/src/skills-mirror.d.ts +38 -0
  7. package/dist/src/skills-mirror.js +160 -0
  8. package/dist/src/skills-mirror.js.map +1 -0
  9. package/package.json +3 -2
  10. package/template/canonical/README.md +7 -1
  11. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +2040 -0
  12. package/template/canonical/canonical-specdev-goal-plan.md +1379 -0
  13. package/template/canonical/canonical-specdev-grill-with-docs.md +848 -285
  14. package/template/canonical/canonical-specdev-spec.md +1061 -46
  15. package/template/canonical/canonical-specdev-tickets.md +1529 -175
  16. package/template/canonical/canonical-specdev-wayfinder.md +677 -107
  17. package/template/commands/git-repository-audit.md +682 -0
  18. package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +69 -36
  19. package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +15 -0
  20. package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +32 -0
  21. package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +51 -51
  22. package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +64 -0
  23. package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +252 -0
  24. package/template/workflows/specdev/E-engineering-cognitive-mentor/architecture-guidance.md +90 -0
  25. package/template/workflows/specdev/E-engineering-cognitive-mentor/bug-guidance.md +80 -0
  26. package/template/workflows/specdev/E-engineering-cognitive-mentor/codebase-guidance.md +107 -0
  27. package/template/workflows/specdev/E-engineering-cognitive-mentor/comprehension-and-closure.md +95 -0
  28. package/template/workflows/specdev/E-engineering-cognitive-mentor/domain-learning-guidance.md +62 -0
  29. package/template/workflows/specdev/E-engineering-cognitive-mentor/evidence-and-options.md +132 -0
  30. package/template/workflows/specdev/E-engineering-cognitive-mentor/interaction-protocol.md +116 -0
  31. package/template/workflows/specdev/E-engineering-cognitive-mentor/mentor-report-template.md +135 -0
  32. package/template/workflows/specdev/E-engineering-cognitive-mentor/mode-routing.md +47 -0
  33. package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +147 -0
  34. package/template/workflows/specdev/E-engineering-cognitive-mentor/requirements-guidance.md +92 -0
  35. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +100 -30
  36. package/template/workflows/specdev/G-grill-with-docs/adr-format.md +22 -77
  37. package/template/workflows/specdev/G-grill-with-docs/context-format.md +27 -53
  38. package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +6 -82
  39. package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +32 -49
  40. package/template/workflows/specdev/G-grill-with-docs/log-format.md +16 -98
  41. package/template/workflows/specdev/I-implement/I-implement.md +168 -52
  42. package/template/workflows/specdev/I-implement/code-review-process.md +10 -76
  43. package/template/workflows/specdev/I-implement/codebase-design-glossary.md +12 -109
  44. package/template/workflows/specdev/I-implement/deepening.md +12 -32
  45. package/template/workflows/specdev/I-implement/design-it-twice.md +6 -41
  46. package/template/workflows/specdev/I-implement/evidence-template.md +69 -0
  47. package/template/workflows/specdev/I-implement/execution-preflight.md +20 -0
  48. package/template/workflows/specdev/I-implement/tdd-examples.md +10 -135
  49. package/template/workflows/specdev/I-implement/tdd-rules.md +12 -28
  50. package/template/workflows/specdev/I-init-setup/I-init-setup.md +81 -86
  51. package/template/workflows/specdev/I-init-setup/change-status-template.json +15 -0
  52. package/template/workflows/specdev/I-init-setup/config-template.json +26 -0
  53. package/template/workflows/specdev/I-init-setup/domain-layout-template.md +23 -0
  54. package/template/workflows/specdev/I-init-setup/status-labels-template.md +55 -0
  55. package/template/workflows/specdev/I-init-setup/status-template.json +7 -0
  56. package/template/workflows/specdev/I-init-setup/tracking-template.md +10 -0
  57. package/template/workflows/specdev/INDEX.md +165 -82
  58. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +108 -44
  59. package/template/workflows/specdev/P-goal-plan/completion-control.md +79 -0
  60. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +105 -0
  61. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +115 -0
  62. package/template/workflows/specdev/P-goal-plan/planning-modes.md +70 -0
  63. package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +103 -40
  64. package/template/workflows/specdev/R-review-architecture/architecture-review-report-template.html +58 -0
  65. package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +68 -0
  66. package/template/workflows/specdev/R-review-architecture/proposal-to-ticket.md +11 -0
  67. package/template/workflows/specdev/S-spec/S-spec.md +103 -49
  68. package/template/workflows/specdev/S-spec/spec-readiness.md +16 -0
  69. package/template/workflows/specdev/S-spec/spec-template.md +95 -0
  70. package/template/workflows/specdev/T-tickets/T-tickets.md +146 -133
  71. package/template/workflows/specdev/T-tickets/decomposition-rules.md +56 -0
  72. package/template/workflows/specdev/T-tickets/ticket-readiness.md +45 -0
  73. package/template/workflows/specdev/T-tickets/ticket-template.md +124 -0
  74. package/template/workflows/specdev/T-tickets/tickets-map-template.md +52 -50
  75. package/template/workflows/specdev/T-triage/T-triage.md +32 -63
  76. package/template/workflows/specdev/T-triage/triage-template.md +29 -0
  77. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +88 -155
  78. package/template/workflows/specdev/W-wayfinder/investigation-ticket-template.md +50 -0
  79. package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +46 -0
  80. package/template/workflows/specdev/_state/status.json +1 -1
  81. package/template/workflows/specdev/common/README.md +47 -0
  82. package/template/workflows/specdev/common/rules/artifact-contract.md +57 -0
  83. package/template/workflows/specdev/common/rules/code-commenting-rule.md +39 -0
  84. package/template/workflows/specdev/common/rules/deviation-control.md +43 -0
  85. package/template/workflows/specdev/common/rules/evidence-and-verification.md +57 -0
  86. package/template/workflows/specdev/common/rules/path-ownership.md +35 -0
  87. package/template/workflows/specdev/common/rules/path-reference-contract.md +116 -0
  88. package/template/workflows/specdev/common/rules/planning-principles.md +57 -0
  89. package/template/workflows/specdev/common/rules/readiness-and-depth.md +51 -0
  90. package/template/workflows/specdev/common/schemas/change-status.schema.json +170 -0
  91. package/template/workflows/specdev/common/schemas/config.schema.json +54 -0
  92. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +21 -0
  93. package/template/workflows/specdev/common/schemas/spec.schema.json +16 -0
  94. package/template/workflows/specdev/common/schemas/status.schema.json +149 -0
  95. package/template/workflows/specdev/common/schemas/ticket.schema.json +130 -0
  96. package/template/workflows/specdev/common/schemas/tickets-map.schema.json +14 -0
  97. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +28 -0
  98. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +30 -0
  99. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +16 -0
  100. package/template/workflows/specdev/common/skills/research/SKILL.md +43 -0
  101. package/template/workflows/specdev/common/tools/README.md +16 -0
  102. package/template/workflows/specdev/common/tools/validate-specdev.mjs +1155 -0
  103. package/template/canonical/canonical-teach.md +0 -301
  104. package/template/workflows/specdev/A-archive-and-consolidate/archive-rules.md +0 -49
  105. package/template/workflows/specdev/A-archive-and-consolidate/cleanup-rules.md +0 -80
  106. package/template/workflows/specdev/A-archive-and-consolidate/consolidation-rules.md +0 -122
  107. package/template/workflows/specdev/A-archive-and-consolidate/discrimination-guide.md +0 -96
  108. package/template/workflows/specdev/A-archive-and-consolidate/knowledge-graduation.md +0 -51
  109. package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +0 -37
  110. package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +0 -84
  111. package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +0 -46
  112. package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +0 -51
  113. package/template/workflows/specdev/I-init-setup/domain-layout.md +0 -55
  114. package/template/workflows/specdev/I-init-setup/status-labels.md +0 -53
  115. package/template/workflows/specdev/I-init-setup/tracking-convention.md +0 -52
  116. package/template/workflows/specdev/P-goal-plan/execution-sections.md +0 -126
  117. package/template/workflows/specdev/P-goal-plan/governance-sections.md +0 -103
  118. package/template/workflows/specdev/P-goal-plan/input-validation.md +0 -94
  119. package/template/workflows/specdev/P-goal-plan/lead-orchestration-protocol.md +0 -158
  120. package/template/workflows/specdev/P-goal-plan/quick-reference-table.md +0 -60
  121. package/template/workflows/specdev/P-goal-plan/vision-sections.md +0 -80
  122. package/template/workflows/specdev/R-review-architecture/exploration-guide.md +0 -103
  123. package/template/workflows/specdev/R-review-architecture/html-report-template.md +0 -124
  124. package/template/workflows/specdev/T-triage/artifact-templates.md +0 -122
  125. package/template/workflows/specdev/T-triage/intake-rules.md +0 -71
  126. package/template/workflows/specdev/T-triage/routing-rules.md +0 -70
  127. package/template/workflows/specdev/T-triage/understanding-rules.md +0 -102
  128. package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
  129. package/template/workflows/specdev/_state/context/.gitkeep +0 -0
  130. package/template/workflows/specdev/_state/research/.gitkeep +0 -0
  131. package/template/workflows/specdev/common/dev-worktree/SKILL.md +0 -48
  132. package/template/workflows/specdev/common/dev-worktree/references/create.md +0 -63
  133. package/template/workflows/specdev/common/dev-worktree/references/finalize.md +0 -102
  134. package/template/workflows/specdev/common/handoff/SKILL.md +0 -42
  135. package/template/workflows/specdev/common/neat-freak/SKILL.md +0 -210
  136. package/template/workflows/specdev/common/neat-freak/references/agent-paths.md +0 -72
  137. package/template/workflows/specdev/common/neat-freak/references/governance.md +0 -88
  138. package/template/workflows/specdev/common/neat-freak/references/sync-matrix.md +0 -77
  139. package/template/workflows/specdev/common/neat-freak/references/verification.md +0 -92
  140. package/template/workflows/specdev/common/neat-freak/scripts/audit-inventory.sh +0 -106
  141. package/template/workflows/specdev/common/prototype/LOGIC.md +0 -89
  142. package/template/workflows/specdev/common/prototype/SKILL.md +0 -78
  143. package/template/workflows/specdev/common/prototype/UI.md +0 -120
  144. package/template/workflows/specdev/common/research/SKILL.md +0 -54
  145. package/template/workflows/specdev/common/resolving-merge-conflicts/SKILL.md +0 -14
  146. package/template/workflows/specdev/common/scripts/hitl-loop.template.sh +0 -41
  147. package/template/workflows/specdev/common/triage/AGENT-BRIEF.md +0 -204
  148. package/template/workflows/specdev/common/triage/OUT-OF-SCOPE.md +0 -104
  149. package/template/workflows/specdev/common/triage/SKILL.md +0 -112
@@ -0,0 +1,132 @@
1
+ # 证据、Why 与方案比较协议
2
+
3
+ ## 1. 证据等级
4
+
5
+ ### 事实
6
+
7
+ 材料直接支持的陈述。来源优先级按场景选择:
8
+
9
+ 1. 用户最新明确决定;
10
+ 2. 当前权威 SpecDev 工件;
11
+ 3. 可定位的源码、配置、测试、日志或运行证据;
12
+ 4. 官方文档、标准或原始研究;
13
+ 5. 高质量二手资料;
14
+ 6. 通用工程经验。
15
+
16
+ 通用经验不能替代具体项目事实。
17
+
18
+ ### 推断
19
+
20
+ 由一个或多个事实推导。必须说明推导链和可能的替代解释。
21
+
22
+ ### 假设
23
+
24
+ 尚未确认的可能机制。必须说明:支持证据、反证条件、需要的验证材料和未验证带来的影响。本 Work 不自行运行实验。
25
+
26
+ ### 待验证
27
+
28
+ 当前材料不足。不要用模糊语言掩盖未知;写清缺少什么以及谁或哪个 Work 可以补齐。
29
+
30
+ ### 决策
31
+
32
+ 用户已确认的取舍。决策必须包含原因、约束、后果、反转条件和替代关系。高影响决策摘要同步全局 LOG,并交给真正拥有权威的工件正式化。
33
+
34
+ ### 风险
35
+
36
+ 可能让结论、方案或迁移失败的条件。区分已观察风险与理论风险。
37
+
38
+ ## 2. 来源写法
39
+
40
+ 项目文件、目录和代码位置:
41
+
42
+ - `<Path>src/example.ts</Path>`
43
+ - `<Path>packages/example/**</Path>`
44
+
45
+ SpecDev 工件:
46
+
47
+ - `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
48
+
49
+ 外部来源:
50
+
51
+ - `<Url>https://example.com/reference</Url>`
52
+
53
+ 行号仅作导航,不作为长期契约。源码结论尽量同时记录文件、类、函数、配置键或测试名称。
54
+
55
+ ## 3. 版本锚点
56
+
57
+ 研究现代库、框架、标准或开源项目时记录:
58
+
59
+ - 仓库与分支;
60
+ - Tag 或 Commit;
61
+ - 软件版本;
62
+ - 文档版本或发布日期;
63
+ - 查询日期;
64
+ - 环境差异。
65
+
66
+ 无法固定时把版本漂移列为风险,不将“当前”写成永久事实。
67
+
68
+ ## 4. Why 因果链
69
+
70
+ 每个关键解释优先覆盖:
71
+
72
+ 1. **背景:**要解决的约束或问题;
73
+ 2. **机制:**系统具体如何运作;
74
+ 3. **结果:**机制为何产生当前行为;
75
+ 4. **设计原因:**为什么放在这一层、使用这一接口或采用这一模式;
76
+ 5. **代价:**复杂度、性能、认知、运维或锁定成本;
77
+ 6. **边界:**何时该解释不再成立;
78
+ 7. **替代:**其他设计会如何改变结果。
79
+
80
+ 不要只逐行翻译代码、重复文档定义或堆砌术语。
81
+
82
+ ## 5. 候选方案最低集合
83
+
84
+ 存在真实选择时,至少考虑:
85
+
86
+ - 保持现状;
87
+ - 最小改变方案;
88
+ - 一个具有实质差异的替代方案。
89
+
90
+ 若保持现状明显不安全,仍说明“不做”的后果,而不是假装它不存在。
91
+
92
+ ## 6. 技术与架构比较维度
93
+
94
+ 按场景选择,不机械填满:
95
+
96
+ | 维度 | 关键问题 |
97
+ |---|---|
98
+ | 需求适配 | 是否直接满足核心行为与非目标? |
99
+ | 正确性 | 一致性、幂等、顺序、权限和错误语义是否可靠? |
100
+ | 复杂度 | 实现、理解、调试和维护成本是多少? |
101
+ | 性能 | 延迟、吞吐、资源和容量上限如何? |
102
+ | 可靠性 | 故障隔离、恢复、重试、降级和事故半径如何? |
103
+ | 安全与合规 | 身份、授权、隐私、审计和法规影响是什么? |
104
+ | 可测试性 | 稳定验证接缝和失败可观察性如何? |
105
+ | 可观测性 | 日志、指标、追踪和诊断成本如何? |
106
+ | 团队适配 | 技能、值班、运维和组织边界是否匹配? |
107
+ | 生态与锁定 | 社区、供应商、协议、迁移出口如何? |
108
+ | 成本 | 开发、运行、许可和机会成本如何? |
109
+ | 演进 | 兼容、迁移、回滚和替换路径是否清楚? |
110
+
111
+ ## 7. 推荐表达
112
+
113
+ 推荐采用条件式结构:
114
+
115
+ ```text
116
+ 在 <当前约束> 下,推荐 <方案>,因为 <关键证据与取舍>。
117
+ 不选 <替代方案> 的主要原因是 <不匹配项>。
118
+ 如果 <反转条件> 发生,推荐应改为 <另一方案>。
119
+ 当前仍依赖 <待验证假设>。
120
+ ```
121
+
122
+ 不得:
123
+
124
+ - 编造精确权重或分数;
125
+ - 用流行度代替适配性;
126
+ - 用“最佳实践”掩盖约束差异;
127
+ - 只列优点,不说代价;
128
+ - 给出无法回滚的建议却不说明迁移风险。
129
+
130
+ ## 8. 外部研究
131
+
132
+ 外部事实不清楚时可使用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。研究结果先写入当前主产物并标明查询日期;只有经确认、长期稳定且有明确归属的知识,才在归档阶段提升到永久 research namespace。
@@ -0,0 +1,116 @@
1
+ # 交互与教学协议
2
+
3
+ 本协议控制提问、解释、理解确认和详细 MLOG。目标是帮助用户形成可复述的工程判断,而不是用问题拖延答案。
4
+
5
+ ## 1. 先发现,后询问
6
+
7
+ 先读取可访问的项目事实、已有工件和外部权威资料。以下内容不得转交给用户人工查找:
8
+
9
+ - 仓库中可直接确认的文件、配置、接口和测试;
10
+ - 已有 Spec、ADR、诊断、Ticket 和日志中的明确决定;
11
+ - 官方文档可直接确认的版本行为;
12
+ - 前文已经回答的事实。
13
+
14
+ 只询问:业务偏好、风险承受度、互斥目标、缺失的环境事实、用户真正想达成的结果,以及无法从材料发现但会改变结论的事项。
15
+
16
+ ## 2. 建立用户当前模型
17
+
18
+ 从用户表述提取:
19
+
20
+ - 已知事实;
21
+ - 用户自己的解释或倾向;
22
+ - 不确定点;
23
+ - 可能存在的误解;
24
+ - 希望获得的深度;
25
+ - 是否希望快速结论、系统教学或决策支持。
26
+
27
+ 不要求用户先完成“自我分析”才提供帮助。用户没有初步判断时,直接给出必要地图和条件式结论。
28
+
29
+ ## 3. 每轮结构
30
+
31
+ 每轮处理一个相对完整的问题簇:
32
+
33
+ 1. **当前回答:**先回应用户刚才的问题;
34
+ 2. **证据状态:**简洁区分事实、推断、假设和待验证;
35
+ 3. **Why:**解释机制、原因、影响和边界;
36
+ 4. **方案取舍:**存在真实选择时才给;
37
+ 5. **唯一问题:**只有会改变下一步结论时才询问;
38
+ 6. **落盘:**追加 MLOG 并更新综合。
39
+
40
+ 用户要求“直接告诉我”时,先给答案。教学协议不得成为扣留结论的理由。
41
+
42
+ ## 4. 提问质量
43
+
44
+ 高价值问题必须满足:
45
+
46
+ - 一次只问一个决策维度;
47
+ - 用户回答会实际改变解释、推荐、风险或范围;
48
+ - 不把多个独立问题塞进一个句子;
49
+ - 提供必要背景和可行选项;
50
+ - 默认给出推荐及原因,除非证据不足;
51
+ - 不问抽象的“你想要什么风格”式问题。
52
+
53
+ 低价值问题包括:可从仓库发现、只为填模板、不会改变结论、重复已答内容或要求用户搬运大量材料。
54
+
55
+ ## 5. 纠错方式
56
+
57
+ 发现用户理解可能错误时:
58
+
59
+ 1. 先承认其中正确部分;
60
+ 2. 指出与证据冲突的具体命题;
61
+ 3. 解释导致误解的直觉来源;
62
+ 4. 给出更准确的因果模型;
63
+ 5. 说明该修正会改变什么判断;
64
+ 6. 在 MLOG 记录“旧理解 → 新理解”,而不是隐藏变化。
65
+
66
+ AI 自己的旧结论被新证据推翻时同样处理,并明确承认。
67
+
68
+ ## 6. MLOG 格式
69
+
70
+ 详细日志位于主产物的“完整交互日志”章节,只追加不覆盖:
71
+
72
+ ```markdown
73
+ ## MLOG-### — <ISO-8601> — <模式>/<阶段> — <主题>
74
+
75
+ - **状态:** answered / confirmed / deferred / rejected / superseded / blocked
76
+ - **用户输入摘要:**
77
+ - **用户当前理解:**
78
+ - **导师回答:**
79
+ - **导师唯一问题:** 无 / ...
80
+ - **用户回答:** 无 / ...
81
+ - **新增事实与来源:**
82
+ - **新增推断或假设:**
83
+ - **Why 因果链:**
84
+ - **候选方案与取舍:** 不适用 / ...
85
+ - **推荐与反转条件:** 不适用 / ...
86
+ - **决定或理解变化:**
87
+ - **未决问题:**
88
+ - **影响工件:** mentor-report / LOG / ADR / CONTEXT / Spec / Ticket / 无
89
+ - **关联全局 LOG:** LOG-### / 无
90
+ - **替代/被替代:** MLOG-### / 无
91
+ - **下一焦点:**
92
+ ```
93
+
94
+ “用户输入摘要”保存语义,不逐字复制敏感或冗长内容。需要保留原文时使用来源指针。
95
+
96
+ ## 7. 轮次原子性
97
+
98
+ 一条 MLOG 对应一次有实质信息变化的用户—导师交互。以下情况不新建:
99
+
100
+ - 用户仅表示收到;
101
+ - 内容完全重复且没有新决定;
102
+ - 系统重试导致同一回合再次执行。
103
+
104
+ 若导师问题在上一轮提出、用户本轮回答,可以在新 MLOG 中引用上一条编号,不回写旧条目。
105
+
106
+ ## 8. 不布置实践任务
107
+
108
+ 本 Work 不要求用户:
109
+
110
+ - 写代码;
111
+ - 修改文件;
112
+ - 运行测试或命令;
113
+ - 完成练习、作业或挑战;
114
+ - 通过实践题才获得后续解释。
115
+
116
+ 可以提供“将来可如何验证”的建议,但必须标记为未执行、非作业,并说明验证目的。
@@ -0,0 +1,135 @@
1
+ ---
2
+ schema_version: 1
3
+ artifact: engineering-cognitive-mentor
4
+ change: <YYYY-MM-DD-topic>
5
+ status: active
6
+ primary_mode: null
7
+ secondary_modes: []
8
+ current_phase: intake
9
+ understanding_status: unverified
10
+ started_at: <ISO-8601>
11
+ updated_at: <ISO-8601>
12
+ closed_at: null
13
+ last_mlog_id: null
14
+ next_question: null
15
+ ---
16
+
17
+ # 工程认知导师记录:<主题>
18
+
19
+ > **工件职责:** 本文是当前 change 的工程认知综合、详细问答轨迹与恢复入口。产品行为以 Spec 为权威,架构决定以 ADR 为权威,执行契约以 Ticket 为权威。本文不得覆盖这些工件。
20
+
21
+ ## 1. 会话与研究契约
22
+
23
+ - **用户目标:**
24
+ - **期望输出:**
25
+ - **成功标准:**
26
+ - **研究范围:**
27
+ - **不处理范围:**
28
+ - **主模式:**
29
+ - **次模式与顺序:**
30
+ - **版本/分支/Commit/查询日期:**
31
+ - **关键约束:**
32
+ - **权威输入:**
33
+
34
+ ## 2. 用户当前认知模型
35
+
36
+ ### 已经知道
37
+
38
+ ### 当前判断或倾向
39
+
40
+ ### 困惑与不确定点
41
+
42
+ ### 已纠正的误解
43
+
44
+ ## 3. 执行摘要
45
+
46
+ > 持续更新当前最可靠的总结。历史变化保留在 MLOG,不在本节复制全部讨论。
47
+
48
+ ## 4. 全局地图与主链路
49
+
50
+ ### 全貌
51
+
52
+ ### 主链路
53
+
54
+ ### 关键边界
55
+
56
+ ## 5. 事实、推断、假设与待验证
57
+
58
+ | ID | 类型 | 陈述 | 来源或推导 | 状态/影响 |
59
+ |---|---|---|---|---|
60
+
61
+ ## 6. 核心机制与 Why
62
+
63
+ ### 背景与约束
64
+
65
+ ### 机制
66
+
67
+ ### 结果与影响
68
+
69
+ ### 设计原因
70
+
71
+ ### 代价与边界
72
+
73
+ ## 7. 候选方案与技术栈比较
74
+
75
+ | 方案 | 核心思路 | 适用约束 | 优点 | 代价/风险 | 迁移与回滚 | 反转条件 |
76
+ |---|---|---|---|---|---|---|
77
+
78
+ ### 当前推荐
79
+
80
+ ### 不选其他方案的原因
81
+
82
+ ### 仍依赖的假设
83
+
84
+ ## 8. 模式专项分析
85
+
86
+ > 根据 Bug、源码、需求、架构或新领域模式填写。不适用内容写“不适用”。
87
+
88
+ ## 9. 已确认决定与理解变化
89
+
90
+ | ID | 类型 | 结论 | 原因 | 来源 | 替代关系 | 影响工件 |
91
+ |---|---|---|---|---|---|---|
92
+
93
+ ## 10. 未决问题与待验证项
94
+
95
+ | ID | 问题 | 为什么重要 | 所需信息/证据 | 是否阻塞 | 建议归属 |
96
+ |---|---|---|---|---|---|
97
+
98
+ ## 11. 理解确认
99
+
100
+ - **状态:** unverified
101
+ - **导师最终总结:**
102
+ - **用户复述或确认:**
103
+ - **仍不清楚/不同意:**
104
+ - **是否还有其他问题:**
105
+
106
+ ## 12. 后续路线与移交
107
+
108
+ - **下一焦点:**
109
+ - **下一 Work:** 无
110
+ - **移交原因:**
111
+ - **恢复说明:**
112
+
113
+ ## 13. 完整交互日志
114
+
115
+ > MLOG 只追加不覆盖。结论变化时新增条目并引用旧编号。
116
+
117
+ ## MLOG-001 — <ISO-8601> — <模式>/<阶段> — 初始化
118
+
119
+ - **状态:** answered
120
+ - **用户输入摘要:**
121
+ - **用户当前理解:**
122
+ - **导师回答:**
123
+ - **导师唯一问题:** 无
124
+ - **用户回答:** 无
125
+ - **新增事实与来源:**
126
+ - **新增推断或假设:**
127
+ - **Why 因果链:**
128
+ - **候选方案与取舍:** 不适用
129
+ - **推荐与反转条件:** 不适用
130
+ - **决定或理解变化:**
131
+ - **未决问题:**
132
+ - **影响工件:** mentor-report
133
+ - **关联全局 LOG:** 无
134
+ - **替代/被替代:** 无
135
+ - **下一焦点:**
@@ -0,0 +1,47 @@
1
+ # 场景路由协议
2
+
3
+ 选择主模式的目标是控制上下文和分析顺序,不是把复杂请求强行归为单一类别。
4
+
5
+ ## 1. 主模式判定
6
+
7
+ | 模式 | 典型信号 | 主要输出 |
8
+ |---|---|---|
9
+ | `bug` | 报错、异常、错误结果、性能退化、事故、根因 | 现象—机制—证据—根因候选—修复原则的认知地图 |
10
+ | `codebase` | 仓库、源码、模块、启动流程、调用链、开源项目 | 项目全貌、架构、入口、核心链路、关键代码与阅读地图 |
11
+ | `requirements` | 需求、业务流程、技术方案、技术选型、可行性 | 问题定义、约束、候选方案、推荐与反转条件 |
12
+ | `architecture` | 系统边界、架构设计、高可用、扩展性、一致性、评审 | 驱动因素、结构与数据流、质量属性、故障模型和架构取舍 |
13
+ | `domain-learning` | 陌生概念、新技术、新行业、原理学习、技术地图 | 知识地图、核心机制、术语关系、技术生态与常见误区 |
14
+
15
+ ## 2. 混合模式
16
+
17
+ 混合请求先识别“当前阻止用户继续判断的主要未知”。按依赖顺序处理,例如:
18
+
19
+ - Bug + 源码:先建立最短故障链,再补相关模块结构;
20
+ - 需求 + 架构:先明确业务目标与质量属性,再比较架构;
21
+ - 新领域 + 技术选型:先建立概念和约束,再做产品或技术比较;
22
+ - 源码 + 二次开发方案:先理解现有扩展点,再讨论方案;
23
+ - 架构 + Bug:若事故正在发生,先解释故障机制;若是长期治理,先明确架构压力。
24
+
25
+ 在主产物记录:
26
+
27
+ - `primary_mode`;
28
+ - `secondary_modes`;
29
+ - `mode_order`;
30
+ - 每个模式的进入条件与退出条件。
31
+
32
+ ## 3. 不应由本 Work 独立承担的情况
33
+
34
+ - 必须运行实验、测试或插桩才能继续定位:移交 `<Path>{roots.workflows}/specdev/D-diagnose-bugs/D-diagnose-bugs.md</Path>`;
35
+ - 调查面过大、需多 Agent 或并行领取未知项:移交 `<Path>{roots.workflows}/specdev/W-wayfinder/W-wayfinder.md</Path>`;
36
+ - 需要正式锁定产品行为和验收:移交 `<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>`;
37
+ - 需要正式架构候选接受与 ADR 同步:移交 `<Path>{roots.workflows}/specdev/R-review-architecture/R-review-architecture.md</Path>` 或 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;
38
+ - 用户要求实施、修复或提交:本 Work 先完成解释与边界说明,再按治理路线移交,不自行执行。
39
+
40
+ ## 4. 路由变更
41
+
42
+ 新证据改变主问题时可以切换模式,但必须:
43
+
44
+ 1. 在 MLOG 记录旧模式为何不足;
45
+ 2. 标记旧结论仍有效、被限制或被替代的部分;
46
+ 3. 更新 frontmatter 的模式与阶段;
47
+ 4. 不重复加载无关专项协议。
@@ -0,0 +1,147 @@
1
+ # 持久化与恢复协议
2
+
3
+ 本协议是工程认知导师 Work 的状态与落盘权威。它细化 Speculo 全局持久化契约,不改变其他 Work 的工件职责。
4
+
5
+ ## 1. 根与 change 解析
6
+
7
+ 1. 从当前工作目录向上寻找唯一的 Speculo 工作区声明(`.speculo` 下的 workspace 配置);
8
+ 2. 第一个唯一命中的目录为 project root;多个候选或用户指定目录冲突时停止并消歧;
9
+ 3. `path_base` 必须为 `project-root`;
10
+ 4. 读取 roots 后,将 Work 路径解析为 `<Path>{roots.workflows}/specdev/E-engineering-cognitive-mentor/</Path>`,状态路径解析为 `<Path>{roots.state}/specdev/</Path>`;
11
+ 5. 用户指定 change 优先;否则唯一 active change 直接使用;没有 active change 时按 `YYYY-MM-DD-<kebab-topic>` 创建;多个 active change 不得猜测。
12
+
13
+ 若 `<Path>{roots.state}/specdev/config.json</Path>` 不存在,先进入 `<Path>{roots.workflows}/specdev/I-init-setup/I-init-setup.md</Path>`。
14
+
15
+ ## 2. 状态文件
16
+
17
+ 全局状态:`<Path>{roots.state}/specdev/status.json</Path>`。
18
+
19
+ change 状态:`<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`。
20
+
21
+ 主产物:`<Path>{roots.state}/specdev/changes/{change}/engineering-cognitive-mentor.md</Path>`。
22
+
23
+ 跨 Work 决策日志:`<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`。
24
+
25
+ ### 开始
26
+
27
+ - 在 `active` 中找到或创建当前 change;
28
+ - 设置该 change 的 `current_work` 为 `specdev/engineering-cognitive-mentor`;
29
+ - `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `current_work` 同步设置为相同值;
30
+ - 在 `work_history` 中查找该 change 与 work id 的未完成记录;存在唯一一条时复用,不重复创建;不存在时追加:
31
+
32
+ ```json
33
+ {
34
+ "change": "<change>",
35
+ "work_id": "specdev/engineering-cognitive-mentor",
36
+ "started_at": "<ISO-8601>",
37
+ "completed_at": null,
38
+ "result": null
39
+ }
40
+ ```
41
+
42
+ 若存在两条以上未完成记录,记录状态异常并停止自动写入,先请求消歧或修复。
43
+
44
+ ### 等待用户或跨会话暂停
45
+
46
+ - 保持 `current_work` 为本 Work;
47
+ - 保持唯一 `work_history` 记录未完成;
48
+ - 更新主产物 `updated_at`、`current_phase`、`next_question`、`unresolved_questions` 与 `last_mlog_id`;
49
+ - 每轮在回复前先落盘,确保用户即使中断也可恢复。
50
+
51
+ 等待用户回答不是 blocked,不应把 change 标为 blocked。
52
+
53
+ ### 正常关闭
54
+
55
+ - 将唯一未完成 `work_history` 的 `completed_at` 写为当前时间,`result` 写为 `completed`;
56
+ - 将本 Work id 以去重方式加入 active change 的 `works_run`;
57
+ - active change 的 `current_work` 与 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `current_work` 设为 null;
58
+ - 不改变整个 change 的 `result` 或 `change_status`,除非用户明确结束、取消或外部阻塞确实影响整个 change;
59
+ - 主产物 `status` 写为 `completed`,记录 `closed_at` 与理解确认状态。
60
+
61
+ ### 外部阻塞
62
+
63
+ 只有缺少权限、不可访问资料、必须等待第三方结果或存在互斥权威冲突时才标 blocked:
64
+
65
+ - 主产物 `status: blocked`;
66
+ - 记录 blocker、已知事实、所需输入和恢复条件;
67
+ - 完成当前 `work_history`,结果为 `blocked`;
68
+ - change 是否设为 blocked 取决于该阻塞是否阻止整个 change,不自动扩大。
69
+
70
+ ### 用户取消
71
+
72
+ - 主产物 `status: cancelled`;
73
+ - 保存当前综合和完整 MLOG;
74
+ - `work_history.result` 写为 `cancelled`;
75
+ - 清空 current_work;
76
+ - 不删除工件或日志。
77
+
78
+ ## 3. 主产物幂等初始化
79
+
80
+ 主产物不存在时,使用 `<Path>{roots.workflows}/specdev/E-engineering-cognitive-mentor/mentor-report-template.md</Path>` 创建。
81
+
82
+ 主产物已存在时:
83
+
84
+ - 不重新生成或覆盖;
85
+ - 读取 frontmatter、当前综合、未决问题和最后一个 `MLOG`;
86
+ - 可补齐缺失的可选章节,但不得重排或改写历史日志;
87
+ - 未识别的新字段原样保留;
88
+ - schema version 1 缺失可选字段时按空值读取,在真实更新时补齐。
89
+
90
+ ## 4. 每轮落盘顺序
91
+
92
+ 每次有实质交互时按以下顺序写入:
93
+
94
+ 1. 追加新的 `MLOG-###`;
95
+ 2. 更新主产物的当前综合、证据表、方案表和未决问题;
96
+ 3. 若有高影响决定,摘要追加全局 `LOG-###`;
97
+ 4. 更新主产物 frontmatter 的阶段、状态、理解状态、时间和最后日志编号;
98
+ 5. 更新 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的 `updated_at`;
99
+ 6. 返回用户回复。
100
+
101
+ 写入中断时,以已追加的 MLOG 为恢复锚点;不得为同一用户回合重复追加。可以用时间、上一条 MLOG 和用户输入摘要检测重复。
102
+
103
+ ## 5. MLOG 与全局 LOG 的职责
104
+
105
+ ### MLOG:详细、Work 专属
106
+
107
+ 主产物中的 MLOG 保存:用户问题摘要、导师问题、用户回答、解释、证据变化、误解修正、方案比较、理解确认和下一焦点。
108
+
109
+ ### 全局 LOG:高影响、跨 Work
110
+
111
+ 只有满足以下任一条件才追加到 `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`:
112
+
113
+ - 用户确认或拒绝会改变产品行为、范围、验收、架构边界、迁移、安全或重大风险的选择;
114
+ - 某项结论阻止或允许进入 Spec、Ticket、Goal Plan 或 Implement;
115
+ - 先前跨 Work 决策被替代;
116
+ - 需要其他 Work 恢复时必须知道的阻塞或 handoff。
117
+
118
+ 全局 LOG 条目使用 `<Path>{roots.workflows}/specdev/G-grill-with-docs/log-format.md</Path>`,并在“事实与来源”或“后续”中引用对应 `MLOG-###` 与主产物完整路径。
119
+
120
+ 普通教学解释、低影响偏好和用户的每个追问不得复制到全局 LOG。
121
+
122
+ ## 6. 恢复读取顺序
123
+
124
+ 跨会话恢复时按顺序读取:
125
+
126
+ 1. `<Path>{roots.state}/specdev/status.json</Path>`;
127
+ 2. `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`;
128
+ 3. `<Path>{roots.state}/specdev/changes/{change}/engineering-cognitive-mentor.md</Path>`;
129
+ 4. 其中列出的权威输入与外部引用;
130
+ 5. `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>` 中与 MLOG 关联的高影响条目;
131
+ 6. 按当前模式加载所需专项协议。
132
+
133
+ 恢复后先向用户简短说明:当前模式、已确认结论、未决问题和下一焦点。不要重新复述全文或重新询问已回答问题。
134
+
135
+ ## 7. 工件冲突
136
+
137
+ 冲突按 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>` 裁决。
138
+
139
+ - 用户最新明确决定优先;
140
+ - 主产物是教学综合与详细 MLOG 的权威,不是产品行为或架构决定的最终权威;
141
+ - 若主产物与 ADR、Spec 或 Ticket 冲突,指出冲突并移交真正拥有该决定的 Work 修订;
142
+ - 代码事实可以证明旧解释过时,但不能静默改写用户目标;
143
+ - 所有替代通过新 MLOG 和必要的全局 LOG 记录,不删除旧内容。
144
+
145
+ ## 8. 敏感信息
146
+
147
+ 不得将令牌、密码、密钥、完整个人数据、内部凭证、生产连接串或未脱敏客户数据写入 Speculo 状态。日志只保存脱敏摘要和安全的来源指针。
@@ -0,0 +1,92 @@
1
+ # 需求与技术方案指导
2
+
3
+ 本模式把“想要一个功能”还原为用户问题、行为合同、约束和可解释的技术选择。它不直接创建权威 Spec 或 Ticket。
4
+
5
+ ## 1. 问题定义
6
+
7
+ 区分:
8
+
9
+ - 用户或业务问题;
10
+ - 期望结果;
11
+ - 请求中的具体功能想法;
12
+ - 成功指标;
13
+ - 明确非目标;
14
+ - 当前流程和痛点;
15
+ - 谁受影响、谁批准、谁运维。
16
+
17
+ 功能想法不是天然的需求结论。
18
+
19
+ ## 2. 行为与约束地图
20
+
21
+ 梳理:
22
+
23
+ - 参与者与权限;
24
+ - 主要用户流程;
25
+ - 输入、输出、状态和业务规则;
26
+ - 正常、异常和边界场景;
27
+ - 数据、不变量和生命周期;
28
+ - 兼容、迁移和发布限制;
29
+ - 性能、可靠性、安全、隐私、审计、成本和时间约束;
30
+ - 可观察成功状态。
31
+
32
+ ## 3. 关键未知项
33
+
34
+ 分为:
35
+
36
+ - 可从现有项目发现的事实;
37
+ - 需要用户做业务取舍的 decision-needed;
38
+ - 需要外部研究的技术事实;
39
+ - 可延后到 Ticket 或实现阶段的低影响细节。
40
+
41
+ 只询问前两类中真正会改变方案的事项。
42
+
43
+ ## 4. 方案形成
44
+
45
+ 每个方案说明:
46
+
47
+ - 核心思路;
48
+ - 满足哪些行为和约束;
49
+ - 依赖的假设;
50
+ - 数据和接口影响;
51
+ - 失败模式;
52
+ - 实施与认知复杂度;
53
+ - 兼容、迁移和回滚;
54
+ - 可观测性与运维;
55
+ - 长期演进;
56
+ - 不适用条件。
57
+
58
+ 至少比较保持现状、最小方案和一个实质替代方案。
59
+
60
+ ## 5. 技术栈比较
61
+
62
+ 先比较“能力和约束”,再比较具体产品。避免仅按流行度、性能榜或个人偏好选择。
63
+
64
+ 示例层级:
65
+
66
+ ```text
67
+ 需求约束
68
+ → 架构能力(同步/异步、事务/最终一致、托管/自建)
69
+ → 技术类别(关系库、消息系统、缓存、工作流引擎)
70
+ → 具体产品与版本
71
+ ```
72
+
73
+ 若具体产品信息可能变化,必须查当前官方资料并记录查询日期。
74
+
75
+ ## 6. 推荐与决策支持
76
+
77
+ 推荐说明:
78
+
79
+ - 当前最关键的 2–4 个决策驱动因素;
80
+ - 推荐方案如何满足它们;
81
+ - 被拒方案在哪些约束上不匹配;
82
+ - 反转条件;
83
+ - 未验证假设;
84
+ - 需要正式写入 Spec 或 ADR 的事项。
85
+
86
+ ## 7. 移交
87
+
88
+ - 需求和行为仍不清:`<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;
89
+ - 外部行为、范围和验收已清楚:`<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>`;
90
+ - 方案已锁定且需要执行切片:`<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`。
91
+
92
+ 主产物保留解释与讨论历史,但不冒充上述权威工件。