soloforge 1.3.3 → 1.3.5

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 (141) hide show
  1. package/README.md +19 -3
  2. package/dist/adapters/claude_code/server.js +1 -1
  3. package/dist/adapters/claude_code/server.js.map +1 -1
  4. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  5. package/dist/adapters/claude_code/tools.js +164 -44
  6. package/dist/adapters/claude_code/tools.js.map +1 -1
  7. package/dist/adapters/shared/workflow_template.js +2 -2
  8. package/dist/adapters/shared/workflow_template.js.map +1 -1
  9. package/dist/bin/soloforge.d.ts.map +1 -1
  10. package/dist/bin/soloforge.js +148 -1
  11. package/dist/bin/soloforge.js.map +1 -1
  12. package/dist/engine/asset_manifest.d.ts.map +1 -1
  13. package/dist/engine/asset_manifest.js +11 -0
  14. package/dist/engine/asset_manifest.js.map +1 -1
  15. package/dist/engine/backend_implementation_contract.d.ts +1 -1
  16. package/dist/engine/backend_implementation_contract.d.ts.map +1 -1
  17. package/dist/engine/backend_implementation_contract.js +22 -0
  18. package/dist/engine/backend_implementation_contract.js.map +1 -1
  19. package/dist/engine/brainstorm_contract.d.ts +1 -1
  20. package/dist/engine/brainstorm_contract.js +1 -1
  21. package/dist/engine/code_maintainability_observability_contract.d.ts +74 -0
  22. package/dist/engine/code_maintainability_observability_contract.d.ts.map +1 -0
  23. package/dist/engine/code_maintainability_observability_contract.js +711 -0
  24. package/dist/engine/code_maintainability_observability_contract.js.map +1 -0
  25. package/dist/engine/config_write_boundary.d.ts +29 -0
  26. package/dist/engine/config_write_boundary.d.ts.map +1 -0
  27. package/dist/engine/config_write_boundary.js +69 -0
  28. package/dist/engine/config_write_boundary.js.map +1 -0
  29. package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
  30. package/dist/engine/consumable_asset_registry.js +49 -1
  31. package/dist/engine/consumable_asset_registry.js.map +1 -1
  32. package/dist/engine/contract_registry.js +1 -1
  33. package/dist/engine/diagnostic_registry.d.ts +13 -0
  34. package/dist/engine/diagnostic_registry.d.ts.map +1 -1
  35. package/dist/engine/diagnostic_registry.js +68 -0
  36. package/dist/engine/diagnostic_registry.js.map +1 -1
  37. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
  38. package/dist/engine/dual_layer_mechanism_registry.js +195 -2
  39. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  40. package/dist/engine/explicit_asset_registry.d.ts.map +1 -1
  41. package/dist/engine/explicit_asset_registry.js +134 -0
  42. package/dist/engine/explicit_asset_registry.js.map +1 -1
  43. package/dist/engine/extension_scenario_registry.js +4 -4
  44. package/dist/engine/extension_scenario_registry.js.map +1 -1
  45. package/dist/engine/foundation_scenario_runners.d.ts.map +1 -1
  46. package/dist/engine/foundation_scenario_runners.js +4 -2
  47. package/dist/engine/foundation_scenario_runners.js.map +1 -1
  48. package/dist/engine/historical_issue_mechanization_matrix.d.ts +28 -0
  49. package/dist/engine/historical_issue_mechanization_matrix.d.ts.map +1 -0
  50. package/dist/engine/historical_issue_mechanization_matrix.js +134 -0
  51. package/dist/engine/historical_issue_mechanization_matrix.js.map +1 -0
  52. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  53. package/dist/engine/implementation_roadmap_registry.js +114 -13
  54. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  55. package/dist/engine/intent_expander.d.ts.map +1 -1
  56. package/dist/engine/intent_expander.js +151 -1
  57. package/dist/engine/intent_expander.js.map +1 -1
  58. package/dist/engine/knowledge_governance_gate.d.ts +38 -0
  59. package/dist/engine/knowledge_governance_gate.d.ts.map +1 -0
  60. package/dist/engine/knowledge_governance_gate.js +123 -0
  61. package/dist/engine/knowledge_governance_gate.js.map +1 -0
  62. package/dist/engine/log_governance.d.ts +25 -0
  63. package/dist/engine/log_governance.d.ts.map +1 -0
  64. package/dist/engine/log_governance.js +76 -0
  65. package/dist/engine/log_governance.js.map +1 -0
  66. package/dist/engine/mechanism_contract_registry.d.ts +1 -0
  67. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  68. package/dist/engine/mechanism_contract_registry.js +104 -0
  69. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  70. package/dist/engine/mechanism_health_check.d.ts +23 -0
  71. package/dist/engine/mechanism_health_check.d.ts.map +1 -0
  72. package/dist/engine/mechanism_health_check.js +140 -0
  73. package/dist/engine/mechanism_health_check.js.map +1 -0
  74. package/dist/engine/next_action_planner.d.ts.map +1 -1
  75. package/dist/engine/next_action_planner.js +72 -4
  76. package/dist/engine/next_action_planner.js.map +1 -1
  77. package/dist/engine/observability.js +1 -1
  78. package/dist/engine/observability.js.map +1 -1
  79. package/dist/engine/project_knowledge_contract.d.ts +58 -0
  80. package/dist/engine/project_knowledge_contract.d.ts.map +1 -0
  81. package/dist/engine/project_knowledge_contract.js +298 -0
  82. package/dist/engine/project_knowledge_contract.js.map +1 -0
  83. package/dist/engine/project_knowledge_system_regression_matrix.d.ts +27 -0
  84. package/dist/engine/project_knowledge_system_regression_matrix.d.ts.map +1 -0
  85. package/dist/engine/project_knowledge_system_regression_matrix.js +295 -0
  86. package/dist/engine/project_knowledge_system_regression_matrix.js.map +1 -0
  87. package/dist/engine/release_issue_scenario_registry.d.ts.map +1 -1
  88. package/dist/engine/release_issue_scenario_registry.js +506 -95
  89. package/dist/engine/release_issue_scenario_registry.js.map +1 -1
  90. package/dist/engine/release_readiness_gate.d.ts +4 -0
  91. package/dist/engine/release_readiness_gate.d.ts.map +1 -1
  92. package/dist/engine/release_readiness_gate.js +643 -12
  93. package/dist/engine/release_readiness_gate.js.map +1 -1
  94. package/dist/engine/team_awareness.js +6 -6
  95. package/dist/engine/team_awareness.js.map +1 -1
  96. package/dist/engine/technology_decision.js +5 -5
  97. package/dist/engine/technology_decision.js.map +1 -1
  98. package/dist/engine/template_asset_contract_registry.d.ts.map +1 -1
  99. package/dist/engine/template_asset_contract_registry.js +6 -5
  100. package/dist/engine/template_asset_contract_registry.js.map +1 -1
  101. package/dist/engine/verifier.js +1 -1
  102. package/dist/engine/verifier.js.map +1 -1
  103. package/dist/engine/workflow_navigation_contract.d.ts +10 -0
  104. package/dist/engine/workflow_navigation_contract.d.ts.map +1 -1
  105. package/dist/knowledge/loader.d.ts +3 -1
  106. package/dist/knowledge/loader.d.ts.map +1 -1
  107. package/dist/knowledge/loader.js +2 -2
  108. package/dist/knowledge/loader.js.map +1 -1
  109. package/dist/types.d.ts +23 -0
  110. package/dist/types.d.ts.map +1 -1
  111. package/package.json +1 -1
  112. package/templates/knowledge/acceptance_templates//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/351/252/214/346/224/266/346/250/241/346/235/277.md +78 -0
  113. package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +1 -1
  114. package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +1 -1
  115. package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +1 -1
  116. package/templates/knowledge/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +1 -1
  117. package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +1 -1
  118. package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +1 -1
  119. package/templates/knowledge/review//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 +81 -0
  120. package/templates/knowledge/review_rules//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -1
  121. package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +3 -3
  122. package/templates/knowledge/rules//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 +150 -0
  123. package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/346/227/245/345/277/227/350/247/204/345/210/231.md +69 -0
  124. package/templates/knowledge/rules//346/227/245/345/277/227/346/262/273/347/220/206/350/247/204/345/210/231.md +49 -0
  125. package/templates/knowledge/rules//346/234/272/345/210/266/350/207/252/346/262/273/347/220/206/350/247/204/345/210/231.md +48 -0
  126. package/templates/knowledge/rules//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md +1 -1
  127. package/templates/knowledge/rules//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/345/216/237/345/210/231.md +2 -2
  128. package/templates/knowledge/rules//346/274/224/350/277/233/345/233/236/345/275/222/351/227/250/346/216/247/350/247/204/345/210/231.md +1 -1
  129. package/templates/knowledge/rules//347/237/245/350/257/206/346/262/273/347/220/206/350/247/204/345/210/231.md +50 -0
  130. package/templates/knowledge/rules//351/205/215/347/275/256/350/220/275/347/233/230/350/276/271/347/225/214/350/247/204/345/210/231.md +47 -0
  131. package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +1 -1
  132. package/templates/scaffolds/react/Form.tsx.hbs +11 -3
  133. package/templates/scaffolds/react/List.tsx.hbs +11 -3
  134. package/templates/scaffolds/react/Page.tsx.hbs +1 -1
  135. package/templates/scaffolds/react/types.ts.hbs +4 -1
  136. package/templates/scaffolds/spring-boot/Controller.java.hbs +18 -4
  137. package/templates/scaffolds/spring-boot/DTO.java.hbs +4 -1
  138. package/templates/scaffolds/spring-boot/Entity.java.hbs +8 -3
  139. package/templates/scaffolds/spring-boot/Mapper.java.hbs +4 -1
  140. package/templates/scaffolds/spring-boot/ServiceImpl.java.hbs +34 -10
  141. package/templates/scaffolds/spring-boot/ServiceTest.java.hbs +0 -1
@@ -31,7 +31,7 @@ const WORKFLOW_STEPS = [
31
31
  { title: "### 步骤 1: 分类", rule_ids: ["wf-classify-first"] },
32
32
  { title: "### 步骤 1.5: 入口裁决", rule_ids: ["wf-routing-gate", "wf-strategy-no-route"] },
33
33
  { title: "### 步骤 1.6: 多阶段拆解", rule_ids: ["wf-multi-stage-loop"] },
34
- { title: "### 步骤 2: 执行", rule_ids: ["wf-dispatch-by-route", "wf-command-contract", "wf-tool-contract", "wf-architecture-workshop-first", "wf-design-artifact-pack", "wf-standard-asset-contract", "wf-template-asset-visibility"] },
34
+ { title: "### 步骤 2: 执行", rule_ids: ["wf-dispatch-by-route", "wf-command-contract", "wf-tool-contract", "wf-architecture-workshop-first", "wf-design-artifact-pack", "wf-standard-asset-contract", "wf-template-asset-visibility", "wf-code-observability"] },
35
35
  { title: "### 步骤 2.5: 导航", rule_ids: ["wf-navigation-contract"] },
36
36
  { title: "### 步骤 3: 验证", rule_ids: ["wf-verify-after-change", "wf-evidence-grounding"] },
37
37
  { title: "### 步骤 4: 学习", rule_ids: ["wf-learn-after-verify"] },
@@ -109,7 +109,7 @@ export function validateWorkflowRuleSources(rootDir) {
109
109
  };
110
110
  }
111
111
  /** 当前嵌入的权威规则校验和 — 由 `npm run update-workflow-checksum` 更新。 */
112
- const EMBEDDED_CHECKSUM = "b0a78fd669fd93c5";
112
+ const EMBEDDED_CHECKSUM = "557e7282efda3e13";
113
113
  function getEmbeddedChecksum() {
114
114
  return EMBEDDED_CHECKSUM;
115
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow_template.js","sourceRoot":"","sources":["../../../src/adapters/shared/workflow_template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow_template.js","sourceRoot":"","sources":["../../../src/adapters/shared/workflow_template.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"soloforge.d.ts","sourceRoot":"","sources":["../../src/bin/soloforge.ts"],"names":[],"mappings":";AAwzBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC"}
1
+ {"version":3,"file":"soloforge.d.ts","sourceRoot":"","sources":["../../src/bin/soloforge.ts"],"names":[],"mappings":";AA4zBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC"}
@@ -84,6 +84,9 @@ async function main() {
84
84
  case "audit-template-visibility":
85
85
  await cmdAuditTemplateVisibility();
86
86
  break;
87
+ case "audit-project-knowledge":
88
+ await cmdAuditProjectKnowledge();
89
+ break;
87
90
  case "sync-templates":
88
91
  await cmdSyncTemplates();
89
92
  break;
@@ -165,6 +168,7 @@ async function main() {
165
168
  validate-mechanisms 验证双层机制承载模型完整性(模板层 + 机制层)
166
169
  audit-template-mechanisms 扫描模板与机制注册表交叉校验(--json 输出完整报告,--changed-only 仅检查变更文件)
167
170
  audit-design-artifacts 审计架构/数据库/API 设计产物包(只读,--json 输出报告)
171
+ audit-project-knowledge 审计用户项目 .soloforge/knowledge 自定义规则承载与消费
168
172
  upgrade-design-artifacts 生成存量设计资产升级计划(默认 dry-run,--apply --confirm 仅建立已归档迁移基线)
169
173
  validate-release 验证发布门禁(契约、场景矩阵、消费 trace、双层机制、回归基线)
170
174
  validate-batch1 [历史] 仅基础契约验证,不代表正式发布通过
@@ -895,6 +899,27 @@ async function cmdValidate() {
895
899
  for (const w of evidenceWarnings) {
896
900
  userInfo(`⚠️ evidence: ${w}`);
897
901
  }
902
+ // 知识治理统一入口:生命周期、语义、文档与语言策略的轻量主链路消费
903
+ try {
904
+ const { runKnowledgeGovernanceCheck } = await import("../engine/knowledge_governance_gate.js");
905
+ const kgReport = runKnowledgeGovernanceCheck({
906
+ project_language: "zh",
907
+ contents: [{ id: "cli-validate", domain: "user_feedback", content: "SoloForge 校验输出保持中文语义优先" }],
908
+ });
909
+ if (kgReport.hard_fail_count > 0) {
910
+ userInfo(`❌ 知识治理: ${kgReport.hard_fail_count} hard_fail`);
911
+ for (const f of kgReport.findings.filter((f) => f.severity === "hard_fail")) {
912
+ userInfo(` - [${f.kind}] ${f.message_zh}`);
913
+ }
914
+ hasHardFail = true;
915
+ }
916
+ else {
917
+ userInfo(`✅ 知识治理检查: ${kgReport.warning_count} warning, 0 hard_fail`);
918
+ }
919
+ }
920
+ catch (e) {
921
+ userInfo(` ⚠ 知识治理检查异常: ${e instanceof Error ? e.message : String(e)}`);
922
+ }
898
923
  // 检查知识文件
899
924
  const knowledgeDir = getProjectKnowledgeDir(config);
900
925
  if (fss.existsSync(knowledgeDir)) {
@@ -915,6 +940,20 @@ async function cmdValidate() {
915
940
  finally {
916
941
  await index.close();
917
942
  }
943
+ const { auditProjectKnowledge } = await import("../engine/project_knowledge_contract.js");
944
+ const pkReport = auditProjectKnowledge(projectPath, config);
945
+ if (pkReport.hard_fail_count > 0) {
946
+ userInfo(`❌ 项目知识承载: ${pkReport.hard_fail_count} hard_fail`);
947
+ for (const asset of pkReport.assets) {
948
+ for (const finding of asset.findings.filter((f) => f.severity === "hard_fail")) {
949
+ userInfo(` - ${asset.rel_path}: [${finding.code}] ${finding.message_zh}`);
950
+ }
951
+ }
952
+ hasHardFail = true;
953
+ }
954
+ else {
955
+ userInfo(`✅ 项目知识承载: ${pkReport.total} 条,${pkReport.injectable} 条可注入,${pkReport.index_only} 条仅索引,0 hard_fail`);
956
+ }
918
957
  }
919
958
  // 扩展清单校验 (problem-39: validateExtensionManifest)
920
959
  try {
@@ -1146,6 +1185,22 @@ async function cmdValidateMechanisms() {
1146
1185
  userError(`❌ 模板审计异常: ${e.message}`);
1147
1186
  process.exit(1);
1148
1187
  }
1188
+ try {
1189
+ const { runFullHealthCheck } = await import("../engine/mechanism_health_check.js");
1190
+ const health = runFullHealthCheck(projectPath);
1191
+ if (health.hard_fail_count > 0) {
1192
+ userInfo(`\n❌ 机制运行时健康度: ${health.hard_fail_count} hard_fail`);
1193
+ for (const f of health.findings.filter((f) => f.severity === "hard_fail")) {
1194
+ userInfo(` - [${f.kind}] ${f.target}: ${f.message_zh}`);
1195
+ }
1196
+ process.exit(1);
1197
+ }
1198
+ userInfo(`\n📊 机制运行时健康度: ${health.warning_count} warning, 0 hard_fail`);
1199
+ }
1200
+ catch (e) {
1201
+ userError(`❌ 机制运行时健康度检查异常: ${e.message}`);
1202
+ process.exit(1);
1203
+ }
1149
1204
  }
1150
1205
  catch (e) {
1151
1206
  userError(`❌ validate-mechanisms 失败: ${e.message}`);
@@ -1490,6 +1545,19 @@ async function cmdSyncTemplates() {
1490
1545
  const projectPath = process.cwd();
1491
1546
  const packageRoot = path.resolve(import.meta.dirname, "..", "..");
1492
1547
  const sourceDir = args.find((a) => a.startsWith("--source="))?.slice("--source=".length) ?? path.join(packageRoot, "templates");
1548
+ if (apply) {
1549
+ const { classifyConfigContext, validateWriteBoundary } = await import("../engine/config_write_boundary.js");
1550
+ const writeContext = classifyConfigContext(projectPath, { confirmed: confirm });
1551
+ const violations = validateWriteBoundary(writeContext, [
1552
+ path.join(projectPath, ".soloforge", "template-manifest.json"),
1553
+ path.join(projectPath, ".soloforge", "knowledge"),
1554
+ ]);
1555
+ if (violations.length > 0) {
1556
+ for (const v of violations)
1557
+ userError(`❌ 模板同步写入边界阻断: ${v.target_path} — ${v.reason_zh}`);
1558
+ process.exit(1);
1559
+ }
1560
+ }
1493
1561
  // 读取当前包版本
1494
1562
  let packageVersion = "0.0.0";
1495
1563
  try {
@@ -1544,6 +1612,21 @@ async function cmdSyncTemplates() {
1544
1612
  }
1545
1613
  }
1546
1614
  const safeCheck = validateSyncSafety(assets);
1615
+ try {
1616
+ const { runKnowledgeGovernanceCheck } = await import("../engine/knowledge_governance_gate.js");
1617
+ const kgReport = runKnowledgeGovernanceCheck({
1618
+ project_language: "zh",
1619
+ contents: sourceManifest.slice(0, 12).map((e) => ({ id: e.asset_id, domain: "governance_contracts", content: e.target_path })),
1620
+ });
1621
+ if (kgReport.hard_fail_count > 0 && apply) {
1622
+ userError(`❌ 知识治理阻断模板同步: ${kgReport.hard_fail_count} hard_fail`);
1623
+ process.exit(1);
1624
+ }
1625
+ }
1626
+ catch (e) {
1627
+ if (!isJson)
1628
+ userInfo(` ⚠ 知识治理同步检查异常: ${e instanceof Error ? e.message : String(e)}`);
1629
+ }
1547
1630
  const syncResult = executeSync({ dry_run: !apply, apply, confirm, project_path: projectPath, source_path: sourceDir }, assets, sourceManifest);
1548
1631
  // apply 模式:真实文件复制
1549
1632
  if (apply && confirm && syncResult.success && syncResult.backup_path) {
@@ -1927,7 +2010,7 @@ async function cmdValidateNewIssue() {
1927
2010
  // label 精确匹配
1928
2011
  if (p.label.toLowerCase() === lower)
1929
2012
  matched = true;
1930
- // label 前缀匹配: "问题四十一" 匹配 "问题四十一(Brainstorm)"
2013
+ // label 前缀匹配: "问题四十二" 匹配 "问题四十二"
1931
2014
  if (p.label.toLowerCase().startsWith(lower + "("))
1932
2015
  matched = true;
1933
2016
  // 完整 title 的包含匹配(title 是长描述,子串匹配合理)
@@ -2143,8 +2226,10 @@ async function cmdNext() {
2143
2226
  confidence: plan.confidence,
2144
2227
  stage_evidence: plan.stage_evidence,
2145
2228
  blocking_reasons: plan.blocking_reasons,
2229
+ warnings: plan.warnings,
2146
2230
  recommended_commands: plan.recommended_commands,
2147
2231
  recommended_prompt: plan.recommended_prompt_zh,
2232
+ project_knowledge_context: plan.project_knowledge_context,
2148
2233
  disallowed_next_actions: plan.disallowed_actions.map((da) => ({
2149
2234
  rule_id: da.rule_id,
2150
2235
  blocked_actions: da.blocked_actions,
@@ -2180,6 +2265,22 @@ async function cmdNext() {
2180
2265
  userInfo(` - ${ev}`);
2181
2266
  }
2182
2267
  }
2268
+ if (plan.warnings.length > 0) {
2269
+ userInfo(`\n提示:`);
2270
+ for (const warning of plan.warnings) {
2271
+ userInfo(` - [${warning.code}] ${warning.message_zh}`);
2272
+ }
2273
+ }
2274
+ if (plan.project_knowledge_context && plan.project_knowledge_context.total > 0) {
2275
+ userInfo(`\n项目规则上下文:`);
2276
+ userInfo(` 项目知识: ${plan.project_knowledge_context.total} 条,hard_fail: ${plan.project_knowledge_context.hard_fail_count}`);
2277
+ if (plan.project_knowledge_context.selected.length > 0) {
2278
+ userInfo(" 下一步会优先参考:");
2279
+ for (const item of plan.project_knowledge_context.selected) {
2280
+ userInfo(` - ${item.name} (${item.rel_path}, ${item.consumption})`);
2281
+ }
2282
+ }
2283
+ }
2183
2284
  // 陈旧任务
2184
2285
  if (plan.stale_task?.is_stale) {
2185
2286
  userInfo(`\n⚠️ 检测到陈旧任务: ${plan.stale_task.reason_zh}`);
@@ -2498,6 +2599,7 @@ async function cmdAuditTemplateVisibility() {
2498
2599
  const isJson = args.includes("--json");
2499
2600
  const result = {
2500
2601
  total_assets: report.total_assets,
2602
+ registered_contracts: coverageReport.total_contracts,
2501
2603
  contract_covered: coverageReport.contract_covered,
2502
2604
  uncovered_assets: coverageReport.uncovered,
2503
2605
  user_visible_count: userVisibleCount,
@@ -2509,6 +2611,8 @@ async function cmdAuditTemplateVisibility() {
2509
2611
  missing_consumer: report.missing_consumer,
2510
2612
  missing_owner: report.missing_owner,
2511
2613
  unregistered: report.unregistered_assets,
2614
+ consumption_evidence_verified: coverageReport.consumption_evidence_verified,
2615
+ consumption_evidence_failures: coverageReport.consumption_evidence_failures,
2512
2616
  };
2513
2617
  if (isJson) {
2514
2618
  userJson(JSON.stringify(result, null, 2));
@@ -2516,6 +2620,7 @@ async function cmdAuditTemplateVisibility() {
2516
2620
  else {
2517
2621
  userInfo("═══ 模板资产可见性审计报告 ═══");
2518
2622
  userInfo(`总资产数: ${report.total_assets}`);
2623
+ userInfo(`注册合同数: ${coverageReport.total_contracts}(包含非文件运行时资产)`);
2519
2624
  userInfo(`合同覆盖: ${coverageReport.contract_covered}`);
2520
2625
  userInfo(`未覆盖: ${coverageReport.uncovered}`);
2521
2626
  userInfo(`用户可见: ${userVisibleCount}`);
@@ -2526,6 +2631,48 @@ async function cmdAuditTemplateVisibility() {
2526
2631
  userInfo(`缺消费者: ${report.missing_consumer}`);
2527
2632
  userInfo(`缺 owner: ${report.missing_owner}`);
2528
2633
  userInfo(`未注册: ${report.unregistered_assets}`);
2634
+ userInfo(`消费证据验证: ${coverageReport.consumption_evidence_verified ? "通过" : "失败"}`);
2635
+ for (const failure of coverageReport.consumption_evidence_failures) {
2636
+ userInfo(` - ${failure}`);
2637
+ }
2638
+ }
2639
+ }
2640
+ async function cmdAuditProjectKnowledge() {
2641
+ const projectPathArg = getArgValue("--project-path");
2642
+ const projectPath = projectPathArg ? path.resolve(projectPathArg) : (process.env.SOLOFORGE_PROJECT ?? process.cwd());
2643
+ const { auditProjectKnowledge } = await import("../engine/project_knowledge_contract.js");
2644
+ const { userInfo, userJson } = await import("../engine/logger.js");
2645
+ const isJson = args.includes("--json");
2646
+ const { config } = await resolveProjectConfig(projectPath, { quiet: isJson });
2647
+ const report = auditProjectKnowledge(projectPath, config);
2648
+ if (isJson) {
2649
+ userJson(JSON.stringify(report, null, 2));
2650
+ return;
2651
+ }
2652
+ userInfo(`用户项目知识审计: ${projectPath}`);
2653
+ userInfo(` 总数: ${report.total}`);
2654
+ userInfo(` 用户自建: ${report.user_authored}`);
2655
+ userInfo(` 内置同步: ${report.builtin_synced}`);
2656
+ userInfo(` 用户修改内置: ${report.user_modified_builtin}`);
2657
+ userInfo(` 冲突: ${report.conflict}`);
2658
+ userInfo(` hard_rule: ${report.hard_rule}`);
2659
+ userInfo(` injectable: ${report.injectable}`);
2660
+ userInfo(` index_only: ${report.index_only}`);
2661
+ userInfo(` hard_fail: ${report.hard_fail_count}`);
2662
+ userInfo(` warning: ${report.warning_count}`);
2663
+ for (const asset of report.assets) {
2664
+ if (asset.findings.length === 0)
2665
+ continue;
2666
+ userInfo(` - ${asset.rel_path} (${asset.identity}/${asset.consumption})`);
2667
+ for (const finding of asset.findings) {
2668
+ const mark = finding.severity === "hard_fail" ? "❌" : finding.severity === "warning" ? "⚠️" : "ℹ️";
2669
+ userInfo(` ${mark} [${finding.code}] ${finding.message_zh}`);
2670
+ }
2671
+ }
2672
+ if (report.recommended_next_steps.length > 0) {
2673
+ userInfo(" 下一步:");
2674
+ for (const step of report.recommended_next_steps)
2675
+ userInfo(` - ${step}`);
2529
2676
  }
2530
2677
  }
2531
2678
  //# sourceMappingURL=soloforge.js.map