soloforge 1.1.40 → 1.1.42

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 (156) hide show
  1. package/README.md +57 -0
  2. package/dist/adapters/shared/workflow_template.js +1 -1
  3. package/dist/bin/commands/check_write.d.ts +1 -1
  4. package/dist/bin/commands/check_write.d.ts.map +1 -1
  5. package/dist/bin/commands/check_write.js +13 -34
  6. package/dist/bin/commands/check_write.js.map +1 -1
  7. package/dist/bin/commands/modify.d.ts +2 -1
  8. package/dist/bin/commands/modify.d.ts.map +1 -1
  9. package/dist/bin/commands/modify.js +29 -15
  10. package/dist/bin/commands/modify.js.map +1 -1
  11. package/dist/bin/commands/review.d.ts +3 -2
  12. package/dist/bin/commands/review.d.ts.map +1 -1
  13. package/dist/bin/commands/review.js +179 -46
  14. package/dist/bin/commands/review.js.map +1 -1
  15. package/dist/bin/soloforge.js +0 -18
  16. package/dist/bin/soloforge.js.map +1 -1
  17. package/dist/engine/context_engine/companion_injector.d.ts +16 -3
  18. package/dist/engine/context_engine/companion_injector.d.ts.map +1 -1
  19. package/dist/engine/context_engine/companion_injector.js +228 -35
  20. package/dist/engine/context_engine/companion_injector.js.map +1 -1
  21. package/dist/engine/contracts/artifact_contract_registry.d.ts +1 -43
  22. package/dist/engine/contracts/artifact_contract_registry.d.ts.map +1 -1
  23. package/dist/engine/contracts/artifact_contract_registry.js +24 -100
  24. package/dist/engine/contracts/artifact_contract_registry.js.map +1 -1
  25. package/dist/engine/contracts/artifact_process_rules.d.ts.map +1 -1
  26. package/dist/engine/contracts/artifact_process_rules.js +0 -12
  27. package/dist/engine/contracts/artifact_process_rules.js.map +1 -1
  28. package/dist/engine/contracts/artifact_schema_registry.d.ts.map +1 -1
  29. package/dist/engine/contracts/artifact_schema_registry.js +0 -24
  30. package/dist/engine/contracts/artifact_schema_registry.js.map +1 -1
  31. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts +29 -0
  32. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
  33. package/dist/engine/contracts/tool_invocation_contract_registry.js +32 -21
  34. package/dist/engine/contracts/tool_invocation_contract_registry.js.map +1 -1
  35. package/dist/engine/core/paths.d.ts +0 -2
  36. package/dist/engine/core/paths.d.ts.map +1 -1
  37. package/dist/engine/core/paths.js +0 -2
  38. package/dist/engine/core/paths.js.map +1 -1
  39. package/dist/engine/knowledge/knowledge_writer.js +1 -1
  40. package/dist/engine/pipeline/artifact_aliases.d.ts +56 -3
  41. package/dist/engine/pipeline/artifact_aliases.d.ts.map +1 -1
  42. package/dist/engine/pipeline/artifact_aliases.js +377 -24
  43. package/dist/engine/pipeline/artifact_aliases.js.map +1 -1
  44. package/dist/engine/pipeline/artifact_resolver.d.ts +82 -0
  45. package/dist/engine/pipeline/artifact_resolver.d.ts.map +1 -0
  46. package/dist/engine/pipeline/artifact_resolver.js +458 -0
  47. package/dist/engine/pipeline/artifact_resolver.js.map +1 -0
  48. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts +2 -2
  49. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts.map +1 -1
  50. package/dist/engine/pipeline/intent_expander/knowledge_resolution.js.map +1 -1
  51. package/dist/engine/pipeline/orchestrate_single_artifact.d.ts +185 -0
  52. package/dist/engine/pipeline/orchestrate_single_artifact.d.ts.map +1 -0
  53. package/dist/engine/pipeline/orchestrate_single_artifact.js +772 -0
  54. package/dist/engine/pipeline/orchestrate_single_artifact.js.map +1 -0
  55. package/dist/engine/pipeline/scope_resolver.js +1 -1
  56. package/dist/engine/pipeline/scope_resolver.js.map +1 -1
  57. package/dist/engine/pipeline/state_machine/certainty_gate.d.ts.map +1 -1
  58. package/dist/engine/pipeline/state_machine/certainty_gate.js +122 -9
  59. package/dist/engine/pipeline/state_machine/certainty_gate.js.map +1 -1
  60. package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts +1 -13
  61. package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts.map +1 -1
  62. package/dist/engine/pipeline/state_machine/pipeline_state_machine.js +65 -73
  63. package/dist/engine/pipeline/state_machine/pipeline_state_machine.js.map +1 -1
  64. package/dist/engine/pipeline/state_machine/sf_command_parser.d.ts.map +1 -1
  65. package/dist/engine/pipeline/state_machine/sf_command_parser.js +24 -19
  66. package/dist/engine/pipeline/state_machine/sf_command_parser.js.map +1 -1
  67. package/dist/engine/pipeline/state_machine/stage_command_registry.d.ts.map +1 -1
  68. package/dist/engine/pipeline/state_machine/stage_command_registry.js +7 -0
  69. package/dist/engine/pipeline/state_machine/stage_command_registry.js.map +1 -1
  70. package/dist/engine/pipeline/state_machine/stage_executor.d.ts.map +1 -1
  71. package/dist/engine/pipeline/state_machine/stage_executor.js +5 -11
  72. package/dist/engine/pipeline/state_machine/stage_executor.js.map +1 -1
  73. package/dist/engine/pipeline/state_machine/static_route_table.d.ts +2 -0
  74. package/dist/engine/pipeline/state_machine/static_route_table.d.ts.map +1 -1
  75. package/dist/engine/pipeline/state_machine/static_route_table.js +2 -0
  76. package/dist/engine/pipeline/state_machine/static_route_table.js.map +1 -1
  77. package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts +25 -0
  78. package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts.map +1 -1
  79. package/dist/engine/pipeline/state_machine/uncertainty_bridge.js +18 -0
  80. package/dist/engine/pipeline/state_machine/uncertainty_bridge.js.map +1 -1
  81. package/dist/engine/pipeline/target_classifier.d.ts +48 -0
  82. package/dist/engine/pipeline/target_classifier.d.ts.map +1 -0
  83. package/dist/engine/pipeline/target_classifier.js +129 -0
  84. package/dist/engine/pipeline/target_classifier.js.map +1 -0
  85. package/dist/engine/pipeline/task_planner.js +1 -1
  86. package/dist/engine/pipeline/task_planner.js.map +1 -1
  87. package/dist/engine/release/foundation_scenario_registry.js +1 -1
  88. package/dist/engine/release/foundation_scenario_registry.js.map +1 -1
  89. package/dist/engine/templates/asset_manifest.d.ts.map +1 -1
  90. package/dist/engine/templates/asset_manifest.js +1 -0
  91. package/dist/engine/templates/asset_manifest.js.map +1 -1
  92. package/dist/engine/templates/explicit_asset_registry/rules_shared.d.ts.map +1 -1
  93. package/dist/engine/templates/explicit_asset_registry/rules_shared.js +22 -0
  94. package/dist/engine/templates/explicit_asset_registry/rules_shared.js.map +1 -1
  95. package/dist/server/tools/cep_assessment.d.ts +6 -0
  96. package/dist/server/tools/cep_assessment.d.ts.map +1 -1
  97. package/dist/server/tools/cep_assessment.js +23 -0
  98. package/dist/server/tools/cep_assessment.js.map +1 -1
  99. package/dist/server/tools/middleware.d.ts.map +1 -1
  100. package/dist/server/tools/middleware.js +78 -1
  101. package/dist/server/tools/middleware.js.map +1 -1
  102. package/dist/server/tools/tool_groups/product_operations.d.ts +5 -3
  103. package/dist/server/tools/tool_groups/product_operations.d.ts.map +1 -1
  104. package/dist/server/tools/tool_groups/product_operations.js +5 -105
  105. package/dist/server/tools/tool_groups/product_operations.js.map +1 -1
  106. package/dist/server/tools/tool_groups/state_machine.d.ts +34 -3
  107. package/dist/server/tools/tool_groups/state_machine.d.ts.map +1 -1
  108. package/dist/server/tools/tool_groups/state_machine.js +454 -236
  109. package/dist/server/tools/tool_groups/state_machine.js.map +1 -1
  110. package/dist/server/tools/tool_names.d.ts +0 -3
  111. package/dist/server/tools/tool_names.d.ts.map +1 -1
  112. package/dist/server/tools/tool_names.js +1 -4
  113. package/dist/server/tools/tool_names.js.map +1 -1
  114. package/dist/types/state_machine.d.ts +28 -1
  115. package/dist/types/state_machine.d.ts.map +1 -1
  116. package/dist/types/state_machine.js +1 -1
  117. package/dist/types/state_machine.js.map +1 -1
  118. package/package.json +1 -1
  119. package/templates/artifacts/existing-system//344/270/200/351/224/256/345/274/200/345/205/263/351/205/215/347/275/256/346/250/241/347/211/210.json +2 -1
  120. package/templates/artifacts/existing-system//345/216/206/345/217/262/346/225/260/346/215/256/346/270/205/346/264/227/350/204/232/346/234/254/346/250/241/347/211/210.md +1 -0
  121. package/templates/artifacts/existing-system//345/216/206/345/217/262/351/201/227/347/225/231/351/233/267/345/214/272/346/270/205/345/215/225/346/250/241/347/211/210.md +3 -1
  122. package/templates/artifacts/existing-system//345/220/221/345/220/216/345/205/274/345/256/271/346/200/247/345/220/210/350/247/204/346/212/245/345/221/212/346/250/241/347/211/210.md +1 -0
  123. package/templates/artifacts/existing-system//345/242/236/351/207/217/350/276/271/347/225/214/347/225/214/345/256/232/346/226/207/346/241/243/346/250/241/347/211/210.md +1 -0
  124. package/templates/artifacts/existing-system//346/224/271/351/200/240/345/275/261/345/223/215/350/214/203/345/233/264/350/257/204/344/274/260/346/250/241/347/211/210.md +1 -0
  125. package/templates/artifacts/existing-system//346/225/260/346/215/256/350/241/200/347/274/230/345/233/276/346/250/241/347/211/210.md +3 -2
  126. package/templates/artifacts/existing-system//346/226/260/350/200/201/351/200/273/350/276/221/346/257/224/345/257/271/346/227/245/345/277/227/346/250/241/347/211/210.md +3 -1
  127. package/templates/artifacts/existing-system//347/264/247/346/200/245/345/233/236/346/273/232/346/211/213/345/206/214/346/250/241/347/211/210.md +3 -2
  128. package/templates/artifacts/existing-system//351/232/224/347/246/273/351/200/202/351/205/215/345/231/250/346/226/271/346/241/210/346/250/241/347/211/210.md +1 -0
  129. package/templates/artifacts/shared/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243/346/250/241/347/211/210.md +3 -3
  130. package/templates/artifacts/shared//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212/346/250/241/347/211/210.md +1 -1
  131. package/templates/artifacts/shared//345/210/207/347/211/207/350/256/241/345/210/222/346/250/241/347/211/210.md +6 -2
  132. package/templates/artifacts/shared//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +5 -3
  133. package/templates/artifacts/shared//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +2 -2
  134. package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +2 -2
  135. package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243/346/250/241/347/211/210.md +2 -2
  136. package/templates/artifacts/shared//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +6 -3
  137. package/templates/artifacts/shared//350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/351/252/214/346/224/266/346/212/245/345/221/212/346/250/241/347/211/210.md +5 -5
  138. package/templates/artifacts/shared//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +3 -3
  139. package/templates/artifacts/shared//351/234/200/346/261/202/345/216/237/345/236/213/350/256/276/350/256/241/345/256/236/347/216/260/350/277/275/350/270/252/347/237/251/351/230/265/346/250/241/347/211/210.md +7 -6
  140. package/templates/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +1 -1
  141. package/templates/gates/shared/gate-/344/273/243/347/240/201/345/256/241/346/237/245.yaml +7 -0
  142. package/templates/gates/shared/gate-/345/210/207/347/211/207/345/256/241/346/237/245.yaml +14 -2
  143. package/templates/gates/shared/gate-/347/274/226/347/240/201/345/256/236/347/216/260.yaml +12 -0
  144. package/templates/internal/patterns/Hook/345/261/202/344/272/247/347/211/251/347/273/223/346/236/204/346/240/241/351/252/214.md +1 -1
  145. package/templates/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +2 -2
  146. package/templates/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +2 -2
  147. package/templates/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +2 -2
  148. package/templates/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +1 -1
  149. package/templates/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +1 -2
  150. package/templates/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +2 -2
  151. package/templates/procedures//346/272/220/347/240/201/345/216/237/345/236/213/344/272/244/344/273/230/346/265/201/347/250/213.md +2 -2
  152. package/templates/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +2 -2
  153. package/templates/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +2 -2
  154. package/templates/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +2 -2
  155. package/templates/rules/shared//344/273/243/347/240/201/345/217/257/347/273/264/346/212/244/346/200/247/344/270/216/345/217/257/350/247/202/346/265/213/346/200/247/345/256/241/346/237/245.md +21 -3
  156. package/templates/rules/shared//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/345/245/221/347/272/246/350/247/204/345/210/231.md +122 -0
package/README.md CHANGED
@@ -364,6 +364,63 @@ SoloForge 在运行时执行以下强制护栏:
364
364
 
365
365
  例如让 AI “从 `/tmp/prototype.zip` 抓取原型说明”,SoloForge 会把它作为只读外部材料处理,要求产物写入 `.soloforge/output/**`,而不是修改项目源码。
366
366
 
367
+ ## 产物目录规范
368
+
369
+ SoloForge 采用固定的 `docs/` 目录结构管理项目产物。每个产物有明确的存放位置和上下游依赖,系统直接按固定路径查找,无需猜测。
370
+
371
+ ### 目录结构
372
+
373
+ ```text
374
+ docs/
375
+ ├── context/ # 输入材料
376
+ │ ├── 需求文档.md ← requirement_analysis
377
+ │ └── 原型源码包/ ← source_code_package(含各端 zip)
378
+ ├── analyze/ # 分析产物
379
+ │ └── 01-原型说明.md ← prototype_spec
380
+ ├── architecture/ # 设计产物
381
+ │ ├── 00-架构决策记录.md ← tech_decision_record
382
+ │ ├── 01-架构设计文档.md ← design_doc
383
+ │ ├── 02-数据库设计文档.md ← database_design
384
+ │ ├── 03-API接口规格文档.md ← api_spec
385
+ │ ├── 04-开发切片计划.md ← task_plan
386
+ │ └── 05-详细设计文档.md ← detailed_design(可选)
387
+ ├── traceability/ # 追踪产物
388
+ │ └── 01-需求原型设计实现追踪矩阵.md ← traceability_matrix
389
+ ├── api/ # API 定义
390
+ │ └── openapi.yaml
391
+ ├── review/ # 审查报告
392
+ │ └── 99-设计一致性验收报告.md
393
+ └── db/ # 数据库资产
394
+ └── migration/
395
+ ```
396
+
397
+ ### 节点依赖表
398
+
399
+ 每个产物的固定路径、输入依赖和触发命令:
400
+
401
+ | 产物(kind) | 固定路径 | 输入(consumes) | 触发命令示例 |
402
+ |---|---|---|---|
403
+ | 需求分析 `requirement_analysis` | `docs/context/需求文档.md` | — | `[sf]审查需求` |
404
+ | 原型源码包 `source_code_package` | `docs/context/原型源码包/` | — | 输入材料,非产出 |
405
+ | 原型说明 `prototype_spec` | `docs/analyze/*/01-原型说明.md` | 需求分析 + 原型源码包 | `[sf]审查原型说明` |
406
+ | 架构决策 `tech_decision_record` | `docs/architecture/00-架构决策记录.md` | — | `[sf]审查决策记录` |
407
+ | 架构设计 `design_doc` | `docs/architecture/01-架构设计文档.md` | 需求分析 + 原型说明 + 决策记录 | `[sf]审查架构设计` |
408
+ | 数据库设计 `database_design` | `docs/architecture/02-数据库设计文档.md` | 决策记录 + 架构设计 | `[sf]审查数据库设计` |
409
+ | 接口设计 `api_spec` | `docs/architecture/03-API接口规格文档.md` | 决策记录 + 架构设计 + 数据库设计 | `[sf]审查接口设计` |
410
+ | 切片计划 `task_plan` | `docs/architecture/04-开发切片计划.md` | 数据库设计 + 接口设计 | `[sf]审查切片计划` |
411
+ | 详细设计 `detailed_design` | `docs/architecture/05-详细设计文档.md` | 架构设计 + 数据库设计 | `[sf]审查详细设计` |
412
+ | 追踪矩阵 `traceability_matrix` | `docs/traceability/01-需求原型设计实现追踪矩阵.md` | 需求 + 原型 + 架构 + 数据库 + 接口 + 切片 | `[sf]审查追踪矩阵` |
413
+
414
+ ### 新项目初始化
415
+
416
+ 按上述结构创建目录和文件即可:
417
+
418
+ ```bash
419
+ mkdir -p docs/context docs/analyze docs/architecture docs/traceability docs/api docs/review docs/db/migration
420
+ ```
421
+
422
+ SoloForge 在执行 `[sf]审查` 命令时,会按固定路径查找上游产物。如果某个产物缺失,系统会返回 `missing_upstream` 状态并提示需要先产出的产物及其模板。
423
+
367
424
  ## Cursor 说明
368
425
 
369
426
  Cursor 暂无内置适配器。可以先生成 `.mcp.json`,再手动复制到 `.cursor/mcp.json`:
@@ -13,7 +13,7 @@ import { getWorkflowRuleMechanismIds as _getWorkflowRuleMechanismIds } from "../
13
13
  // 从 engine 层 re-export 以保持向后兼容
14
14
  export { generateWorkflowRules, getWorkflowRuleMechanismIds, EMBEDDED_CHECKSUM } from "../../engine/templates/workflow_rule_generator.js";
15
15
  /** 当前嵌入的权威规则校验和 — 由 `npm run update-workflow-checksum` 更新。 */
16
- const EMBEDDED_CHECKSUM = "4bdfdba3de678fbf";
16
+ const EMBEDDED_CHECKSUM = "49fd996b2af722a2";
17
17
  /**
18
18
  * 计算所有权威规则资产的第一行非注释内容组合的 SHA256 校验和。
19
19
  * 权威规则内容变化时校验和必然变化。
@@ -21,7 +21,7 @@ export declare function hasDesignArtifacts(projectPath: string): boolean;
21
21
  *
22
22
  * 匹配策略:
23
23
  * 1. 路径中包含 ARTIFACT_ALIASES 的 defaultName 关键词
24
- * 2. .soloforge/output/ 路径下的 .md 文件
24
+ * 2. docs/ 路径下的 .md 文件
25
25
  */
26
26
  export declare function inferArtifactKindFromPath(relativeFilePath: string): ArtifactKind | undefined;
27
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"check_write.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAQ,MAAM,YAAY,CAAC;AAUtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAsB,aAAa,kBAqLlC;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4C7B;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAkBtE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQnD;AAED,wBAAsB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0BhI;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAgB/D;AAID;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAmB5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB;IAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA2C/D"}
1
+ {"version":3,"file":"check_write.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAQ,MAAM,YAAY,CAAC;AAUtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAsB,aAAa,kBAqLlC;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4C7B;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAkBtE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQnD;AAED,wBAAsB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0BhI;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAgB/D;AAID;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQ5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB;IAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAiC/D"}
@@ -310,7 +310,7 @@ export function hasDesignArtifacts(projectPath) {
310
310
  *
311
311
  * 匹配策略:
312
312
  * 1. 路径中包含 ARTIFACT_ALIASES 的 defaultName 关键词
313
- * 2. .soloforge/output/ 路径下的 .md 文件
313
+ * 2. docs/ 路径下的 .md 文件
314
314
  */
315
315
  export function inferArtifactKindFromPath(relativeFilePath) {
316
316
  // 策略 1:通过 ARTIFACT_ALIASES 的 defaultName 关键词匹配
@@ -319,17 +319,6 @@ export function inferArtifactKindFromPath(relativeFilePath) {
319
319
  return alias.kind;
320
320
  }
321
321
  }
322
- // 策略 2:.soloforge/output/ 路径下的 .md 文件,从文件名提取 kind
323
- const outputMatch = relativeFilePath.match(/\.soloforge\/output\/\d+-(.+)\.md$/);
324
- if (outputMatch) {
325
- const slug = outputMatch[1];
326
- for (const alias of ARTIFACT_ALIASES) {
327
- const nameSlug = alias.defaultName.replace(/\s+/g, "-").toLowerCase();
328
- if (slug.includes(nameSlug) || nameSlug.includes(slug)) {
329
- return alias.kind;
330
- }
331
- }
332
- }
333
322
  return undefined;
334
323
  }
335
324
  /**
@@ -353,35 +342,25 @@ export function evaluateArtifactStructure(relativeFilePath, content, projectPath
353
342
  if (!kind || !hasArtifactSchema(kind))
354
343
  return { severity: "pass" };
355
344
  // ── 增强检测:遗漏扫描(空洞章节 + 占位符 + 空表格) ──
345
+ // 写入门禁中文档类产物允许增量完善,遗漏扫描结果降为 warning。
346
+ // hard_fail 行为仅在 sf_gate_check(显式质量门禁)时生效。
356
347
  const omissionResult = scanArtifactForOmissions(kind, content);
357
- if (!omissionResult.passed) {
358
- // hard_fail blocked
359
- const hardFails = omissionResult.findings.filter((f) => f.severity === "hard_fail");
360
- const reasons = hardFails.map((f) => f.message).join(";");
348
+ if (omissionResult.findings.length > 0) {
349
+ const reasons = omissionResult.findings.map((f) => f.message).join(";");
361
350
  return {
362
- severity: "blocked",
363
- reason: `产物遗漏扫描失败(${kind}):${reasons}`,
351
+ severity: "warning",
352
+ reason: `产物遗漏扫描发现(${kind}):${reasons}`,
364
353
  };
365
354
  }
366
355
  // ── 基础检测:verifyOutputAgainstSchema(字段级/附属产物级) ──
367
356
  const result = verifyOutputAgainstSchema(kind, content, projectPath);
368
- if (result.passed) {
369
- // 基础和增强都通过 → 检查是否有 warning 级 findings
370
- const warnings = omissionResult.findings.filter((f) => f.severity === "warning");
371
- if (warnings.length > 0) {
372
- const reasons = warnings.map((f) => f.message).join(";");
373
- return {
374
- severity: "warning",
375
- reason: `产物结构建议(${kind}):${reasons}`,
376
- };
377
- }
378
- return { severity: "pass" };
357
+ if (!result.passed) {
358
+ return {
359
+ severity: "warning",
360
+ reason: `产物结构建议(${kind}):${result.messages.join("; ")}`,
361
+ };
379
362
  }
380
- // 基础检测未通过(字段缺失等) warning
381
- return {
382
- severity: "warning",
383
- reason: `产物结构建议(${kind}):${result.messages.join("; ")}`,
384
- };
363
+ return { severity: "pass" };
385
364
  }
386
365
  /**
387
366
  * D22: 检查写入文件是否在当前切片范围内。
@@ -1 +1 @@
1
- {"version":3,"file":"check_write.js","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check_write.js","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,SAAS,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,iDAAiD;QACjD,IAAI,SAA6B,CAAC;QAClC,CAAC;YACC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,KAAK;gBAAE,SAAS,GAAG,KAAK,CAAC;QAC/B,CAAC;QAED,eAAe;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5B,CAAC;QAED,gGAAgG;QAChG,MAAM,MAAM,GAAG,aAAa,CAAM,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;QACjC,CAAC;QACD,IAAI,QAAgB,CAAC;QACrB,IAAI,OAAe,CAAC;QAEpB,CAAC;YACC,oEAAoE;YACpE,yDAAyD;YACzD,2CAA2C;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;YAC1D,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/C,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,OAAO;QACP,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAExC,QAAQ;QACR,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACrG,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,sBAAsB,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YACrG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAC3E,CAAC,CAAC,iBAAiB,CAAC;QACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAElG,6CAA6C;QAC7C,IAAI,iBAAiB,GAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;gBAC5C,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrE,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;gBAC5B,0BAA0B;YAC5B,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,2CAA2C,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,IAAI,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAE3G,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG;gBACjB,kBAAkB,EAAE;oBAClB,aAAa,EAAE,YAAY;oBAC3B,kBAAkB,EAAE,MAAM;oBAC1B,wBAAwB,EAAE,MAAM,CAAC,MAAM,IAAI,WAAW;iBACvD;aACF,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,2CAA2C;QAC3C,CAAC;YACC,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;gBAC3D,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;oBACnB,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC;oBACxC,IAAI,aAAa,EAAE,CAAC;wBAClB,2BAA2B;wBAC3B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;+BAC/C,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;+BAClC,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBACxC,IAAI,YAAY,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC9E,cAAc,CACZ,UAAU,aAAa,CAAC,aAAa,WAAW;kCAC9C,SAAS,CAAC,GAAG,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;kCAClD,yCAAyC,CAC5C,CAAC;4BACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAClB,CAAC;wBAED,kCAAkC;wBAClC,IAAI,YAAY,IAAI,aAAa,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;4BAC9D,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;4BAC3F,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gCACtC,aAAa,CAAC,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;4BAC/C,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,2BAA2B;oBAC3B,cAAc,CACZ,YAAY,WAAW,CAAC,KAAK,CAAC,OAAO,aAAa;0BAChD,qDAAqD,CACxD,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,yCAAyC;QACzC,CAAC;YACC,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YACpF,IAAI,eAAe,EAAE,CAAC;gBACpB,cAAc,CAAC,eAAe,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,wBAAwB,GAAG,MAAM,+BAA+B,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QACtG,IAAI,wBAAwB,EAAE,CAAC;YAC7B,cAAc,CAAC,wBAAwB,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,aAAa;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,cAAc,GAAG,yBAAyB,CAAC,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YACzF,IAAI,cAAc,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC1C,cAAc,CAAC,cAAc,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,cAAc,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC1C,aAAa,CAAC,cAAc,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpF,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;YACtE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,cAAc,CACZ,aAAa,SAAS,CAAC,MAAM,UAAU;oBACvC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClG,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,aAAa,CACX,WAAW,QAAQ,CAAC,MAAM,SAAS;oBACnC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;IACxB,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,SAAS,CAAC,qBAAqB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,gBAAwB;IAExB,0BAA0B;IAC1B,MAAM,WAAW,GAAG,0BAA0B,CAAC,gBAAgB,CAAC;WAC3D,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAEhD,oCAAoC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,WAAW,EAAE,eAAe,CAAC;QAC/C,IAAI,SAAS,EAAE,CAAC;YACd,8CAA8C;YAC9C,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1D,IACE,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;mBACjC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACpE,CAAC;gBACD,OAAO,8BAA8B,SAAS,CAAC,SAAS,8BAA8B;sBAClF,kDAAkD,CAAC;YACzD,CAAC;YACD,qDAAqD;YACrD,IACE,SAAS,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;mBACpC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACxE,CAAC;gBACD,OAAO,6BAA6B,SAAS,CAAC,SAAS,YAAY,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;sBACpH,+BAA+B,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sCAAsC;QACtC,OAAO,YAAY,YAAY,CAAC,CAAC,CAAC,cAAc;cAC5C,qDAAqD,CAAC;IAC5D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,gBAAwB;IACjE,IAAI,2DAA2D,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IACrG,IAAI,6CAA6C,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,OAAO,gHAAgH,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACjJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,gBAAwB;IAC3D,MAAM,cAAc,GAAG,+BAA+B,EAAE,CAAC;IACzD,IAAI;QACF,cAAc,CAAC,eAAe;QAC9B,cAAc,CAAC,qBAAqB;QACpC,cAAc,CAAC,iBAAiB;QAChC,cAAc,CAAC,YAAY;QAC3B,cAAc,CAAC,+BAA+B;QAC9C,cAAc,CAAC,UAAU;QACzB,cAAc,CAAC,kBAAkB;QACjC,cAAc,CAAC,mBAAmB;QAClC,cAAc,CAAC,OAAO;KACvB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACnD,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9C,sCAAsC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC7D,yCAAyC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAChE,2EAA2E,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QAClC,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,kBAAkB,EAAE,MAAM;YAC1B,wBAAwB,EAAE,MAAM;SACjC;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,WAAmB,EAAE,gBAAwB;IACjG,2CAA2C;IAC3C,uCAAuC;IACvC,IAAI,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9G,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAEhD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,WAAW,EAAE,oBAAoB,CAAC;IAErD,IAAI,WAAW,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3F,OAAO,sBAAsB,WAAW,CAAC,MAAM,uSAAuS,CAAC;IACzV,CAAC;IACD,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QACpD,OAAO,wIAAwI,CAAC;IAClJ,CAAC;IACD,IAAI,WAAW,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,OAAO,wIAAwI,CAAC;IAClJ,CAAC;IACD,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;QAC/D,OAAO,YAAY,UAAU,CAAC,MAAM,iJAAiJ,CAAC;IACxL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,cAAc,GAAG,+BAA+B,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG;QACjB,cAAc,CAAC,eAAe;QAC9B,cAAc,CAAC,qBAAqB;QACpC,cAAc,CAAC,iBAAiB;QAChC,cAAc,CAAC,YAAY;QAC3B,cAAc,CAAC,+BAA+B;QAC9C,cAAc,CAAC,UAAU;QACzB,cAAc,CAAC,kBAAkB;QACjC,cAAc,CAAC,mBAAmB;QAClC,cAAc,CAAC,OAAO;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;QACpD,GAAG,cAAc,CAAC,SAAS;KAC5B,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IACxD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,mBAAmB;AAEnB;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,gBAAwB;IAChE,+CAA+C;IAC/C,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,gBAAwB,EACxB,OAAe,EACf,WAAmB;IAEnB,gBAAgB;IAChB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnE,6BAA6B;IAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEtD,MAAM,IAAI,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnE,oCAAoC;IACpC,qCAAqC;IACrC,2CAA2C;IAC3C,MAAM,cAAc,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE/D,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,YAAY,IAAI,KAAK,OAAO,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACrE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,UAAU,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACxD,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAYD;;;;;GAKG;AACH,KAAK,UAAU,mBAAmB,CAChC,cAAuF,EACvF,gBAAwB,EACxB,WAAmB;IAEnB,kCAAkC;IAClC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACxF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,iBAAiB;YACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,gBAAgB,GAAG,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE/C,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAED,iCAAiC;QACjC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CACvC,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAChF,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,YAAY;YACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAAa,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAED,UAAU;QACV,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE;YAC9C,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9D,OAAO,gBAAgB,KAAK,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,iBAAiB,gBAAgB,aAAa,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,EAAE,IAAI,SAAS,QAAQ;sBAC7G,SAAS,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG;sBAClF,4BAA4B;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,UAAU;IACZ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * soloforge modify <产物路径>
3
3
  *
4
- * 脱离管线修改产物。读取 stdin 作为新内容。
4
+ * 场景 C CLI 入口:委托共享内核完成四层编排修改。
5
+ * 读取 stdin 作为新内容,应用 execute 规则约束。
5
6
  */
6
7
  export declare function cmdModify(): Promise<void>;
7
8
  //# sourceMappingURL=modify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modify.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA8D/C"}
1
+ {"version":3,"file":"modify.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA6E/C"}
@@ -5,7 +5,8 @@ import { resolveProjectPath, args } from "../args.js";
5
5
  /**
6
6
  * soloforge modify <产物路径>
7
7
  *
8
- * 脱离管线修改产物。读取 stdin 作为新内容。
8
+ * 场景 C CLI 入口:委托共享内核完成四层编排修改。
9
+ * 读取 stdin 作为新内容,应用 execute 规则约束。
9
10
  */
10
11
  export async function cmdModify() {
11
12
  debug("CLI", "执行 cmdModify");
@@ -32,22 +33,29 @@ export async function cmdModify() {
32
33
  content = await readStdin();
33
34
  }
34
35
  try {
35
- const { parseCompanionRules } = await import("../../engine/context_engine/companion_injector.js");
36
- // 解析 frontmatter 获取 execute 规则
37
- const original = fs.readFileSync(productPath, "utf-8");
38
- const fmMatch = original.match(/^---\n([\s\S]*?)\n---/);
39
- const appliedRules = [];
40
- if (fmMatch) {
41
- const fm = fmMatch[1];
42
- const rulesField = fm.match(/companion_rules:\s*\[([^\]]*)\]/);
43
- if (rulesField) {
44
- const rawRules = rulesField[1].split(",").map((s) => s.trim().replace(/['"]/g, ""));
45
- const rules = parseCompanionRules(rawRules);
46
- appliedRules.push(...rules.filter((r) => r.usage === "execute").map((r) => r.fileName));
47
- }
36
+ const { orchestrateSingleArtifact } = await import("../../engine/pipeline/orchestrate_single_artifact.js");
37
+ const { inferArtifactKindFromPath, inferArtifactKindFallback } = await import("../../engine/pipeline/artifact_resolver.js");
38
+ // 从文件路径推断 artifact kind(先精确匹配 canonical_path,再兜底关键词匹配)
39
+ const relPath = path.relative(projectPath, productPath);
40
+ const kind = inferArtifactKindFromPath(relPath) ?? inferArtifactKindFallback(relPath);
41
+ // 委托共享内核获取 execute 规则约束(kind 识别失败时跳过编排)
42
+ let appliedRules = [];
43
+ let appliedGates = [];
44
+ let injectionText;
45
+ if (kind) {
46
+ const orchestrateResult = await orchestrateSingleArtifact({
47
+ kind,
48
+ operation: "fix",
49
+ projectPath,
50
+ original_command: `soloforge modify ${relPath}`,
51
+ });
52
+ appliedRules = orchestrateResult.rules?.map((r) => r.name) ?? [];
53
+ appliedGates = orchestrateResult.gates?.map((g) => g.name) ?? [];
54
+ injectionText = orchestrateResult.injection_text;
48
55
  }
56
+ // 写入新内容
49
57
  fs.writeFileSync(productPath, content, "utf-8");
50
- const result = { success: true, applied_rules: appliedRules };
58
+ const result = { success: true, applied_rules: appliedRules, applied_gates: appliedGates, target_kind: kind };
51
59
  if (isJson) {
52
60
  process.stdout.write(JSON.stringify(result, null, 2) + "\n");
53
61
  }
@@ -56,6 +64,12 @@ export async function cmdModify() {
56
64
  if (appliedRules.length > 0) {
57
65
  userInfo(`已应用 execute 规则: ${appliedRules.join(", ")}`);
58
66
  }
67
+ if (appliedGates.length > 0) {
68
+ userInfo(`已应用门禁: ${appliedGates.join(", ")}`);
69
+ }
70
+ if (injectionText) {
71
+ userInfo(`\n规则注入文本已生成,可附在后续 prompt 中指导验证`);
72
+ }
59
73
  }
60
74
  }
61
75
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
- * soloforge review <产物路径>
2
+ * soloforge review <产物路径 | SLICE-XX>
3
3
  *
4
- * 脱离管线审查产物。自动读取 companion_rules 中的 :review 规则。
4
+ * 场景 C CLI 入口:委托共享内核完成四层编排审查。
5
+ * 支持:产物文件路径、切片 ID(SLICE-01)。
5
6
  */
6
7
  export declare function cmdReview(): Promise<void>;
7
8
  //# sourceMappingURL=review.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/review.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA8E/C"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/review.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkG/C"}
@@ -2,10 +2,13 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { debug, userInfo, userError } from "../../engine/core/logger.js";
4
4
  import { resolveProjectPath, args } from "../args.js";
5
+ /** 切片 ID 正则 — 匹配 SLICE-01、slice-5 等 */
6
+ const SLICE_PATTERN = /^SLICE[-_]?(\d+)$/i;
5
7
  /**
6
- * soloforge review <产物路径>
8
+ * soloforge review <产物路径 | SLICE-XX>
7
9
  *
8
- * 脱离管线审查产物。自动读取 companion_rules 中的 :review 规则。
10
+ * 场景 C CLI 入口:委托共享内核完成四层编排审查。
11
+ * 支持:产物文件路径、切片 ID(SLICE-01)。
9
12
  */
10
13
  export async function cmdReview() {
11
14
  debug("CLI", "执行 cmdReview");
@@ -13,67 +16,197 @@ export async function cmdReview() {
13
16
  const positional = args.filter((a) => !a.startsWith("--"));
14
17
  const isJson = args.includes("--json");
15
18
  if (positional.length === 0) {
16
- userError("用法: soloforge review <产物路径> [--json]");
19
+ userError("用法: soloforge review <产物路径 | SLICE-XX> [--json]");
17
20
  process.exit(1);
18
21
  }
19
- const productPath = path.resolve(projectPath, positional[0]);
22
+ const target = positional[0];
23
+ // ── 切片目标路由 ──
24
+ if (SLICE_PATTERN.test(target)) {
25
+ await reviewSlice(target, projectPath, isJson);
26
+ return;
27
+ }
28
+ // ── 产物文件路径 ──
29
+ const productPath = path.resolve(projectPath, target);
20
30
  if (!fs.existsSync(productPath)) {
21
31
  userError(`文件不存在: ${productPath}`);
22
32
  process.exit(1);
23
33
  }
24
34
  try {
25
- const { parseCompanionRules } = await import("../../engine/context_engine/companion_injector.js");
26
- const content = fs.readFileSync(productPath, "utf-8");
27
- const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
28
- const appliedRules = [];
29
- if (fmMatch) {
30
- const fm = fmMatch[1];
31
- const rulesField = fm.match(/companion_rules:\s*\[([^\]]*)\]/);
32
- if (rulesField) {
33
- const rawRules = rulesField[1].split(",").map((s) => s.trim().replace(/['"]/g, ""));
34
- const rules = parseCompanionRules(rawRules);
35
- const reviewRules = rules.filter((r) => r.usage === "review");
36
- appliedRules.push(...reviewRules.map((r) => r.fileName));
37
- }
35
+ const { orchestrateSingleArtifact } = await import("../../engine/pipeline/orchestrate_single_artifact.js");
36
+ const { inferArtifactKindFromPath, inferArtifactKindFallback } = await import("../../engine/pipeline/artifact_resolver.js");
37
+ // 从文件路径推断 artifact kind(先精确匹配 canonical_path,再兜底关键词匹配)
38
+ const relPath = path.relative(projectPath, productPath);
39
+ const kind = inferArtifactKindFromPath(relPath) ?? inferArtifactKindFallback(relPath);
40
+ if (!kind) {
41
+ // 无法推断 kind → 退回基础审查逻辑(仅结构检查)
42
+ const findings = basicStructuralCheck(productPath);
43
+ const hasFail = findings.some((f) => f.status === "fail");
44
+ const overall = hasFail ? "fail" : findings.length > 0 ? "warning" : "pass";
45
+ const result = { overall, findings, applied_rules: [], note: "未识别产物类型,跳过四层编排" };
46
+ outputResult(result, isJson);
47
+ return;
38
48
  }
39
- // 基本结构检查
40
- const findings = [];
41
- const body = content.replace(/^---\n[\s\S]*?\n---\n*/, "");
42
- if (body.trim().length === 0) {
43
- findings.push({ dimension: "structure", status: "fail", detail: "产物正文为空" });
49
+ // 委托共享内核完成四层编排审查
50
+ const orchestrateResult = await orchestrateSingleArtifact({
51
+ kind,
52
+ operation: "review",
53
+ projectPath,
54
+ original_command: `soloforge review ${relPath}`,
55
+ });
56
+ if (orchestrateResult.status === "error" || orchestrateResult.status === "no_template") {
57
+ // 内核无法编排 → 退回基础审查
58
+ const findings = basicStructuralCheck(productPath);
59
+ const hasFail = findings.some((f) => f.status === "fail");
60
+ const overall = hasFail ? "fail" : findings.length > 0 ? "warning" : "pass";
61
+ const result = { overall, findings, applied_rules: [], note: orchestrateResult.error };
62
+ outputResult(result, isJson);
63
+ return;
44
64
  }
45
- // 检查空洞章节
46
- const sectionRegex = /^## .+$/gm;
47
- const sections = body.match(sectionRegex) || [];
48
- for (const section of sections) {
49
- const sectionTitle = section.replace(/^## /, "");
50
- const sectionStart = body.indexOf(section);
51
- const nextSection = body.indexOf("\n## ", sectionStart + 1);
52
- const sectionBody = body.substring(sectionStart + section.length, nextSection > 0 ? nextSection : body.length);
53
- if (sectionBody.trim().length === 0) {
54
- findings.push({ dimension: "completeness", status: "warning", detail: `空洞章节: ${sectionTitle}` });
55
- }
65
+ // 收集内核编排结果
66
+ const appliedRules = orchestrateResult.rules?.map((r) => r.name) ?? [];
67
+ const missingRules = orchestrateResult.missing_rules ?? [];
68
+ const appliedGates = orchestrateResult.gates?.map((g) => g.name) ?? [];
69
+ const missingGates = orchestrateResult.missing_gates ?? [];
70
+ // 基础结构检查
71
+ const findings = basicStructuralCheck(productPath);
72
+ // 缺失规则/门禁也作为 findings
73
+ for (const mr of missingRules) {
74
+ findings.push({ dimension: "completeness", status: "warning", detail: `缺失 review 规则: ${mr}` });
75
+ }
76
+ for (const mg of missingGates) {
77
+ findings.push({ dimension: "completeness", status: "warning", detail: `缺失门禁: ${mg}` });
56
78
  }
57
79
  const hasFail = findings.some((f) => f.status === "fail");
58
80
  const overall = hasFail ? "fail" : findings.length > 0 ? "warning" : "pass";
59
- const result = { overall, findings, applied_rules: appliedRules };
60
- if (isJson) {
61
- process.stdout.write(JSON.stringify(result, null, 2) + "\n");
62
- }
63
- else {
64
- const icon = overall === "pass" ? "✅" : overall === "warning" ? "⚠️" : "❌";
65
- userInfo(`${icon} 审查结论: ${overall}`);
66
- if (appliedRules.length > 0) {
67
- userInfo(`已应用 review 规则: ${appliedRules.join(", ")}`);
68
- }
69
- for (const f of findings) {
70
- userInfo(` [${f.status}] ${f.dimension}: ${f.detail}`);
81
+ const result = {
82
+ overall,
83
+ findings,
84
+ applied_rules: appliedRules,
85
+ applied_gates: appliedGates,
86
+ target_kind: kind,
87
+ upstream_inputs: orchestrateResult.upstream_inputs?.map((i) => ({ ref: i.ref, missing: i.missing })),
88
+ injection_text: orchestrateResult.injection_text,
89
+ };
90
+ outputResult(result, isJson);
91
+ }
92
+ catch (err) {
93
+ userError(`审查失败: ${err instanceof Error ? err.message : String(err)}`);
94
+ process.exit(1);
95
+ }
96
+ }
97
+ /**
98
+ * 切片级审查 — 加载切片文件列表,限定审查范围。
99
+ *
100
+ * 使用 source_code_package 产物模板 + 编码阶段 gate 文件。
101
+ */
102
+ async function reviewSlice(sliceTarget, projectPath, isJson) {
103
+ const normalizedId = sliceTarget.toUpperCase().replace(/[-_]/g, "-");
104
+ // 规范化为 SLICE-XX 格式
105
+ const match = normalizedId.match(/^SLICE[-_]?(\d+)$/i);
106
+ const sliceId = match ? `SLICE-${match[1].padStart(2, "0")}` : normalizedId;
107
+ // 加载切片文件列表
108
+ let files = [];
109
+ try {
110
+ const YAML = await import("yaml");
111
+ const slicePlanPath = path.join(projectPath, ".soloforge", "output", "slice_plan.yaml");
112
+ if (fs.existsSync(slicePlanPath)) {
113
+ const content = fs.readFileSync(slicePlanPath, "utf-8");
114
+ const plan = YAML.parse(content);
115
+ if (plan?.slices && Array.isArray(plan.slices)) {
116
+ const slice = plan.slices.find((s) => String(s.id ?? s.slice_id ?? "").toUpperCase().replace(/[-_]/g, "-") === sliceId);
117
+ if (slice)
118
+ files = (slice.files ?? slice.scope ?? []);
71
119
  }
72
120
  }
73
121
  }
122
+ catch { /* 解析失败降级 */ }
123
+ if (files.length === 0) {
124
+ const result = {
125
+ overall: "warning",
126
+ findings: [{ dimension: "scope", status: "warning", detail: `未找到切片 ${sliceId} 的文件列表,请检查 .soloforge/output/slice_plan.yaml` }],
127
+ applied_rules: [],
128
+ applied_gates: [],
129
+ note: "运行 [sf] 审查 SLICE-XX 可通过四层编排自动修复",
130
+ };
131
+ outputResult(result, isJson);
132
+ return;
133
+ }
134
+ try {
135
+ const { orchestrateSingleArtifact } = await import("../../engine/pipeline/orchestrate_single_artifact.js");
136
+ const orchestrateResult = await orchestrateSingleArtifact({
137
+ kind: "source_code_package",
138
+ operation: "review",
139
+ projectPath,
140
+ original_command: `soloforge review ${sliceTarget}`,
141
+ });
142
+ const appliedRules = orchestrateResult.rules?.map((r) => r.name) ?? [];
143
+ const appliedGates = orchestrateResult.gates?.map((g) => g.name) ?? [];
144
+ const findings = [
145
+ ...files.map((f) => ({ dimension: "scope", status: "info", detail: `审查文件: ${f}` })),
146
+ ...(orchestrateResult.missing_rules ?? []).map((mr) => ({ dimension: "completeness", status: "warning", detail: `缺失 review 规则: ${mr}` })),
147
+ ...(orchestrateResult.missing_gates ?? []).map((mg) => ({ dimension: "completeness", status: "warning", detail: `缺失门禁: ${mg}` })),
148
+ ];
149
+ const hasFail = findings.some((f) => f.status === "fail");
150
+ const overall = hasFail ? "fail" : findings.some((f) => f.status === "warning") ? "warning" : "pass";
151
+ const result = {
152
+ overall,
153
+ findings,
154
+ applied_rules: appliedRules,
155
+ applied_gates: appliedGates,
156
+ slice_id: sliceId,
157
+ slice_files: files,
158
+ note: "运行 [sf] 审查 SLICE-XX 可通过四层编排自动修复",
159
+ };
160
+ outputResult(result, isJson);
161
+ }
74
162
  catch (err) {
75
- userError(`审查失败: ${err instanceof Error ? err.message : String(err)}`);
163
+ userError(`切片审查失败: ${err instanceof Error ? err.message : String(err)}`);
76
164
  process.exit(1);
77
165
  }
78
166
  }
167
+ /** 基础结构检查 — 空文件和空洞章节检测 */
168
+ function basicStructuralCheck(productPath) {
169
+ const findings = [];
170
+ const content = fs.readFileSync(productPath, "utf-8");
171
+ const body = content.replace(/^---\n[\s\S]*?\n---\n*/, "");
172
+ if (body.trim().length === 0) {
173
+ findings.push({ dimension: "structure", status: "fail", detail: "产物正文为空" });
174
+ }
175
+ // 检查空洞章节
176
+ const sectionRegex = /^## .+$/gm;
177
+ const sections = body.match(sectionRegex) || [];
178
+ for (const section of sections) {
179
+ const sectionTitle = section.replace(/^## /, "");
180
+ const sectionStart = body.indexOf(section);
181
+ const nextSection = body.indexOf("\n## ", sectionStart + 1);
182
+ const sectionBody = body.substring(sectionStart + section.length, nextSection > 0 ? nextSection : body.length);
183
+ if (sectionBody.trim().length === 0) {
184
+ findings.push({ dimension: "completeness", status: "warning", detail: `空洞章节: ${sectionTitle}` });
185
+ }
186
+ }
187
+ return findings;
188
+ }
189
+ /** 输出审查结果 */
190
+ function outputResult(result, isJson) {
191
+ if (isJson) {
192
+ process.stdout.write(JSON.stringify(result, null, 2) + "\n");
193
+ }
194
+ else {
195
+ const overall = result.overall;
196
+ const icon = overall === "pass" ? "✅" : overall === "warning" ? "⚠️" : "❌";
197
+ userInfo(`${icon} 审查结论: ${overall}`);
198
+ const appliedRules = result.applied_rules;
199
+ if (appliedRules && appliedRules.length > 0) {
200
+ userInfo(`已应用 review 规则: ${appliedRules.join(", ")}`);
201
+ }
202
+ const appliedGates = result.applied_gates;
203
+ if (appliedGates && appliedGates.length > 0) {
204
+ userInfo(`已应用门禁: ${appliedGates.join(", ")}`);
205
+ }
206
+ const findings = result.findings;
207
+ for (const f of findings) {
208
+ userInfo(` [${f.status}] ${f.dimension}: ${f.detail}`);
209
+ }
210
+ }
211
+ }
79
212
  //# sourceMappingURL=review.js.map