@mycodemap/mycodemap 0.5.2-beta.1 → 2.0.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 +32 -0
- package/README.md +138 -854
- package/README.zh-CN.md +1096 -0
- package/dist/cli/commands/analyze-options.d.ts.map +1 -1
- package/dist/cli/commands/analyze-options.js +8 -0
- package/dist/cli/commands/analyze-options.js.map +1 -1
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +60 -41
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/benchmark.d.ts +8 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.js +150 -0
- package/dist/cli/commands/benchmark.js.map +1 -0
- package/dist/cli/commands/deps.d.ts +2 -1
- package/dist/cli/commands/deps.d.ts.map +1 -1
- package/dist/cli/commands/deps.js +107 -78
- package/dist/cli/commands/deps.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +34 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +7 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +22 -34
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/publish-status.d.ts +31 -0
- package/dist/cli/commands/publish-status.d.ts.map +1 -0
- package/dist/cli/commands/publish-status.js +101 -0
- package/dist/cli/commands/publish-status.js.map +1 -0
- package/dist/cli/commands/query.d.ts +1 -0
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +123 -140
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/readiness-gate.d.ts +25 -0
- package/dist/cli/commands/readiness-gate.d.ts.map +1 -0
- package/dist/cli/commands/readiness-gate.js +197 -0
- package/dist/cli/commands/readiness-gate.js.map +1 -0
- package/dist/cli/commands/ship/checker.d.ts +4 -9
- package/dist/cli/commands/ship/checker.d.ts.map +1 -1
- package/dist/cli/commands/ship/checker.js +60 -22
- package/dist/cli/commands/ship/checker.js.map +1 -1
- package/dist/cli/commands/ship/monitor.d.ts +6 -1
- package/dist/cli/commands/ship/monitor.d.ts.map +1 -1
- package/dist/cli/commands/ship/monitor.js +223 -46
- package/dist/cli/commands/ship/monitor.js.map +1 -1
- package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
- package/dist/cli/commands/ship/pipeline.js +14 -5
- package/dist/cli/commands/ship/pipeline.js.map +1 -1
- package/dist/cli/commands/ship/rules/quality-rules.d.ts +12 -8
- package/dist/cli/commands/ship/rules/quality-rules.d.ts.map +1 -1
- package/dist/cli/commands/ship/rules/quality-rules.js +49 -34
- package/dist/cli/commands/ship/rules/quality-rules.js.map +1 -1
- package/dist/cli/config-loader.js +1 -1
- package/dist/cli/config-loader.js.map +1 -1
- package/dist/cli/doctor/check-agent.d.ts +3 -0
- package/dist/cli/doctor/check-agent.d.ts.map +1 -0
- package/dist/cli/doctor/check-agent.js +60 -0
- package/dist/cli/doctor/check-agent.js.map +1 -0
- package/dist/cli/doctor/check-ghost-commands.d.ts +3 -0
- package/dist/cli/doctor/check-ghost-commands.d.ts.map +1 -0
- package/dist/cli/doctor/check-ghost-commands.js +86 -0
- package/dist/cli/doctor/check-ghost-commands.js.map +1 -0
- package/dist/cli/doctor/check-native-deps.d.ts +3 -0
- package/dist/cli/doctor/check-native-deps.d.ts.map +1 -0
- package/dist/cli/doctor/check-native-deps.js +54 -0
- package/dist/cli/doctor/check-native-deps.js.map +1 -0
- package/dist/cli/doctor/check-workspace-drift.d.ts +3 -0
- package/dist/cli/doctor/check-workspace-drift.d.ts.map +1 -0
- package/dist/cli/doctor/check-workspace-drift.js +83 -0
- package/dist/cli/doctor/check-workspace-drift.js.map +1 -0
- package/dist/cli/doctor/formatter.d.ts +20 -0
- package/dist/cli/doctor/formatter.d.ts.map +1 -0
- package/dist/cli/doctor/formatter.js +91 -0
- package/dist/cli/doctor/formatter.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +8 -0
- package/dist/cli/doctor/index.d.ts.map +1 -0
- package/dist/cli/doctor/index.js +9 -0
- package/dist/cli/doctor/index.js.map +1 -0
- package/dist/cli/doctor/orchestrator.d.ts +3 -0
- package/dist/cli/doctor/orchestrator.d.ts.map +1 -0
- package/dist/cli/doctor/orchestrator.js +37 -0
- package/dist/cli/doctor/orchestrator.js.map +1 -0
- package/dist/cli/doctor/types.d.ts +19 -0
- package/dist/cli/doctor/types.d.ts.map +1 -0
- package/dist/cli/doctor/types.js +4 -0
- package/dist/cli/doctor/types.js.map +1 -0
- package/dist/cli/first-run-guide.d.ts.map +1 -1
- package/dist/cli/first-run-guide.js +10 -12
- package/dist/cli/first-run-guide.js.map +1 -1
- package/dist/cli/index.js +80 -21
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/hooks.d.ts +17 -0
- package/dist/cli/init/hooks.d.ts.map +1 -0
- package/dist/cli/init/hooks.js +220 -0
- package/dist/cli/init/hooks.js.map +1 -0
- package/dist/cli/init/receipt.d.ts +4 -0
- package/dist/cli/init/receipt.d.ts.map +1 -0
- package/dist/cli/init/receipt.js +117 -0
- package/dist/cli/init/receipt.js.map +1 -0
- package/dist/cli/init/reconciler.d.ts +44 -0
- package/dist/cli/init/reconciler.d.ts.map +1 -0
- package/dist/cli/init/reconciler.js +377 -0
- package/dist/cli/init/reconciler.js.map +1 -0
- package/dist/cli/init/rule-templates.d.ts +9 -0
- package/dist/cli/init/rule-templates.d.ts.map +1 -0
- package/dist/cli/init/rule-templates.js +105 -0
- package/dist/cli/init/rule-templates.js.map +1 -0
- package/dist/cli/init/rules.d.ts +13 -0
- package/dist/cli/init/rules.d.ts.map +1 -0
- package/dist/cli/init/rules.js +113 -0
- package/dist/cli/init/rules.js.map +1 -0
- package/dist/cli/interface-contract/commands/analyze.d.ts +3 -0
- package/dist/cli/interface-contract/commands/analyze.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/analyze.js +138 -0
- package/dist/cli/interface-contract/commands/analyze.js.map +1 -0
- package/dist/cli/interface-contract/commands/benchmark.d.ts +3 -0
- package/dist/cli/interface-contract/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/benchmark.js +107 -0
- package/dist/cli/interface-contract/commands/benchmark.js.map +1 -0
- package/dist/cli/interface-contract/commands/deps.d.ts +3 -0
- package/dist/cli/interface-contract/commands/deps.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/deps.js +129 -0
- package/dist/cli/interface-contract/commands/deps.js.map +1 -0
- package/dist/cli/interface-contract/commands/doctor.d.ts +3 -0
- package/dist/cli/interface-contract/commands/doctor.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/doctor.js +59 -0
- package/dist/cli/interface-contract/commands/doctor.js.map +1 -0
- package/dist/cli/interface-contract/commands/index.d.ts +9 -0
- package/dist/cli/interface-contract/commands/index.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/index.js +18 -0
- package/dist/cli/interface-contract/commands/index.js.map +1 -0
- package/dist/cli/interface-contract/commands/init.d.ts +3 -0
- package/dist/cli/interface-contract/commands/init.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/init.js +87 -0
- package/dist/cli/interface-contract/commands/init.js.map +1 -0
- package/dist/cli/interface-contract/commands/query.d.ts +3 -0
- package/dist/cli/interface-contract/commands/query.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/query.js +185 -0
- package/dist/cli/interface-contract/commands/query.js.map +1 -0
- package/dist/cli/interface-contract/index.d.ts +22 -0
- package/dist/cli/interface-contract/index.d.ts.map +1 -0
- package/dist/cli/interface-contract/index.js +41 -0
- package/dist/cli/interface-contract/index.js.map +1 -0
- package/dist/cli/interface-contract/schema.d.ts +30 -0
- package/dist/cli/interface-contract/schema.d.ts.map +1 -0
- package/dist/cli/interface-contract/schema.js +72 -0
- package/dist/cli/interface-contract/schema.js.map +1 -0
- package/dist/cli/interface-contract/types.d.ts +76 -0
- package/dist/cli/interface-contract/types.d.ts.map +1 -0
- package/dist/cli/interface-contract/types.js +4 -0
- package/dist/cli/interface-contract/types.js.map +1 -0
- package/dist/cli/output/apply-suggestion.d.ts +12 -0
- package/dist/cli/output/apply-suggestion.d.ts.map +1 -0
- package/dist/cli/output/apply-suggestion.js +29 -0
- package/dist/cli/output/apply-suggestion.js.map +1 -0
- package/dist/cli/output/error-codes.d.ts +22 -0
- package/dist/cli/output/error-codes.d.ts.map +1 -0
- package/dist/cli/output/error-codes.js +82 -0
- package/dist/cli/output/error-codes.js.map +1 -0
- package/dist/cli/output/errors.d.ts +14 -0
- package/dist/cli/output/errors.d.ts.map +1 -0
- package/dist/cli/output/errors.js +170 -0
- package/dist/cli/output/errors.js.map +1 -0
- package/dist/cli/output/index.d.ts +13 -0
- package/dist/cli/output/index.d.ts.map +1 -0
- package/dist/cli/output/index.js +11 -0
- package/dist/cli/output/index.js.map +1 -0
- package/dist/cli/output/mode.d.ts +12 -0
- package/dist/cli/output/mode.d.ts.map +1 -0
- package/dist/cli/output/mode.js +23 -0
- package/dist/cli/output/mode.js.map +1 -0
- package/dist/cli/output/progress.d.ts +9 -0
- package/dist/cli/output/progress.d.ts.map +1 -0
- package/dist/cli/output/progress.js +65 -0
- package/dist/cli/output/progress.js.map +1 -0
- package/dist/cli/output/render.d.ts +11 -0
- package/dist/cli/output/render.d.ts.map +1 -0
- package/dist/cli/output/render.js +18 -0
- package/dist/cli/output/render.js.map +1 -0
- package/dist/cli/output/types.d.ts +53 -0
- package/dist/cli/output/types.d.ts.map +1 -0
- package/dist/cli/output/types.js +14 -0
- package/dist/cli/output/types.js.map +1 -0
- package/dist/cli/output/wasm-fallback.d.ts +13 -0
- package/dist/cli/output/wasm-fallback.d.ts.map +1 -0
- package/dist/cli/output/wasm-fallback.js +92 -0
- package/dist/cli/output/wasm-fallback.js.map +1 -0
- package/dist/cli/paths.d.ts +4 -2
- package/dist/cli/paths.d.ts.map +1 -1
- package/dist/cli/paths.js +13 -5
- package/dist/cli/paths.js.map +1 -1
- package/dist/cli/tree-sitter-check.d.ts +6 -1
- package/dist/cli/tree-sitter-check.d.ts.map +1 -1
- package/dist/cli/tree-sitter-check.js +23 -1
- package/dist/cli/tree-sitter-check.js.map +1 -1
- package/dist/infrastructure/storage/adapters/SQLiteStorage.d.ts.map +1 -1
- package/dist/infrastructure/storage/adapters/SQLiteStorage.js +2 -2
- package/dist/infrastructure/storage/adapters/SQLiteStorage.js.map +1 -1
- package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts +23 -0
- package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/sqlite-loader.js +210 -0
- package/dist/infrastructure/storage/adapters/sqlite-loader.js.map +1 -0
- package/dist/orchestrator/test-linker.d.ts.map +1 -1
- package/dist/orchestrator/test-linker.js +5 -36
- package/dist/orchestrator/test-linker.js.map +1 -1
- package/dist/orchestrator/types.d.ts +2 -0
- package/dist/orchestrator/types.d.ts.map +1 -1
- package/dist/orchestrator/types.js.map +1 -1
- package/dist/parser/implementations/tree-sitter-loader.d.ts +16 -0
- package/dist/parser/implementations/tree-sitter-loader.d.ts.map +1 -0
- package/dist/parser/implementations/tree-sitter-loader.js +105 -0
- package/dist/parser/implementations/tree-sitter-loader.js.map +1 -0
- package/dist/parser/implementations/tree-sitter-parser.d.ts +3 -0
- package/dist/parser/implementations/tree-sitter-parser.d.ts.map +1 -1
- package/dist/parser/implementations/tree-sitter-parser.js +8 -3
- package/dist/parser/implementations/tree-sitter-parser.js.map +1 -1
- package/dist/server/mcp/schema-adapter.d.ts +45 -0
- package/dist/server/mcp/schema-adapter.d.ts.map +1 -0
- package/dist/server/mcp/schema-adapter.js +290 -0
- package/dist/server/mcp/schema-adapter.js.map +1 -0
- package/dist/server/mcp/server.d.ts.map +1 -1
- package/dist/server/mcp/server.js +32 -2
- package/dist/server/mcp/server.js.map +1 -1
- package/docs/AI_ASSISTANT_SETUP.md +173 -14
- package/docs/README.md +40 -1
- package/docs/SETUP_GUIDE.md +23 -26
- package/docs/agents/domain.md +36 -0
- package/docs/agents/issue-tracker.md +22 -0
- package/docs/agents/triage-labels.md +15 -0
- package/docs/ai-guide/COMMANDS.md +125 -13
- package/docs/ai-guide/INTEGRATION.md +78 -11
- package/docs/ai-guide/OUTPUT.md +295 -2
- package/docs/ai-guide/PATTERNS.md +3 -3
- package/docs/ai-guide/PROMPTS.md +2 -2
- package/docs/ai-guide/QUICKSTART.md +41 -5
- package/docs/ai-guide/README.md +9 -9
- package/docs/archive/ideation/2026-04-15-executable-architecture-constitution-ideation-archive.md +70 -0
- package/docs/archive/ideation/2026-04-20-mycodemap-init-enhancements-ideation-archive.md +109 -0
- package/docs/archive/ideation/2026-04-22-harness-rules-entry-docs-optimization-ideation.md +102 -0
- package/docs/archive/ideation/2026-04-22-rules-claude-agents-optimization-ideation.md +107 -0
- package/docs/archive/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation-archive.md +54 -0
- package/docs/brainstorms/2026-04-22-rules-entry-docs-phase1-structure-consolidation-requirements.md +110 -0
- package/docs/brainstorms/999.1-mycodemap-init-enhancements-requirements.md +166 -0
- package/docs/exec-plans/README.md +3 -0
- package/docs/ideation/2026-04-15-executable-architecture-constitution-ideation.md +10 -22
- package/docs/ideation/2026-04-20-mycodemap-init-enhancements-ideation.md +51 -0
- package/docs/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation.md +114 -0
- package/docs/ideation/2026-04-29-ux-install-agent-experience-ideation.md +256 -0
- package/docs/lesson-learn/2026-04-19-prerelease-trusted-publishing-fix.md +119 -0
- package/docs/lesson-learn/image.png +0 -0
- package/docs/plans/2026-04-30-install-guide-and-repo-analyzer-design.md +394 -0
- package/docs/rules/README.md +5 -1
- package/docs/rules/architecture-guardrails.md +2 -1
- package/docs/rules/deployment.md +7 -0
- package/docs/rules/engineering-with-codex-openai.md +48 -9
- package/docs/rules/harness.md +106 -0
- package/docs/rules/pre-release-checklist.md +72 -33
- package/docs/rules/release.md +303 -0
- package/docs/rules/testing.md +70 -0
- package/docs/rules/validation.md +16 -7
- package/examples/claude/skills/mycodemap-repo-analyzer/SKILL.md +294 -0
- package/examples/claude/skills/mycodemap-repo-analyzer/references/analysis-guide.md +166 -0
- package/examples/claude/skills/mycodemap-repo-analyzer/references/module-analysis-guide.md +150 -0
- package/mycodemap.config.schema.json +1 -1
- package/package.json +9 -6
- package/scripts/hooks/templates/commit-msg +38 -0
- package/scripts/hooks/templates/pre-commit +224 -0
- package/scripts/pre-release-check.js +4 -4
- package/scripts/release.sh +1 -1
- package/scripts/sync-analyze-docs.js +2 -2
- package/scripts/validate-docs.js +395 -29
- package/docs/references/tmp.md +0 -527
|
@@ -159,24 +159,31 @@
|
|
|
159
159
|
- [ ] 远程 tag 是否已推送
|
|
160
160
|
- [ ] 当前分支是否为 main/master
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
**推荐发布入口**:
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
|
-
#
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
#
|
|
169
|
-
# 1.
|
|
170
|
-
|
|
165
|
+
# milestone-bound release 的推荐方式只有 `/release vX.Y`
|
|
166
|
+
/release v1.9
|
|
167
|
+
|
|
168
|
+
# `/release` 会负责:
|
|
169
|
+
# 1. 检查 milestone readiness / 工作区 / 分支 / tag 冲突
|
|
170
|
+
# 2. 运行 milestone closeout 或确认已归档状态
|
|
171
|
+
# 3. 展示 Confirmation Gate #1 与 #2
|
|
172
|
+
# 4. 在最终确认后委托机械 helper
|
|
173
|
+
```
|
|
171
174
|
|
|
172
|
-
|
|
173
|
-
git push origin main --tags
|
|
175
|
+
**手动例外(仅限人工受控且已完成等价 closeout + 双确认门)**:
|
|
174
176
|
|
|
175
|
-
|
|
176
|
-
#
|
|
177
|
-
#
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
```bash
|
|
178
|
+
# 只有在完成与 `/release` 等价的 closeout / Gate #1 / Gate #2 后
|
|
179
|
+
# 才允许调用机械 helper
|
|
180
|
+
rtk ./scripts/release.sh 1.9.0
|
|
181
|
+
|
|
182
|
+
# tag push 后由 GitHub Actions 自动完成:
|
|
183
|
+
# - 构建项目
|
|
184
|
+
# - 运行测试
|
|
185
|
+
# - 发布到 NPM (通过 OIDC)
|
|
186
|
+
# - 创建 GitHub Release
|
|
180
187
|
```
|
|
181
188
|
|
|
182
189
|
**Tag 命名规范**:
|
|
@@ -265,6 +272,34 @@ gh secret remove NPM_TOKEN
|
|
|
265
272
|
- [ ] 类型定义要求
|
|
266
273
|
- [ ] 提示词模板要求
|
|
267
274
|
|
|
275
|
+
### 12. 真实场景验证检查(强制)
|
|
276
|
+
|
|
277
|
+
> **适用范围**:本检查项适用于 Phase 41 之后的所有新开发及对已有代码的后续修改。
|
|
278
|
+
> **豁免条款**:Phase 41/42 已有实现(截至本规则生效日)不受追溯约束;后续任何修改必须合规。
|
|
279
|
+
> **宪法依据**:→ `AGENTS.md` Section 8.1(真实场景验证阈值)、Section 8.2(豁免条款)
|
|
280
|
+
> **详细规则**:→ `docs/rules/testing.md` "真实场景验证规则(强制)"
|
|
281
|
+
|
|
282
|
+
**目标**: 确保所有变更都经过真实场景验证,拒绝仅依赖单元测试断言的"纸面通过"
|
|
283
|
+
|
|
284
|
+
**检查项**:
|
|
285
|
+
- [ ] 每个修复/功能是否有真实环境验证证据(干净目录、真实数据、实际调用)
|
|
286
|
+
- [ ] 是否有失败场景验证(至少 1 个)
|
|
287
|
+
- [ ] 是否输出可信度自评(确定信息 / 推测信息 / 需验证信息 / 风险标记)
|
|
288
|
+
- [ ] 测试是否通过 `vitest run`(而非仅 `--changed` 的局部通过)
|
|
289
|
+
|
|
290
|
+
**验证命令**:
|
|
291
|
+
```bash
|
|
292
|
+
# 运行完整测试套件(非 --changed 子集)
|
|
293
|
+
npx vitest run
|
|
294
|
+
|
|
295
|
+
# 在干净环境中验证 CLI 行为(示例)
|
|
296
|
+
TMPDIR=$(mktemp -d) && cd "$TMPDIR" && node dist/cli/index.js --help
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**阻断条件**:
|
|
300
|
+
- 任何声称"修复完成"但没有真实验证证据的提交,发布流程必须拒绝
|
|
301
|
+
- 可信度自评中"需验证信息"或"风险标记"非空的,必须补充验证后才能发布
|
|
302
|
+
|
|
268
303
|
---
|
|
269
304
|
|
|
270
305
|
## 🔧 使用方法
|
|
@@ -290,25 +325,22 @@ npm run docs:check:pre-release 2>&1 | less
|
|
|
290
325
|
|
|
291
326
|
### 发布前准备
|
|
292
327
|
|
|
293
|
-
**推荐方式:
|
|
328
|
+
**推荐方式: 使用 `/release vX.Y` 统一编排**
|
|
294
329
|
|
|
295
330
|
```bash
|
|
296
|
-
#
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
#
|
|
303
|
-
#
|
|
304
|
-
# 2. 更新 package.json 版本
|
|
305
|
-
# 3. 创建 git commit
|
|
306
|
-
# 4. 创建 git tag
|
|
307
|
-
# 5. 推送到远程仓库
|
|
308
|
-
# 6. 触发 GitHub Actions 发布 (OIDC)
|
|
331
|
+
# milestone-bound release 的统一入口
|
|
332
|
+
/release v1.9
|
|
333
|
+
|
|
334
|
+
# `/release` 会负责:
|
|
335
|
+
# 1. 检查 milestone readiness / 工作区 / 分支 / tag 冲突
|
|
336
|
+
# 2. 运行 milestone closeout 或确认已归档状态
|
|
337
|
+
# 3. 展示 Confirmation Gate #1 与 #2
|
|
338
|
+
# 4. 在最终确认后委托 `rtk ./scripts/release.sh 1.9.0`
|
|
309
339
|
```
|
|
310
340
|
|
|
311
|
-
|
|
341
|
+
`scripts/release.sh` 是 Gate #2 之后的机械 helper,不是绕过 `/release` 的主入口。
|
|
342
|
+
|
|
343
|
+
**手动方式(仅限人工受控的例外流)**
|
|
312
344
|
|
|
313
345
|
```bash
|
|
314
346
|
# 1. 确保工作区干净
|
|
@@ -317,17 +349,24 @@ git status
|
|
|
317
349
|
# 2. 运行发布前检查
|
|
318
350
|
npm run docs:check:pre-release
|
|
319
351
|
|
|
320
|
-
# 3.
|
|
352
|
+
# 3. 完成 milestone readiness 与双确认门
|
|
353
|
+
# - Confirmation Gate #1: closeout 摘要确认
|
|
354
|
+
# - Confirmation Gate #2: 版本 bump / tag / push 前最终确认
|
|
355
|
+
|
|
356
|
+
# 4. 构建和测试
|
|
321
357
|
npm run check:all
|
|
322
358
|
|
|
323
|
-
#
|
|
359
|
+
# 5. 仅在确认后调用机械 helper
|
|
360
|
+
rtk ./scripts/release.sh 1.9.0
|
|
361
|
+
|
|
362
|
+
# 6. 或者手动更新版本号(会自动创建 tag)
|
|
324
363
|
npm version patch|minor|major
|
|
325
364
|
|
|
326
|
-
#
|
|
365
|
+
# 7. 推送代码和 tag
|
|
327
366
|
git push origin main
|
|
328
367
|
git push origin --tags
|
|
329
368
|
|
|
330
|
-
#
|
|
369
|
+
# 8. GitHub Actions 自动完成发布
|
|
331
370
|
```
|
|
332
371
|
|
|
333
372
|
---
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# 版本发布工作流程
|
|
2
|
+
|
|
3
|
+
> 本文档定义 `/release` 命令的完整操作流程。
|
|
4
|
+
> 它是 milestone closeout 与 npm 发布的统一编排入口,也是 `/release` 的单一权威文档。
|
|
5
|
+
>
|
|
6
|
+
> **适用对象**:执行发布的 AI 助手或人类操作者。
|
|
7
|
+
> **前置阅读**:`docs/rules/pre-release-checklist.md`、`docs/rules/deployment.md`。
|
|
8
|
+
|
|
9
|
+
> **Runtime adapters**:`.claude/skills/release/SKILL.md` 与 `.agents/skills/release/SKILL.md` 只允许作为运行时薄适配器存在。它们必须回指本文档,不能替代这里的单一权威流程。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 核心原则
|
|
14
|
+
|
|
15
|
+
1. **1:1 绑定**:每个 milestone 对应一个 npm release。
|
|
16
|
+
2. **版本统一**:milestone 版本即 npm 版本(`vX.Y → X.Y.0`,例如 `v1.9 → 1.9.0`)。
|
|
17
|
+
3. **二次确认**:在触发任何不可逆操作(版本 bump、tag 创建、远程推送)之前,必须等待用户显式确认。
|
|
18
|
+
4. **Thin orchestrator**:`/release` 只做编排和确认门,实际工作委托给现有工具链(`$gsd-complete-milestone`、`scripts/release.sh`、`.github/workflows/publish.yml`)。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 角色分级
|
|
23
|
+
|
|
24
|
+
发布操作在 `AGENTS.md` 中定义为 **L3-禁止** 等级:
|
|
25
|
+
|
|
26
|
+
- AI **不得**自主执行版本号变更、tag 创建、远程推送。
|
|
27
|
+
- AI **可以**运行验证检查、准备方案、展示摘要、等待用户确认后执行。
|
|
28
|
+
- 用户确认是**必需**的,不是可选的。
|
|
29
|
+
- 本流程必须严格经过两道确认门;任何缺少显式确认的发布都视为无效。
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 触发条件
|
|
34
|
+
|
|
35
|
+
运行 `/release v{X.Y}` 命令必须同时满足:
|
|
36
|
+
|
|
37
|
+
1. 当前存在 **已完成且可 closeout** 的 milestone;如果 milestone 已归档,`/release` 只可在做版本发布补步骤时继续,不能跳过 readiness 检查。
|
|
38
|
+
2. 用户显式提供了目标版本号(如 `/release v1.9`)。
|
|
39
|
+
3. 当前工作区干净(无未提交修改)。
|
|
40
|
+
4. 当前分支为 `main`(或仓库定义的发布分支)。
|
|
41
|
+
5. 本地与远程都不存在冲突的目标 tag(例如 `v1.9.0`)。
|
|
42
|
+
|
|
43
|
+
如果以上任一不满足,`/release` 应拒绝执行并说明原因。
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 工作流程
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
/release v{X.Y}
|
|
51
|
+
↓
|
|
52
|
+
① 验证触发条件
|
|
53
|
+
② 检查 milestone readiness
|
|
54
|
+
③ 运行 `$gsd-complete-milestone v{X.Y}`
|
|
55
|
+
④ 【Confirmation Gate #1】展示归档摘要
|
|
56
|
+
⑤ 计算并展示版本映射
|
|
57
|
+
⑥ 【Confirmation Gate #2】展示发布摘要
|
|
58
|
+
⑦ 委托机械发布 helper
|
|
59
|
+
⑧ 验证 GitHub Actions 触发
|
|
60
|
+
⑨ 完成报告
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 步骤详解
|
|
64
|
+
|
|
65
|
+
#### ① 验证触发条件
|
|
66
|
+
|
|
67
|
+
检查以下项目,任一失败则终止并报告:
|
|
68
|
+
|
|
69
|
+
- [ ] 用户提供了明确的目标版本号(`v{X.Y}` 格式)
|
|
70
|
+
- [ ] `git status --porcelain` 为空(工作区干净)
|
|
71
|
+
- [ ] 当前分支为 `main`(或项目配置的 base branch)
|
|
72
|
+
- [ ] milestone 已完成并具备 closeout/readiness 证据
|
|
73
|
+
- [ ] 本地不存在目标 tag,远程也不存在同名发布 tag
|
|
74
|
+
- [ ] `package.json` 当前版本已读出,可计算目标版本映射
|
|
75
|
+
|
|
76
|
+
#### ② 检查 Milestone Readiness
|
|
77
|
+
|
|
78
|
+
运行以下检查,收集状态信息用于后续确认门:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# 运行 readiness gate(hard / warn-only / fallback 三层语义)
|
|
82
|
+
mycodemap readiness-gate
|
|
83
|
+
|
|
84
|
+
# 或结构化输出
|
|
85
|
+
mycodemap readiness-gate --json --structured
|
|
86
|
+
|
|
87
|
+
# 检查开放工件
|
|
88
|
+
node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" audit-open 2>/dev/null
|
|
89
|
+
|
|
90
|
+
# 验证 roadmap 状态
|
|
91
|
+
# (roadmap analyze 输出)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
要求:
|
|
95
|
+
- 所有 phase 有 `SUMMARY.md`
|
|
96
|
+
- 所有 requirement 已勾选(或已记录为 deferred)
|
|
97
|
+
- 无未解决的 blocker
|
|
98
|
+
- readiness gate 无 `fallback` 状态(若存在 fallback,需人工判断后方可继续)
|
|
99
|
+
|
|
100
|
+
如果有开放项目,展示给用户并要求选择:
|
|
101
|
+
- [R] 解决 — 停止,修复后重新运行 `/release`
|
|
102
|
+
- [A] 确认延期 — 记录到 `STATE.md` Deferred Items,继续
|
|
103
|
+
- [C] 取消 — 退出
|
|
104
|
+
|
|
105
|
+
#### ③ 运行 GSD Milestone Closeout
|
|
106
|
+
|
|
107
|
+
委托给现有 GSD 工具链:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
$gsd-complete-milestone v{X.Y}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
此步骤自动完成:
|
|
114
|
+
- 归档 ROADMAP.md → `milestones/v{X.Y}-ROADMAP.md`
|
|
115
|
+
- 归档 REQUIREMENTS.md → `milestones/v{X.Y}-REQUIREMENTS.md`
|
|
116
|
+
- 更新 MILESTONES.md、PROJECT.md、STATE.md
|
|
117
|
+
- 更新 RETROSPECTIVE.md
|
|
118
|
+
- 创建安全 commit
|
|
119
|
+
|
|
120
|
+
等待此步骤完全完成后,继续下一步。
|
|
121
|
+
|
|
122
|
+
#### ④ 【Confirmation Gate #1】Milestone 归档摘要
|
|
123
|
+
|
|
124
|
+
展示:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Milestone v{X.Y} [{Name}] 归档完成
|
|
128
|
+
|
|
129
|
+
已归档:
|
|
130
|
+
- milestones/v{X.Y}-ROADMAP.md
|
|
131
|
+
- milestones/v{X.Y}-REQUIREMENTS.md
|
|
132
|
+
- MILESTONES.md 已更新
|
|
133
|
+
- PROJECT.md 已演进
|
|
134
|
+
- STATE.md 已更新
|
|
135
|
+
|
|
136
|
+
Phase 统计:{N} phases, {M} plans, {P} tasks
|
|
137
|
+
关键交付:
|
|
138
|
+
- {accomplishment 1}
|
|
139
|
+
- {accomplishment 2}
|
|
140
|
+
- ...
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
用户确认后继续(默认 N)。如果用户不确认,则流程停止,不进入任何发布准备步骤。
|
|
144
|
+
|
|
145
|
+
#### ⑤ 计算并展示版本映射
|
|
146
|
+
|
|
147
|
+
从 `package.json` 读取当前版本,计算新版本:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
版本映射:
|
|
151
|
+
- Milestone: v{X.Y}
|
|
152
|
+
- NPM 当前: {current_version}
|
|
153
|
+
- NPM 目标: {X.Y}.0
|
|
154
|
+
- 变更类型: {major/minor/patch}
|
|
155
|
+
|
|
156
|
+
⚠️ 警告:当前版本 {current_version} → {X.Y}.0 是 {major} 版本跳跃。
|
|
157
|
+
请确认这是预期行为。
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
当前仓库的已知映射示例:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
v1.9 → 1.9.0
|
|
164
|
+
0.5.2-beta.1 → 1.9.0
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
如果版本跳跃跨越 major 边界(0.x → 1.x 或 1.x → 2.x),额外高亮警告并要求操作者重新确认。
|
|
168
|
+
|
|
169
|
+
#### ⑥ 【Confirmation Gate #2】发布摘要
|
|
170
|
+
|
|
171
|
+
在触发任何不可逆操作之前,完整展示:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
═══════════════════════════════════════════════════════
|
|
175
|
+
即将执行以下操作(不可撤销):
|
|
176
|
+
═══════════════════════════════════════════════════════
|
|
177
|
+
|
|
178
|
+
1. 更新 package.json version: {current} → {X.Y}.0
|
|
179
|
+
2. 创建 git commit: "[RELEASE] bump version to v{X.Y}.0"
|
|
180
|
+
3. 创建 git tag: v{X.Y}.0
|
|
181
|
+
4. 推送到远程 origin
|
|
182
|
+
5. 触发 GitHub Actions: publish.yml
|
|
183
|
+
→ 构建、测试、NPM 发布、GitHub Release
|
|
184
|
+
|
|
185
|
+
确认后,以上操作将自动执行。
|
|
186
|
+
|
|
187
|
+
确认发布 v{X.Y}.0? (y/N):
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
用户必须输入 `y` 或 `Y` 才继续。任何其他输入都终止流程。未经过此 gate,不得执行 `npm version`、git commit、git tag、`git push` 或任何会触发 `.github/workflows/publish.yml` 的动作。
|
|
191
|
+
|
|
192
|
+
#### ⑦ 委托机械发布 helper
|
|
193
|
+
|
|
194
|
+
用户确认后,`/release` 默认**委托**给现有机械 helper,而不是在 skill 里重写版本 bump / tag / push 逻辑:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
rtk ./scripts/release.sh {X.Y}.0
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
委托边界如下:
|
|
201
|
+
|
|
202
|
+
- `/release` 负责前置检查、milestone closeout、版本映射、major 跳跃高亮与 **Confirmation Gate #2**
|
|
203
|
+
- `scripts/release.sh` 负责执行既有的 `npm run check:all`、版本写入、git commit、git tag、`git push`
|
|
204
|
+
- `.github/workflows/publish.yml` 负责 tag push 后的构建、测试、NPM 发布与 GitHub Release
|
|
205
|
+
|
|
206
|
+
> 说明:`scripts/release.sh` 当前自带交互确认;它只能作为 `/release` 已通过 **Confirmation Gate #2** 之后的机械 helper,不能替代 `/release` 的安全门。
|
|
207
|
+
>
|
|
208
|
+
> 说明:Phase 31 / Phase 32 / Phase 33 只定义和验证该流程,不会在当前 milestone 内真的执行这些命令。
|
|
209
|
+
|
|
210
|
+
如需理解 helper 将触发的底层动作,可参考 `scripts/release.sh` 当前事实:它会写入 `package.json` / `package-lock.json` 版本、创建 `[RELEASE]` commit、创建 `v{X.Y}.0` tag,并推送分支与 tag 到远程。
|
|
211
|
+
|
|
212
|
+
#### ⑧ 验证 GitHub Actions 触发
|
|
213
|
+
|
|
214
|
+
推送后,验证 Actions 已触发:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# 给出 Actions 页面链接
|
|
218
|
+
echo "GitHub Actions 发布状态:"
|
|
219
|
+
echo "https://github.com/{owner}/{repo}/actions/workflows/publish.yml"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
如需做**只读 follow-up observability**,统一使用独立命令:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
mycodemap publish-status --tag v{X.Y}.0 --sha {headSha}
|
|
226
|
+
mycodemap publish-status --tag v{X.Y}.0 --sha {headSha} --json --structured
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
约束:
|
|
230
|
+
|
|
231
|
+
- `publish-status` 只读取 `.github/workflows/publish.yml` 的 snapshot truth
|
|
232
|
+
- 它必须依赖 `--tag + --sha` 做精确匹配;无法精确确认时返回 `unavailable` / `ambiguous`
|
|
233
|
+
- 它**不是**第二条发布路径;`/release` 仍是单一权威,`publish-status` 不得 rerun workflow、不得 dispatch、不得 publish、不得 push
|
|
234
|
+
- 默认只做一次 snapshot;是否继续跟进由人类或上层 agent 自主决定
|
|
235
|
+
|
|
236
|
+
可选:使用 `publish-status` 做非阻塞状态复核,但不要把它当成发布 authority 的一部分。
|
|
237
|
+
|
|
238
|
+
#### ⑨ 完成报告
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
✅ Release v{X.Y}.0 已触发
|
|
242
|
+
|
|
243
|
+
Milestone: v{X.Y} — 已归档
|
|
244
|
+
NPM 版本: {X.Y}.0 — 已推送 tag
|
|
245
|
+
GitHub Actions: 运行中
|
|
246
|
+
|
|
247
|
+
查看状态:
|
|
248
|
+
- Actions: https://github.com/{owner}/{repo}/actions
|
|
249
|
+
- NPM: https://www.npmjs.com/package/@mycodemap/mycodemap
|
|
250
|
+
- Release: https://github.com/{owner}/{repo}/releases
|
|
251
|
+
- Follow-up: `mycodemap publish-status --tag v{X.Y}.0 --sha {headSha}`
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## 错误处理与回滚
|
|
257
|
+
|
|
258
|
+
### 中途失败
|
|
259
|
+
|
|
260
|
+
如果在步骤 ③(GSD closeout)之前失败:无持久化副作用,直接终止。
|
|
261
|
+
|
|
262
|
+
如果在步骤 ③ 完成后、步骤 ⑦ 之前失败:milestone 已归档,但 npm 未发布。可以修复问题后重新运行 `/release`(GSD closeout 部分会检测到已归档并跳过)。
|
|
263
|
+
|
|
264
|
+
如果在步骤 ⑦ 中失败(如 push 被拒绝):
|
|
265
|
+
- 若 commit 已创建但 push 失败:修复远程冲突后手动推送。
|
|
266
|
+
- 若 tag 已创建但 push 失败:手动 `git push origin v{X.Y}.0`。
|
|
267
|
+
- 若 package.json 已修改但 commit 未创建:`git checkout package.json package-lock.json` 回滚。
|
|
268
|
+
|
|
269
|
+
### 版本冲突
|
|
270
|
+
|
|
271
|
+
如果本地或远程已存在 `v{X.Y}.0` tag:
|
|
272
|
+
- 拒绝执行,报告冲突。
|
|
273
|
+
- 建议用户检查是否重复运行 `/release`。
|
|
274
|
+
|
|
275
|
+
如果 package.json 中版本已经是 `{X.Y}.0`:
|
|
276
|
+
- 跳过版本 bump,只创建 tag 和推送。
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 禁止事项
|
|
281
|
+
|
|
282
|
+
- **不得**在二次确认门之前执行任何 git 写操作(commit、tag、push)。
|
|
283
|
+
- **不得**跳过 GSD milestone closeout 直接执行 `scripts/release.sh`。
|
|
284
|
+
- **不得**在存在未解决 blocker 时继续发布(除非用户显式选择 [A] 确认延期)。
|
|
285
|
+
- **不得**将 `NPM_TOKEN` 硬编码到任何脚本或文档中。
|
|
286
|
+
- **不得**绕过 `docs:check:pre-release` 检查。
|
|
287
|
+
- **不得**把 `/release` 文档写成第二套 closeout 或 publish 实现;它必须是 thin orchestrator。
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 文档同步触发条件
|
|
292
|
+
|
|
293
|
+
以下变更会触发本文档需要更新:
|
|
294
|
+
|
|
295
|
+
- GSD closeout 工作流变更(步骤或顺序变化)
|
|
296
|
+
- `scripts/release.sh` 行为变更(参数、交互方式变化)
|
|
297
|
+
- `.github/workflows/publish.yml` 触发条件变化
|
|
298
|
+
- 版本映射规则变化
|
|
299
|
+
- 确认门内容或格式变化
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
*版本: 1.0.0 | 最后更新: 2026-04-22*
|
package/docs/rules/testing.md
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
| 类型 | 路径 |
|
|
18
18
|
|------|------|
|
|
19
19
|
| 常规测试 | `src/**/*.test.ts` |
|
|
20
|
+
| Workflow E2E | `tests/e2e/**/*.test.ts` |
|
|
20
21
|
| 集成测试 | `tests/` 目录(如存在单独集成测试编排) |
|
|
21
22
|
| 基准测试 | `refer/benchmark-quality.test.ts` |
|
|
22
23
|
|
|
@@ -37,6 +38,21 @@ export default defineConfig({
|
|
|
37
38
|
});
|
|
38
39
|
```
|
|
39
40
|
|
|
41
|
+
```typescript
|
|
42
|
+
// vitest.e2e.config.ts
|
|
43
|
+
export default defineConfig({
|
|
44
|
+
test: {
|
|
45
|
+
globals: true,
|
|
46
|
+
environment: 'node',
|
|
47
|
+
include: ['tests/e2e/**/*.test.ts'],
|
|
48
|
+
exclude: ['node_modules', 'dist', 'refer/**/*.test.ts'],
|
|
49
|
+
testTimeout: 10000,
|
|
50
|
+
hookTimeout: 10000,
|
|
51
|
+
pool: 'threads'
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
40
56
|
## 测试要求
|
|
41
57
|
|
|
42
58
|
- 所有新功能必须附带测试
|
|
@@ -44,6 +60,57 @@ export default defineConfig({
|
|
|
44
60
|
- 使用 `describe` 和 `it` 组织测试用例
|
|
45
61
|
- 使用 `beforeEach`/`afterEach` 管理测试状态
|
|
46
62
|
|
|
63
|
+
## 真实场景验证规则(强制)
|
|
64
|
+
|
|
65
|
+
> **适用范围**:本规则适用于 Phase 41 之后的所有新开发及对已有代码的后续修改。
|
|
66
|
+
> **豁免条款**:Phase 41/42 已有实现(截至本规则生效日)不受追溯约束;后续任何修改必须合规。
|
|
67
|
+
> **宪法依据**:→ `AGENTS.md` Section 8.1(真实场景验证阈值)、Section 8.2(豁免条款)
|
|
68
|
+
|
|
69
|
+
> **原则:测试必须通过真实运行验证,拒绝仅依赖单元测试断言的"纸面通过"。**
|
|
70
|
+
|
|
71
|
+
### 什么是真实场景验证
|
|
72
|
+
|
|
73
|
+
| 验证层级 | 定义 | 最低要求 |
|
|
74
|
+
|----------|------|----------|
|
|
75
|
+
| **真实环境** | 在未初始化/干净环境中运行 | 全新 `mktemp -d` 或隔离容器 |
|
|
76
|
+
| **真实数据** | 使用实际生产数据或等价数据集 | 不得全用 mock/fixture 替代 |
|
|
77
|
+
| **真实调用** | 通过实际 SDK/CLI/协议连接 | 不得仅断言函数返回值 |
|
|
78
|
+
| **真实输出** | 捕获并校验实际 stdout/stderr/文件 | 不得仅断言内部状态 |
|
|
79
|
+
|
|
80
|
+
### 强制规则
|
|
81
|
+
|
|
82
|
+
1. **每个测试必须有证据**
|
|
83
|
+
- 测试通过 ≠ 任务完成
|
|
84
|
+
- 必须附加:真实运行截图、日志片段、或可复制验证的命令
|
|
85
|
+
- 证据格式:`[证据] path:line` 或 `[证据] 命令输出`
|
|
86
|
+
|
|
87
|
+
2. **禁止以下"伪验证"**
|
|
88
|
+
- ❌ 仅 mock 依赖后断言函数返回值
|
|
89
|
+
- ❌ 仅运行 `toEqual` 断言但没有真实端到端触发
|
|
90
|
+
- ❌ 在已污染环境中运行并声称"通过"
|
|
91
|
+
- ❌ 没有失败场景验证(只证明成功路径)
|
|
92
|
+
|
|
93
|
+
3. **失败场景必须验证**
|
|
94
|
+
- 每个修复/功能必须至少模拟 1 个失败场景
|
|
95
|
+
- 证据:故意构造错误输入,确认系统按预期失败
|
|
96
|
+
|
|
97
|
+
4. **可信度自评**
|
|
98
|
+
- 每次交付前必须输出:
|
|
99
|
+
```markdown
|
|
100
|
+
## 可信度自评
|
|
101
|
+
- **确定信息**(基于代码/文档验证):...
|
|
102
|
+
- **推测信息**(基于模式匹配):...
|
|
103
|
+
- **需验证信息**(未确认/无法确认):...
|
|
104
|
+
- **风险标记**:...
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 快速检查清单
|
|
108
|
+
|
|
109
|
+
- [ ] 是否在干净环境中运行过?
|
|
110
|
+
- [ ] 是否使用真实数据/连接验证过?
|
|
111
|
+
- [ ] 是否有失败场景的验证证据?
|
|
112
|
+
- [ ] 是否记录了"需验证信息"和风险标记?
|
|
113
|
+
|
|
47
114
|
## 基准测试
|
|
48
115
|
|
|
49
116
|
- 基准查询集:`refer/benchmark-quality.ts`(30 条预定义查询)
|
|
@@ -59,6 +126,9 @@ export default defineConfig({
|
|
|
59
126
|
npm test
|
|
60
127
|
npx vitest run
|
|
61
128
|
|
|
129
|
+
# 运行 workflow E2E 护栏
|
|
130
|
+
npm run test:e2e
|
|
131
|
+
|
|
62
132
|
# 运行特定测试文件
|
|
63
133
|
npx vitest run src/orchestrator/__tests__/confidence.test.ts
|
|
64
134
|
|
package/docs/rules/validation.md
CHANGED
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
| 改实现代码 | `npm run typecheck` → `npm run lint` → `npm test` | 从最小相关验证扩到基础回归 |
|
|
13
13
|
| 改发布/打包边界 | `npm run docs:check:pre-release` → `npm run build` → `npm run validate-pack` | 先锁版本/发布契约,再确认 shipped artifact 仍成立 |
|
|
14
14
|
|
|
15
|
+
## Validation quick truth
|
|
16
|
+
|
|
17
|
+
- 文档/入口变更先跑 `npm run docs:check`。
|
|
18
|
+
- 统一 docs/AI guardrail 入口:`node dist/cli/index.js ci check-docs-sync`(产品命令等价于 `mycodemap ci check-docs-sync`)。
|
|
19
|
+
- repo-local rules 预检:`python3 scripts/validate-rules.py code --report-only` 只报告,不阻断。
|
|
20
|
+
- CI / PR 超窗、fallback 或 false-positive 漂移时,`warn-only / fallback` 不是 hard gate success。
|
|
21
|
+
|
|
15
22
|
## Repo-local rule validator
|
|
16
23
|
|
|
17
24
|
### `validate-rules.py` exit-code 表
|
|
@@ -39,18 +46,19 @@
|
|
|
39
46
|
| 1 | `npm run docs:check` | 文档护栏 |
|
|
40
47
|
| 2 | `npm run typecheck` | 类型检查 |
|
|
41
48
|
| 3 | `npm run lint` | lint |
|
|
42
|
-
| 4 | `npm test` |
|
|
43
|
-
| 5 | `npm run
|
|
44
|
-
| 6 | `
|
|
45
|
-
| 7 | `node
|
|
46
|
-
| 8 | `node dist/cli/index.js
|
|
47
|
-
| 9 | `node dist/cli/index.js ci
|
|
49
|
+
| 4 | `npm test` | 默认 `src/**/*.test.ts` 回归 |
|
|
50
|
+
| 5 | `npm run test:e2e` | `tests/e2e/**/*.test.ts` workflow E2E 护栏 |
|
|
51
|
+
| 6 | `npm run build` | 构建验证 |
|
|
52
|
+
| 7 | `node scripts/calibrate-contract-gate.mjs --max-changed-files 10 --max-false-positive-rate 0.10` | 设计 contract 校准;`changed files <= 10` 才可能进入 hard gate |
|
|
53
|
+
| 8 | `node dist/cli/index.js check --contract mycodemap.design.md --against src --base origin/main --annotation-format github` | PR 注解与 contract gate |
|
|
54
|
+
| 9 | `node dist/cli/index.js ci check-docs-sync` | 统一 docs/AI guardrail |
|
|
55
|
+
| 10 | `node dist/cli/index.js ci assess-risk --threshold=0.7` | 风险评估 |
|
|
48
56
|
|
|
49
57
|
> PR 超窗、`diff-scope-fallback` 或 `false-positive rate >10%` 时,workflow 必须明确标为 `warn-only / fallback`。
|
|
50
58
|
|
|
51
59
|
## 需要特别补跑的场景
|
|
52
60
|
|
|
53
|
-
- 若改动涉及
|
|
61
|
+
- 若改动涉及 `.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 脚本同步。
|
|
54
62
|
- 若改动涉及 `check` / `ci assess-risk` / `history` / `analyze --include-git-history` 的统一 risk truth,至少补跑 `node dist/cli/index.js history --symbol createCheckCommand`、`node scripts/report-high-risk-files.mjs --top 3`、`npm run build`。
|
|
55
63
|
- 若改动涉及产品定位、输出契约、共享文件发现规则或 `Server Layer` / `mycodemap server` 边界,确认 README、AI 文档、架构文档和 guardrail 脚本使用同一套措辞。
|
|
56
64
|
|
|
@@ -96,6 +104,7 @@ node scripts/report-high-risk-files.mjs --top 3
|
|
|
96
104
|
npm run typecheck
|
|
97
105
|
npm run lint
|
|
98
106
|
npm test
|
|
107
|
+
npm run test:e2e
|
|
99
108
|
npm run build
|
|
100
109
|
npm run validate-pack
|
|
101
110
|
```
|