soloforge 1.2.20 → 1.3.1

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 (688) hide show
  1. package/README.md +150 -3
  2. package/dist/adapters/claude_code/claude_md.d.ts +1 -2
  3. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  4. package/dist/adapters/claude_code/claude_md.js +47 -4
  5. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  6. package/dist/adapters/claude_code/hooks.d.ts.map +1 -1
  7. package/dist/adapters/claude_code/hooks.js +2 -1
  8. package/dist/adapters/claude_code/hooks.js.map +1 -1
  9. package/dist/adapters/claude_code/server.js +4 -3
  10. package/dist/adapters/claude_code/server.js.map +1 -1
  11. package/dist/adapters/claude_code/tools.d.ts +282 -1
  12. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  13. package/dist/adapters/claude_code/tools.js +1366 -40
  14. package/dist/adapters/claude_code/tools.js.map +1 -1
  15. package/dist/adapters/codex/codex_config.d.ts.map +1 -1
  16. package/dist/adapters/codex/codex_config.js +3 -2
  17. package/dist/adapters/codex/codex_config.js.map +1 -1
  18. package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
  19. package/dist/adapters/codex/codex_rules.js +2 -1
  20. package/dist/adapters/codex/codex_rules.js.map +1 -1
  21. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  22. package/dist/adapters/shared/workflow_template.js +8 -1
  23. package/dist/adapters/shared/workflow_template.js.map +1 -1
  24. package/dist/adapters/trae/trae_config.d.ts +0 -5
  25. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  26. package/dist/adapters/trae/trae_config.js +2 -1
  27. package/dist/adapters/trae/trae_config.js.map +1 -1
  28. package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
  29. package/dist/adapters/trae/trae_rules.js +2 -1
  30. package/dist/adapters/trae/trae_rules.js.map +1 -1
  31. package/dist/bin/config_commands.d.ts.map +1 -1
  32. package/dist/bin/config_commands.js +34 -33
  33. package/dist/bin/config_commands.js.map +1 -1
  34. package/dist/bin/soloforge.d.ts.map +1 -1
  35. package/dist/bin/soloforge.js +1256 -160
  36. package/dist/bin/soloforge.js.map +1 -1
  37. package/dist/engine/adapter_prompt_contract.d.ts +60 -0
  38. package/dist/engine/adapter_prompt_contract.d.ts.map +1 -0
  39. package/dist/engine/adapter_prompt_contract.js +163 -0
  40. package/dist/engine/adapter_prompt_contract.js.map +1 -0
  41. package/dist/engine/architecture_decision_workshop.d.ts +58 -0
  42. package/dist/engine/architecture_decision_workshop.d.ts.map +1 -0
  43. package/dist/engine/architecture_decision_workshop.js +118 -0
  44. package/dist/engine/architecture_decision_workshop.js.map +1 -0
  45. package/dist/engine/architecture_design_contract.d.ts +49 -0
  46. package/dist/engine/architecture_design_contract.d.ts.map +1 -0
  47. package/dist/engine/architecture_design_contract.js +169 -0
  48. package/dist/engine/architecture_design_contract.js.map +1 -0
  49. package/dist/engine/artifact_contract_registry.d.ts.map +1 -1
  50. package/dist/engine/artifact_contract_registry.js +7 -14
  51. package/dist/engine/artifact_contract_registry.js.map +1 -1
  52. package/dist/engine/{batch1_manifest.d.ts → asset_manifest.d.ts} +8 -8
  53. package/dist/engine/asset_manifest.d.ts.map +1 -0
  54. package/dist/engine/{batch1_manifest.js → asset_manifest.js} +63 -9
  55. package/dist/engine/asset_manifest.js.map +1 -0
  56. package/dist/engine/audit_pool.d.ts.map +1 -1
  57. package/dist/engine/audit_pool.js +5 -4
  58. package/dist/engine/audit_pool.js.map +1 -1
  59. package/dist/engine/audit_sampler.d.ts.map +1 -1
  60. package/dist/engine/audit_sampler.js +2 -1
  61. package/dist/engine/audit_sampler.js.map +1 -1
  62. package/dist/engine/audit_verifier.d.ts.map +1 -1
  63. package/dist/engine/audit_verifier.js +5 -4
  64. package/dist/engine/audit_verifier.js.map +1 -1
  65. package/dist/engine/brainstorm_contract.d.ts +46 -0
  66. package/dist/engine/brainstorm_contract.d.ts.map +1 -0
  67. package/dist/engine/brainstorm_contract.js +136 -0
  68. package/dist/engine/brainstorm_contract.js.map +1 -0
  69. package/dist/engine/capability_action_advisor.d.ts.map +1 -1
  70. package/dist/engine/capability_action_advisor.js +8 -7
  71. package/dist/engine/capability_action_advisor.js.map +1 -1
  72. package/dist/engine/capability_registry.d.ts.map +1 -1
  73. package/dist/engine/capability_registry.js +0 -7
  74. package/dist/engine/capability_registry.js.map +1 -1
  75. package/dist/engine/capability_state_store.d.ts.map +1 -1
  76. package/dist/engine/capability_state_store.js +7 -6
  77. package/dist/engine/capability_state_store.js.map +1 -1
  78. package/dist/engine/change_coordinator.d.ts.map +1 -1
  79. package/dist/engine/change_coordinator.js +4 -3
  80. package/dist/engine/change_coordinator.js.map +1 -1
  81. package/dist/engine/chinese_semantic_priority.d.ts +62 -0
  82. package/dist/engine/chinese_semantic_priority.d.ts.map +1 -0
  83. package/dist/engine/chinese_semantic_priority.js +153 -0
  84. package/dist/engine/chinese_semantic_priority.js.map +1 -0
  85. package/dist/engine/coding_readiness_gate.d.ts +46 -0
  86. package/dist/engine/coding_readiness_gate.d.ts.map +1 -0
  87. package/dist/engine/coding_readiness_gate.js +175 -0
  88. package/dist/engine/coding_readiness_gate.js.map +1 -0
  89. package/dist/engine/cognitive_anchor.d.ts.map +1 -1
  90. package/dist/engine/cognitive_anchor.js +7 -6
  91. package/dist/engine/cognitive_anchor.js.map +1 -1
  92. package/dist/engine/command_execution_contract.d.ts.map +1 -1
  93. package/dist/engine/command_execution_contract.js +13 -12
  94. package/dist/engine/command_execution_contract.js.map +1 -1
  95. package/dist/engine/confidence_scorer.d.ts.map +1 -1
  96. package/dist/engine/confidence_scorer.js +2 -1
  97. package/dist/engine/confidence_scorer.js.map +1 -1
  98. package/dist/engine/config_precedence_contract.d.ts.map +1 -1
  99. package/dist/engine/config_precedence_contract.js +9 -8
  100. package/dist/engine/config_precedence_contract.js.map +1 -1
  101. package/dist/engine/conflict_gate.d.ts.map +1 -1
  102. package/dist/engine/conflict_gate.js +4 -3
  103. package/dist/engine/conflict_gate.js.map +1 -1
  104. package/dist/engine/consumable_asset_registry.d.ts +4 -0
  105. package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
  106. package/dist/engine/consumable_asset_registry.js +370 -0
  107. package/dist/engine/consumable_asset_registry.js.map +1 -1
  108. package/dist/engine/consumption_trace_store.d.ts +50 -0
  109. package/dist/engine/consumption_trace_store.d.ts.map +1 -0
  110. package/dist/engine/consumption_trace_store.js +84 -0
  111. package/dist/engine/consumption_trace_store.js.map +1 -0
  112. package/dist/engine/contract_guard.d.ts.map +1 -1
  113. package/dist/engine/contract_guard.js +7 -6
  114. package/dist/engine/contract_guard.js.map +1 -1
  115. package/dist/engine/contract_registry.d.ts +1 -1
  116. package/dist/engine/contract_registry.d.ts.map +1 -1
  117. package/dist/engine/contract_registry.js +511 -38
  118. package/dist/engine/contract_registry.js.map +1 -1
  119. package/dist/engine/convention_detector.d.ts.map +1 -1
  120. package/dist/engine/convention_detector.js +4 -3
  121. package/dist/engine/convention_detector.js.map +1 -1
  122. package/dist/engine/core_engineering_principles.d.ts.map +1 -1
  123. package/dist/engine/core_engineering_principles.js +4 -14
  124. package/dist/engine/core_engineering_principles.js.map +1 -1
  125. package/dist/engine/core_experience_principle.d.ts +194 -0
  126. package/dist/engine/core_experience_principle.d.ts.map +1 -0
  127. package/dist/engine/core_experience_principle.js +349 -0
  128. package/dist/engine/core_experience_principle.js.map +1 -0
  129. package/dist/engine/debt_reporter.d.ts.map +1 -1
  130. package/dist/engine/debt_reporter.js +3 -2
  131. package/dist/engine/debt_reporter.js.map +1 -1
  132. package/dist/engine/debt_tracker.d.ts.map +1 -1
  133. package/dist/engine/debt_tracker.js +8 -7
  134. package/dist/engine/debt_tracker.js.map +1 -1
  135. package/dist/engine/debug_log.d.ts +4 -1
  136. package/dist/engine/debug_log.d.ts.map +1 -1
  137. package/dist/engine/debug_log.js +4 -6
  138. package/dist/engine/debug_log.js.map +1 -1
  139. package/dist/engine/debugger.d.ts.map +1 -1
  140. package/dist/engine/debugger.js +5 -4
  141. package/dist/engine/debugger.js.map +1 -1
  142. package/dist/engine/decision_contract.d.ts.map +1 -1
  143. package/dist/engine/decision_contract.js +4 -3
  144. package/dist/engine/decision_contract.js.map +1 -1
  145. package/dist/engine/delivery.d.ts.map +1 -1
  146. package/dist/engine/delivery.js +16 -15
  147. package/dist/engine/delivery.js.map +1 -1
  148. package/dist/engine/delivery_readiness.d.ts +5 -1
  149. package/dist/engine/delivery_readiness.d.ts.map +1 -1
  150. package/dist/engine/delivery_readiness.js +24 -2
  151. package/dist/engine/delivery_readiness.js.map +1 -1
  152. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  153. package/dist/engine/dependency_scanner.js +6 -5
  154. package/dist/engine/dependency_scanner.js.map +1 -1
  155. package/dist/engine/design_artifact_pack.d.ts +44 -0
  156. package/dist/engine/design_artifact_pack.d.ts.map +1 -0
  157. package/dist/engine/design_artifact_pack.js +167 -0
  158. package/dist/engine/design_artifact_pack.js.map +1 -0
  159. package/dist/engine/detail_discipline.d.ts +40 -0
  160. package/dist/engine/detail_discipline.d.ts.map +1 -0
  161. package/dist/engine/detail_discipline.js +107 -0
  162. package/dist/engine/detail_discipline.js.map +1 -0
  163. package/dist/engine/developer_sovereignty.d.ts.map +1 -1
  164. package/dist/engine/developer_sovereignty.js +6 -5
  165. package/dist/engine/developer_sovereignty.js.map +1 -1
  166. package/dist/engine/diff_ownership.d.ts.map +1 -1
  167. package/dist/engine/diff_ownership.js +9 -8
  168. package/dist/engine/diff_ownership.js.map +1 -1
  169. package/dist/engine/diff_ownership_store.d.ts.map +1 -1
  170. package/dist/engine/diff_ownership_store.js +8 -7
  171. package/dist/engine/diff_ownership_store.js.map +1 -1
  172. package/dist/engine/documentation_governance.d.ts +55 -0
  173. package/dist/engine/documentation_governance.d.ts.map +1 -0
  174. package/dist/engine/documentation_governance.js +249 -0
  175. package/dist/engine/documentation_governance.js.map +1 -0
  176. package/dist/engine/dual_layer_mechanism_registry.d.ts +6 -4
  177. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
  178. package/dist/engine/dual_layer_mechanism_registry.js +851 -11
  179. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  180. package/dist/engine/enforcement_guard.d.ts.map +1 -1
  181. package/dist/engine/enforcement_guard.js +14 -0
  182. package/dist/engine/enforcement_guard.js.map +1 -1
  183. package/dist/engine/escape_report.d.ts.map +1 -1
  184. package/dist/engine/escape_report.js +4 -3
  185. package/dist/engine/escape_report.js.map +1 -1
  186. package/dist/engine/evidence_grounding_contract.d.ts +137 -0
  187. package/dist/engine/evidence_grounding_contract.d.ts.map +1 -0
  188. package/dist/engine/evidence_grounding_contract.js +410 -0
  189. package/dist/engine/evidence_grounding_contract.js.map +1 -0
  190. package/dist/engine/evolution_regression_gate.d.ts +42 -0
  191. package/dist/engine/evolution_regression_gate.d.ts.map +1 -0
  192. package/dist/engine/evolution_regression_gate.js +159 -0
  193. package/dist/engine/evolution_regression_gate.js.map +1 -0
  194. package/dist/engine/existing_system_analysis.d.ts +37 -0
  195. package/dist/engine/existing_system_analysis.d.ts.map +1 -0
  196. package/dist/engine/existing_system_analysis.js +151 -0
  197. package/dist/engine/existing_system_analysis.js.map +1 -0
  198. package/dist/engine/exploration.d.ts.map +1 -1
  199. package/dist/engine/exploration.js +7 -6
  200. package/dist/engine/exploration.js.map +1 -1
  201. package/dist/engine/extension_contract.d.ts +50 -0
  202. package/dist/engine/extension_contract.d.ts.map +1 -0
  203. package/dist/engine/extension_contract.js +158 -0
  204. package/dist/engine/extension_contract.js.map +1 -0
  205. package/dist/engine/extension_platform_contracts.d.ts +712 -0
  206. package/dist/engine/extension_platform_contracts.d.ts.map +1 -0
  207. package/dist/engine/extension_platform_contracts.js +42 -0
  208. package/dist/engine/extension_platform_contracts.js.map +1 -0
  209. package/dist/engine/extension_scenario_registry.d.ts +30 -0
  210. package/dist/engine/extension_scenario_registry.d.ts.map +1 -0
  211. package/dist/engine/extension_scenario_registry.js +976 -0
  212. package/dist/engine/extension_scenario_registry.js.map +1 -0
  213. package/dist/engine/failure_classifier.d.ts.map +1 -1
  214. package/dist/engine/failure_classifier.js +9 -8
  215. package/dist/engine/failure_classifier.js.map +1 -1
  216. package/dist/engine/feasibility_checker.d.ts.map +1 -1
  217. package/dist/engine/feasibility_checker.js +5 -4
  218. package/dist/engine/feasibility_checker.js.map +1 -1
  219. package/dist/engine/first_principles.d.ts +35 -0
  220. package/dist/engine/first_principles.d.ts.map +1 -0
  221. package/dist/engine/first_principles.js +128 -0
  222. package/dist/engine/first_principles.js.map +1 -0
  223. package/dist/engine/{batch1_scenario_registry.d.ts → foundation_scenario_registry.d.ts} +15 -15
  224. package/dist/engine/foundation_scenario_registry.d.ts.map +1 -0
  225. package/dist/engine/{batch1_scenario_registry.js → foundation_scenario_registry.js} +22 -25
  226. package/dist/engine/foundation_scenario_registry.js.map +1 -0
  227. package/dist/engine/{batch1_scenario_runners.d.ts → foundation_scenario_runners.d.ts} +1 -1
  228. package/dist/engine/foundation_scenario_runners.d.ts.map +1 -0
  229. package/dist/engine/{batch1_scenario_runners.js → foundation_scenario_runners.js} +8 -7
  230. package/dist/engine/foundation_scenario_runners.js.map +1 -0
  231. package/dist/engine/git_deps.d.ts.map +1 -1
  232. package/dist/engine/git_deps.js +2 -1
  233. package/dist/engine/git_deps.js.map +1 -1
  234. package/dist/engine/governance_report.d.ts.map +1 -1
  235. package/dist/engine/governance_report.js +10 -9
  236. package/dist/engine/governance_report.js.map +1 -1
  237. package/dist/engine/impact_analyzer.d.ts.map +1 -1
  238. package/dist/engine/impact_analyzer.js +5 -4
  239. package/dist/engine/impact_analyzer.js.map +1 -1
  240. package/dist/engine/implementation_roadmap_registry.d.ts +1 -1
  241. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  242. package/dist/engine/implementation_roadmap_registry.js +348 -82
  243. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  244. package/dist/engine/input_material_contract_registry.d.ts.map +1 -1
  245. package/dist/engine/input_material_contract_registry.js +4 -3
  246. package/dist/engine/input_material_contract_registry.js.map +1 -1
  247. package/dist/engine/instruction_contract.d.ts +75 -0
  248. package/dist/engine/instruction_contract.d.ts.map +1 -0
  249. package/dist/engine/instruction_contract.js +185 -0
  250. package/dist/engine/instruction_contract.js.map +1 -0
  251. package/dist/engine/intent_expander.d.ts.map +1 -1
  252. package/dist/engine/intent_expander.js +353 -1
  253. package/dist/engine/intent_expander.js.map +1 -1
  254. package/dist/engine/intent_router.d.ts +11 -2
  255. package/dist/engine/intent_router.d.ts.map +1 -1
  256. package/dist/engine/intent_router.js +121 -1
  257. package/dist/engine/intent_router.js.map +1 -1
  258. package/dist/engine/intent_signal_extractor.d.ts +3 -0
  259. package/dist/engine/intent_signal_extractor.d.ts.map +1 -1
  260. package/dist/engine/intent_signal_extractor.js +49 -0
  261. package/dist/engine/intent_signal_extractor.js.map +1 -1
  262. package/dist/engine/io_controller.d.ts.map +1 -1
  263. package/dist/engine/io_controller.js +8 -7
  264. package/dist/engine/io_controller.js.map +1 -1
  265. package/dist/engine/java_quality_guard.d.ts.map +1 -1
  266. package/dist/engine/java_quality_guard.js +5 -18
  267. package/dist/engine/java_quality_guard.js.map +1 -1
  268. package/dist/engine/job_manager.d.ts.map +1 -1
  269. package/dist/engine/job_manager.js +8 -7
  270. package/dist/engine/job_manager.js.map +1 -1
  271. package/dist/engine/knowledge_acceptance_registry.d.ts +35 -0
  272. package/dist/engine/knowledge_acceptance_registry.d.ts.map +1 -0
  273. package/dist/engine/knowledge_acceptance_registry.js +271 -0
  274. package/dist/engine/knowledge_acceptance_registry.js.map +1 -0
  275. package/dist/engine/knowledge_asset_audit.d.ts +65 -0
  276. package/dist/engine/knowledge_asset_audit.d.ts.map +1 -0
  277. package/dist/engine/knowledge_asset_audit.js +230 -0
  278. package/dist/engine/knowledge_asset_audit.js.map +1 -0
  279. package/dist/engine/knowledge_asset_consumer.d.ts +150 -0
  280. package/dist/engine/knowledge_asset_consumer.d.ts.map +1 -0
  281. package/dist/engine/knowledge_asset_consumer.js +279 -0
  282. package/dist/engine/knowledge_asset_consumer.js.map +1 -0
  283. package/dist/engine/knowledge_asset_generation_gate.d.ts +38 -0
  284. package/dist/engine/knowledge_asset_generation_gate.d.ts.map +1 -0
  285. package/dist/engine/knowledge_asset_generation_gate.js +131 -0
  286. package/dist/engine/knowledge_asset_generation_gate.js.map +1 -0
  287. package/dist/engine/knowledge_asset_migration.d.ts +117 -0
  288. package/dist/engine/knowledge_asset_migration.d.ts.map +1 -0
  289. package/dist/engine/knowledge_asset_migration.js +204 -0
  290. package/dist/engine/knowledge_asset_migration.js.map +1 -0
  291. package/dist/engine/knowledge_asset_schema.d.ts +97 -0
  292. package/dist/engine/knowledge_asset_schema.d.ts.map +1 -0
  293. package/dist/engine/knowledge_asset_schema.js +413 -0
  294. package/dist/engine/knowledge_asset_schema.js.map +1 -0
  295. package/dist/engine/knowledge_config_loader.d.ts.map +1 -1
  296. package/dist/engine/knowledge_config_loader.js +5 -4
  297. package/dist/engine/knowledge_config_loader.js.map +1 -1
  298. package/dist/engine/knowledge_consumption_snapshot.d.ts +91 -0
  299. package/dist/engine/knowledge_consumption_snapshot.d.ts.map +1 -0
  300. package/dist/engine/knowledge_consumption_snapshot.js +113 -0
  301. package/dist/engine/knowledge_consumption_snapshot.js.map +1 -0
  302. package/dist/engine/knowledge_evolution.d.ts +82 -0
  303. package/dist/engine/knowledge_evolution.d.ts.map +1 -0
  304. package/dist/engine/knowledge_evolution.js +272 -0
  305. package/dist/engine/knowledge_evolution.js.map +1 -0
  306. package/dist/engine/knowledge_lifecycle.d.ts +70 -10
  307. package/dist/engine/knowledge_lifecycle.d.ts.map +1 -1
  308. package/dist/engine/knowledge_lifecycle.js +238 -4
  309. package/dist/engine/knowledge_lifecycle.js.map +1 -1
  310. package/dist/engine/knowledge_manager.d.ts.map +1 -1
  311. package/dist/engine/knowledge_manager.js +9 -8
  312. package/dist/engine/knowledge_manager.js.map +1 -1
  313. package/dist/engine/knowledge_scenario_registry.d.ts +21 -0
  314. package/dist/engine/knowledge_scenario_registry.d.ts.map +1 -0
  315. package/dist/engine/knowledge_scenario_registry.js +337 -0
  316. package/dist/engine/knowledge_scenario_registry.js.map +1 -0
  317. package/dist/engine/knowledge_sovereignty.d.ts.map +1 -1
  318. package/dist/engine/knowledge_sovereignty.js +5 -4
  319. package/dist/engine/knowledge_sovereignty.js.map +1 -1
  320. package/dist/engine/knowledge_template_contracts.d.ts +244 -0
  321. package/dist/engine/knowledge_template_contracts.d.ts.map +1 -0
  322. package/dist/engine/knowledge_template_contracts.js +26 -0
  323. package/dist/engine/knowledge_template_contracts.js.map +1 -0
  324. package/dist/engine/language_policy.d.ts +69 -12
  325. package/dist/engine/language_policy.d.ts.map +1 -1
  326. package/dist/engine/language_policy.js +129 -8
  327. package/dist/engine/language_policy.js.map +1 -1
  328. package/dist/engine/llm_gateway.d.ts.map +1 -1
  329. package/dist/engine/llm_gateway.js +10 -9
  330. package/dist/engine/llm_gateway.js.map +1 -1
  331. package/dist/engine/local_docker_acceptance.d.ts +94 -0
  332. package/dist/engine/local_docker_acceptance.d.ts.map +1 -0
  333. package/dist/engine/local_docker_acceptance.js +312 -0
  334. package/dist/engine/local_docker_acceptance.js.map +1 -0
  335. package/dist/engine/logger.d.ts +64 -0
  336. package/dist/engine/logger.d.ts.map +1 -0
  337. package/dist/engine/logger.js +115 -0
  338. package/dist/engine/logger.js.map +1 -0
  339. package/dist/engine/main_path_integration_contract.d.ts.map +1 -1
  340. package/dist/engine/main_path_integration_contract.js +43 -42
  341. package/dist/engine/main_path_integration_contract.js.map +1 -1
  342. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  343. package/dist/engine/mechanism_contract_registry.js +514 -17
  344. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  345. package/dist/engine/metric_governance.d.ts +51 -0
  346. package/dist/engine/metric_governance.d.ts.map +1 -0
  347. package/dist/engine/metric_governance.js +138 -0
  348. package/dist/engine/metric_governance.js.map +1 -0
  349. package/dist/engine/migration_guard.d.ts.map +1 -1
  350. package/dist/engine/migration_guard.js +6 -5
  351. package/dist/engine/migration_guard.js.map +1 -1
  352. package/dist/engine/mutation_audit.d.ts.map +1 -1
  353. package/dist/engine/mutation_audit.js +6 -5
  354. package/dist/engine/mutation_audit.js.map +1 -1
  355. package/dist/engine/observability.d.ts +11 -0
  356. package/dist/engine/observability.d.ts.map +1 -1
  357. package/dist/engine/observability.js +60 -8
  358. package/dist/engine/observability.js.map +1 -1
  359. package/dist/engine/onboarding.d.ts.map +1 -1
  360. package/dist/engine/onboarding.js +17 -16
  361. package/dist/engine/onboarding.js.map +1 -1
  362. package/dist/engine/plan_proposal_gate.d.ts +131 -0
  363. package/dist/engine/plan_proposal_gate.d.ts.map +1 -0
  364. package/dist/engine/plan_proposal_gate.js +340 -0
  365. package/dist/engine/plan_proposal_gate.js.map +1 -0
  366. package/dist/engine/platform_context.d.ts +44 -0
  367. package/dist/engine/platform_context.d.ts.map +1 -0
  368. package/dist/engine/platform_context.js +169 -0
  369. package/dist/engine/platform_context.js.map +1 -0
  370. package/dist/engine/policy_drift_detector.d.ts.map +1 -1
  371. package/dist/engine/policy_drift_detector.js +8 -7
  372. package/dist/engine/policy_drift_detector.js.map +1 -1
  373. package/dist/engine/regression_matrix.d.ts.map +1 -1
  374. package/dist/engine/regression_matrix.js +15 -14
  375. package/dist/engine/regression_matrix.js.map +1 -1
  376. package/dist/engine/release_compatibility.d.ts +62 -0
  377. package/dist/engine/release_compatibility.d.ts.map +1 -0
  378. package/dist/engine/release_compatibility.js +145 -0
  379. package/dist/engine/release_compatibility.js.map +1 -0
  380. package/dist/engine/release_gate.d.ts +29 -0
  381. package/dist/engine/release_gate.d.ts.map +1 -0
  382. package/dist/engine/release_gate.js +675 -0
  383. package/dist/engine/release_gate.js.map +1 -0
  384. package/dist/engine/release_gate_scenario_registry.d.ts +65 -0
  385. package/dist/engine/release_gate_scenario_registry.d.ts.map +1 -0
  386. package/dist/engine/release_gate_scenario_registry.js +717 -0
  387. package/dist/engine/release_gate_scenario_registry.js.map +1 -0
  388. package/dist/engine/release_readiness_gate.d.ts +44 -0
  389. package/dist/engine/release_readiness_gate.d.ts.map +1 -0
  390. package/dist/engine/release_readiness_gate.js +1660 -0
  391. package/dist/engine/release_readiness_gate.js.map +1 -0
  392. package/dist/engine/risk_sampler.d.ts.map +1 -1
  393. package/dist/engine/risk_sampler.js +4 -3
  394. package/dist/engine/risk_sampler.js.map +1 -1
  395. package/dist/engine/runtime_safety.d.ts.map +1 -1
  396. package/dist/engine/runtime_safety.js +18 -17
  397. package/dist/engine/runtime_safety.js.map +1 -1
  398. package/dist/engine/scaffolder.d.ts.map +1 -1
  399. package/dist/engine/scaffolder.js +4 -3
  400. package/dist/engine/scaffolder.js.map +1 -1
  401. package/dist/engine/scope_lease.d.ts.map +1 -1
  402. package/dist/engine/scope_lease.js +4 -3
  403. package/dist/engine/scope_lease.js.map +1 -1
  404. package/dist/engine/semantic_evidence.d.ts.map +1 -1
  405. package/dist/engine/semantic_evidence.js +4 -3
  406. package/dist/engine/semantic_evidence.js.map +1 -1
  407. package/dist/engine/state_fact_classifier.d.ts +47 -0
  408. package/dist/engine/state_fact_classifier.d.ts.map +1 -0
  409. package/dist/engine/state_fact_classifier.js +158 -0
  410. package/dist/engine/state_fact_classifier.js.map +1 -0
  411. package/dist/engine/task_context.d.ts +34 -5
  412. package/dist/engine/task_context.d.ts.map +1 -1
  413. package/dist/engine/task_context.js +175 -49
  414. package/dist/engine/task_context.js.map +1 -1
  415. package/dist/engine/task_planner.d.ts.map +1 -1
  416. package/dist/engine/task_planner.js +6 -5
  417. package/dist/engine/task_planner.js.map +1 -1
  418. package/dist/engine/team_awareness.d.ts.map +1 -1
  419. package/dist/engine/team_awareness.js +2 -1
  420. package/dist/engine/team_awareness.js.map +1 -1
  421. package/dist/engine/technology_decision.d.ts +38 -0
  422. package/dist/engine/technology_decision.d.ts.map +1 -0
  423. package/dist/engine/technology_decision.js +120 -0
  424. package/dist/engine/technology_decision.js.map +1 -0
  425. package/dist/engine/template_manifest_io.d.ts +47 -0
  426. package/dist/engine/template_manifest_io.d.ts.map +1 -0
  427. package/dist/engine/template_manifest_io.js +151 -0
  428. package/dist/engine/template_manifest_io.js.map +1 -0
  429. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -1
  430. package/dist/engine/template_mechanism_auditor.js +5 -4
  431. package/dist/engine/template_mechanism_auditor.js.map +1 -1
  432. package/dist/engine/template_sync.d.ts +98 -0
  433. package/dist/engine/template_sync.d.ts.map +1 -0
  434. package/dist/engine/template_sync.js +355 -0
  435. package/dist/engine/template_sync.js.map +1 -0
  436. package/dist/engine/test_generator.d.ts.map +1 -1
  437. package/dist/engine/test_generator.js +5 -4
  438. package/dist/engine/test_generator.js.map +1 -1
  439. package/dist/engine/test_quality.d.ts.map +1 -1
  440. package/dist/engine/test_quality.js +5 -4
  441. package/dist/engine/test_quality.js.map +1 -1
  442. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
  443. package/dist/engine/tool_invocation_contract_registry.js +32 -31
  444. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  445. package/dist/engine/traceability.d.ts.map +1 -1
  446. package/dist/engine/traceability.js +6 -5
  447. package/dist/engine/traceability.js.map +1 -1
  448. package/dist/engine/user_feedback_contract.d.ts.map +1 -1
  449. package/dist/engine/user_feedback_contract.js +81 -19
  450. package/dist/engine/user_feedback_contract.js.map +1 -1
  451. package/dist/engine/user_promise.d.ts +67 -0
  452. package/dist/engine/user_promise.d.ts.map +1 -0
  453. package/dist/engine/user_promise.js +436 -0
  454. package/dist/engine/user_promise.js.map +1 -0
  455. package/dist/engine/verifier.d.ts +6 -10
  456. package/dist/engine/verifier.d.ts.map +1 -1
  457. package/dist/engine/verifier.js +112 -1
  458. package/dist/engine/verifier.js.map +1 -1
  459. package/dist/engine/workflow_contract_registry.d.ts.map +1 -1
  460. package/dist/engine/workflow_contract_registry.js +128 -10
  461. package/dist/engine/workflow_contract_registry.js.map +1 -1
  462. package/dist/engine/workflow_template_pack.d.ts +71 -0
  463. package/dist/engine/workflow_template_pack.d.ts.map +1 -0
  464. package/dist/engine/workflow_template_pack.js +246 -0
  465. package/dist/engine/workflow_template_pack.js.map +1 -0
  466. package/dist/engine/workspace_resumer.d.ts.map +1 -1
  467. package/dist/engine/workspace_resumer.js +9 -8
  468. package/dist/engine/workspace_resumer.js.map +1 -1
  469. package/dist/engine/zero_config_init.d.ts.map +1 -1
  470. package/dist/engine/zero_config_init.js +16 -15
  471. package/dist/engine/zero_config_init.js.map +1 -1
  472. package/dist/git/operations.d.ts.map +1 -1
  473. package/dist/git/operations.js +18 -17
  474. package/dist/git/operations.js.map +1 -1
  475. package/dist/index.js +10 -9
  476. package/dist/index.js.map +1 -1
  477. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  478. package/dist/knowledge/conflict_detector.js +2 -1
  479. package/dist/knowledge/conflict_detector.js.map +1 -1
  480. package/dist/knowledge/health_checker.d.ts.map +1 -1
  481. package/dist/knowledge/health_checker.js +5 -4
  482. package/dist/knowledge/health_checker.js.map +1 -1
  483. package/dist/knowledge/index_manager.js +4 -4
  484. package/dist/knowledge/index_manager.js.map +1 -1
  485. package/dist/knowledge/loader.d.ts.map +1 -1
  486. package/dist/knowledge/loader.js +20 -14
  487. package/dist/knowledge/loader.js.map +1 -1
  488. package/dist/knowledge/writer.d.ts.map +1 -1
  489. package/dist/knowledge/writer.js +7 -6
  490. package/dist/knowledge/writer.js.map +1 -1
  491. package/dist/types.d.ts +40 -8
  492. package/dist/types.d.ts.map +1 -1
  493. package/package.json +14 -5
  494. package/templates/knowledge/acceptance_templates/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 +74 -0
  495. package/templates/knowledge/acceptance_templates/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +27 -3
  496. package/templates/knowledge/acceptance_templates/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +27 -3
  497. package/templates/knowledge/acceptance_templates//345/211/215/347/253/257/351/241/265/351/235/242/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -3
  498. package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +31 -3
  499. package/templates/knowledge/acceptance_templates//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -3
  500. package/templates/knowledge/acceptance_templates//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +27 -3
  501. package/templates/knowledge/acceptance_templates//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +27 -3
  502. package/templates/knowledge/acceptance_templates//346/212/200/346/234/257/351/200/211/345/236/213/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -3
  503. package/templates/knowledge/acceptance_templates//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 +26 -3
  504. package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/350/256/276/350/256/241/346/250/241/347/211/210.md +27 -3
  505. package/templates/knowledge/acceptance_templates//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +28 -3
  506. package/templates/knowledge/acceptance_templates//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 +26 -3
  507. package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/351/252/214/346/224/266/346/270/205/345/215/225.md +31 -3
  508. package/templates/knowledge/acceptance_templates//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 +59 -0
  509. package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +54 -10
  510. package/templates/knowledge/acceptance_templates//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +27 -3
  511. package/templates/knowledge/acceptance_templates//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 +47 -0
  512. package/templates/knowledge/acceptance_templates//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +26 -3
  513. package/templates/knowledge/acceptance_templates//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +27 -3
  514. 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 +30 -3
  515. package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +27 -3
  516. package/templates/knowledge/acceptance_templates//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +27 -3
  517. package/templates/knowledge/checklists//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -0
  518. package/templates/knowledge/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +30 -8
  519. package/templates/knowledge/checklists//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -0
  520. package/templates/knowledge/checklists//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -0
  521. package/templates/knowledge/checklists//347/237/245/350/257/206/346/263/250/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -0
  522. package/templates/knowledge/checklists//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md +29 -0
  523. package/templates/knowledge/checklists//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -0
  524. package/templates/knowledge/domain//345/244/232/347/247/237/346/210/267.md +28 -3
  525. package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +27 -3
  526. package/templates/knowledge/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +30 -3
  527. package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +32 -3
  528. package/templates/knowledge/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +31 -3
  529. package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +31 -3
  530. package/templates/knowledge/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +28 -3
  531. package/templates/knowledge/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +30 -3
  532. package/templates/knowledge/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +31 -3
  533. package/templates/knowledge/patterns/core/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +24 -7
  534. package/templates/knowledge/patterns/core/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +25 -7
  535. package/templates/knowledge/patterns/core/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +24 -7
  536. package/templates/knowledge/patterns/core//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237.md +24 -7
  537. package/templates/knowledge/patterns/core//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +25 -7
  538. package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/344/270/216/345/257/206/351/222/245/346/213/246/346/210/252.md +24 -7
  539. package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +25 -7
  540. package/templates/knowledge/patterns/core//345/206/262/347/252/201/351/227/250/347/246/201.md +24 -7
  541. package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +26 -7
  542. package/templates/knowledge/patterns/core//345/217/230/345/274/202/345/256/241/350/256/241.md +25 -7
  543. package/templates/knowledge/patterns/core//345/233/236/345/275/222/347/237/251/351/230/265.md +24 -7
  544. package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +24 -7
  545. package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +24 -7
  546. package/templates/knowledge/patterns/core//345/271/266/345/217/221/351/224/201.md +26 -7
  547. package/templates/knowledge/patterns/core//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +26 -7
  548. package/templates/knowledge/patterns/core//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +24 -7
  549. package/templates/knowledge/patterns/core//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +25 -7
  550. package/templates/knowledge/patterns/core//346/265/201/345/274/217/345/277/203/350/267/263.md +25 -7
  551. package/templates/knowledge/patterns/core//347/237/245/350/257/206/344/270/273/346/235/203.md +25 -7
  552. package/templates/knowledge/patterns/core//350/257/255/344/271/211/350/257/201/346/215/256.md +24 -7
  553. package/templates/knowledge/patterns/core//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +25 -7
  554. package/templates/knowledge/patterns/core//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +24 -7
  555. package/templates/knowledge/patterns/core//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +24 -7
  556. package/templates/knowledge/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +29 -3
  557. package/templates/knowledge/procedures//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/350/257/201/346/265/201/347/250/213.md +33 -0
  558. package/templates/knowledge/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +30 -3
  559. package/templates/knowledge/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +30 -3
  560. package/templates/knowledge/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +30 -3
  561. package/templates/knowledge/procedures//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md +34 -0
  562. package/templates/knowledge/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +30 -3
  563. package/templates/knowledge/procedures//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md +34 -0
  564. package/templates/knowledge/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +30 -3
  565. package/templates/knowledge/procedures//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md +34 -0
  566. package/templates/knowledge/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +30 -3
  567. 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 +29 -3
  568. package/templates/knowledge/procedures//346/234/254/345/234/260/346/265/217/350/247/210/345/231/250/351/252/214/346/224/266/345/267/245/344/275/234/346/265/201.md +99 -0
  569. package/templates/knowledge/procedures//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/345/267/245/344/275/234/346/265/201.md +51 -0
  570. package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +104 -0
  571. package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -3
  572. package/templates/knowledge/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +30 -3
  573. package/templates/knowledge/procedures//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201/345/267/245/344/275/234/346/265/201.md +91 -0
  574. package/templates/knowledge/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 +30 -3
  575. package/templates/knowledge/procedures//347/216/260/346/234/211/347/263/273/347/273/237/345/267/256/350/267/235/345/210/206/346/236/220/345/267/245/344/275/234/346/265/201.md +97 -0
  576. package/templates/knowledge/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +30 -3
  577. package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +30 -3
  578. package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +30 -3
  579. package/templates/knowledge/procedures//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md +33 -0
  580. package/templates/knowledge/procedures//347/274/272/351/231/267/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +30 -3
  581. package/templates/knowledge/procedures//350/207/252/344/270/273/351/200/211/345/236/213/346/265/201/347/250/213.md +30 -3
  582. package/templates/knowledge/procedures//350/256/276/350/256/241/344/272/247/347/211/251/347/224/237/346/210/220/344/270/216/345/244/215/351/252/214/345/267/245/344/275/234/346/265/201.md +45 -0
  583. package/templates/knowledge/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -3
  584. package/templates/knowledge/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +30 -3
  585. package/templates/knowledge/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +30 -3
  586. package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +30 -3
  587. package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +30 -3
  588. package/templates/knowledge/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +30 -3
  589. package/templates/knowledge/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +30 -3
  590. package/templates/knowledge/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +30 -3
  591. package/templates/knowledge/procedures//351/252/214/350/257/201/350/256/241/345/210/222/346/265/201/347/250/213.md +30 -3
  592. 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 +24 -3
  593. package/templates/knowledge/review_rules//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  594. package/templates/knowledge/review_rules//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +23 -3
  595. package/templates/knowledge/review_rules//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  596. package/templates/knowledge/review_rules//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +23 -3
  597. package/templates/knowledge/review_rules//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  598. package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  599. package/templates/knowledge/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  600. package/templates/knowledge/rules//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237/350/247/204/345/210/231.md +65 -0
  601. package/templates/knowledge/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md +36 -0
  602. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  603. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/346/250/241/346/235/277/345/214/205/350/247/204/345/210/231.md +48 -0
  604. package/templates/knowledge/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md +36 -0
  605. package/templates/knowledge/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md +36 -0
  606. package/templates/knowledge/rules//346/211/247/350/241/214/345/256/210/345/215/253/350/257/204/344/274/260/350/247/204/345/210/231.md +36 -0
  607. package/templates/knowledge/rules//346/211/251/345/261/225/347/224/237/345/221/275/345/221/250/346/234/237/350/247/204/345/210/231.md +48 -0
  608. package/templates/knowledge/rules//346/212/200/346/234/257/345/206/263/347/255/226/344/270/273/346/235/203/350/247/204/345/210/231.md +64 -0
  609. package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/345/244/204/347/220/206/350/247/204/345/210/231.md +36 -0
  610. package/templates/knowledge/rules//346/226/275/345/267/245/346/214/207/344/273/244/345/245/221/347/272/246/350/247/204/345/210/231.md +78 -0
  611. package/templates/knowledge/rules//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +49 -0
  612. package/templates/knowledge/rules//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md +50 -0
  613. 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 +35 -0
  614. package/templates/knowledge/rules//346/263/250/345/206/214/350/241/250/345/237/272/347/241/200/350/256/276/346/226/275/350/247/204/345/210/231.md +36 -0
  615. package/templates/knowledge/rules//346/274/224/350/277/233/345/233/236/345/275/222/350/247/204/345/210/231.md +51 -0
  616. 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 +74 -0
  617. package/templates/knowledge/rules//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246/350/247/204/345/210/231.md +35 -0
  618. package/templates/knowledge/rules//347/237/245/350/257/206/346/263/250/345/205/245/350/276/271/347/225/214/350/247/204/345/210/231.md +36 -0
  619. package/templates/knowledge/rules//347/237/245/350/257/206/350/265/204/344/272/247/346/262/273/347/220/206/350/247/204/345/210/231.md +61 -0
  620. package/templates/knowledge/rules//347/254/254/344/270/200/346/200/247/345/216/237/347/220/206/346/216/250/347/220/206/350/247/204/345/210/231.md +73 -0
  621. package/templates/knowledge/rules//347/273/206/350/212/202/347/272/252/345/276/213/350/247/204/345/210/231.md +67 -0
  622. package/templates/knowledge/rules//350/204/221/346/232/264/344/270/216/346/226/271/346/241/210/346/216/242/347/264/242/350/247/204/345/210/231.md +66 -0
  623. package/templates/knowledge/rules//350/256/241/345/210/222/345/211/215/347/275/256/351/227/250/350/247/204/345/210/231.md +59 -0
  624. package/templates/knowledge/rules//350/256/276/350/256/241/344/272/247/347/211/251/345/214/205/350/247/204/345/210/231.md +55 -0
  625. package/templates/knowledge/rules//350/257/201/346/215/256/351/251/261/345/212/250/344/270/216/345/217/215/345/271/273/350/247/211/350/247/204/345/210/231.md +75 -0
  626. package/templates/knowledge/rules//350/267/250/345/271/263/345/217/260/350/267/257/345/276/204/345/256/211/345/205/250/350/247/204/345/210/231.md +48 -0
  627. package/templates/knowledge/rules//350/276/223/345/205/245/346/235/220/346/226/231/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  628. package/templates/knowledge/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +35 -0
  629. package/templates/knowledge/rules//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260/350/247/204/345/210/231.md +36 -0
  630. package/templates/knowledge/rules//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226/350/247/204/345/210/231.md +36 -0
  631. package/templates/knowledge/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  632. package/templates/knowledge/templates//345/256/241/346/237/245/346/221/230/350/246/201.md +26 -7
  633. package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +30 -3
  634. package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +29 -3
  635. package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +33 -3
  636. package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +31 -3
  637. package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +30 -3
  638. package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +31 -3
  639. package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +31 -3
  640. package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +30 -3
  641. package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +30 -3
  642. package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +31 -3
  643. package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +30 -3
  644. package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +29 -3
  645. package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +33 -3
  646. package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +28 -3
  647. package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +32 -3
  648. package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +31 -3
  649. package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +31 -3
  650. package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +30 -3
  651. package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +34 -3
  652. package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +32 -3
  653. package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +30 -3
  654. package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +31 -3
  655. package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +31 -3
  656. package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +31 -3
  657. package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -3
  658. package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +32 -3
  659. package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +31 -3
  660. package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +30 -3
  661. package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +34 -3
  662. package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +31 -3
  663. package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +29 -3
  664. package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +33 -3
  665. package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +34 -3
  666. package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +30 -3
  667. package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +30 -3
  668. package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +31 -3
  669. package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +34 -3
  670. package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +28 -3
  671. package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -3
  672. package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +32 -3
  673. package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +29 -3
  674. package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +32 -3
  675. package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +31 -3
  676. package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -3
  677. package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +29 -3
  678. package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +30 -3
  679. package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +31 -3
  680. package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +31 -3
  681. package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +33 -3
  682. package/templates/patterns//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241/350/247/204/350/214/203.md +30 -3
  683. package/dist/engine/batch1_manifest.d.ts.map +0 -1
  684. package/dist/engine/batch1_manifest.js.map +0 -1
  685. package/dist/engine/batch1_scenario_registry.d.ts.map +0 -1
  686. package/dist/engine/batch1_scenario_registry.js.map +0 -1
  687. package/dist/engine/batch1_scenario_runners.d.ts.map +0 -1
  688. package/dist/engine/batch1_scenario_runners.js.map +0 -1
@@ -0,0 +1,717 @@
1
+ /**
2
+ * 发布门禁场景注册表 — 场景 A/B/C/D/E/F。
3
+ *
4
+ * 场景 A: 执行前必须先给计划和方案(覆盖问题五十五)
5
+ * 场景 B: 核心体验原则不得被机制复杂度打穿(覆盖问题五十六)
6
+ * 场景 C: 知识资产标准化与反退化治理(覆盖问题五十七)
7
+ * 场景 D: 施工指令契约(覆盖问题五十八)
8
+ * 场景 E: 日志治理与用户可见输出标准化(覆盖问题五十九)
9
+ * 场景 F: 证据驱动与反幻觉治理(覆盖问题六十)
10
+ */
11
+ import { evaluatePlanProposalGate, validateActionWithinPlan, createPlanProposalEvidence, isReviewOnlyIntent, } from "./plan_proposal_gate.js";
12
+ import { evaluateCoreExperiencePrinciple, evaluateNoFalseCompletion, evaluateMechanismFriction, } from "./core_experience_principle.js";
13
+ import { validateKnowledgeAssets, detectDuplicateAndConflicts, } from "./knowledge_asset_schema.js";
14
+ import { auditKnowledgeAssets } from "./knowledge_asset_audit.js";
15
+ import { createKnowledgeConsumptionSnapshot, validateConsumptionSnapshot, verifyConsumptionPaths, } from "./knowledge_consumption_snapshot.js";
16
+ import { validateInstructionContract, checkInstructionCompleteness, } from "./instruction_contract.js";
17
+ import { initLogger, initLoggerFromEnv, resetLogger, } from "./logger.js";
18
+ import { createEvidenceGroundingSystem, isHighRiskClaimCategory, } from "./evidence_grounding_contract.js";
19
+ // ── 场景定义 ──
20
+ export const RELEASE_GATE_SCENARIOS = [
21
+ {
22
+ id: "release-scenario-baseline",
23
+ name: "执行前必须先给计划和方案",
24
+ fixture: "ready",
25
+ command_or_entry: "用户要求修改代码、修改 Batch 文档、运行 Docker、本地验收或执行高风险操作时,AI 尝试直接执行",
26
+ expected_evidence: ["PlanProposalFirstGate", "PlanProposalEvidence", "UserConfirmationRef", "VerificationPlanRef"],
27
+ pass_fail_rules: [
28
+ "写入、编码、构建、Docker、迁移、发布、外部副作用或交付前必须先通过 PlanProposalFirstGate",
29
+ "simple_answer 可 none_with_reason 或 brief_plan",
30
+ "file_edit / code_change / test_or_review / local_acceptance 必须至少 execution_plan",
31
+ "architecture_design / high_risk_operation 必须 option_proposal 或 human_confirmation_required",
32
+ "删除、覆盖、迁移、数据库 schema、权限模型、技术栈变更、外部副作用、scope 扩大、高成本长任务必须用户确认",
33
+ "执行动作不得超出已确认计划",
34
+ "计划必须中文语义优先,路径/命令/代码标识保持原文",
35
+ "计划必须进入 evidence refs / TaskContext refs",
36
+ ],
37
+ covered_issues: ["问题五十五"],
38
+ covered_capability_domains: ["计划管理", "任务分类", "意图路由", "代码执行"],
39
+ },
40
+ {
41
+ id: "release-scenario-user-project-init",
42
+ name: "核心体验原则不得被机制复杂度打穿",
43
+ fixture: "ready",
44
+ command_or_entry: "用户执行自然语言 workflow、代码修改、架构设计、本地验收、自动修复或 Batch 施工",
45
+ expected_evidence: ["CoreExperiencePrincipleEvaluation", "UserPathFrictionReport", "EvidenceSufficiencyReport", "RepairOrManualRequiredDecision"],
46
+ pass_fail_rules: [
47
+ "机制必须真实接入和强约束,但用户入口路径不能要求用户理解内部 contract 名称",
48
+ "关键规则必须 hard fail 或 manual_required,不能降级成提示性建议后继续执行",
49
+ "证据必须足以审查计划、执行、验证、失败和交付",
50
+ "验证失败、构建失败、浏览器验收失败、guard 阻断或证据不足时必须进入 repair_reverify 或 manual_required",
51
+ "新增机制、模板、测试或 Batch 规则不得显著增加普通任务摩擦",
52
+ "体验原则不得绕过硬护栏",
53
+ ],
54
+ covered_issues: ["问题五十六"],
55
+ covered_capability_domains: ["核心体验", "机制治理", "修复闭环", "用户反馈", "发布门禁"],
56
+ },
57
+ {
58
+ id: "release-scenario-regression",
59
+ name: "知识资产标准化与反退化治理",
60
+ fixture: "ready",
61
+ command_or_entry: "新增、修改、同步、迁移或构建知识资产",
62
+ expected_evidence: ["KnowledgeAssetAuditReport", "KnowledgeAssetSchemaValidation", "DuplicateKnowledgeFinding", "CanonicalAuthorityMap", "KnowledgeConsumptionSnapshot", "TemplateEvolutionImpact", "UserProjectMigrationPlan"],
63
+ pass_fail_rules: [
64
+ "所有知识资产必须有稳定 id、asset_kind、lifecycle_status、authority、scope、routes/when、version 和 last_reviewed",
65
+ "硬规则、workflow、强制流程、验收门禁必须有 owner_mechanism_id",
66
+ "同一主题只能有一个 canonical 权威定义",
67
+ "重复判定必须区分 exact_duplicate、semantic_overlap、conflict、legitimate_cross_reference",
68
+ "when 触发词必须区分 primary_triggers、secondary_triggers、negative_triggers",
69
+ "prompt 注入必须输出消费快照",
70
+ "新增或修改资产必须通过准入门",
71
+ "frontmatter/schema 变更必须走 TemplateSync / ReleaseCompatibility / migration dry-run",
72
+ "审计发现 required 字段缺失、canonical 冲突、deprecated 被注入、hard_rule 无 owner、required_evidence 缺失或消费链路不可追踪时不得 passed",
73
+ ],
74
+ covered_issues: ["问题五十七"],
75
+ covered_capability_domains: ["知识治理", "资产标准化", "迁移同步", "发布门禁"],
76
+ },
77
+ {
78
+ id: "release-scenario-instruction-contract",
79
+ name: "施工指令契约",
80
+ fixture: "ready",
81
+ command_or_entry: "P0/P1 任务执行前必须生成并通过 InstructionContractGate",
82
+ expected_evidence: ["InstructionContract", "InstructionValidationResult", "InstructionCompletenessResult"],
83
+ pass_fail_rules: [
84
+ "P0/P1 任务无 Instruction Contract 不得进入 executing",
85
+ "合同缺 goal/non_goals/scope/real_consumers/failure_policy/validation_plan → 不得执行",
86
+ "只改测试/只改文档/只注册 registry 不得算完成",
87
+ "真实消费者为空或只有 tests/scenario/gate → hard fail",
88
+ "scope 外写入必须 amendment + 用户确认",
89
+ "验收失败必须进入 repair_reverify 或 manual_required",
90
+ "validation_plan 与 validation_results 必须分离",
91
+ ],
92
+ covered_issues: ["问题五十八"],
93
+ covered_capability_domains: ["施工治理", "执行门禁", "反表面实现"],
94
+ },
95
+ {
96
+ id: "release-scenario-log-governance",
97
+ name: "日志治理与用户可见输出标准化",
98
+ fixture: "ready",
99
+ command_or_entry: "全 src/ 通过统一 logger 输出,validate-release OUTPUT_NOISE 门禁通过",
100
+ expected_evidence: ["LoggerModule", "OUTPUT_NOISE_GATE", "ConsoleScanResult"],
101
+ pass_fail_rules: [
102
+ "logger 模块必须导出 debug/internalWarn/userInfo/userWarn/userError/jsonSafeError",
103
+ "debug 仅 SOLOFORGE_DEBUG=1 时输出",
104
+ "--json stdout 不得含非 JSON 文本",
105
+ "src/ 全目录无直接 console.(log|error|warn) 调用(仅 logger.ts 和 release_readiness_gate.ts 例外)",
106
+ "config.yaml 缺失提示每进程仅一次",
107
+ "validate-release OUTPUT_NOISE 门禁不得放宽",
108
+ ],
109
+ covered_issues: ["问题五十九"],
110
+ covered_capability_domains: ["日志治理", "输出标准化", "发布门禁"],
111
+ },
112
+ {
113
+ id: "release-scenario-evidence-grounding",
114
+ name: "证据驱动与反幻觉治理",
115
+ fixture: "ready",
116
+ command_or_entry: "高风险任务关键事实必须有 evidence_refs,无证据 claim 必须阻断",
117
+ expected_evidence: ["EvidenceGroundingContract", "FactClaimVerifier", "UnsupportedClaimGate"],
118
+ pass_fail_rules: [
119
+ "无证据不得当事实",
120
+ "generated_inference 不得单独支撑事实结论",
121
+ "validation_plan 不得冒充 validation_results",
122
+ "forbidden 证据永远不能注入 prompt 或 citation",
123
+ "冲突未裁决时高风险任务必须阻断",
124
+ "deprecated 证据不得注入生成路径",
125
+ "高风险任务不得用 stale/unknown 证据作唯一依据",
126
+ "test_result 必须来自真实执行不能来自计划",
127
+ ],
128
+ covered_issues: ["问题六十"],
129
+ covered_capability_domains: ["证据治理", "反幻觉", "事实校验", "发布门禁"],
130
+ },
131
+ ];
132
+ // ── 场景执行器 ──
133
+ /**
134
+ * 运行场景 A: Plan Proposal First Gate。
135
+ */
136
+ export function runScenarioA() {
137
+ const failures = [];
138
+ const evidenceRefs = [];
139
+ // 1. plan_proposal_gate 模块可导入
140
+ evidenceRefs.push("plan_proposal_gate_module_loaded");
141
+ // Test 1: simple_answer → none_with_reason 允许
142
+ const r1 = evaluatePlanProposalGate({
143
+ task_id: "test-a1",
144
+ task_type: "simple_answer",
145
+ user_intent: "什么是 TypeScript",
146
+ plan_level: "none_with_reason",
147
+ plan_summary_zh: "简单问答",
148
+ evidence_refs: ["ev-1"],
149
+ verification_plan: ["验证回答正确性"],
150
+ });
151
+ if (r1.passed) {
152
+ evidenceRefs.push("test-a1-pass: simple_answer none_with_reason");
153
+ }
154
+ else {
155
+ failures.push(`A1: simple_answer none_with_reason 应通过,实际: ${r1.reason_zh}`);
156
+ }
157
+ // Test 2: read_only_analysis → brief_plan 允许
158
+ const r2 = evaluatePlanProposalGate({
159
+ task_id: "test-a2",
160
+ task_type: "read_only_analysis",
161
+ user_intent: "分析代码结构",
162
+ plan_level: "brief_plan",
163
+ plan_summary_zh: "阅读并分析代码",
164
+ evidence_refs: ["ev-2"],
165
+ verification_plan: ["输出分析结果"],
166
+ });
167
+ if (r2.passed) {
168
+ evidenceRefs.push("test-a2-pass: read_only_analysis brief_plan");
169
+ }
170
+ else {
171
+ failures.push(`A2: read_only_analysis brief_plan 应通过,实际: ${r2.reason_zh}`);
172
+ }
173
+ // Test 3: code_change 无计划 → blocked (must-fail)
174
+ const r3 = evaluatePlanProposalGate({
175
+ task_id: "test-a3",
176
+ task_type: "code_change",
177
+ user_intent: "修改代码",
178
+ plan_level: "none_with_reason",
179
+ evidence_refs: [],
180
+ });
181
+ if (!r3.passed) {
182
+ evidenceRefs.push("test-a3-must-fail: code_change no plan blocked");
183
+ }
184
+ else {
185
+ failures.push("A3: code_change none_with_reason 应被 blocked,实际通过");
186
+ }
187
+ // Test 4: file_edit execution_plan 通过
188
+ const r4 = evaluatePlanProposalGate({
189
+ task_id: "test-a4",
190
+ task_type: "file_edit",
191
+ user_intent: "编辑文件",
192
+ plan_level: "execution_plan",
193
+ plan_summary_zh: "编辑文件计划",
194
+ proposed_steps: ["定位文件", "修改内容", "验证"],
195
+ verification_plan: ["检查语法"],
196
+ risks: ["可能影响其他模块"],
197
+ evidence_refs: ["ev-4"],
198
+ });
199
+ if (r4.passed) {
200
+ evidenceRefs.push("test-a4-pass: file_edit execution_plan");
201
+ }
202
+ else {
203
+ failures.push(`A4: execution_plan 应通过,实际: ${r4.reason_zh}`);
204
+ }
205
+ // Test 5: high_risk_operation 无确认 → blocked (must-fail)
206
+ const r5 = evaluatePlanProposalGate({
207
+ task_id: "test-a5",
208
+ task_type: "high_risk_operation",
209
+ user_intent: "删除生产数据库",
210
+ plan_level: "execution_plan",
211
+ plan_summary_zh: "删除数据库计划",
212
+ proposed_steps: ["备份", "删除"],
213
+ verification_plan: ["验证"],
214
+ risks: ["数据丢失"],
215
+ evidence_refs: ["ev-5"],
216
+ });
217
+ if (!r5.passed && r5.plan_gate_status === "manual_required") {
218
+ evidenceRefs.push("test-a5-must-fail: high_risk no confirmation blocked");
219
+ }
220
+ else {
221
+ failures.push(`A5: high_risk_operation 无确认应被 blocked/manual_required,实际: ${r5.plan_gate_status}`);
222
+ }
223
+ // Test 6: 已确认计划外动作 → blocked
224
+ const inScope = validateActionWithinPlan(["/src/engine/"], "/src/other/secret.ts", "execution_plan");
225
+ if (!inScope.allowed) {
226
+ evidenceRefs.push("test-a6-must-fail: action outside plan scope blocked");
227
+ }
228
+ else {
229
+ failures.push("A6: 计划外动作应被 blocked");
230
+ }
231
+ // Test 7: review 只要求审查不修复
232
+ const isReviewOnly = isReviewOnlyIntent("审查这段代码");
233
+ if (isReviewOnly) {
234
+ evidenceRefs.push("test-a7-pass: review intent detected as read-only");
235
+ }
236
+ else {
237
+ failures.push("A7: review 意图应被识别为只读");
238
+ }
239
+ // Test 8: plan evidence 可追溯
240
+ const evidence = createPlanProposalEvidence({
241
+ task_id: "test-a8",
242
+ task_type: "code_change",
243
+ user_intent: "修复 bug",
244
+ plan_level: "execution_plan",
245
+ plan_summary_zh: "修复 bug 计划",
246
+ proposed_steps: ["定位", "修复", "测试"],
247
+ verification_plan: ["运行测试"],
248
+ risks: ["回归风险"],
249
+ evidence_refs: ["ev-8"],
250
+ });
251
+ if (evidence.evidence_id && evidence.plan_id) {
252
+ evidenceRefs.push("test-a8-pass: evidence created with traceable refs");
253
+ }
254
+ else {
255
+ failures.push("A8: evidence 应包含可追溯引用");
256
+ }
257
+ return {
258
+ scenario_id: "release-scenario-baseline",
259
+ passed: failures.length === 0,
260
+ evidence_refs: evidenceRefs,
261
+ failures,
262
+ details: { tests_run: 8 },
263
+ };
264
+ }
265
+ /**
266
+ * 运行场景 B: Core Experience Principle。
267
+ */
268
+ export function runScenarioB() {
269
+ const failures = [];
270
+ const evidenceRefs = [];
271
+ // Test 1: 机制有 mainline hooks → pass
272
+ const r1 = evaluateCoreExperiencePrinciple({
273
+ task_id: "test-b1",
274
+ workflow_id: "wf-test",
275
+ has_mainline_hooks: true,
276
+ has_owner_contracts: true,
277
+ natural_language_entry: true,
278
+ requires_internal_contract_knowledge: false,
279
+ user_path_steps: 3,
280
+ has_failures: false,
281
+ hard_fail_downgraded: false,
282
+ forced_heavy_process: false,
283
+ has_sufficient_evidence: true,
284
+ output_too_long_no_summary: false,
285
+ report_only_no_repair: false,
286
+ failed_but_marked_done: false,
287
+ auto_repair_overreach: false,
288
+ repair_reverified: true,
289
+ outputs_raw_noise: false,
290
+ });
291
+ if (r1.passed) {
292
+ evidenceRefs.push("test-b1-pass: 机制强+路径短+证据足");
293
+ }
294
+ else {
295
+ failures.push(`B1: 合规评估应通过: ${r1.user_facing_summary_zh}`);
296
+ }
297
+ // Test 2: 用户需理解内部 contract → fail (must-fail)
298
+ const r2 = evaluateCoreExperiencePrinciple({
299
+ task_id: "test-b2",
300
+ workflow_id: "wf-test",
301
+ has_mainline_hooks: true,
302
+ has_owner_contracts: true,
303
+ natural_language_entry: false,
304
+ requires_internal_contract_knowledge: true,
305
+ user_path_steps: 8,
306
+ has_failures: false,
307
+ hard_fail_downgraded: false,
308
+ forced_heavy_process: false,
309
+ has_sufficient_evidence: true,
310
+ output_too_long_no_summary: false,
311
+ report_only_no_repair: false,
312
+ failed_but_marked_done: false,
313
+ auto_repair_overreach: false,
314
+ repair_reverified: true,
315
+ outputs_raw_noise: false,
316
+ });
317
+ if (!r2.passed) {
318
+ evidenceRefs.push("test-b2-must-fail: 用户路径过长+需理解内部contract");
319
+ }
320
+ else {
321
+ failures.push("B2: 用户需理解内部 contract + 路径过长应 fail");
322
+ }
323
+ // Test 3: 硬规则被降级 → fail
324
+ const r3 = evaluateCoreExperiencePrinciple({
325
+ task_id: "test-b3",
326
+ workflow_id: "wf-test",
327
+ has_mainline_hooks: true,
328
+ has_owner_contracts: true,
329
+ natural_language_entry: true,
330
+ requires_internal_contract_knowledge: false,
331
+ user_path_steps: 3,
332
+ has_failures: true,
333
+ hard_fail_downgraded: true,
334
+ forced_heavy_process: false,
335
+ has_sufficient_evidence: true,
336
+ output_too_long_no_summary: false,
337
+ report_only_no_repair: false,
338
+ failed_but_marked_done: false,
339
+ auto_repair_overreach: false,
340
+ repair_reverified: true,
341
+ outputs_raw_noise: false,
342
+ });
343
+ if (!r3.passed) {
344
+ evidenceRefs.push("test-b3-must-fail: 硬规则被降级为warning");
345
+ }
346
+ else {
347
+ failures.push("B3: 硬规则被降级应 fail");
348
+ }
349
+ // Test 4: 验证失败却 completed → fail
350
+ const noFake = evaluateNoFalseCompletion({
351
+ verification_passed: false,
352
+ build_passed: true,
353
+ browser_acceptance_passed: true,
354
+ guard_passed: true,
355
+ evidence_sufficient: true,
356
+ current_status: "completed",
357
+ });
358
+ if (noFake.decision === "blocked") {
359
+ evidenceRefs.push("test-b4-must-fail: 验证失败不能completed");
360
+ }
361
+ else {
362
+ failures.push(`B4: 验证失败不得 completed,实际: ${noFake.decision}`);
363
+ }
364
+ // Test 5: 只报告不修复 → fail
365
+ const r5 = evaluateCoreExperiencePrinciple({
366
+ task_id: "test-b5",
367
+ workflow_id: "wf-test",
368
+ has_mainline_hooks: true,
369
+ has_owner_contracts: true,
370
+ natural_language_entry: true,
371
+ requires_internal_contract_knowledge: false,
372
+ user_path_steps: 3,
373
+ has_failures: true,
374
+ hard_fail_downgraded: false,
375
+ forced_heavy_process: false,
376
+ has_sufficient_evidence: true,
377
+ output_too_long_no_summary: false,
378
+ report_only_no_repair: true,
379
+ failed_but_marked_done: false,
380
+ auto_repair_overreach: false,
381
+ repair_reverified: false,
382
+ outputs_raw_noise: false,
383
+ });
384
+ if (!r5.passed) {
385
+ evidenceRefs.push("test-b5-must-fail: 只报告不修复");
386
+ }
387
+ else {
388
+ failures.push("B5: 只报告不进入 repair 应 fail");
389
+ }
390
+ // Test 6: 低风险任务被强制重流程 → fail
391
+ const r6 = evaluateCoreExperiencePrinciple({
392
+ task_id: "test-b6",
393
+ workflow_id: "wf-test",
394
+ has_mainline_hooks: true,
395
+ has_owner_contracts: true,
396
+ natural_language_entry: true,
397
+ requires_internal_contract_knowledge: false,
398
+ user_path_steps: 2,
399
+ has_failures: false,
400
+ hard_fail_downgraded: false,
401
+ forced_heavy_process: true,
402
+ has_sufficient_evidence: true,
403
+ output_too_long_no_summary: false,
404
+ report_only_no_repair: false,
405
+ failed_but_marked_done: false,
406
+ auto_repair_overreach: false,
407
+ repair_reverified: true,
408
+ outputs_raw_noise: false,
409
+ });
410
+ if (!r6.passed) {
411
+ evidenceRefs.push("test-b6-must-fail: 低风险任务强制重流程");
412
+ }
413
+ else {
414
+ failures.push("B6: 低风险任务被强制重流程应 fail");
415
+ }
416
+ // Test 7: 高风险任务有足够确认 → pass
417
+ const friction = evaluateMechanismFriction({
418
+ added_steps: 2,
419
+ baseline_steps: 3,
420
+ risk_level: "high",
421
+ has_necessity_justification: true,
422
+ has_lightweight_path: true,
423
+ });
424
+ if (friction.passed) {
425
+ evidenceRefs.push("test-b7-pass: 高风险任务充分确认+必要性说明");
426
+ }
427
+ else {
428
+ failures.push(`B7: 高风险任务有充分确认应通过: ${friction.reason_zh}`);
429
+ }
430
+ return {
431
+ scenario_id: "release-scenario-user-project-init",
432
+ passed: failures.length === 0,
433
+ evidence_refs: evidenceRefs,
434
+ failures,
435
+ details: { tests_run: 7 },
436
+ };
437
+ }
438
+ /**
439
+ * 运行场景 C: Knowledge Asset Governance。
440
+ */
441
+ export function runScenarioC() {
442
+ const failures = [];
443
+ const evidenceRefs = [];
444
+ // Test 1: 缺 frontmatter → hard_fail
445
+ const assets1 = [
446
+ { frontmatter: { id: "ka-1", name: "测试资产" }, file_path: "test/ka1.md" },
447
+ ];
448
+ const findings1 = validateKnowledgeAssets(assets1);
449
+ const missingFields = findings1.filter((f) => f.severity === "hard_fail");
450
+ if (missingFields.length > 0) {
451
+ evidenceRefs.push("test-c1-must-fail: 缺 frontmatter 被检测");
452
+ }
453
+ else {
454
+ failures.push("C1: 缺 frontmatter 应被检测");
455
+ }
456
+ // Test 2: 重复 ID → hard_fail
457
+ const assets2 = [
458
+ { frontmatter: { id: "dup-1", name: "A", asset_kind: "hard_rule", lifecycle_status: "active", authority: "canonical", scope: ["all"], products: ["p1"], routes: ["r1"], primary_triggers: ["t1"], priority: "P0", specificity: 1, version: "1.0.0", last_reviewed: "2024-01-01", owner_mechanism_id: "m1", hard_blocks: ["b1"], required_evidence: ["e1"], fallback: "manual_required" }, file_path: "test/a.md" },
459
+ { frontmatter: { id: "dup-1", name: "B", asset_kind: "hard_rule", lifecycle_status: "active", authority: "canonical", scope: ["all"], products: ["p1"], routes: ["r1"], primary_triggers: ["t2"], priority: "P0", specificity: 1, version: "1.0.0", last_reviewed: "2024-01-01", owner_mechanism_id: "m2", hard_blocks: ["b2"], required_evidence: ["e2"], fallback: "manual_required" }, file_path: "test/b.md" },
460
+ ];
461
+ const findings2 = validateKnowledgeAssets(assets2);
462
+ const dupIds = findings2.filter((f) => f.message_zh && f.message_zh.includes("重复"));
463
+ if (dupIds.length > 0) {
464
+ evidenceRefs.push("test-c2-must-fail: 重复ID被检测");
465
+ }
466
+ else {
467
+ failures.push("C2: 重复ID应 hard_fail");
468
+ }
469
+ // Test 3: hard_rule 缺 owner → hard_fail
470
+ const assets3 = [
471
+ { frontmatter: { id: "ka-3", name: "硬规则", asset_kind: "hard_rule", lifecycle_status: "active", authority: "canonical", scope: ["all"], products: ["p1"], routes: ["r1"], primary_triggers: ["t1"], priority: "P0", specificity: 1, version: "1.0.0", last_reviewed: "2024-01-01" }, file_path: "test/ka3.md" },
472
+ ];
473
+ const findings3 = validateKnowledgeAssets(assets3);
474
+ const ownerMissing = findings3.filter((f) => f.message_zh && f.message_zh.includes("owner"));
475
+ if (ownerMissing.length > 0) {
476
+ evidenceRefs.push("test-c3-must-fail: hard_rule缺owner被检测");
477
+ }
478
+ else {
479
+ failures.push("C3: hard_rule 缺 owner_mechanism_id 应 hard_fail");
480
+ }
481
+ // Test 4: deprecated 被注入 → hard_fail
482
+ const auditReport = auditKnowledgeAssets([
483
+ { frontmatter: { id: "ka-dep", name: "废弃规则", asset_kind: "hard_rule", lifecycle_status: "deprecated", authority: "canonical", scope: ["all"], products: ["p1"], routes: ["r1", "r2"], primary_triggers: ["t1"], priority: "P0", specificity: 1, version: "1.0.0", last_reviewed: "2024-01-01", owner_mechanism_id: "m1", hard_blocks: ["b1"], required_evidence: ["e1"], fallback: "manual_required" }, file_path: "test/dep.md" },
484
+ ]);
485
+ const depInjected = auditReport.findings.filter((f) => f.kind === "deprecated_injected");
486
+ if (depInjected.length > 0) {
487
+ evidenceRefs.push("test-c4-must-fail: deprecated被注入被检测");
488
+ }
489
+ else {
490
+ failures.push("C4: deprecated 有活跃路由应被检测");
491
+ }
492
+ // Test 5: 消费快照完整性
493
+ const snapshot = createKnowledgeConsumptionSnapshot({
494
+ build_id: "test-build",
495
+ route: "code_change",
496
+ indexed_assets: ["ka-1", "ka-2"],
497
+ injected_assets: ["ka-1"],
498
+ filtered_assets: [{ asset_id: "ka-3", reason: "scope_mismatch" }],
499
+ degraded_assets: [{ asset_id: "ka-4", reason: "deprecated" }],
500
+ conflict_resolutions: [{ winner: "ka-1", losers: ["ka-1b"], reason: "canonical优先" }],
501
+ });
502
+ const snapValid = validateConsumptionSnapshot(snapshot);
503
+ if (snapValid.passed && snapshot.total_indexed > 0 && snapshot.total_injected > 0) {
504
+ evidenceRefs.push("test-c5-pass: 消费快照完整");
505
+ }
506
+ else {
507
+ failures.push(`C5: 消费快照验证失败: ${snapValid.issues.join(", ")}`);
508
+ }
509
+ // Test 6: 消费路径可追踪
510
+ const paths = verifyConsumptionPaths({
511
+ intent_router_consumes: ["routes", "primary_triggers", "negative_triggers", "specificity"],
512
+ expander_consumes: ["authority", "priority", "required_evidence", "asset_kind"],
513
+ verifier_consumes: ["hard_blocks", "required_evidence", "fallback", "lifecycle_status"],
514
+ adapter_prompt_consumes: ["中文语义", "模板变量", "输出格式", "消费快照摘要"],
515
+ sync_migration_consumes: ["version", "schema", "hash", "user_modified", "migration_note"],
516
+ });
517
+ if (paths.passed) {
518
+ evidenceRefs.push("test-c6-pass: 消费路径可追踪");
519
+ }
520
+ else {
521
+ failures.push(`C6: 消费路径不可追踪: ${paths.missing.join(", ")}`);
522
+ }
523
+ // Test 7: canonical 冲突检测
524
+ const canonicals = [
525
+ { frontmatter: { id: "can-1", name: "React路由规范", asset_kind: "hard_rule", lifecycle_status: "active", authority: "canonical", scope: ["frontend"], products: ["p1"], routes: ["r1"], primary_triggers: ["React路由"], priority: "P0", specificity: 1, version: "1.0.0", last_reviewed: "2024-01-01", owner_mechanism_id: "m1", hard_blocks: ["b1"], required_evidence: ["e1"], fallback: "manual_required" }, file_path: "test/can1.md", body: "", content_hash: "" },
526
+ { frontmatter: { id: "can-2", name: "React路由规范", asset_kind: "hard_rule", lifecycle_status: "active", authority: "canonical", scope: ["frontend"], products: ["p2"], routes: ["r2"], primary_triggers: ["React路由"], priority: "P0", specificity: 1, version: "1.0.0", last_reviewed: "2024-01-01", owner_mechanism_id: "m2", hard_blocks: ["b2"], required_evidence: ["e2"], fallback: "manual_required" }, file_path: "test/can2.md", body: "", content_hash: "" },
527
+ ];
528
+ const conflicts = detectDuplicateAndConflicts(canonicals);
529
+ const semanticConflicts = conflicts.filter((c) => c.kind === "semantic_overlap" || c.kind === "conflict");
530
+ if (semanticConflicts.length > 0) {
531
+ evidenceRefs.push("test-c7-must-fail: canonical冲突被检测");
532
+ }
533
+ else {
534
+ failures.push("C7: canonical 主题冲突应被检测");
535
+ }
536
+ // Test 8: 审计报告完整性
537
+ const fullAuditReport = auditKnowledgeAssets([
538
+ { frontmatter: { id: "ka-full", name: "完整资产", asset_kind: "hard_rule", lifecycle_status: "active", authority: "canonical", scope: ["all"], products: ["p1"], routes: ["r1"], primary_triggers: ["t1"], priority: "P0", specificity: 1, version: "1.0.0", last_reviewed: "2024-01-01", owner_mechanism_id: "m1", hard_blocks: ["b1"], required_evidence: ["e1"], fallback: "manual_required", consumes: ["dep-1"] }, file_path: "test/full.md" },
539
+ ]);
540
+ if (fullAuditReport.total_assets > 0 && fullAuditReport.findings.length >= 0) {
541
+ evidenceRefs.push("test-c8-pass: 审计报告完整");
542
+ }
543
+ else {
544
+ failures.push("C8: 审计报告不完整");
545
+ }
546
+ return {
547
+ scenario_id: "release-scenario-regression",
548
+ passed: failures.length === 0,
549
+ evidence_refs: evidenceRefs,
550
+ failures,
551
+ details: { tests_run: 8 },
552
+ };
553
+ }
554
+ /**
555
+ * 运行场景 D: Instruction Contract。
556
+ */
557
+ export function runScenarioD() {
558
+ const failures = [];
559
+ const evidenceRefs = [];
560
+ // Test 1: 完整合同通过校验
561
+ const fullContract = {
562
+ instruction_id: "ic-test-1",
563
+ task_id: "task-d1",
564
+ goal: "修复 bug",
565
+ non_goals: ["不修改其他模块"],
566
+ scope: ["/src/engine/test.ts"],
567
+ output_location: "src/engine/test.ts",
568
+ acceptance_criteria: ["测试通过"],
569
+ bypass_prohibited: ["only_test", "only_docs"],
570
+ status: "confirmed",
571
+ created_at: new Date().toISOString(),
572
+ };
573
+ const r1 = validateInstructionContract(fullContract);
574
+ if (r1.valid) {
575
+ evidenceRefs.push("test-d1-pass: 完整合同校验通过");
576
+ }
577
+ else {
578
+ failures.push(`D1: 完整合同应通过校验: ${r1.reason}`);
579
+ }
580
+ // Test 2: 缺 goal → 不通过
581
+ const noGoal = { ...fullContract, goal: "" };
582
+ const r2 = validateInstructionContract(noGoal);
583
+ if (!r2.valid) {
584
+ evidenceRefs.push("test-d2-must-fail: 缺 goal 被检测");
585
+ }
586
+ else {
587
+ failures.push("D2: 缺 goal 应不通过");
588
+ }
589
+ // Test 3: 缺 scope → 不通过
590
+ const noScope = { ...fullContract, scope: [] };
591
+ const r3 = validateInstructionContract(noScope);
592
+ if (!r3.valid) {
593
+ evidenceRefs.push("test-d3-must-fail: 缺 scope 被检测");
594
+ }
595
+ else {
596
+ failures.push("D3: 缺 scope 应不通过");
597
+ }
598
+ // Test 4: 缺 output_location → 不通过
599
+ const noOutput = { ...fullContract, output_location: "" };
600
+ const r4 = validateInstructionContract(noOutput);
601
+ if (!r4.valid) {
602
+ evidenceRefs.push("test-d4-must-fail: 缺 output_location 被检测");
603
+ }
604
+ else {
605
+ failures.push("D4: 缺 output_location 应不通过");
606
+ }
607
+ // Test 5: completeness 检查 — 完整合同应通过
608
+ const comp1 = checkInstructionCompleteness(fullContract);
609
+ if (comp1.complete) {
610
+ evidenceRefs.push("test-d5-pass: 完整合同 completeness 通过");
611
+ }
612
+ else {
613
+ failures.push(`D5: 完整合同 completeness 应通过: ${comp1.missing?.join(", ") ?? comp1.reason_zh}`);
614
+ }
615
+ return {
616
+ scenario_id: "release-scenario-instruction-contract",
617
+ passed: failures.length === 0,
618
+ evidence_refs: evidenceRefs,
619
+ failures,
620
+ details: { tests_run: 5 },
621
+ };
622
+ }
623
+ /**
624
+ * 运行场景 E: Log Governance。
625
+ */
626
+ export function runScenarioE() {
627
+ const failures = [];
628
+ const evidenceRefs = [];
629
+ // Test 1: logger 模块可导入
630
+ evidenceRefs.push("test-e1-pass: logger 模块可导入");
631
+ // Test 2: initLogger/silent 模式
632
+ initLogger({ silent: true });
633
+ resetLogger();
634
+ evidenceRefs.push("test-e2-pass: initLogger({silent:true}) + resetLogger 正常工作");
635
+ // 测试 3:initLoggerFromEnv
636
+ const origDebug = process.env.SOLOFORGE_DEBUG;
637
+ process.env.SOLOFORGE_DEBUG = "1";
638
+ initLoggerFromEnv();
639
+ resetLogger();
640
+ if (origDebug === undefined) {
641
+ delete process.env.SOLOFORGE_DEBUG;
642
+ }
643
+ else {
644
+ process.env.SOLOFORGE_DEBUG = origDebug;
645
+ }
646
+ evidenceRefs.push("test-e3-pass: initLoggerFromEnv 正常工作");
647
+ // Test 4: --json 模式不污染 stdout
648
+ initLogger({ json: true, silent: true });
649
+ resetLogger();
650
+ evidenceRefs.push("test-e4-pass: json 模式初始化正常");
651
+ return {
652
+ scenario_id: "release-scenario-log-governance",
653
+ passed: failures.length === 0,
654
+ evidence_refs: evidenceRefs,
655
+ failures,
656
+ details: { tests_run: 4 },
657
+ };
658
+ }
659
+ /**
660
+ * 运行场景 F: Evidence Grounding / Anti-Hallucination。
661
+ */
662
+ export function runScenarioF() {
663
+ const failures = [];
664
+ const evidenceRefs = [];
665
+ // Test 1: createEvidenceGroundingSystem 可调用
666
+ const system = createEvidenceGroundingSystem();
667
+ if (system) {
668
+ evidenceRefs.push("test-f1-pass: EvidenceGroundingSystem 创建成功");
669
+ }
670
+ else {
671
+ failures.push("F1: createEvidenceGroundingSystem 应返回有效对象");
672
+ }
673
+ // Test 2: isHighRiskClaimCategory 对高风险分类返回 true
674
+ const archHighRisk = isHighRiskClaimCategory("architecture");
675
+ if (archHighRisk) {
676
+ evidenceRefs.push("test-f2-pass: architecture 是高风险分类");
677
+ }
678
+ else {
679
+ failures.push("F2: architecture 应是高风险分类");
680
+ }
681
+ // Test 3: 低风险分类不应是高风险
682
+ const userConfirmLowRisk = isHighRiskClaimCategory("user_confirmation");
683
+ if (!userConfirmLowRisk) {
684
+ evidenceRefs.push("test-f3-pass: user_confirmation 不是高风险分类");
685
+ }
686
+ else {
687
+ failures.push("F3: user_confirmation 不应是高风险分类");
688
+ }
689
+ return {
690
+ scenario_id: "release-scenario-evidence-grounding",
691
+ passed: failures.length === 0,
692
+ evidence_refs: evidenceRefs,
693
+ failures,
694
+ details: { tests_run: 3 },
695
+ };
696
+ }
697
+ /**
698
+ * 运行所有发布门禁场景。
699
+ */
700
+ export function runAllReleaseGateScenarios() {
701
+ return [runScenarioA(), runScenarioB(), runScenarioC(), runScenarioD(), runScenarioE(), runScenarioF()];
702
+ }
703
+ /**
704
+ * 验证发布门禁场景矩阵是否全部通过。
705
+ */
706
+ export function validateReleaseGateScenarioMatrix() {
707
+ const results = runAllReleaseGateScenarios();
708
+ const allPassed = results.every((r) => r.passed);
709
+ return {
710
+ passed: allPassed,
711
+ results,
712
+ summary_zh: allPassed
713
+ ? "发布门禁场景矩阵全部通过"
714
+ : `场景未通过: ${results.filter((r) => !r.passed).map((r) => r.scenario_id).join(", ")}`,
715
+ };
716
+ }
717
+ //# sourceMappingURL=release_gate_scenario_registry.js.map