@mycodemap/mycodemap 0.4.2 → 0.5.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/CHANGELOG.md +92 -3
- package/README.md +117 -46
- package/dist/ai/claude.d.ts +38 -0
- package/dist/ai/claude.d.ts.map +1 -0
- package/dist/ai/claude.js +169 -0
- package/dist/ai/claude.js.map +1 -0
- package/dist/ai/codex.d.ts +38 -0
- package/dist/ai/codex.d.ts.map +1 -0
- package/dist/ai/codex.js +169 -0
- package/dist/ai/codex.js.map +1 -0
- package/dist/ai/factory.d.ts +48 -0
- package/dist/ai/factory.d.ts.map +1 -0
- package/dist/ai/factory.js +95 -0
- package/dist/ai/factory.js.map +1 -0
- package/dist/ai/index.d.ts +12 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +29 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/provider.d.ts +70 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +31 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/subagent-caller.d.ts +90 -0
- package/dist/ai/subagent-caller.d.ts.map +1 -0
- package/dist/ai/subagent-caller.js +280 -0
- package/dist/ai/subagent-caller.js.map +1 -0
- package/dist/ai/types.d.ts +70 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +5 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli/commands/design.d.ts +47 -0
- package/dist/cli/commands/design.d.ts.map +1 -0
- package/dist/cli/commands/design.js +268 -0
- package/dist/cli/commands/design.js.map +1 -0
- package/dist/cli/commands/server.d.ts +9 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +65 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
- package/dist/cli/commands/ship/pipeline.js +8 -1
- package/dist/cli/commands/ship/pipeline.js.map +1 -1
- package/dist/cli/commands/ship/publisher.d.ts +9 -1
- package/dist/cli/commands/ship/publisher.d.ts.map +1 -1
- package/dist/cli/commands/ship/publisher.js +149 -6
- package/dist/cli/commands/ship/publisher.js.map +1 -1
- package/dist/cli/design-contract-loader.d.ts +15 -0
- package/dist/cli/design-contract-loader.d.ts.map +1 -0
- package/dist/cli/design-contract-loader.js +175 -0
- package/dist/cli/design-contract-loader.js.map +1 -0
- package/dist/cli/design-contract-schema.d.ts +11 -0
- package/dist/cli/design-contract-schema.d.ts.map +1 -0
- package/dist/cli/design-contract-schema.js +75 -0
- package/dist/cli/design-contract-schema.js.map +1 -0
- package/dist/cli/design-handoff-builder.d.ts +15 -0
- package/dist/cli/design-handoff-builder.d.ts.map +1 -0
- package/dist/cli/design-handoff-builder.js +345 -0
- package/dist/cli/design-handoff-builder.js.map +1 -0
- package/dist/cli/design-scope-resolver.d.ts +8 -0
- package/dist/cli/design-scope-resolver.d.ts.map +1 -0
- package/dist/cli/design-scope-resolver.js +712 -0
- package/dist/cli/design-scope-resolver.js.map +1 -0
- package/dist/cli/design-verification-builder.d.ts +8 -0
- package/dist/cli/design-verification-builder.d.ts.map +1 -0
- package/dist/cli/design-verification-builder.js +369 -0
- package/dist/cli/design-verification-builder.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli-new/commands/server.d.ts +13 -0
- package/dist/cli-new/commands/server.d.ts.map +1 -0
- package/dist/cli-new/commands/server.js +90 -0
- package/dist/cli-new/commands/server.js.map +1 -0
- package/dist/generator/ai-overview.d.ts +51 -0
- package/dist/generator/ai-overview.d.ts.map +1 -0
- package/dist/generator/ai-overview.js +160 -0
- package/dist/generator/ai-overview.js.map +1 -0
- package/dist/infrastructure/storage/StorageFactory.d.ts +12 -5
- package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -1
- package/dist/infrastructure/storage/StorageFactory.js +55 -14
- package/dist/infrastructure/storage/StorageFactory.js.map +1 -1
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +41 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js +162 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
- package/dist/interface/types/design-contract.d.ts +68 -0
- package/dist/interface/types/design-contract.d.ts.map +1 -0
- package/dist/interface/types/design-contract.js +7 -0
- package/dist/interface/types/design-contract.js.map +1 -0
- package/dist/interface/types/design-handoff.d.ts +68 -0
- package/dist/interface/types/design-handoff.d.ts.map +1 -0
- package/dist/interface/types/design-handoff.js +4 -0
- package/dist/interface/types/design-handoff.js.map +1 -0
- package/dist/interface/types/design-mapping.d.ts +51 -0
- package/dist/interface/types/design-mapping.d.ts.map +1 -0
- package/dist/interface/types/design-mapping.js +4 -0
- package/dist/interface/types/design-mapping.js.map +1 -0
- package/dist/interface/types/design-verification.d.ts +49 -0
- package/dist/interface/types/design-verification.d.ts.map +1 -0
- package/dist/interface/types/design-verification.js +4 -0
- package/dist/interface/types/design-verification.js.map +1 -0
- package/dist/interface/types/index.d.ts +4 -0
- package/dist/interface/types/index.d.ts.map +1 -1
- package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
- package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
- package/dist/orchestrator/ai-feed-generator.js +377 -0
- package/dist/orchestrator/ai-feed-generator.js.map +1 -0
- package/docs/ai-guide/COMMANDS.md +73 -0
- package/docs/ai-guide/OUTPUT.md +415 -0
- package/docs/ai-guide/PATTERNS.md +14 -4
- package/docs/ai-guide/PROMPTS.md +12 -6
- package/docs/archive/test-report-symbol-search.md +384 -0
- package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
- package/docs/archive/test_report_scenario5.md +615 -0
- package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
- package/docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md +79 -0
- package/docs/product-specs/README.md +2 -1
- package/docs/rules/engineering-with-codex-openai.md +6 -2
- package/docs/rules/validation.md +9 -6
- package/package.json +1 -1
- package/scripts/experiments/arcadedb-http-smoke.mjs +90 -0
- package/scripts/validate-docs.js +247 -0
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
# 测试场景3:影响范围分析对比测试报告
|
|
2
|
+
|
|
3
|
+
## 测试概述
|
|
4
|
+
|
|
5
|
+
**测试目标**: 对比 CodeMap `impact` 命令与手动 `grep` 分析文件变更影响范围的差异
|
|
6
|
+
|
|
7
|
+
**测试时间**: 2025年3月2日
|
|
8
|
+
**测试目录**: `/data/codemap`
|
|
9
|
+
**CodeMap版本**: 本地构建版本
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 测试用例 1: src/core/analyzer.ts 影响分析
|
|
14
|
+
|
|
15
|
+
### 测试目的
|
|
16
|
+
分析核心分析器文件的变更影响范围,对比 CodeMap 的依赖图分析与手动 grep 文本搜索的差异。
|
|
17
|
+
|
|
18
|
+
### CodeMap 执行 (直接依赖)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx codemap impact -f src/core/analyzer.ts
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**执行时间**: 0.539s (real)
|
|
25
|
+
|
|
26
|
+
**输出**:
|
|
27
|
+
```
|
|
28
|
+
📍 影响分析
|
|
29
|
+
──────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
目标文件:
|
|
32
|
+
src/core/analyzer.ts
|
|
33
|
+
导出: analyze
|
|
34
|
+
|
|
35
|
+
⬇️ 直接依赖该文件的模块 (13):
|
|
36
|
+
• src/orchestrator/ai-feed-generator.ts
|
|
37
|
+
• src/orchestrator/result-fusion.ts
|
|
38
|
+
• src/watcher/watch-worker.ts
|
|
39
|
+
• src/core/__tests__/analyzer.test.ts
|
|
40
|
+
• src/cli/__tests__/generate.test.ts
|
|
41
|
+
• src/cli/commands/ci.ts
|
|
42
|
+
• src/cli/commands/generate.ts
|
|
43
|
+
• src/cli/commands/watch-foreground.ts
|
|
44
|
+
• src/orchestrator/__tests__/ai-feed-generator.test.ts
|
|
45
|
+
• src/orchestrator/__tests__/git-analyzer.test.ts
|
|
46
|
+
• src/parser/implementations/tree-sitter-parser.ts
|
|
47
|
+
• src/plugins/__tests__/complexity-analyzer.test.ts
|
|
48
|
+
• src/cli/commands/__tests__/watch-foreground.test.ts
|
|
49
|
+
|
|
50
|
+
⚠️ 风险评估:
|
|
51
|
+
🔴 极高风险 - 该文件是核心依赖,修改将影响大量模块
|
|
52
|
+
直接影响: 13 个模块
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### CodeMap 执行 (传递依赖)
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx codemap impact -f src/core/analyzer.ts --transitive
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**执行时间**: 0.698s (real)
|
|
62
|
+
|
|
63
|
+
**输出**:
|
|
64
|
+
```
|
|
65
|
+
直接依赖该文件的模块 (13):
|
|
66
|
+
[同上]
|
|
67
|
+
|
|
68
|
+
🌐 传递依赖 (66):
|
|
69
|
+
└─► src/cli/index.ts [距离: 3]
|
|
70
|
+
└─► src/ai/claude.ts [距离: 4]
|
|
71
|
+
└─► src/ai/codex.ts [距离: 4]
|
|
72
|
+
... 还有 46 个
|
|
73
|
+
|
|
74
|
+
直接影响: 13 个模块
|
|
75
|
+
传递影响: 66 个额外模块
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 传统工具执行
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
rg -l "analyzer|Analyzer" src/ | head -20
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**执行时间**: 0.010s (real)
|
|
85
|
+
|
|
86
|
+
**输出**:
|
|
87
|
+
```
|
|
88
|
+
src/watcher/watch-worker.ts
|
|
89
|
+
src/cli/__tests__/generate.test.ts
|
|
90
|
+
src/cli/commands/__tests__/generate.test.ts
|
|
91
|
+
src/cli/commands/__tests__/watch-foreground.test.ts
|
|
92
|
+
src/plugins/built-in/complexity-analyzer.ts
|
|
93
|
+
src/cli/commands/watch-foreground.ts
|
|
94
|
+
src/core/__tests__/analyzer.test.ts
|
|
95
|
+
src/cli/commands/ci.ts
|
|
96
|
+
src/core/analyzer.ts
|
|
97
|
+
src/cli/commands/generate.ts
|
|
98
|
+
src/plugins/__tests__/complexity-analyzer.test.ts
|
|
99
|
+
src/plugins/index.ts
|
|
100
|
+
src/plugins/plugin-loader.ts
|
|
101
|
+
src/index.ts
|
|
102
|
+
src/orchestrator/ai-feed-generator.ts
|
|
103
|
+
src/orchestrator/index.ts
|
|
104
|
+
src/orchestrator/result-fusion.ts
|
|
105
|
+
src/orchestrator/git-analyzer.ts
|
|
106
|
+
src/orchestrator/__tests__/git-analyzer.test.ts
|
|
107
|
+
src/orchestrator/__tests__/ai-feed-generator.test.ts
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**匹配文件总数**: 22 个
|
|
111
|
+
|
|
112
|
+
### 对比分析
|
|
113
|
+
|
|
114
|
+
| 维度 | CodeMap Direct | CodeMap Transitive | Grep | 结论 |
|
|
115
|
+
|------|----------------|-------------------|------|------|
|
|
116
|
+
| **执行时间** | 0.54s | 0.70s | 0.01s | Grep 更快 (54-70x) |
|
|
117
|
+
| **直接依赖数** | 13 | 13 | 22 | Grep 包含大量误报 |
|
|
118
|
+
| **传递依赖数** | 未显示 | 66 | N/A | CodeMap 独有功能 |
|
|
119
|
+
| **依赖深度** | ❌ | ✅ (显示距离) | ❌ | CodeMap 传递模式优势 |
|
|
120
|
+
| **风险评估** | ✅ 极高风险 | ✅ 极高风险 | ❌ | CodeMap 独有功能 |
|
|
121
|
+
| **导出信息** | ✅ | ✅ | ❌ | CodeMap 独有功能 |
|
|
122
|
+
| **误报率** | 低 | 低 | 高 (40%) | CodeMap 更准确 |
|
|
123
|
+
|
|
124
|
+
### 差异分析
|
|
125
|
+
|
|
126
|
+
**Grep 找到但 CodeMap 未找到的 "依赖"**:
|
|
127
|
+
```
|
|
128
|
+
src/cli/commands/__tests__/generate.test.ts (不包含 analyzer 导入)
|
|
129
|
+
src/core/analyzer.ts (文件自身)
|
|
130
|
+
src/index.ts ✅ 应该被检测!
|
|
131
|
+
src/orchestrator/git-analyzer.ts (独立模块,非依赖)
|
|
132
|
+
src/orchestrator/index.ts (通过 git-analyzer 导入)
|
|
133
|
+
src/plugins/built-in/complexity-analyzer.ts (独立模块)
|
|
134
|
+
src/plugins/index.ts (通过 complexity-analyzer 导入)
|
|
135
|
+
src/plugins/plugin-loader.ts (通过 complexity-analyzer 导入)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**关键发现**:
|
|
139
|
+
- `src/index.ts` 确实导出了 `analyze` 函数 (`export { analyze } from './core/analyzer.js'`),但 CodeMap 未检测到这是 analyzer.ts 的依赖
|
|
140
|
+
- Grep 找到的 22 个文件中,约 9 个是误报(文件名含 analyzer 但实际不依赖 core/analyzer.ts)
|
|
141
|
+
- CodeMap 的 13 个直接依赖都是准确的导入关系
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 测试用例 2: src/types/index.ts 影响分析
|
|
146
|
+
|
|
147
|
+
### 测试目的
|
|
148
|
+
分析类型定义文件的变更影响,类型文件通常有大量依赖关系。
|
|
149
|
+
|
|
150
|
+
### CodeMap 执行 (传递依赖)
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx codemap impact -f src/types/index.ts --transitive
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**执行时间**: 0.858s (real)
|
|
157
|
+
|
|
158
|
+
**输出**:
|
|
159
|
+
```
|
|
160
|
+
📍 影响分析
|
|
161
|
+
|
|
162
|
+
目标文件:
|
|
163
|
+
src/types/index.ts
|
|
164
|
+
导出: SymbolKind, SourceLocation, DecoratorInfo, ... (38 个类型)
|
|
165
|
+
|
|
166
|
+
⬇️ 直接依赖该文件的模块 (38):
|
|
167
|
+
• src/ai/claude.ts
|
|
168
|
+
• src/ai/codex.ts
|
|
169
|
+
• src/ai/provider.ts
|
|
170
|
+
• src/ai/subagent-caller.ts
|
|
171
|
+
• src/core/analyzer.ts
|
|
172
|
+
• src/core/global-index.ts
|
|
173
|
+
• src/cache/index.ts
|
|
174
|
+
• src/cache/parse-cache.ts
|
|
175
|
+
• src/generator/ai-overview.ts
|
|
176
|
+
• src/generator/context.ts
|
|
177
|
+
• ... (共38个)
|
|
178
|
+
|
|
179
|
+
🌐 传递依赖 (41):
|
|
180
|
+
└─► src/ai/factory.ts [距离: 2]
|
|
181
|
+
└─► src/ai/index.ts [距离: 2]
|
|
182
|
+
└─► src/cli/index.ts [距离: 6]
|
|
183
|
+
└─► ...
|
|
184
|
+
|
|
185
|
+
⚠️ 风险评估:
|
|
186
|
+
🔴 极高风险 - 该文件是核心依赖,修改将影响大量模块
|
|
187
|
+
直接影响: 38 个模块
|
|
188
|
+
传递影响: 41 个额外模块
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 传统工具执行
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
rg -l "from.*types/index|from.*types" src/
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**执行时间**: 0.009s (real)
|
|
198
|
+
|
|
199
|
+
**输出**:
|
|
200
|
+
```
|
|
201
|
+
src/watcher/watch-worker.ts
|
|
202
|
+
src/cli/commands/complexity.ts
|
|
203
|
+
src/cli/commands/analyze.ts
|
|
204
|
+
src/cli/commands/watch-foreground.ts
|
|
205
|
+
src/cli/commands/impact.ts
|
|
206
|
+
src/cli/commands/cycles.ts
|
|
207
|
+
src/cli/commands/ci.ts
|
|
208
|
+
src/cli/commands/generate.ts
|
|
209
|
+
src/cli/commands/deps.ts
|
|
210
|
+
src/cli/commands/workflow.ts
|
|
211
|
+
src/cli/commands/query.ts
|
|
212
|
+
src/worker/index.ts
|
|
213
|
+
src/ai/claude.ts
|
|
214
|
+
src/ai/subagent-caller.ts
|
|
215
|
+
src/ai/provider.ts
|
|
216
|
+
src/ai/codex.ts
|
|
217
|
+
src/ai/index.ts
|
|
218
|
+
... (共66个文件)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**匹配文件总数**: 66 个
|
|
222
|
+
|
|
223
|
+
### 对比分析
|
|
224
|
+
|
|
225
|
+
| 维度 | CodeMap | Grep | 结论 |
|
|
226
|
+
|------|---------|------|------|
|
|
227
|
+
| **执行时间** | 0.86s | 0.009s | Grep 快 95x |
|
|
228
|
+
| **匹配文件数** | 38 | 66 | 差异 28 个文件 |
|
|
229
|
+
| **误报/漏报** | 可能遗漏 | 包含非 types/index.ts 导入 | 各有优劣 |
|
|
230
|
+
|
|
231
|
+
### 差异分析
|
|
232
|
+
|
|
233
|
+
**Grep 找到但 CodeMap 未找到的 "依赖" (28 个)**:
|
|
234
|
+
```
|
|
235
|
+
src/ai/index.ts
|
|
236
|
+
src/cli/commands/analyze.ts
|
|
237
|
+
src/cli/commands/ci.ts
|
|
238
|
+
src/cli/commands/workflow.ts
|
|
239
|
+
src/index.ts
|
|
240
|
+
src/orchestrator/adapters/ast-grep-adapter.ts
|
|
241
|
+
src/orchestrator/adapters/base-adapter.ts
|
|
242
|
+
src/orchestrator/adapters/codemap-adapter.ts
|
|
243
|
+
src/orchestrator/confidence.ts
|
|
244
|
+
src/orchestrator/git-analyzer.ts
|
|
245
|
+
src/orchestrator/index.ts
|
|
246
|
+
src/orchestrator/integration/pipeline.test.ts
|
|
247
|
+
src/orchestrator/intent-router.ts
|
|
248
|
+
src/orchestrator/result-fusion.ts
|
|
249
|
+
src/orchestrator/tool-orchestrator.ts
|
|
250
|
+
src/orchestrator/workflow/phase-checkpoint.ts
|
|
251
|
+
src/orchestrator/workflow/types.ts
|
|
252
|
+
src/orchestrator/workflow/workflow-context.ts
|
|
253
|
+
src/orchestrator/workflow/workflow-orchestrator.ts
|
|
254
|
+
... (共28个)
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**原因分析**:
|
|
258
|
+
这些文件通过 `src/orchestrator/types.ts` 间接使用类型,而非直接从 `src/types/index.ts` 导入。例如:
|
|
259
|
+
```typescript
|
|
260
|
+
// src/orchestrator/result-fusion.ts
|
|
261
|
+
import type { UnifiedResult, HeatScore } from './types.js'; // 不是 types/index.js
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
而 `src/orchestrator/types.ts` 自身又从 `src/types/index.ts` 导入,形成间接依赖。
|
|
265
|
+
|
|
266
|
+
**结论**:
|
|
267
|
+
- CodeMap 准确识别**直接**依赖 (38个)
|
|
268
|
+
- Grep 捕获了**间接**依赖模式,但也包含了一些误报 (通过 `orchestrator/types` 而非 `types/index`)
|
|
269
|
+
- CodeMap 传递依赖模式 (41个) 补充了间接依赖,总计 79 个影响模块
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 测试用例 3: src/cache/lru-cache.ts 影响分析
|
|
274
|
+
|
|
275
|
+
### 测试目的
|
|
276
|
+
分析具体工具类文件的变更影响,评估叶节点文件的依赖分析。
|
|
277
|
+
|
|
278
|
+
### CodeMap 执行
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
npx codemap impact -f src/cache/lru-cache.ts
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**执行时间**: 0.800s (real)
|
|
285
|
+
|
|
286
|
+
**输出**:
|
|
287
|
+
```
|
|
288
|
+
📍 影响分析
|
|
289
|
+
|
|
290
|
+
目标文件:
|
|
291
|
+
src/cache/lru-cache.ts
|
|
292
|
+
导出: LRUCache, LRUCacheWithTTL
|
|
293
|
+
|
|
294
|
+
⬇️ 直接依赖该文件的模块 (4):
|
|
295
|
+
• src/cache/index.ts
|
|
296
|
+
• src/cache/parse-cache.ts
|
|
297
|
+
• src/cache/__tests__/lru-cache.test.ts
|
|
298
|
+
• src/parser/implementations/tree-sitter-parser.ts
|
|
299
|
+
|
|
300
|
+
⚠️ 风险评估:
|
|
301
|
+
⚠️ 高风险 - 该文件被多个模块依赖,修改需谨慎
|
|
302
|
+
直接影响: 4 个模块
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### CodeMap 执行 (传递依赖)
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
npx codemap impact -f src/cache/lru-cache.ts --transitive
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**传递依赖**: 76 个模块
|
|
312
|
+
|
|
313
|
+
### 传统工具执行
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
rg -l "lru-cache|LRUCache" src/
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**执行时间**: 0.010s (real)
|
|
320
|
+
|
|
321
|
+
**输出**:
|
|
322
|
+
```
|
|
323
|
+
src/cache/__tests__/lru-cache.test.ts
|
|
324
|
+
src/cache/parse-cache.ts
|
|
325
|
+
src/cache/lru-cache.ts
|
|
326
|
+
src/cache/index.ts
|
|
327
|
+
src/orchestrator/test-linker.ts
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**匹配文件总数**: 5 个
|
|
331
|
+
|
|
332
|
+
### 对比分析
|
|
333
|
+
|
|
334
|
+
| 维度 | CodeMap Direct | CodeMap Transitive | Grep | 结论 |
|
|
335
|
+
|------|----------------|-------------------|------|------|
|
|
336
|
+
| **执行时间** | 0.80s | ~1.0s | 0.01s | Grep 快 80-100x |
|
|
337
|
+
| **直接依赖数** | 4 | 4 | 5 | Grep 多1个 |
|
|
338
|
+
| **传递依赖数** | 未显示 | 76 | N/A | CodeMap 独有功能 |
|
|
339
|
+
| **风险评估** | ✅ 高风险 | ✅ 高风险 | ❌ | CodeMap 独有 |
|
|
340
|
+
|
|
341
|
+
### 差异分析
|
|
342
|
+
|
|
343
|
+
**Grep 找到但 CodeMap 未找到的**:
|
|
344
|
+
```
|
|
345
|
+
src/orchestrator/test-linker.ts (仅作为字符串示例提及,无实际导入)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
这是一个**误报**: `test-linker.ts` 只是在注释中提到 `lru-cache.test.ts` 作为示例:
|
|
349
|
+
```typescript
|
|
350
|
+
* lru-cache.test.ts → lru-cache.ts
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
CodeMap 正确地识别了这一点,没有将其列为依赖。
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 综合对比分析
|
|
358
|
+
|
|
359
|
+
### 1. 直接依赖识别
|
|
360
|
+
|
|
361
|
+
| 测试文件 | CodeMap 直接依赖 | Grep 匹配数 | CodeMap 准确率 | Grep 准确率 |
|
|
362
|
+
|---------|-----------------|------------|----------------|-------------|
|
|
363
|
+
| analyzer.ts | 13 | 22 | 100% | ~41% |
|
|
364
|
+
| types/index.ts | 38 | 66 | 100% | ~58% |
|
|
365
|
+
| lru-cache.ts | 4 | 5 | 100% | ~80% |
|
|
366
|
+
|
|
367
|
+
**结论**: CodeMap 在直接依赖识别上具有**更高的准确性**,几乎没有误报。
|
|
368
|
+
|
|
369
|
+
### 2. 传递依赖识别
|
|
370
|
+
|
|
371
|
+
| 测试文件 | CodeMap 传递依赖 | 手动分析可行性 | 优势 |
|
|
372
|
+
|---------|-----------------|---------------|------|
|
|
373
|
+
| analyzer.ts | 66 | 困难 | 揭示深层影响 |
|
|
374
|
+
| types/index.ts | 41 | 困难 | 跨层级追踪 |
|
|
375
|
+
| lru-cache.ts | 76 | 几乎不可能 | 揭示广泛影响 |
|
|
376
|
+
|
|
377
|
+
**结论**: CodeMap 的传递依赖分析是**独有功能**,手动几乎无法完成同等分析。
|
|
378
|
+
|
|
379
|
+
### 3. 风险评估准确性
|
|
380
|
+
|
|
381
|
+
CodeMap 风险评估分级:
|
|
382
|
+
- 🔴 极高风险: > 20 个直接依赖 (如 types/index.ts: 38个)
|
|
383
|
+
- ⚠️ 高风险: 5-20 个直接依赖
|
|
384
|
+
- ⚠️ 中风险: 1-4 个直接依赖 (如 cycles.ts: 2个)
|
|
385
|
+
- 🟢 低风险: 0 个依赖
|
|
386
|
+
|
|
387
|
+
**验证**:
|
|
388
|
+
- `src/types/index.ts` (38依赖) → 🔴 极高风险 ✅ 合理
|
|
389
|
+
- `src/cache/lru-cache.ts` (4依赖) → ⚠️ 高风险 ✅ 合理 (虽数量不多但核心功能)
|
|
390
|
+
- `src/cli/commands/cycles.ts` (2依赖) → ⚠️ 中风险 ✅ 合理
|
|
391
|
+
|
|
392
|
+
### 4. 输出格式实用性
|
|
393
|
+
|
|
394
|
+
**CodeMap 优势**:
|
|
395
|
+
- 可视化依赖树结构
|
|
396
|
+
- 显示每个依赖的导出内容
|
|
397
|
+
- 距离标记 (传递依赖)
|
|
398
|
+
- 风险等级评估
|
|
399
|
+
- 统计汇总
|
|
400
|
+
|
|
401
|
+
**Grep 优势**:
|
|
402
|
+
- 简单列表,易于脚本处理
|
|
403
|
+
- 可与其他 Unix 工具链组合
|
|
404
|
+
|
|
405
|
+
### 5. 性能对比
|
|
406
|
+
|
|
407
|
+
| 工具 | 平均执行时间 | 相对速度 |
|
|
408
|
+
|------|-------------|---------|
|
|
409
|
+
| CodeMap (direct) | ~0.6s | 1x |
|
|
410
|
+
| CodeMap (transitive) | ~0.8s | 0.75x |
|
|
411
|
+
| ripgrep | ~0.01s | 60-80x |
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 发现的问题
|
|
416
|
+
|
|
417
|
+
### 问题 1: 遗漏 re-export 依赖
|
|
418
|
+
**严重性**: 🔴 高
|
|
419
|
+
|
|
420
|
+
**描述**: CodeMap 未能检测到通过 re-export 模式依赖的文件。
|
|
421
|
+
|
|
422
|
+
**示例**: `src/index.ts` 包含:
|
|
423
|
+
```typescript
|
|
424
|
+
export { analyze } from './core/analyzer.js';
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
但 CodeMap 未将 `src/index.ts` 列为 `analyzer.ts` 的依赖。
|
|
428
|
+
|
|
429
|
+
**影响**: 修改 analyzer.ts 可能影响所有通过主入口导入的下游用户。
|
|
430
|
+
|
|
431
|
+
### 问题 2: 对 "高/极高风险" 阈值定义不明确
|
|
432
|
+
**严重性**: 🟡 中
|
|
433
|
+
|
|
434
|
+
**描述**:
|
|
435
|
+
- `types/index.ts` (38依赖) → 🔴 极高风险
|
|
436
|
+
- `analyzer.ts` (13依赖) → 🔴 极高风险
|
|
437
|
+
- `lru-cache.ts` (4依赖) → ⚠️ 高风险
|
|
438
|
+
|
|
439
|
+
阈值跳跃较大,13和38都被归为"极高",但4就是"高",缺少中间等级。
|
|
440
|
+
|
|
441
|
+
### 问题 3: 执行时间较长
|
|
442
|
+
**严重性**: 🟡 中
|
|
443
|
+
|
|
444
|
+
**描述**: CodeMap 比 ripgrep 慢 60-80 倍。对于大型代码库或频繁查询场景,这可能成为瓶颈。
|
|
445
|
+
|
|
446
|
+
**建议**:
|
|
447
|
+
- 提供缓存机制
|
|
448
|
+
- 增量更新依赖图
|
|
449
|
+
- 添加 `--fast` 模式使用简化分析
|
|
450
|
+
|
|
451
|
+
### 问题 4: 输出格式缺乏机器可读性
|
|
452
|
+
**严重性**: 🟢 低
|
|
453
|
+
|
|
454
|
+
**描述**: 输出主要是人类可读格式,没有 JSON/YAML 输出选项,不利于脚本集成。
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## 改进建议
|
|
459
|
+
|
|
460
|
+
### 1. 增强 re-export 检测
|
|
461
|
+
```typescript
|
|
462
|
+
// 检测以下模式:
|
|
463
|
+
export { foo } from './module';
|
|
464
|
+
export * from './module';
|
|
465
|
+
export { default } from './module';
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### 2. 细化风险等级
|
|
469
|
+
```
|
|
470
|
+
🟢 低风险: 0-2 依赖
|
|
471
|
+
🟡 中风险: 3-10 依赖
|
|
472
|
+
🟠 高风险: 11-25 依赖
|
|
473
|
+
🔴 极高风险: 26+ 依赖
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### 3. 添加性能优化选项
|
|
477
|
+
```bash
|
|
478
|
+
npx codemap impact -f file.ts --cached # 使用缓存
|
|
479
|
+
npx codemap impact -f file.ts --depth 2 # 限制传递深度
|
|
480
|
+
npx codemap impact -f file.ts --json # 机器可读输出
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
### 4. 提供 diff 模式
|
|
484
|
+
```bash
|
|
485
|
+
npx codemap impact --compare branch1 branch2 # 对比分支影响
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## 总结
|
|
491
|
+
|
|
492
|
+
| 评估维度 | 评分 | 说明 |
|
|
493
|
+
|---------|------|------|
|
|
494
|
+
| 准确性 | ⭐⭐⭐⭐⭐ | 几乎无直接依赖误报 |
|
|
495
|
+
| 完整性 | ⭐⭐⭐⭐ | 遗漏 re-export,其他良好 |
|
|
496
|
+
| 传递分析 | ⭐⭐⭐⭐⭐ | 独有功能,非常有价值 |
|
|
497
|
+
| 风险评估 | ⭐⭐⭐⭐ | 分级合理但阈值可细化 |
|
|
498
|
+
| 性能 | ⭐⭐⭐ | 比 grep 慢,但可接受 |
|
|
499
|
+
| 实用性 | ⭐⭐⭐⭐⭐ | 可视化输出,信息丰富 |
|
|
500
|
+
|
|
501
|
+
### 最终结论
|
|
502
|
+
|
|
503
|
+
**CodeMap impact 命令**在影响范围分析上**显著优于**传统 grep 方法:
|
|
504
|
+
|
|
505
|
+
1. **准确性**: 几乎零误报,而 grep 有 20-60% 的误报率
|
|
506
|
+
2. **传递依赖**: 提供手动几乎无法完成的深层依赖分析
|
|
507
|
+
3. **风险评估**: 量化风险等级,辅助决策
|
|
508
|
+
4. **可视化**: 树形结构直观展示依赖关系
|
|
509
|
+
|
|
510
|
+
**适用场景**:
|
|
511
|
+
- ✅ 发布前影响评估
|
|
512
|
+
- ✅ 重构前依赖分析
|
|
513
|
+
- ✅ 代码审查辅助
|
|
514
|
+
- ✅ 架构决策支持
|
|
515
|
+
|
|
516
|
+
**不适用场景**:
|
|
517
|
+
- ❌ 需要极快速响应的实时监控
|
|
518
|
+
- ❌ 纯文本处理的自动化脚本
|
|
519
|
+
|
|
520
|
+
**总体推荐**: ⭐⭐⭐⭐⭐ (5/5) - 对于需要准确影响分析的场景强烈推荐使用
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Design Contract Template
|
|
2
|
+
|
|
3
|
+
把下面模板复制到仓库根目录并保存为 `mycodemap.design.md`。
|
|
4
|
+
|
|
5
|
+
> 目标不是写长篇 PRD,而是把 AI 后续执行需要的**目标、限制、验收标准、显式非目标**写成可验证输入。
|
|
6
|
+
|
|
7
|
+
## Required Sections
|
|
8
|
+
|
|
9
|
+
| Section | Required | 作用 |
|
|
10
|
+
|---------|----------|------|
|
|
11
|
+
| `## Goal` | Yes | 定义这次要达成的结果 |
|
|
12
|
+
| `## Constraints` | Yes | 约束技术/产品/时间/兼容性边界 |
|
|
13
|
+
| `## Acceptance Criteria` | Yes | 写成可以验证的结果,而不是模糊愿景 |
|
|
14
|
+
| `## Non-Goals` | Yes | 明确这次不做什么,防止 AI scope drift |
|
|
15
|
+
| `## Context` | No | 补充背景、现状、依赖关系 |
|
|
16
|
+
| `## Open Questions` | No | 记录需要人类决策的问题 |
|
|
17
|
+
| `## Notes` | No | 其他实现前必须知道的信息 |
|
|
18
|
+
|
|
19
|
+
## Authoring Rules
|
|
20
|
+
|
|
21
|
+
- 使用清晰 section heading,不要把多个主题揉进同一段。
|
|
22
|
+
- `Acceptance Criteria` 尽量写成可检查的 bullet。
|
|
23
|
+
- `Non-Goals` 不能为空;它是防止越界实现的第一道护栏。
|
|
24
|
+
- 如果某个关键决策尚未确定,写进 `Open Questions`,不要让 AI 自行猜测。
|
|
25
|
+
|
|
26
|
+
## Copy-Paste Template
|
|
27
|
+
|
|
28
|
+
```markdown
|
|
29
|
+
# Design Contract: <feature name>
|
|
30
|
+
|
|
31
|
+
## Goal
|
|
32
|
+
- 这个 feature 最终要解决什么问题?
|
|
33
|
+
- 用户或团队为什么需要它?
|
|
34
|
+
|
|
35
|
+
## Constraints
|
|
36
|
+
- 必须兼容的现有命令、接口或目录边界
|
|
37
|
+
- 不允许改动的模块 / 风险限制 / 时间限制
|
|
38
|
+
|
|
39
|
+
## Acceptance Criteria
|
|
40
|
+
- [ ] 可验证结果 1
|
|
41
|
+
- [ ] 可验证结果 2
|
|
42
|
+
- [ ] 可验证结果 3
|
|
43
|
+
|
|
44
|
+
## Non-Goals
|
|
45
|
+
- 这次明确不做什么
|
|
46
|
+
- 哪些相关问题留到后续 phase
|
|
47
|
+
|
|
48
|
+
## Context
|
|
49
|
+
- 当前实现现状
|
|
50
|
+
- 相关文件 / 模块 / 文档
|
|
51
|
+
|
|
52
|
+
## Open Questions
|
|
53
|
+
- 需要人类确认的问题 1
|
|
54
|
+
|
|
55
|
+
## Notes
|
|
56
|
+
- 其他补充信息
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Minimal Example
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
# Design Contract: Add design validate command
|
|
63
|
+
|
|
64
|
+
## Goal
|
|
65
|
+
- 为 human-authored design contract 提供正式的 CLI validate 入口
|
|
66
|
+
|
|
67
|
+
## Constraints
|
|
68
|
+
- 不扩写 analyze intent
|
|
69
|
+
- 不恢复 workflow 的 commit / ci phases
|
|
70
|
+
|
|
71
|
+
## Acceptance Criteria
|
|
72
|
+
- [ ] `mycodemap design validate mycodemap.design.md --json` 返回机器可读结果
|
|
73
|
+
- [ ] 缺失 `Acceptance Criteria` section 时返回 blocker diagnostics
|
|
74
|
+
- [ ] README 和 AI docs 能发现该入口
|
|
75
|
+
|
|
76
|
+
## Non-Goals
|
|
77
|
+
- 不做 design-to-code mapping
|
|
78
|
+
- 不生成 handoff package
|
|
79
|
+
```
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
- `MVP3-ARCHITECTURE-COMPARISON.md`:把历史设计目标与 `v1.3` 已落地基线并列,防止把愿景误写成现实。
|
|
12
12
|
- `MVP3-ARCHITECTURE-REDESIGN-PRD.md`:记录当前产品边界、Deferred 范围与用户价值。
|
|
13
13
|
- `MVP3-ARCHITECTURE-REDESIGN-TECH-PRD.md`:记录当前技术基线、目录现实、护栏与迁移语义。
|
|
14
|
+
- `DESIGN_CONTRACT_TEMPLATE.md`:当前 human-authored design contract 的 canonical 模板,供 `mycodemap.design.md` 复制使用。
|
|
14
15
|
|
|
15
|
-
>
|
|
16
|
+
> 前 3 份规格属于“已交付基线同步版”;`DESIGN_CONTRACT_TEMPLATE.md` 是当前有效输入契约模板,不是新的待实施 roadmap。
|
|
16
17
|
|
|
17
18
|
## 应放内容
|
|
18
19
|
|
|
@@ -44,13 +44,17 @@
|
|
|
44
44
|
|
|
45
45
|
- 仓库内调试与验证优先使用 `node dist/cli/index.js <command>`,因为当前真实 CLI 入口是 `dist/cli/index.js`。
|
|
46
46
|
- 需求澄清、影响分析、引用定位优先走 `query`、`analyze`、`deps`、`impact`,不要直接全仓漫游。
|
|
47
|
-
- 修改 `analyze`、`query`、`ci`、`workflow` 等高影响命令时,至少验证:
|
|
47
|
+
- 修改 `design`、`analyze`、`query`、`ci`、`workflow` 等高影响命令时,至少验证:
|
|
48
|
+
- `node dist/cli/index.js design validate mycodemap.design.md --json` 的成功/失败路径符合文档;
|
|
49
|
+
- `node dist/cli/index.js design map mycodemap.design.md --json` 的 success/blocker 路径、`candidates` / `unknowns` / `diagnostics` 与文档一致;
|
|
50
|
+
- `node dist/cli/index.js design handoff mycodemap.design.md --json` 的 `readyForExecution` / `approvals` / `assumptions` / `openQuestions` 与文档一致;
|
|
51
|
+
- `node dist/cli/index.js design verify mycodemap.design.md --json` 的 `checklist` / `drift` / `diagnostics` / `readyForExecution` 与文档一致,并保持 review-needed / blocker 分离语义;
|
|
48
52
|
- `node dist/cli/index.js analyze --help` 与文档示例一致;
|
|
49
53
|
- `find` / `read` / `link` / `show` 中受影响的 public intent 可以在当前仓库运行;
|
|
50
54
|
- 若文档保留 legacy alias 说明,真实输出仍会返回 `warnings[]`;
|
|
51
55
|
- 若涉及机器输出,`--json` 与 `--structured --json` 仍保持纯 JSON 契约。
|
|
52
56
|
- 修改 `README.md`、`AI_GUIDE.md`、`docs/ai-guide/OUTPUT.md`、`ARCHITECTURE.md` 这类入口文档时,必须明确区分“目标产品基线”和“当前 CLI 现实”,尤其是 `Server Layer` / `mycodemap server` 的命名边界。
|
|
53
|
-
- 修改 `docs/product-specs/*` 现行规格时,必须同步 `docs/product-specs/README.md` 与 `scripts/validate-docs.js`
|
|
57
|
+
- 修改 `docs/product-specs/*` 现行规格时,必须同步 `docs/product-specs/README.md` 与 `scripts/validate-docs.js` 的高信号断言,避免规格正文和目录索引分叉;`docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md` 也属于这一约束。
|
|
54
58
|
- 若改动会影响 agent 执行手册、README 示例、测试事实或入口路由,先执行 `npm run docs:check`。
|
|
55
59
|
- 若希望通过统一 CLI 护栏入口执行同一检查,使用 `node dist/cli/index.js ci check-docs-sync`;该命令会同时执行 docs guardrail 与 `sync-analyze-docs.js --check`。
|
|
56
60
|
- `ci check-branch --allow` 支持 `*` 通配;在 CI / PR 环境中,分支识别会回退到 `GITHUB_HEAD_REF` / `GITHUB_REF_NAME`。
|
package/docs/rules/validation.md
CHANGED
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
1. 先验证与你改动最相关的命令、测试或模块。
|
|
6
6
|
2. 若改动影响 agent 路由、CLI 示例、规则文档或测试事实,先执行 `npm run docs:check`。
|
|
7
7
|
3. 若改动同时影响 CLI 护栏入口,再补 `node dist/cli/index.js ci check-docs-sync`;该命令会串联 docs guardrail 与 analyze generated block 校验。
|
|
8
|
-
4. 若改动涉及 `
|
|
9
|
-
5.
|
|
10
|
-
6.
|
|
11
|
-
7. 若改动涉及 `
|
|
12
|
-
8.
|
|
13
|
-
9.
|
|
8
|
+
4. 若改动涉及 `design validate` / `design map` / `design handoff` / `design verify` 链路,确认 README、AI 文档、`docs/rules/*` 与 `scripts/validate-docs.js` 同步到同一条链:`design validate → design map → design handoff → design verify`,并显式区分 review-needed 与 blocker 退出语义。
|
|
9
|
+
5. 若改动涉及 `analyze` canonical 示例、选项表或 `AI_GUIDE.md` 速查模板,优先用 `node scripts/sync-analyze-docs.js --check` 直接定位 generated block 漂移。
|
|
10
|
+
6. 若改动涉及产品定位、输出契约、共享文件发现规则或 `Server Layer` / `mycodemap server` 边界,确认 README、AI 文档、架构文档和 guardrail 脚本使用同一套措辞。
|
|
11
|
+
7. 若改动涉及 `docs/product-specs/*` 的现行规格,确认 `docs/product-specs/README.md`、相关规格文档与 `scripts/validate-docs.js` 同步;当前 docs guardrail 会显式校验 MVP3 三份架构规格的 shipped baseline 表述。
|
|
12
|
+
8. 若改动涉及 `mycodemap.config.json.storage` 或图数据库适配器,至少补跑对应 storage adapter 定点测试,并确认 `README.md`、`AI_GUIDE.md`、`docs/ai-guide/COMMANDS.md`、`docs/SETUP_GUIDE.md`、`mycodemap.config.schema.json` 与 guardrail 脚本同步。
|
|
13
|
+
9. 再扩大到 `npm run typecheck`、`npm run lint`、`npm test`。
|
|
14
|
+
10. 涉及发布或打包时,再执行 `npm run build` 与 `npm run validate-pack`。
|
|
14
15
|
|
|
15
16
|
## CI Gateway 验证流程
|
|
16
17
|
|
|
@@ -39,6 +40,7 @@ CI Gateway 已集成以下自动检查(按执行顺序):
|
|
|
39
40
|
- 手改 `README.md`、`docs/ai-guide/COMMANDS.md` 或 `AI_GUIDE.md` 的 `analyze` canonical 代码块 / 选项表 / 速查模板,却没同步 generated block → `node scripts/sync-analyze-docs.js --check` 失败。
|
|
40
41
|
- 文档声称扫描类命令会尊重 `.gitignore`,但实现仍保留手写跳过规则 → `analyze` 与 `check-headers -d` 的文件集合漂移。
|
|
41
42
|
- 把 `workflow` 重新扩回非分析阶段,却没同步 README / AI 命令文档 / guardrail 脚本 → `npm run docs:check` 失败。
|
|
43
|
+
- 文档把 `design verify` 写成新的 workflow phase,或把 review-needed 路径写成 blocker failure → design docs 与命令退出语义漂移。
|
|
42
44
|
- `docs/product-specs/README.md` 仍写“当前活跃产品规格暂为空”,但目录里已经有现行规格 → 目录索引与规格正文自相矛盾。
|
|
43
45
|
- MVP3 规格文档继续把历史设计愿景写成当前现实(例如把 `neo4j`、14 种语言或公共 `server` 产品面写回去)→ `npm run docs:check` 失败。
|
|
44
46
|
- `config-loader` 已支持 `storage`,但 schema / README / AI 文档没同步 → 用户能写配置,编辑器和 guardrail 却仍把它当非法字段。
|
|
@@ -50,6 +52,7 @@ CI Gateway 已集成以下自动检查(按执行顺序):
|
|
|
50
52
|
npm run docs:check
|
|
51
53
|
node scripts/sync-analyze-docs.js --check
|
|
52
54
|
node dist/cli/index.js ci check-docs-sync
|
|
55
|
+
node dist/cli/index.js design verify mycodemap.design.md --json
|
|
53
56
|
node dist/cli/index.js ci check-working-tree
|
|
54
57
|
node dist/cli/index.js ci check-branch
|
|
55
58
|
SHIP_IN_CI=1 node dist/cli/index.js ci check-scripts
|