soloforge 1.2.19 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/README.md +140 -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 +255 -1
  12. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  13. package/dist/adapters/claude_code/tools.js +981 -7
  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 +2 -1
  23. package/dist/adapters/shared/workflow_template.js.map +1 -1
  24. package/dist/adapters/trae/trae_config.d.ts +1 -6
  25. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  26. package/dist/adapters/trae/trae_config.js +3 -2
  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 +1110 -157
  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_design_contract.d.ts +49 -0
  42. package/dist/engine/architecture_design_contract.d.ts.map +1 -0
  43. package/dist/engine/architecture_design_contract.js +169 -0
  44. package/dist/engine/architecture_design_contract.js.map +1 -0
  45. package/dist/engine/artifact_contract_registry.d.ts.map +1 -1
  46. package/dist/engine/artifact_contract_registry.js +7 -14
  47. package/dist/engine/artifact_contract_registry.js.map +1 -1
  48. package/dist/engine/{batch1_manifest.d.ts → asset_manifest.d.ts} +8 -8
  49. package/dist/engine/asset_manifest.d.ts.map +1 -0
  50. package/dist/engine/{batch1_manifest.js → asset_manifest.js} +52 -9
  51. package/dist/engine/asset_manifest.js.map +1 -0
  52. package/dist/engine/audit_pool.d.ts.map +1 -1
  53. package/dist/engine/audit_pool.js +6 -4
  54. package/dist/engine/audit_pool.js.map +1 -1
  55. package/dist/engine/audit_sampler.d.ts.map +1 -1
  56. package/dist/engine/audit_sampler.js +2 -1
  57. package/dist/engine/audit_sampler.js.map +1 -1
  58. package/dist/engine/audit_verifier.d.ts.map +1 -1
  59. package/dist/engine/audit_verifier.js +5 -4
  60. package/dist/engine/audit_verifier.js.map +1 -1
  61. package/dist/engine/brainstorm_contract.d.ts +46 -0
  62. package/dist/engine/brainstorm_contract.d.ts.map +1 -0
  63. package/dist/engine/brainstorm_contract.js +136 -0
  64. package/dist/engine/brainstorm_contract.js.map +1 -0
  65. package/dist/engine/capability_action_advisor.d.ts.map +1 -1
  66. package/dist/engine/capability_action_advisor.js +8 -7
  67. package/dist/engine/capability_action_advisor.js.map +1 -1
  68. package/dist/engine/capability_registry.d.ts.map +1 -1
  69. package/dist/engine/capability_registry.js +0 -7
  70. package/dist/engine/capability_registry.js.map +1 -1
  71. package/dist/engine/capability_state_store.d.ts.map +1 -1
  72. package/dist/engine/capability_state_store.js +7 -6
  73. package/dist/engine/capability_state_store.js.map +1 -1
  74. package/dist/engine/change_coordinator.d.ts.map +1 -1
  75. package/dist/engine/change_coordinator.js +4 -3
  76. package/dist/engine/change_coordinator.js.map +1 -1
  77. package/dist/engine/chinese_semantic_priority.d.ts +62 -0
  78. package/dist/engine/chinese_semantic_priority.d.ts.map +1 -0
  79. package/dist/engine/chinese_semantic_priority.js +153 -0
  80. package/dist/engine/chinese_semantic_priority.js.map +1 -0
  81. package/dist/engine/coding_readiness_gate.d.ts +46 -0
  82. package/dist/engine/coding_readiness_gate.d.ts.map +1 -0
  83. package/dist/engine/coding_readiness_gate.js +175 -0
  84. package/dist/engine/coding_readiness_gate.js.map +1 -0
  85. package/dist/engine/cognitive_anchor.d.ts.map +1 -1
  86. package/dist/engine/cognitive_anchor.js +7 -6
  87. package/dist/engine/cognitive_anchor.js.map +1 -1
  88. package/dist/engine/command_execution_contract.d.ts.map +1 -1
  89. package/dist/engine/command_execution_contract.js +13 -12
  90. package/dist/engine/command_execution_contract.js.map +1 -1
  91. package/dist/engine/confidence_scorer.d.ts.map +1 -1
  92. package/dist/engine/confidence_scorer.js +2 -1
  93. package/dist/engine/confidence_scorer.js.map +1 -1
  94. package/dist/engine/config_precedence_contract.d.ts.map +1 -1
  95. package/dist/engine/config_precedence_contract.js +9 -8
  96. package/dist/engine/config_precedence_contract.js.map +1 -1
  97. package/dist/engine/conflict_gate.d.ts.map +1 -1
  98. package/dist/engine/conflict_gate.js +4 -3
  99. package/dist/engine/conflict_gate.js.map +1 -1
  100. package/dist/engine/consumable_asset_registry.d.ts +4 -0
  101. package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
  102. package/dist/engine/consumable_asset_registry.js +307 -0
  103. package/dist/engine/consumable_asset_registry.js.map +1 -1
  104. package/dist/engine/consumption_trace_store.d.ts +50 -0
  105. package/dist/engine/consumption_trace_store.d.ts.map +1 -0
  106. package/dist/engine/consumption_trace_store.js +84 -0
  107. package/dist/engine/consumption_trace_store.js.map +1 -0
  108. package/dist/engine/contract_guard.d.ts.map +1 -1
  109. package/dist/engine/contract_guard.js +7 -6
  110. package/dist/engine/contract_guard.js.map +1 -1
  111. package/dist/engine/contract_registry.d.ts +113 -0
  112. package/dist/engine/contract_registry.d.ts.map +1 -0
  113. package/dist/engine/contract_registry.js +1632 -0
  114. package/dist/engine/contract_registry.js.map +1 -0
  115. package/dist/engine/contract_state_store.d.ts +67 -0
  116. package/dist/engine/contract_state_store.d.ts.map +1 -0
  117. package/dist/engine/contract_state_store.js +167 -0
  118. package/dist/engine/contract_state_store.js.map +1 -0
  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 +33 -3
  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/degradation.d.ts +58 -0
  146. package/dist/engine/degradation.d.ts.map +1 -0
  147. package/dist/engine/degradation.js +74 -0
  148. package/dist/engine/degradation.js.map +1 -0
  149. package/dist/engine/delivery.d.ts.map +1 -1
  150. package/dist/engine/delivery.js +16 -15
  151. package/dist/engine/delivery.js.map +1 -1
  152. package/dist/engine/delivery_readiness.d.ts +70 -0
  153. package/dist/engine/delivery_readiness.d.ts.map +1 -0
  154. package/dist/engine/delivery_readiness.js +198 -0
  155. package/dist/engine/delivery_readiness.js.map +1 -0
  156. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  157. package/dist/engine/dependency_scanner.js +6 -5
  158. package/dist/engine/dependency_scanner.js.map +1 -1
  159. package/dist/engine/deprecated_contract.d.ts +21 -0
  160. package/dist/engine/deprecated_contract.d.ts.map +1 -0
  161. package/dist/engine/deprecated_contract.js +14 -0
  162. package/dist/engine/deprecated_contract.js.map +1 -0
  163. package/dist/engine/detail_discipline.d.ts +40 -0
  164. package/dist/engine/detail_discipline.d.ts.map +1 -0
  165. package/dist/engine/detail_discipline.js +107 -0
  166. package/dist/engine/detail_discipline.js.map +1 -0
  167. package/dist/engine/developer_sovereignty.d.ts.map +1 -1
  168. package/dist/engine/developer_sovereignty.js +6 -5
  169. package/dist/engine/developer_sovereignty.js.map +1 -1
  170. package/dist/engine/diagnostic_registry.d.ts +64 -0
  171. package/dist/engine/diagnostic_registry.d.ts.map +1 -0
  172. package/dist/engine/diagnostic_registry.js +176 -0
  173. package/dist/engine/diagnostic_registry.js.map +1 -0
  174. package/dist/engine/diff_ownership.d.ts.map +1 -1
  175. package/dist/engine/diff_ownership.js +9 -8
  176. package/dist/engine/diff_ownership.js.map +1 -1
  177. package/dist/engine/diff_ownership_store.d.ts.map +1 -1
  178. package/dist/engine/diff_ownership_store.js +8 -7
  179. package/dist/engine/diff_ownership_store.js.map +1 -1
  180. package/dist/engine/documentation_governance.d.ts +55 -0
  181. package/dist/engine/documentation_governance.d.ts.map +1 -0
  182. package/dist/engine/documentation_governance.js +249 -0
  183. package/dist/engine/documentation_governance.js.map +1 -0
  184. package/dist/engine/dual_layer_mechanism_registry.d.ts +6 -4
  185. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
  186. package/dist/engine/dual_layer_mechanism_registry.js +731 -11
  187. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  188. package/dist/engine/enforcement_guard.d.ts +84 -0
  189. package/dist/engine/enforcement_guard.d.ts.map +1 -0
  190. package/dist/engine/enforcement_guard.js +319 -0
  191. package/dist/engine/enforcement_guard.js.map +1 -0
  192. package/dist/engine/escape_report.d.ts.map +1 -1
  193. package/dist/engine/escape_report.js +4 -3
  194. package/dist/engine/escape_report.js.map +1 -1
  195. package/dist/engine/evolution_regression_gate.d.ts +42 -0
  196. package/dist/engine/evolution_regression_gate.d.ts.map +1 -0
  197. package/dist/engine/evolution_regression_gate.js +159 -0
  198. package/dist/engine/evolution_regression_gate.js.map +1 -0
  199. package/dist/engine/existing_system_analysis.d.ts +37 -0
  200. package/dist/engine/existing_system_analysis.d.ts.map +1 -0
  201. package/dist/engine/existing_system_analysis.js +151 -0
  202. package/dist/engine/existing_system_analysis.js.map +1 -0
  203. package/dist/engine/exploration.d.ts.map +1 -1
  204. package/dist/engine/exploration.js +7 -6
  205. package/dist/engine/exploration.js.map +1 -1
  206. package/dist/engine/extension_contract.d.ts +50 -0
  207. package/dist/engine/extension_contract.d.ts.map +1 -0
  208. package/dist/engine/extension_contract.js +158 -0
  209. package/dist/engine/extension_contract.js.map +1 -0
  210. package/dist/engine/extension_platform_contracts.d.ts +712 -0
  211. package/dist/engine/extension_platform_contracts.d.ts.map +1 -0
  212. package/dist/engine/extension_platform_contracts.js +42 -0
  213. package/dist/engine/extension_platform_contracts.js.map +1 -0
  214. package/dist/engine/extension_scenario_registry.d.ts +30 -0
  215. package/dist/engine/extension_scenario_registry.d.ts.map +1 -0
  216. package/dist/engine/extension_scenario_registry.js +976 -0
  217. package/dist/engine/extension_scenario_registry.js.map +1 -0
  218. package/dist/engine/failure_classifier.d.ts.map +1 -1
  219. package/dist/engine/failure_classifier.js +9 -8
  220. package/dist/engine/failure_classifier.js.map +1 -1
  221. package/dist/engine/failure_report.d.ts +74 -0
  222. package/dist/engine/failure_report.d.ts.map +1 -0
  223. package/dist/engine/failure_report.js +143 -0
  224. package/dist/engine/failure_report.js.map +1 -0
  225. package/dist/engine/feasibility_checker.d.ts.map +1 -1
  226. package/dist/engine/feasibility_checker.js +5 -4
  227. package/dist/engine/feasibility_checker.js.map +1 -1
  228. package/dist/engine/first_principles.d.ts +35 -0
  229. package/dist/engine/first_principles.d.ts.map +1 -0
  230. package/dist/engine/first_principles.js +128 -0
  231. package/dist/engine/first_principles.js.map +1 -0
  232. package/dist/engine/{batch1_scenario_registry.d.ts → foundation_scenario_registry.d.ts} +15 -15
  233. package/dist/engine/foundation_scenario_registry.d.ts.map +1 -0
  234. package/dist/engine/{batch1_scenario_registry.js → foundation_scenario_registry.js} +22 -25
  235. package/dist/engine/foundation_scenario_registry.js.map +1 -0
  236. package/dist/engine/{batch1_scenario_runners.d.ts → foundation_scenario_runners.d.ts} +1 -1
  237. package/dist/engine/foundation_scenario_runners.d.ts.map +1 -0
  238. package/dist/engine/{batch1_scenario_runners.js → foundation_scenario_runners.js} +8 -7
  239. package/dist/engine/foundation_scenario_runners.js.map +1 -0
  240. package/dist/engine/git_deps.d.ts.map +1 -1
  241. package/dist/engine/git_deps.js +2 -1
  242. package/dist/engine/git_deps.js.map +1 -1
  243. package/dist/engine/governance_report.d.ts +9 -1
  244. package/dist/engine/governance_report.d.ts.map +1 -1
  245. package/dist/engine/governance_report.js +25 -10
  246. package/dist/engine/governance_report.js.map +1 -1
  247. package/dist/engine/impact_analyzer.d.ts.map +1 -1
  248. package/dist/engine/impact_analyzer.js +5 -4
  249. package/dist/engine/impact_analyzer.js.map +1 -1
  250. package/dist/engine/implementation_roadmap_registry.d.ts +1 -1
  251. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  252. package/dist/engine/implementation_roadmap_registry.js +237 -92
  253. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  254. package/dist/engine/input_material_contract_registry.d.ts.map +1 -1
  255. package/dist/engine/input_material_contract_registry.js +4 -3
  256. package/dist/engine/input_material_contract_registry.js.map +1 -1
  257. package/dist/engine/instruction_contract.d.ts +68 -0
  258. package/dist/engine/instruction_contract.d.ts.map +1 -0
  259. package/dist/engine/instruction_contract.js +123 -0
  260. package/dist/engine/instruction_contract.js.map +1 -0
  261. package/dist/engine/intent_expander.d.ts.map +1 -1
  262. package/dist/engine/intent_expander.js +339 -1
  263. package/dist/engine/intent_expander.js.map +1 -1
  264. package/dist/engine/intent_router.d.ts +11 -2
  265. package/dist/engine/intent_router.d.ts.map +1 -1
  266. package/dist/engine/intent_router.js +121 -1
  267. package/dist/engine/intent_router.js.map +1 -1
  268. package/dist/engine/intent_signal_extractor.d.ts +3 -0
  269. package/dist/engine/intent_signal_extractor.d.ts.map +1 -1
  270. package/dist/engine/intent_signal_extractor.js +49 -0
  271. package/dist/engine/intent_signal_extractor.js.map +1 -1
  272. package/dist/engine/io_controller.d.ts.map +1 -1
  273. package/dist/engine/io_controller.js +8 -7
  274. package/dist/engine/io_controller.js.map +1 -1
  275. package/dist/engine/java_quality_guard.d.ts.map +1 -1
  276. package/dist/engine/java_quality_guard.js +5 -18
  277. package/dist/engine/java_quality_guard.js.map +1 -1
  278. package/dist/engine/job_manager.d.ts.map +1 -1
  279. package/dist/engine/job_manager.js +8 -7
  280. package/dist/engine/job_manager.js.map +1 -1
  281. package/dist/engine/knowledge_acceptance_registry.d.ts +35 -0
  282. package/dist/engine/knowledge_acceptance_registry.d.ts.map +1 -0
  283. package/dist/engine/knowledge_acceptance_registry.js +271 -0
  284. package/dist/engine/knowledge_acceptance_registry.js.map +1 -0
  285. package/dist/engine/knowledge_asset_audit.d.ts +65 -0
  286. package/dist/engine/knowledge_asset_audit.d.ts.map +1 -0
  287. package/dist/engine/knowledge_asset_audit.js +230 -0
  288. package/dist/engine/knowledge_asset_audit.js.map +1 -0
  289. package/dist/engine/knowledge_asset_consumer.d.ts +150 -0
  290. package/dist/engine/knowledge_asset_consumer.d.ts.map +1 -0
  291. package/dist/engine/knowledge_asset_consumer.js +279 -0
  292. package/dist/engine/knowledge_asset_consumer.js.map +1 -0
  293. package/dist/engine/knowledge_asset_generation_gate.d.ts +38 -0
  294. package/dist/engine/knowledge_asset_generation_gate.d.ts.map +1 -0
  295. package/dist/engine/knowledge_asset_generation_gate.js +131 -0
  296. package/dist/engine/knowledge_asset_generation_gate.js.map +1 -0
  297. package/dist/engine/knowledge_asset_migration.d.ts +117 -0
  298. package/dist/engine/knowledge_asset_migration.d.ts.map +1 -0
  299. package/dist/engine/knowledge_asset_migration.js +204 -0
  300. package/dist/engine/knowledge_asset_migration.js.map +1 -0
  301. package/dist/engine/knowledge_asset_schema.d.ts +97 -0
  302. package/dist/engine/knowledge_asset_schema.d.ts.map +1 -0
  303. package/dist/engine/knowledge_asset_schema.js +413 -0
  304. package/dist/engine/knowledge_asset_schema.js.map +1 -0
  305. package/dist/engine/knowledge_config_loader.d.ts.map +1 -1
  306. package/dist/engine/knowledge_config_loader.js +5 -4
  307. package/dist/engine/knowledge_config_loader.js.map +1 -1
  308. package/dist/engine/knowledge_consumption_snapshot.d.ts +91 -0
  309. package/dist/engine/knowledge_consumption_snapshot.d.ts.map +1 -0
  310. package/dist/engine/knowledge_consumption_snapshot.js +113 -0
  311. package/dist/engine/knowledge_consumption_snapshot.js.map +1 -0
  312. package/dist/engine/knowledge_evolution.d.ts +82 -0
  313. package/dist/engine/knowledge_evolution.d.ts.map +1 -0
  314. package/dist/engine/knowledge_evolution.js +272 -0
  315. package/dist/engine/knowledge_evolution.js.map +1 -0
  316. package/dist/engine/knowledge_lifecycle.d.ts +83 -0
  317. package/dist/engine/knowledge_lifecycle.d.ts.map +1 -0
  318. package/dist/engine/knowledge_lifecycle.js +247 -0
  319. package/dist/engine/knowledge_lifecycle.js.map +1 -0
  320. package/dist/engine/knowledge_manager.d.ts.map +1 -1
  321. package/dist/engine/knowledge_manager.js +9 -8
  322. package/dist/engine/knowledge_manager.js.map +1 -1
  323. package/dist/engine/knowledge_scenario_registry.d.ts +21 -0
  324. package/dist/engine/knowledge_scenario_registry.d.ts.map +1 -0
  325. package/dist/engine/knowledge_scenario_registry.js +337 -0
  326. package/dist/engine/knowledge_scenario_registry.js.map +1 -0
  327. package/dist/engine/knowledge_sovereignty.d.ts.map +1 -1
  328. package/dist/engine/knowledge_sovereignty.js +5 -4
  329. package/dist/engine/knowledge_sovereignty.js.map +1 -1
  330. package/dist/engine/knowledge_template_contracts.d.ts +244 -0
  331. package/dist/engine/knowledge_template_contracts.d.ts.map +1 -0
  332. package/dist/engine/knowledge_template_contracts.js +26 -0
  333. package/dist/engine/knowledge_template_contracts.js.map +1 -0
  334. package/dist/engine/language_policy.d.ts +78 -0
  335. package/dist/engine/language_policy.d.ts.map +1 -0
  336. package/dist/engine/language_policy.js +139 -0
  337. package/dist/engine/language_policy.js.map +1 -0
  338. package/dist/engine/language_policy_contract.d.ts +52 -0
  339. package/dist/engine/language_policy_contract.d.ts.map +1 -0
  340. package/dist/engine/language_policy_contract.js +78 -0
  341. package/dist/engine/language_policy_contract.js.map +1 -0
  342. package/dist/engine/llm_gateway.d.ts.map +1 -1
  343. package/dist/engine/llm_gateway.js +10 -9
  344. package/dist/engine/llm_gateway.js.map +1 -1
  345. package/dist/engine/local_docker_acceptance.d.ts +94 -0
  346. package/dist/engine/local_docker_acceptance.d.ts.map +1 -0
  347. package/dist/engine/local_docker_acceptance.js +312 -0
  348. package/dist/engine/local_docker_acceptance.js.map +1 -0
  349. package/dist/engine/logger.d.ts +64 -0
  350. package/dist/engine/logger.d.ts.map +1 -0
  351. package/dist/engine/logger.js +115 -0
  352. package/dist/engine/logger.js.map +1 -0
  353. package/dist/engine/main_path_integration_contract.d.ts.map +1 -1
  354. package/dist/engine/main_path_integration_contract.js +43 -42
  355. package/dist/engine/main_path_integration_contract.js.map +1 -1
  356. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  357. package/dist/engine/mechanism_contract_registry.js +448 -17
  358. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  359. package/dist/engine/mechanism_family_registry.d.ts +48 -0
  360. package/dist/engine/mechanism_family_registry.d.ts.map +1 -0
  361. package/dist/engine/mechanism_family_registry.js +197 -0
  362. package/dist/engine/mechanism_family_registry.js.map +1 -0
  363. package/dist/engine/metric_governance.d.ts +51 -0
  364. package/dist/engine/metric_governance.d.ts.map +1 -0
  365. package/dist/engine/metric_governance.js +138 -0
  366. package/dist/engine/metric_governance.js.map +1 -0
  367. package/dist/engine/migration_guard.d.ts.map +1 -1
  368. package/dist/engine/migration_guard.js +6 -5
  369. package/dist/engine/migration_guard.js.map +1 -1
  370. package/dist/engine/mutation_audit.d.ts.map +1 -1
  371. package/dist/engine/mutation_audit.js +6 -5
  372. package/dist/engine/mutation_audit.js.map +1 -1
  373. package/dist/engine/observability.d.ts +11 -0
  374. package/dist/engine/observability.d.ts.map +1 -1
  375. package/dist/engine/observability.js +60 -8
  376. package/dist/engine/observability.js.map +1 -1
  377. package/dist/engine/onboarding.d.ts.map +1 -1
  378. package/dist/engine/onboarding.js +17 -16
  379. package/dist/engine/onboarding.js.map +1 -1
  380. package/dist/engine/plan_proposal_gate.d.ts +131 -0
  381. package/dist/engine/plan_proposal_gate.d.ts.map +1 -0
  382. package/dist/engine/plan_proposal_gate.js +340 -0
  383. package/dist/engine/plan_proposal_gate.js.map +1 -0
  384. package/dist/engine/platform_context.d.ts +44 -0
  385. package/dist/engine/platform_context.d.ts.map +1 -0
  386. package/dist/engine/platform_context.js +165 -0
  387. package/dist/engine/platform_context.js.map +1 -0
  388. package/dist/engine/policy_drift_detector.d.ts +20 -0
  389. package/dist/engine/policy_drift_detector.d.ts.map +1 -1
  390. package/dist/engine/policy_drift_detector.js +85 -5
  391. package/dist/engine/policy_drift_detector.js.map +1 -1
  392. package/dist/engine/regression_matrix.d.ts.map +1 -1
  393. package/dist/engine/regression_matrix.js +15 -14
  394. package/dist/engine/regression_matrix.js.map +1 -1
  395. package/dist/engine/release_compatibility.d.ts +62 -0
  396. package/dist/engine/release_compatibility.d.ts.map +1 -0
  397. package/dist/engine/release_compatibility.js +145 -0
  398. package/dist/engine/release_compatibility.js.map +1 -0
  399. package/dist/engine/release_gate.d.ts +29 -0
  400. package/dist/engine/release_gate.d.ts.map +1 -0
  401. package/dist/engine/release_gate.js +675 -0
  402. package/dist/engine/release_gate.js.map +1 -0
  403. package/dist/engine/release_gate_scenario_registry.d.ts +50 -0
  404. package/dist/engine/release_gate_scenario_registry.d.ts.map +1 -0
  405. package/dist/engine/release_gate_scenario_registry.js +514 -0
  406. package/dist/engine/release_gate_scenario_registry.js.map +1 -0
  407. package/dist/engine/release_readiness_gate.d.ts +36 -0
  408. package/dist/engine/release_readiness_gate.d.ts.map +1 -0
  409. package/dist/engine/release_readiness_gate.js +1050 -0
  410. package/dist/engine/release_readiness_gate.js.map +1 -0
  411. package/dist/engine/retention_policy.d.ts +46 -0
  412. package/dist/engine/retention_policy.d.ts.map +1 -0
  413. package/dist/engine/retention_policy.js +124 -0
  414. package/dist/engine/retention_policy.js.map +1 -0
  415. package/dist/engine/risk_sampler.d.ts.map +1 -1
  416. package/dist/engine/risk_sampler.js +4 -3
  417. package/dist/engine/risk_sampler.js.map +1 -1
  418. package/dist/engine/runtime_safety.d.ts.map +1 -1
  419. package/dist/engine/runtime_safety.js +18 -17
  420. package/dist/engine/runtime_safety.js.map +1 -1
  421. package/dist/engine/scaffolder.d.ts.map +1 -1
  422. package/dist/engine/scaffolder.js +4 -3
  423. package/dist/engine/scaffolder.js.map +1 -1
  424. package/dist/engine/scope_lease.d.ts.map +1 -1
  425. package/dist/engine/scope_lease.js +4 -3
  426. package/dist/engine/scope_lease.js.map +1 -1
  427. package/dist/engine/semantic_evidence.d.ts.map +1 -1
  428. package/dist/engine/semantic_evidence.js +4 -3
  429. package/dist/engine/semantic_evidence.js.map +1 -1
  430. package/dist/engine/state_fact_classifier.d.ts +47 -0
  431. package/dist/engine/state_fact_classifier.d.ts.map +1 -0
  432. package/dist/engine/state_fact_classifier.js +158 -0
  433. package/dist/engine/state_fact_classifier.js.map +1 -0
  434. package/dist/engine/state_update_bypass.d.ts +19 -0
  435. package/dist/engine/state_update_bypass.d.ts.map +1 -0
  436. package/dist/engine/state_update_bypass.js +17 -0
  437. package/dist/engine/state_update_bypass.js.map +1 -0
  438. package/dist/engine/task_context.d.ts +25 -3
  439. package/dist/engine/task_context.d.ts.map +1 -1
  440. package/dist/engine/task_context.js +132 -35
  441. package/dist/engine/task_context.js.map +1 -1
  442. package/dist/engine/task_planner.d.ts.map +1 -1
  443. package/dist/engine/task_planner.js +6 -5
  444. package/dist/engine/task_planner.js.map +1 -1
  445. package/dist/engine/team_awareness.d.ts.map +1 -1
  446. package/dist/engine/team_awareness.js +2 -1
  447. package/dist/engine/team_awareness.js.map +1 -1
  448. package/dist/engine/technology_decision.d.ts +38 -0
  449. package/dist/engine/technology_decision.d.ts.map +1 -0
  450. package/dist/engine/technology_decision.js +120 -0
  451. package/dist/engine/technology_decision.js.map +1 -0
  452. package/dist/engine/template_manifest_io.d.ts +47 -0
  453. package/dist/engine/template_manifest_io.d.ts.map +1 -0
  454. package/dist/engine/template_manifest_io.js +151 -0
  455. package/dist/engine/template_manifest_io.js.map +1 -0
  456. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -1
  457. package/dist/engine/template_mechanism_auditor.js +5 -4
  458. package/dist/engine/template_mechanism_auditor.js.map +1 -1
  459. package/dist/engine/template_sync.d.ts +98 -0
  460. package/dist/engine/template_sync.d.ts.map +1 -0
  461. package/dist/engine/template_sync.js +355 -0
  462. package/dist/engine/template_sync.js.map +1 -0
  463. package/dist/engine/test_generator.d.ts.map +1 -1
  464. package/dist/engine/test_generator.js +5 -4
  465. package/dist/engine/test_generator.js.map +1 -1
  466. package/dist/engine/test_quality.d.ts.map +1 -1
  467. package/dist/engine/test_quality.js +5 -4
  468. package/dist/engine/test_quality.js.map +1 -1
  469. package/dist/engine/test_strategy.d.ts +58 -0
  470. package/dist/engine/test_strategy.d.ts.map +1 -0
  471. package/dist/engine/test_strategy.js +93 -0
  472. package/dist/engine/test_strategy.js.map +1 -0
  473. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
  474. package/dist/engine/tool_invocation_contract_registry.js +43 -32
  475. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  476. package/dist/engine/traceability.d.ts.map +1 -1
  477. package/dist/engine/traceability.js +6 -5
  478. package/dist/engine/traceability.js.map +1 -1
  479. package/dist/engine/user_feedback_contract.d.ts.map +1 -1
  480. package/dist/engine/user_feedback_contract.js +81 -19
  481. package/dist/engine/user_feedback_contract.js.map +1 -1
  482. package/dist/engine/user_promise.d.ts +67 -0
  483. package/dist/engine/user_promise.d.ts.map +1 -0
  484. package/dist/engine/user_promise.js +436 -0
  485. package/dist/engine/user_promise.js.map +1 -0
  486. package/dist/engine/verification_contract.d.ts +132 -0
  487. package/dist/engine/verification_contract.d.ts.map +1 -0
  488. package/dist/engine/verification_contract.js +296 -0
  489. package/dist/engine/verification_contract.js.map +1 -0
  490. package/dist/engine/verifier.d.ts +6 -10
  491. package/dist/engine/verifier.d.ts.map +1 -1
  492. package/dist/engine/verifier.js +149 -1
  493. package/dist/engine/verifier.js.map +1 -1
  494. package/dist/engine/workflow_contract_registry.d.ts.map +1 -1
  495. package/dist/engine/workflow_contract_registry.js +127 -10
  496. package/dist/engine/workflow_contract_registry.js.map +1 -1
  497. package/dist/engine/workflow_template_pack.d.ts +71 -0
  498. package/dist/engine/workflow_template_pack.d.ts.map +1 -0
  499. package/dist/engine/workflow_template_pack.js +246 -0
  500. package/dist/engine/workflow_template_pack.js.map +1 -0
  501. package/dist/engine/workspace_lease.d.ts +69 -0
  502. package/dist/engine/workspace_lease.d.ts.map +1 -0
  503. package/dist/engine/workspace_lease.js +153 -0
  504. package/dist/engine/workspace_lease.js.map +1 -0
  505. package/dist/engine/workspace_resumer.d.ts.map +1 -1
  506. package/dist/engine/workspace_resumer.js +9 -8
  507. package/dist/engine/workspace_resumer.js.map +1 -1
  508. package/dist/engine/zero_config_init.d.ts.map +1 -1
  509. package/dist/engine/zero_config_init.js +16 -15
  510. package/dist/engine/zero_config_init.js.map +1 -1
  511. package/dist/git/operations.d.ts.map +1 -1
  512. package/dist/git/operations.js +18 -17
  513. package/dist/git/operations.js.map +1 -1
  514. package/dist/index.js +10 -9
  515. package/dist/index.js.map +1 -1
  516. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  517. package/dist/knowledge/conflict_detector.js +2 -1
  518. package/dist/knowledge/conflict_detector.js.map +1 -1
  519. package/dist/knowledge/health_checker.d.ts.map +1 -1
  520. package/dist/knowledge/health_checker.js +5 -4
  521. package/dist/knowledge/health_checker.js.map +1 -1
  522. package/dist/knowledge/index_manager.js +4 -4
  523. package/dist/knowledge/index_manager.js.map +1 -1
  524. package/dist/knowledge/loader.d.ts.map +1 -1
  525. package/dist/knowledge/loader.js +20 -14
  526. package/dist/knowledge/loader.js.map +1 -1
  527. package/dist/knowledge/writer.d.ts.map +1 -1
  528. package/dist/knowledge/writer.js +7 -6
  529. package/dist/knowledge/writer.js.map +1 -1
  530. package/dist/types.d.ts +34 -2
  531. package/dist/types.d.ts.map +1 -1
  532. package/package.json +13 -4
  533. package/templates/knowledge/acceptance_templates/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +27 -3
  534. package/templates/knowledge/acceptance_templates/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +27 -3
  535. 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
  536. 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
  537. 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
  538. 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
  539. 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
  540. 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
  541. 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
  542. 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
  543. 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
  544. 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
  545. 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
  546. package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +27 -3
  547. 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
  548. 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
  549. 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
  550. 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
  551. 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
  552. 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
  553. 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
  554. package/templates/knowledge/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +30 -8
  555. 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
  556. 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
  557. 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
  558. 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
  559. 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
  560. package/templates/knowledge/domain//345/244/232/347/247/237/346/210/267.md +28 -3
  561. package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +27 -3
  562. 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
  563. package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +32 -3
  564. package/templates/knowledge/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +31 -3
  565. package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +31 -3
  566. package/templates/knowledge/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +28 -3
  567. 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
  568. package/templates/knowledge/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +31 -3
  569. package/templates/knowledge/patterns/core/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +24 -7
  570. package/templates/knowledge/patterns/core/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +25 -7
  571. package/templates/knowledge/patterns/core/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +24 -7
  572. 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
  573. package/templates/knowledge/patterns/core//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +25 -7
  574. 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
  575. package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +25 -7
  576. package/templates/knowledge/patterns/core//345/206/262/347/252/201/351/227/250/347/246/201.md +24 -7
  577. package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +26 -7
  578. package/templates/knowledge/patterns/core//345/217/230/345/274/202/345/256/241/350/256/241.md +25 -7
  579. package/templates/knowledge/patterns/core//345/233/236/345/275/222/347/237/251/351/230/265.md +24 -7
  580. 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
  581. package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +24 -7
  582. package/templates/knowledge/patterns/core//345/271/266/345/217/221/351/224/201.md +26 -7
  583. package/templates/knowledge/patterns/core//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +26 -7
  584. 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
  585. 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
  586. package/templates/knowledge/patterns/core//346/265/201/345/274/217/345/277/203/350/267/263.md +25 -7
  587. package/templates/knowledge/patterns/core//347/237/245/350/257/206/344/270/273/346/235/203.md +25 -7
  588. package/templates/knowledge/patterns/core//350/257/255/344/271/211/350/257/201/346/215/256.md +24 -7
  589. package/templates/knowledge/patterns/core//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +25 -7
  590. 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
  591. 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
  592. package/templates/knowledge/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +29 -3
  593. 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
  594. 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
  595. 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
  596. 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
  597. 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
  598. 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
  599. 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
  600. package/templates/knowledge/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +30 -3
  601. 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
  602. 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
  603. 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
  604. 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
  605. 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 +95 -0
  606. 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
  607. 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
  608. 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
  609. 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
  610. 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
  611. 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
  612. 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
  613. 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
  614. 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
  615. 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
  616. 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
  617. 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
  618. 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
  619. package/templates/knowledge/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +30 -3
  620. 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
  621. package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +30 -3
  622. 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
  623. 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
  624. 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
  625. 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
  626. 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
  627. 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
  628. 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
  629. 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
  630. 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
  631. 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
  632. 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
  633. 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
  634. 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
  635. 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
  636. 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
  637. 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 +38 -0
  638. 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
  639. 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
  640. 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
  641. 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 +38 -0
  642. 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
  643. 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
  644. 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 +49 -0
  645. 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
  646. 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
  647. 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
  648. 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
  649. 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
  650. 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
  651. 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
  652. 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
  653. 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
  654. 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
  655. 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
  656. 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
  657. 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 +38 -0
  658. 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
  659. 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
  660. 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
  661. 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
  662. 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
  663. package/templates/knowledge/templates//345/256/241/346/237/245/346/221/230/350/246/201.md +26 -7
  664. package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +30 -3
  665. package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +29 -3
  666. package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +33 -3
  667. package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +31 -3
  668. 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
  669. 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
  670. 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
  671. package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +30 -3
  672. package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +30 -3
  673. package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +31 -3
  674. package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +30 -3
  675. 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
  676. package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +33 -3
  677. package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +28 -3
  678. package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +32 -3
  679. package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +31 -3
  680. package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +31 -3
  681. package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +30 -3
  682. package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +34 -3
  683. package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +32 -3
  684. package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +30 -3
  685. package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +31 -3
  686. package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +31 -3
  687. package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +31 -3
  688. package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -3
  689. package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +32 -3
  690. package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +31 -3
  691. package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +30 -3
  692. package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +34 -3
  693. package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +31 -3
  694. package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +29 -3
  695. package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +33 -3
  696. package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +34 -3
  697. package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +30 -3
  698. package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +30 -3
  699. package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +31 -3
  700. package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +34 -3
  701. package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +28 -3
  702. package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -3
  703. package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +32 -3
  704. package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +29 -3
  705. package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +32 -3
  706. package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +31 -3
  707. package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -3
  708. package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +29 -3
  709. package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +30 -3
  710. package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +31 -3
  711. package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +31 -3
  712. package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +33 -3
  713. 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
  714. package/dist/engine/batch1_manifest.d.ts.map +0 -1
  715. package/dist/engine/batch1_manifest.js.map +0 -1
  716. package/dist/engine/batch1_scenario_registry.d.ts.map +0 -1
  717. package/dist/engine/batch1_scenario_registry.js.map +0 -1
  718. package/dist/engine/batch1_scenario_runners.d.ts.map +0 -1
  719. package/dist/engine/batch1_scenario_runners.js.map +0 -1
@@ -0,0 +1,976 @@
1
+ /**
2
+ * 扩展平台场景注册表 — A-M 场景定义与运行器。
3
+ *
4
+ * 13 个场景覆盖 13 个扩展平台问题。
5
+ * 每个场景通过真实函数调用产生 evidence,不硬编码 PASS。
6
+ */
7
+ import { validateExtensionManifest, createExtensionManifest, evaluateExtensionLifecycle, grantExtensionPermissions } from "./extension_contract.js";
8
+ import { normalizePathRef, checkPathSafety, createTestPlatformContext } from "./platform_context.js";
9
+ import { createMetricContract, evaluateMetrics, createGovernanceFinding, evaluateGovernanceAction } from "./metric_governance.js";
10
+ import { createTechnologyDecision, validateTechnologyDecision, evaluateDecisionExecution, createDecisionRecord } from "./technology_decision.js";
11
+ import { createBrainstormSession, createOptionRecord, validateBrainstormSession, canBrainstormAutoExecute, createTradeoffMatrix } from "./brainstorm_contract.js";
12
+ import { createDetailDisciplineContract, performDetailCheck, checkDetailGateIntegration } from "./detail_discipline.js";
13
+ import { createFirstPrinciplesFrame, performFirstPrinciplesCheck, validateFirstPrinciplesForHighImpact } from "./first_principles.js";
14
+ import { createArchitectureDesignContract, reviewArchitectureDesign, validateOutputDirectoryDecision, validateMermaidDiagrams } from "./architecture_design_contract.js";
15
+ import { detectProjectContext, checkAnalysisGate } from "./existing_system_analysis.js";
16
+ import { createCodingReadinessContract, createTestFirstPlan, evaluateCodingReadiness, performMainlineConsumptionCheck } from "./coding_readiness_gate.js";
17
+ import { createLocalDockerAcceptanceContract, requiresLocalAcceptance, validateFinalAccess, performBrowserAcceptance, evaluateRepairLoop, createServiceRuntimeSpec, executeHttpAcceptanceWithTransport, realResultToBrowserEvidence, validateLocalAcceptanceEvidence } from "./local_docker_acceptance.js";
18
+ import { createWorkflowTemplatePackContract, createWorkflowTemplateEntry, createTemplateConsumptionEvidence, validateWorkflowTemplatePack, advanceTemplateConsumptionStatus } from "./workflow_template_pack.js";
19
+ import { createNewIssueRegressionGate, checkDuplicateIssue, analyzeTemplateEvolutionImpact, performEvolutionGate } from "./evolution_regression_gate.js";
20
+ // ── 场景定义 ──
21
+ export const EXTENSION_SCENARIOS = [
22
+ {
23
+ id: "scenario-A", name: "扩展生命周期与权限管控",
24
+ fixture: "ExtensionManifest / ExtensionGrant / ExtensionCapabilityDeclaration",
25
+ command_or_entry: "validateExtensionManifest / evaluateExtensionLifecycle / grantExtensionPermissions",
26
+ expected_evidence: ["第三方扩展不得自称 enforced", "权限授权正确", "高风险权限需人类审批"],
27
+ pass_fail_rules: ["第三方扩展 enforced 被阻断", "合法生命周期转移通过", "高风险权限未审批被拒绝"],
28
+ covered_issues: ["problem-39"],
29
+ },
30
+ {
31
+ id: "scenario-B", name: "指标真实性与治理动作",
32
+ fixture: "MetricContract / MetricSample / GovernanceFinding / GovernanceActionBinding",
33
+ command_or_entry: "evaluateMetrics / createGovernanceFinding / evaluateGovernanceAction",
34
+ expected_evidence: ["skipped 不算 passed", "degraded 不算 passed", "高风险动作不自动触发"],
35
+ pass_fail_rules: ["非 passed 状态不算通过", "critical 级高风险动作需人类确认"],
36
+ covered_issues: ["problem-19"],
37
+ },
38
+ {
39
+ id: "scenario-C", name: "决策主权与脑暴联动",
40
+ fixture: "BrainstormSession / TechnologyDecisionContract / TechnologyDecisionRecord / DecisionEvidence",
41
+ command_or_entry: "createBrainstormSession / validateBrainstormSession / canBrainstormAutoExecute / createTechnologyDecision / validateTechnologyDecision / createDecisionRecord / evaluateDecisionExecution",
42
+ expected_evidence: ["高风险决策需 human gate", "脑暴必须产生候选方案", "脑暴推荐不能自动执行", "recommended 状态不可执行", "approved 可执行"],
43
+ pass_fail_rules: [
44
+ "高风险技术决策必须先有多方案探索记录",
45
+ "高风险技术决策需要 human gate",
46
+ "recommended_option 与 executable_without_human 必须分离",
47
+ "脑暴推荐不绕过 Decision Sovereignty",
48
+ "destructive decision 必须有 rollback_or_exit_plan",
49
+ ],
50
+ covered_issues: ["problem-16", "problem-41-brainstorm"],
51
+ },
52
+ {
53
+ id: "scenario-D", name: "细节纪律",
54
+ fixture: "DetailDisciplineContract / DetailDisciplineCheck / DetailRiskItem",
55
+ command_or_entry: "performDetailCheck / summarizeDetailChecks / checkDetailGateIntegration",
56
+ expected_evidence: ["缺失维度被检测", "blocking 项阻止交付", "检查接入交付 gate"],
57
+ pass_fail_rules: ["细节纪律必须接入验证与交付 gate"],
58
+ covered_issues: ["problem-26"],
59
+ },
60
+ {
61
+ id: "scenario-E", name: "第一性原理",
62
+ fixture: "FirstPrinciplesFrame / FirstPrinciplesCheck",
63
+ command_or_entry: "performFirstPrinciplesCheck / validateFirstPrinciplesForHighImpact",
64
+ expected_evidence: ["缺少 fundamental_need 被阻断", "缺少证伪被检测", "能阻断错误前提"],
65
+ pass_fail_rules: ["high impact 变更必须有 fundamental_need"],
66
+ covered_issues: ["problem-27"],
67
+ },
68
+ {
69
+ id: "scenario-F", name: "跨平台路径安全",
70
+ fixture: "PlatformContext / NormalizedPathRef / PathSafetyCheck",
71
+ command_or_entry: "detectPlatformContext / normalizePathRef / checkPathSafety",
72
+ expected_evidence: ["路径规范化正确", "scope 逃逸被检测", "symlink 被检测"],
73
+ pass_fail_rules: ["工作区内路径安全", ".. 路径逃逸被阻断", "大小写冲突被检测"],
74
+ covered_issues: ["problem-40"],
75
+ },
76
+ {
77
+ id: "scenario-G", name: "脑暴多方案探索与原则联动",
78
+ fixture: "BrainstormSession / OptionExplorationRecord / OptionTradeoffMatrix / FirstPrinciplesFrame / DetailDisciplineContract",
79
+ command_or_entry: "createBrainstormSession / validateBrainstormSession / canBrainstormAutoExecute / createTradeoffMatrix / createFirstPrinciplesFrame / performFirstPrinciplesCheck / createDetailDisciplineContract / performDetailCheck",
80
+ expected_evidence: ["脑暴产生 3+ 候选方案", "取舍矩阵生成", "脑暴推荐不绕过 Decision Sovereignty", "第一性原理框架完整", "细节纪律检查接入", "三个契约联动"],
81
+ pass_fail_rules: [
82
+ "高影响方案必须至少包含候选方案、优缺点、适用边界、失败条件和验证方式",
83
+ "推荐方案必须包含不推荐其他方案的原因",
84
+ "脑暴推荐不得绕过 Decision Sovereignty human gate",
85
+ "脑暴结论必须进入 TaskContext / decision record / evidence refs 之一",
86
+ ],
87
+ covered_issues: ["problem-41-brainstorm", "problem-16", "problem-27", "problem-26"],
88
+ },
89
+ {
90
+ id: "scenario-H", name: "架构设计审查",
91
+ fixture: "ArchitectureDesignContract / ArchitectureDesignReview",
92
+ command_or_entry: "reviewArchitectureDesign / validateOutputDirectoryDecision / validateMermaidDiagrams",
93
+ expected_evidence: ["输出目录未确认阻断 delivered", "Mermaid 图必须可渲染", "输入集不完整被检测"],
94
+ pass_fail_rules: ["未确认目录不得 delivered", "Mermaid 渲染失败被检测"],
95
+ covered_issues: ["problem-49", "problem-16", "problem-41-brainstorm", "problem-26", "problem-27"],
96
+ },
97
+ {
98
+ id: "scenario-I", name: "现有系统分析与差距分析",
99
+ fixture: "ProjectContextDetection / ExistingSystemAnalysisContract / RequirementGapAnalysis",
100
+ command_or_entry: "detectProjectContext / checkAnalysisGate / reviewExistingSystemDevelopment",
101
+ expected_evidence: ["existing_system 必须先分析", "差距分析前置检查", "缺失分析被阻断"],
102
+ pass_fail_rules: ["existing_system + new_requirement 必须先做分析"],
103
+ covered_issues: ["problem-50", "problem-49", "problem-16", "problem-41-brainstorm", "problem-26", "problem-27"],
104
+ },
105
+ {
106
+ id: "scenario-J", name: "编码准备门与测试优先",
107
+ fixture: "CodingReadinessContract / TestFirstPlan / CodingCompletionReview",
108
+ command_or_entry: "evaluateCodingReadiness / performMainlineConsumptionCheck / reviewCodingCompletion",
109
+ expected_evidence: ["编码不是第一步", "blocked 时不得编码", "测试优先计划被检查"],
110
+ pass_fail_rules: ["coding 不能作为第一步", "blocked/manual_required 时不得写代码"],
111
+ covered_issues: ["problem-51", "problem-50", "problem-49", "problem-26", "problem-27"],
112
+ },
113
+ {
114
+ id: "scenario-K", name: "本地 Docker/浏览器验收",
115
+ fixture: "LocalDockerAcceptanceContract / BrowserAcceptanceEvidence / FinalLocalReviewAccess",
116
+ command_or_entry: "requiresLocalAcceptance / validateFinalAccess / performBrowserAcceptance",
117
+ expected_evidence: ["有前端时不得只停单测", "必须提供本地 URL", "修复循环策略"],
118
+ pass_fail_rules: ["最终必须给用户本地可访问 URL", "浏览器验收失败需要修复"],
119
+ covered_issues: ["problem-52", "problem-51", "problem-12", "problem-34", "problem-26"],
120
+ },
121
+ {
122
+ id: "scenario-L", name: "工作流模板包消费",
123
+ fixture: "WorkflowTemplatePackContract / TemplateConsumptionEvidence",
124
+ command_or_entry: "validateWorkflowTemplatePack / advanceTemplateConsumptionStatus",
125
+ expected_evidence: ["模板必须走完消费 pipeline", "停在中间状态被检测"],
126
+ pass_fail_rules: ["模板文件存在但未消费不得 completed"],
127
+ covered_issues: ["problem-53", "problem-49", "problem-50", "problem-51", "problem-52", "problem-45", "problem-31"],
128
+ },
129
+ {
130
+ id: "scenario-M", name: "演进回归与新问题门控",
131
+ fixture: "NewIssueRegressionGate / DuplicateIssueCheck / TemplateEvolutionImpact",
132
+ command_or_entry: "checkDuplicateIssue / analyzeTemplateEvolutionImpact / performEvolutionGate",
133
+ expected_evidence: ["重复问题被检测", "模板演进影响被分析", "未通过门控不得 accepted"],
134
+ pass_fail_rules: ["没有 NewIssueRegressionGate 的新增问题不得 accepted"],
135
+ covered_issues: ["problem-54", "problem-53"],
136
+ },
137
+ ];
138
+ // ── 场景运行器 ──
139
+ function runScenarioA() {
140
+ const evidence = [];
141
+ const failures = [];
142
+ // 第三方扩展自称 enforced 被阻断
143
+ const manifest = createExtensionManifest({ extension_id: "ext-1", permissions: ["read_project"] });
144
+ const capDecl = { extension_id: "ext-1", claimed_capabilities: [], claimed_enforcement: "enforced_by_host", third_party: true };
145
+ const v1 = validateExtensionManifest(manifest, capDecl);
146
+ if (!v1.valid && v1.violations.some(v => v.includes("第三方"))) {
147
+ evidence.push("第三方扩展不得自称 enforced");
148
+ }
149
+ else {
150
+ failures.push("第三方扩展自称 enforced 应被阻断");
151
+ }
152
+ // 合法生命周期转移
153
+ const lc1 = evaluateExtensionLifecycle("ext-1", "draft", "installed");
154
+ if (lc1.allowed)
155
+ evidence.push("合法生命周期转移通过");
156
+ else
157
+ failures.push("draft→installed 应允许");
158
+ const lc2 = evaluateExtensionLifecycle("ext-1", "active", "draft");
159
+ if (!lc2.allowed)
160
+ evidence.push("非法转移被阻断");
161
+ else
162
+ failures.push("active→draft 应被阻断");
163
+ // 高风险权限需人类审批
164
+ const grant1 = grantExtensionPermissions("ext-1", ["execute_command", "read_project"], "system", "test", false);
165
+ if (!grant1.granted_permissions.includes("execute_command"))
166
+ evidence.push("高风险权限需人类审批");
167
+ else
168
+ failures.push("execute_command 未审批不应被授权");
169
+ const grant2 = grantExtensionPermissions("ext-1", ["execute_command"], "human", "test", true);
170
+ if (grant2.granted_permissions.includes("execute_command"))
171
+ evidence.push("人类审批后高风险权限被授权");
172
+ else
173
+ failures.push("审批后 execute_command 应被授权");
174
+ return { scenario_id: "scenario-A", scenario_name: "扩展生命周期与权限管控", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
175
+ }
176
+ function runScenarioB() {
177
+ const evidence = [];
178
+ const failures = [];
179
+ // skipped 不算 passed
180
+ const eval1 = evaluateMetrics([
181
+ { metric_id: "m1", value: 1, sampled_at: "", sample_status: "passed" },
182
+ { metric_id: "m2", value: 0, sampled_at: "", sample_status: "skipped" },
183
+ ]);
184
+ if (!eval1.passed)
185
+ evidence.push("skipped 不算 passed");
186
+ else
187
+ failures.push("含 skipped 样本不应算全部通过");
188
+ if (eval1.skipped_count === 1)
189
+ evidence.push("skipped 计数正确");
190
+ else
191
+ failures.push(`skipped 计数应为 1,实际 ${eval1.skipped_count}`);
192
+ // degraded 不算 passed
193
+ const eval2 = evaluateMetrics([
194
+ { metric_id: "m3", value: 0, sampled_at: "", sample_status: "degraded" },
195
+ ]);
196
+ if (!eval2.passed && eval2.degraded_count === 1)
197
+ evidence.push("degraded 不算 passed");
198
+ else
199
+ failures.push("degraded 应不算 passed");
200
+ // 高风险动作不自动触发
201
+ const metric = createMetricContract({ id: "m-gov", metric_type: "governance" });
202
+ const finding = createGovernanceFinding(metric, "critical", ["ev-1"]);
203
+ const action1 = evaluateGovernanceAction(finding, "downgrade");
204
+ if (action1.requires_human && !action1.auto_triggered)
205
+ evidence.push("高风险动作需人类确认不自动触发");
206
+ else
207
+ failures.push("高风险动作应需人类确认");
208
+ return { scenario_id: "scenario-B", scenario_name: "指标真实性与治理动作", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
209
+ }
210
+ function runScenarioC() {
211
+ const evidence = [];
212
+ const failures = [];
213
+ // 1. 创建高风险架构决策(仅 heuristic 证据)
214
+ const contract = createTechnologyDecision({
215
+ decision_id: "dec-c-1",
216
+ decision_scope: "architecture",
217
+ options: [
218
+ { option_id: "opt-a", title: "微服务架构", description: "拆分为独立微服务" },
219
+ { option_id: "opt-b", title: "单体模块化", description: "保持单体但模块化" },
220
+ { option_id: "opt-c", title: "事件驱动架构", description: "基于消息队列的事件驱动" },
221
+ ],
222
+ recommended_option: "opt-b",
223
+ human_gate_required: true,
224
+ executable_without_human: false,
225
+ evidence: [{ source_type: "heuristic", source_ref: "行业趋势", confidence: 0.6 }],
226
+ falsification: ["微服务增加运维复杂度", "事件驱动带来最终一致性挑战"],
227
+ failure_conditions: ["团队规模不支持微服务", "性能不达标"],
228
+ validation_plan: ["概念验证 POC"],
229
+ rollback_or_exit_plan: ["保留单体代码作为回退基线"],
230
+ });
231
+ // 2. 验证架构范围需要 human gate
232
+ const v1 = validateTechnologyDecision(contract);
233
+ if (v1.valid)
234
+ evidence.push("高风险决策需 human gate");
235
+ else
236
+ failures.push(`高风险决策校验失败: ${v1.violations.join("; ")}`);
237
+ // 3. 创建脑暴会话并验证
238
+ const session = createBrainstormSession({
239
+ session_id: "bs-c-1",
240
+ problem_statement: "选择后端架构方案",
241
+ trigger: "technology_choice",
242
+ options: [
243
+ createOptionRecord({ option_id: "opt-a", title: "微服务架构", pros: ["独立部署", "技术栈灵活"], cons: ["运维复杂", "网络延迟"], failure_conditions: ["团队规模不足", "分布式事务"] }),
244
+ createOptionRecord({ option_id: "opt-b", title: "单体模块化", pros: ["简单", "部署快"], cons: ["扩展性有限"], failure_conditions: ["模块边界不清"] }),
245
+ createOptionRecord({ option_id: "opt-c", title: "事件驱动架构", pros: ["解耦", "可扩展"], cons: ["最终一致性", "调试困难"], failure_conditions: ["消息堆积", "调试复杂度高"] }),
246
+ ],
247
+ recommended_option_id: "opt-b",
248
+ rejected_option_ids: ["opt-a", "opt-c"],
249
+ brainstorm_status: "options_ready",
250
+ human_gate_required: true,
251
+ evidence_refs: ["dec-c-1"],
252
+ });
253
+ const v2 = validateBrainstormSession(session);
254
+ if (v2.valid)
255
+ evidence.push("脑暴必须产生候选方案");
256
+ else
257
+ failures.push(`脑暴校验失败: ${v2.violations.join("; ")}`);
258
+ // 4. 验证脑暴推荐不能自动执行
259
+ if (!canBrainstormAutoExecute(session))
260
+ evidence.push("脑暴推荐不能自动执行");
261
+ else
262
+ failures.push("脑暴推荐不应自动执行");
263
+ // 5. 创建 recommended 决策记录,验证不可执行
264
+ const record1 = createDecisionRecord("dec-c-1", { decision_status: "recommended" });
265
+ const exec1 = evaluateDecisionExecution(contract, record1);
266
+ if (!exec1.allowed)
267
+ evidence.push("recommended 状态不可执行");
268
+ else
269
+ failures.push("推荐状态不应允许执行");
270
+ // 6. 创建 approved 决策记录,验证可执行
271
+ const record2 = createDecisionRecord("dec-c-1", { decision_status: "approved", approved_by: "human" });
272
+ const exec2 = evaluateDecisionExecution(contract, record2);
273
+ if (exec2.allowed)
274
+ evidence.push("approved 可执行");
275
+ else
276
+ failures.push("已批准应允许执行");
277
+ return { scenario_id: "scenario-C", scenario_name: "决策主权与脑暴联动", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
278
+ }
279
+ function runScenarioD() {
280
+ const evidence = [];
281
+ const failures = [];
282
+ const contract = createDetailDisciplineContract({ contract_id: "dd-1" });
283
+ // 缺失维度被检测
284
+ const check1 = performDetailCheck(contract, "target-1", "implementation", {});
285
+ if (check1.missing_details.length > 0 && check1.blocking)
286
+ evidence.push("缺失维度被检测为 blocking");
287
+ else
288
+ failures.push("缺失维度应被检测");
289
+ // 检查接入交付 gate
290
+ const gate1 = checkDetailGateIntegration(check1, true);
291
+ if (gate1.allowed)
292
+ evidence.push("检查接入交付 gate");
293
+ else
294
+ failures.push("有交付 gate 应允许");
295
+ const gate2 = checkDetailGateIntegration(check1, false);
296
+ if (!gate2.allowed)
297
+ evidence.push("未接入交付 gate 被阻断");
298
+ else
299
+ failures.push("blocking 检查未接入交付 gate 应被阻断");
300
+ // 完整检查通过
301
+ const check2 = performDetailCheck(contract, "target-2", "design", {
302
+ edge_cases: ["边界1"], defaults: ["默认1"], failure_paths: ["失败1"],
303
+ cleanup: ["清理1"], idempotency: ["幂等1"], overwrite_behavior: ["覆盖1"],
304
+ rollback: ["回滚1"], evidence: ["证据1"],
305
+ });
306
+ if (check2.detail_check_status === "passed")
307
+ evidence.push("完整维度检查通过");
308
+ else
309
+ failures.push(`完整维度应通过,实际 ${check2.detail_check_status}`);
310
+ return { scenario_id: "scenario-D", scenario_name: "细节纪律", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
311
+ }
312
+ function runScenarioE() {
313
+ const evidence = [];
314
+ const failures = [];
315
+ // 缺少 fundamental_need 被阻断
316
+ const frame1 = createFirstPrinciplesFrame({ problem_id: "p1", user_goal: "目标" });
317
+ const check1 = performFirstPrinciplesCheck(frame1);
318
+ if (!check1.passed && check1.failures.some(f => f.includes("fundamental_need"))) {
319
+ evidence.push("缺少 fundamental_need 被阻断");
320
+ }
321
+ else {
322
+ failures.push("缺少 fundamental_need 应被阻断");
323
+ }
324
+ // 缺少证伪被检测
325
+ if (check1.failures.some(f => f.includes("falsification")))
326
+ evidence.push("缺少证伪被检测");
327
+ else
328
+ failures.push("缺少证伪问题应被检测");
329
+ // 完整框架通过
330
+ const frame2 = createFirstPrinciplesFrame({
331
+ problem_id: "p2",
332
+ user_goal: "实现缓存方案",
333
+ fundamental_need: "高可用缓存",
334
+ known_facts: ["当前使用 Redis", "QPS 约 1000"],
335
+ assumptions: ["Redis 不会宕机"],
336
+ candidate_solutions: ["Redis 集群", "本地缓存 + Redis"],
337
+ simplest_viable_solution: "单节点 Redis + 本地缓存降级",
338
+ falsification_questions: ["如果 Redis 宕机怎么办?"],
339
+ chosen_solution: "单节点 Redis + 本地缓存降级",
340
+ why_not_legacy_path: "旧方案无降级策略",
341
+ first_principles_status: "framed",
342
+ });
343
+ const check2 = performFirstPrinciplesCheck(frame2);
344
+ if (check2.passed)
345
+ evidence.push("完整框架通过");
346
+ else
347
+ failures.push(`完整框架应通过: ${check2.failures.join("; ")}`);
348
+ // high impact 校验
349
+ const hp = validateFirstPrinciplesForHighImpact(frame2);
350
+ if (hp.passed)
351
+ evidence.push("high impact 校验通过");
352
+ else
353
+ failures.push(`完整框架 high impact 应通过: ${hp.violations.join("; ")}`);
354
+ return { scenario_id: "scenario-E", scenario_name: "第一性原理", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
355
+ }
356
+ function runScenarioF() {
357
+ const evidence = [];
358
+ const failures = [];
359
+ const platform = createTestPlatformContext();
360
+ const scope = "/tmp/test-workspace";
361
+ // 工作区内路径安全
362
+ const ref1 = normalizePathRef("/tmp/test-workspace/src/main.ts", platform, scope);
363
+ if (ref1.path_safety_status === "safe")
364
+ evidence.push("工作区内路径安全");
365
+ else
366
+ failures.push(`工作区内路径应安全,实际 ${ref1.path_safety_status}`);
367
+ // .. 路径逃逸
368
+ const ref2 = normalizePathRef("/tmp/test-workspace/../../../etc/passwd", platform, scope);
369
+ if (ref2.path_safety_status !== "safe")
370
+ evidence.push(".. 路径逃逸被检测");
371
+ else
372
+ failures.push(".. 路径应被检测为不安全");
373
+ // scope 外路径
374
+ const safety = checkPathSafety(ref2, scope);
375
+ if (!safety.passes)
376
+ evidence.push("scope 外路径被阻断");
377
+ else
378
+ failures.push("scope 外路径应被阻断");
379
+ // 大小写检测
380
+ const macPlatform = createTestPlatformContext({ path_case_sensitive: false, os: "darwin" });
381
+ const ref3 = normalizePathRef("/tmp/test-workspace/SRC/Main.ts", macPlatform, scope);
382
+ if (ref3.case_normalized || ref3.path_safety_status === "safe")
383
+ evidence.push("大小写处理正确");
384
+ else
385
+ failures.push("macOS 大小写处理异常");
386
+ return { scenario_id: "scenario-F", scenario_name: "跨平台路径安全", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
387
+ }
388
+ function runScenarioG() {
389
+ const evidence = [];
390
+ const failures = [];
391
+ // 1. 创建脑暴会话:3+ 选项、取舍、失败条件
392
+ const options = [
393
+ createOptionRecord({
394
+ option_id: "g-o1", title: "Redis 集群",
395
+ pros: ["高可用", "自动故障转移", "数据分片"],
396
+ cons: ["运维复杂", "内存成本高", "集群配置复杂"],
397
+ failure_conditions: ["脑裂导致数据不一致", "内存不足时 OOM", "网络分区时写入失败"],
398
+ }),
399
+ createOptionRecord({
400
+ option_id: "g-o2", title: "本地缓存 + Redis 单节点",
401
+ pros: ["简单", "成本低", "读取快"],
402
+ cons: ["多实例不一致", "单点故障", "缓存穿透"],
403
+ failure_conditions: ["Redis 宕机全站不可用", "缓存击穿", "本地缓存脏数据"],
404
+ }),
405
+ createOptionRecord({
406
+ option_id: "g-o3", title: "多级缓存 + 消息队列",
407
+ pros: ["高可用", "高性能", "解耦"],
408
+ cons: ["架构复杂", "一致性挑战", "延迟较高"],
409
+ failure_conditions: ["消息堆积", "多级缓存不一致", "队列服务不可用"],
410
+ }),
411
+ ];
412
+ const session = createBrainstormSession({
413
+ session_id: "bs-g-1",
414
+ problem_statement: "选择高可用缓存方案",
415
+ trigger: "high_impact_change",
416
+ options,
417
+ recommended_option_id: "g-o1",
418
+ rejected_option_ids: ["g-o2", "g-o3"],
419
+ brainstorm_status: "options_ready",
420
+ human_gate_required: true,
421
+ evidence_refs: ["dec-g-1"],
422
+ });
423
+ // 2. 验证脑暴会话
424
+ const v1 = validateBrainstormSession(session);
425
+ if (v1.valid)
426
+ evidence.push("脑暴产生 3+ 候选方案");
427
+ else
428
+ failures.push(`脑暴校验失败: ${v1.violations.join("; ")}`);
429
+ // 3. 验证有推荐和拒绝项
430
+ if (session.recommended_option_id && session.rejected_option_ids.length > 0) {
431
+ evidence.push("脑暴有推荐方案和拒绝方案");
432
+ }
433
+ else {
434
+ failures.push("脑暴缺少推荐方案或拒绝方案");
435
+ }
436
+ // 4. 验证脑暴推荐不能自动执行
437
+ if (!canBrainstormAutoExecute(session))
438
+ evidence.push("脑暴推荐不绕过 Decision Sovereignty");
439
+ else
440
+ failures.push("脑暴推荐不应自动执行");
441
+ // 5. 创建取舍矩阵
442
+ const matrix = createTradeoffMatrix({
443
+ matrix_id: "tm-g-1",
444
+ criteria: ["可用性", "复杂度", "成本", "一致性"],
445
+ selected_option_id: "g-o1",
446
+ why_selected_zh: "Redis 集群在高可用场景下综合得分最高",
447
+ why_rejected_zh: [
448
+ { option_id: "g-o2", reason: "单点故障风险过高,不适合生产环境" },
449
+ { option_id: "g-o3", reason: "架构过于复杂,当前团队规模不支持" },
450
+ ],
451
+ }, options);
452
+ if (matrix.selected_option_id === "g-o1" && matrix.why_rejected_zh.length === 2) {
453
+ evidence.push("取舍矩阵生成");
454
+ }
455
+ else {
456
+ failures.push("取舍矩阵内容不完整");
457
+ }
458
+ // 6. 创建第一性原理框架
459
+ const frame = createFirstPrinciplesFrame({
460
+ problem_id: "p-g-1",
461
+ user_goal: "实现高可用缓存",
462
+ fundamental_need: "保证服务在缓存层故障时仍可用",
463
+ known_facts: ["当前 QPS 约 5000", "数据量约 50GB", "团队 3 人"],
464
+ assumptions: ["网络延迟 < 1ms", "读写比 10:1"],
465
+ candidate_solutions: ["Redis 集群", "本地缓存 + Redis", "多级缓存 + MQ"],
466
+ simplest_viable_solution: "Redis 集群 + 本地缓存降级",
467
+ falsification_questions: ["如果 Redis 集群全部宕机怎么办?", "如果网络分区导致脑裂怎么办?"],
468
+ chosen_solution: "Redis 集群 + 本地缓存降级",
469
+ why_not_legacy_path: "当前无缓存方案,不是改造场景",
470
+ first_principles_status: "framed",
471
+ });
472
+ const check1 = performFirstPrinciplesCheck(frame);
473
+ if (check1.passed)
474
+ evidence.push("第一性原理框架完整");
475
+ else
476
+ failures.push(`第一性原理框架不完整: ${check1.failures.join("; ")}`);
477
+ // 7. 创建细节纪律契约并检查
478
+ const ddContract = createDetailDisciplineContract({ contract_id: "dd-g-1" });
479
+ const ddCheck = performDetailCheck(ddContract, "cache-impl", "implementation", {
480
+ edge_cases: ["缓存穿透", "缓存击穿", "缓存雪崩"],
481
+ defaults: ["空缓存默认回源", "连接超时默认 3s"],
482
+ failure_paths: ["Redis 宕机", "网络分区", "内存溢出"],
483
+ cleanup: ["过期 key 自动清理", "宕机后本地缓存自动过期"],
484
+ idempotency: ["相同 key 写入幂等", "删除操作幂等"],
485
+ overwrite_behavior: ["同 key 覆盖写入", "版本号校验"],
486
+ rollback: ["降级到本地缓存", "直接查数据库"],
487
+ evidence: ["压力测试报告", "故障恢复验证"],
488
+ });
489
+ if (ddCheck.detail_check_status === "passed")
490
+ evidence.push("细节纪律检查接入");
491
+ else
492
+ failures.push(`细节纪律检查失败: ${ddCheck.detail_check_status}`);
493
+ // 8. 验证三个契约联动
494
+ if (session.evidence_refs.length > 0 && frame.chosen_solution && ddCheck.detail_check_status === "passed") {
495
+ evidence.push("三个契约联动");
496
+ }
497
+ else {
498
+ failures.push("三个契约联动验证失败");
499
+ }
500
+ return { scenario_id: "scenario-G", scenario_name: "脑暴多方案探索与原则联动", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
501
+ }
502
+ function runScenarioH() {
503
+ const evidence = [];
504
+ const failures = [];
505
+ // 输出目录未确认阻断 delivered
506
+ const contract = createArchitectureDesignContract({
507
+ contract_id: "arch-1",
508
+ architecture_design_status: "delivered",
509
+ output_directory_decision: { recommended_name: "output", recommendation_reason_zh: "原因", architecture_output_directory_status: "recommended" },
510
+ });
511
+ const dirCheck = validateOutputDirectoryDecision(contract.output_directory_decision, contract.architecture_design_status);
512
+ if (!dirCheck.allowed)
513
+ evidence.push("输出目录未确认阻断 delivered");
514
+ else
515
+ failures.push("未确认目录不应允许 delivered");
516
+ // Mermaid 渲染失败被检测
517
+ const mermaidCheck = validateMermaidDiagrams([{
518
+ diagram_id: "d1", diagram_type: "sequenceDiagram", required_for: "test",
519
+ mermaid_source: "invalid", render_check_status: "failed",
520
+ }]);
521
+ if (!mermaidCheck.allRenderable)
522
+ evidence.push("Mermaid 渲染失败被检测");
523
+ else
524
+ failures.push("渲染失败应被检测");
525
+ // 架构设计审查
526
+ const goodContract = createArchitectureDesignContract({
527
+ contract_id: "arch-2",
528
+ architecture_design_status: "completed",
529
+ input_set: { task_ids: ["t1"], required_source_artifacts: ["prototype_description"], consumed_files: ["f1"], missing_required_files: [], all_clients_covered: true },
530
+ output_directory_decision: { recommended_name: "output", recommendation_reason_zh: "原因", architecture_output_directory_status: "confirmed", confirmed_name: "output" },
531
+ mermaid_diagram_requirements: [],
532
+ });
533
+ const review = reviewArchitectureDesign(goodContract);
534
+ if (review.passed)
535
+ evidence.push("合规架构设计审查通过");
536
+ else
537
+ failures.push(`合规架构设计应通过: ${review.review.failed_rules.join("; ")}`);
538
+ return { scenario_id: "scenario-H", scenario_name: "架构设计审查", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
539
+ }
540
+ function runScenarioI() {
541
+ const evidence = [];
542
+ const failures = [];
543
+ // existing_system 必须先分析
544
+ const ctx1 = detectProjectContext(true, true, true);
545
+ if (ctx1.project_context_type === "existing_system")
546
+ evidence.push("existing_system 正确检测");
547
+ else
548
+ failures.push("应检测为 existing_system");
549
+ const gate1 = checkAnalysisGate(ctx1, false, false);
550
+ if (!gate1.allowed)
551
+ evidence.push("existing_system 必须先分析");
552
+ else
553
+ failures.push("existing_system 未分析不应允许");
554
+ // 有分析后通过
555
+ const gate2 = checkAnalysisGate(ctx1, true, true);
556
+ if (gate2.allowed)
557
+ evidence.push("有分析后通过");
558
+ else
559
+ failures.push("已有分析应允许");
560
+ // empty_project 不要求分析
561
+ const ctx2 = detectProjectContext(false, false, false);
562
+ const gate3 = checkAnalysisGate(ctx2, false, false);
563
+ if (gate3.allowed)
564
+ evidence.push("empty_project 不强制分析");
565
+ else
566
+ failures.push("empty_project 不应强制分析");
567
+ return { scenario_id: "scenario-I", scenario_name: "现有系统分析与差距分析", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
568
+ }
569
+ function runScenarioJ() {
570
+ const evidence = [];
571
+ const failures = [];
572
+ // 编码不是第一步 — 缺少验证计划应被阻断
573
+ const contract1 = createCodingReadinessContract({
574
+ task_id: "t1",
575
+ required_preconditions: ["gap_analysis"],
576
+ consumed_constraints: ["gap_analysis"],
577
+ test_first_plan: { ...createTestFirstPlan(true, true, "feature"), test_first_status: "planned" },
578
+ verification_plan_ref: "",
579
+ });
580
+ const eval1 = evaluateCodingReadiness(contract1, true, false, false);
581
+ if (!eval1.allowed)
582
+ evidence.push("缺少验证计划被阻断");
583
+ else
584
+ failures.push("缺少验证计划应被阻断");
585
+ // 完整条件通过
586
+ const eval2 = evaluateCodingReadiness(contract1, true, false, true);
587
+ // 使用完整前置条件
588
+ const contract2 = createCodingReadinessContract({
589
+ task_id: "t2",
590
+ project_context_type: "existing_system",
591
+ required_preconditions: [],
592
+ consumed_constraints: [],
593
+ test_first_plan: { ...createTestFirstPlan(true, true, "feature"), test_first_status: "written" },
594
+ verification_plan_ref: "vp-2",
595
+ });
596
+ const eval3 = evaluateCodingReadiness(contract2, true, false, true);
597
+ if (eval3.allowed)
598
+ evidence.push("完整条件通过编码准备门");
599
+ else
600
+ failures.push(`完整条件应通过: ${eval3.missing_preconditions.join("; ")}`);
601
+ // 主线消费检查
602
+ const mainline = performMainlineConsumptionCheck(["src/new.ts"], ["new"], ["api/new"]);
603
+ if (mainline.orphan_findings.length === 0)
604
+ evidence.push("主线消费检查通过");
605
+ else
606
+ failures.push(`主线孤立: ${mainline.orphan_findings.join("; ")}`);
607
+ return { scenario_id: "scenario-J", scenario_name: "编码准备门与测试优先", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
608
+ }
609
+ /** @deprecated 使用 runScenarioKAsync 代替,同步版本不含 transport-level 验收 */
610
+ export function runScenarioK() {
611
+ const evidence = [];
612
+ const failures = [];
613
+ // ── 步骤 1: 项目检测 → 决定是否需要本地验收 ──
614
+ // 前端+docker-compose 项目必须本地验收
615
+ const req1 = requiresLocalAcceptance(true, true, true, false);
616
+ if (req1.required && req1.run_mode === "docker_compose")
617
+ evidence.push("docker_compose 项目需要本地验收");
618
+ else
619
+ failures.push("docker_compose 项目应需要本地验收");
620
+ // 纯后端无容器 → local_dev_server
621
+ const req2 = requiresLocalAcceptance(false, true, false, false);
622
+ if (req2.required && req2.run_mode === "local_dev_server")
623
+ evidence.push("纯后端项目需要本地验收");
624
+ else
625
+ failures.push("纯后端应使用 local_dev_server");
626
+ // CI 无 Docker 且无前后端 → not_applicable
627
+ const req3 = requiresLocalAcceptance(false, false, false, false);
628
+ if (!req3.required && req3.run_mode === "not_applicable")
629
+ evidence.push("无前后端项目不需要本地验收");
630
+ else
631
+ failures.push("无前后端项目应 not_applicable");
632
+ // ── 步骤 2: 服务运行规格 ──
633
+ const frontendSpec = createServiceRuntimeSpec({
634
+ service_name: "frontend",
635
+ service_type: "frontend",
636
+ ports: [{ internal: 3000, external: 3000 }],
637
+ health_check: "http://localhost:3000/health",
638
+ required_env: ["NODE_ENV"],
639
+ });
640
+ const backendSpec = createServiceRuntimeSpec({
641
+ service_name: "backend",
642
+ service_type: "backend_api",
643
+ ports: [{ internal: 8080, external: 8080 }],
644
+ health_check: "http://localhost:8080/api/health",
645
+ required_env: ["NODE_ENV", "DATABASE_URL"],
646
+ });
647
+ if (frontendSpec.service_name === "frontend" && backendSpec.service_name === "backend") {
648
+ evidence.push("服务运行规格识别完成");
649
+ }
650
+ else {
651
+ failures.push("服务运行规格识别失败");
652
+ }
653
+ // ── 步骤 3: 浏览器验收(首次,有错误触发修复) ──
654
+ const plan = {
655
+ target_urls: ["http://localhost:3000"],
656
+ user_flows: ["首页加载", "登录流程", "数据提交"],
657
+ viewport_matrix: ["desktop"],
658
+ required_assertions: ["页面可访问", "表单可提交", "API 联动正常"],
659
+ screenshot_or_trace_required: true,
660
+ };
661
+ const firstAttempt = performBrowserAcceptance(plan, ["TypeError: Cannot read properties of undefined"], {
662
+ max_iterations: 3,
663
+ rebuild_required_after_fix: true,
664
+ redeploy_required_after_fix: true,
665
+ retest_required_after_fix: true,
666
+ stop_conditions: ["retry_budget_exhausted", "same_error_repeated"],
667
+ });
668
+ if (firstAttempt.needsRepair && firstAttempt.evidence.acceptance_status === "failed") {
669
+ evidence.push("首次验收失败被捕获");
670
+ }
671
+ else {
672
+ failures.push("首次验收失败应触发修复");
673
+ }
674
+ if (firstAttempt.evidence.console_errors.length > 0) {
675
+ evidence.push("失败错误被记录(capture)");
676
+ }
677
+ else {
678
+ failures.push("失败应有 console_errors");
679
+ }
680
+ // ── 步骤 4: 修复循环 ──
681
+ // 修复循环: 第一次修复(不同错误 → 继续)
682
+ const repair1 = evaluateRepairLoop(1, {
683
+ max_iterations: 3,
684
+ rebuild_required_after_fix: true,
685
+ redeploy_required_after_fix: true,
686
+ retest_required_after_fix: true,
687
+ stop_conditions: ["retry_budget_exhausted", "same_error_repeated"],
688
+ }, ["ReferenceError: new error"], ["TypeError: Cannot read properties of undefined"]);
689
+ if (repair1.continue_repair)
690
+ evidence.push("修复循环第1次继续");
691
+ else
692
+ failures.push("修复循环第1次应继续");
693
+ // 修复循环: 超预算停止
694
+ const repair2 = evaluateRepairLoop(3, {
695
+ max_iterations: 3,
696
+ rebuild_required_after_fix: true,
697
+ redeploy_required_after_fix: true,
698
+ retest_required_after_fix: true,
699
+ stop_conditions: ["retry_budget_exhausted"],
700
+ }, ["error1"], []);
701
+ if (!repair2.continue_repair)
702
+ evidence.push("超预算停止");
703
+ else
704
+ failures.push("超预算应停止");
705
+ // ── 步骤 5: performBrowserAcceptance 拒绝空 errors 模拟成功 ──
706
+ const emptyAttempt = performBrowserAcceptance(plan, [], {
707
+ max_iterations: 3,
708
+ rebuild_required_after_fix: true,
709
+ redeploy_required_after_fix: true,
710
+ retest_required_after_fix: true,
711
+ stop_conditions: ["retry_budget_exhausted"],
712
+ });
713
+ if (emptyAttempt.evidence.acceptance_status === "failed" && emptyAttempt.stopReason?.includes("executeRealHttpAcceptance")) {
714
+ evidence.push("空 errors 被正确拒绝,必须使用 executeRealHttpAcceptance 或 executeHttpAcceptanceWithTransport");
715
+ }
716
+ else {
717
+ failures.push("空 errors 不应直接判定 passed");
718
+ }
719
+ // ── 步骤 6: 最终 URL 交付 ──
720
+ const contract = createLocalDockerAcceptanceContract({
721
+ project_run_mode: "docker_compose",
722
+ final_access: {
723
+ frontend_urls: ["http://localhost:3000"],
724
+ backend_urls: ["http://localhost:8080"],
725
+ docs_or_swagger_urls: ["http://localhost:8080/api/docs"],
726
+ start_commands: ["docker compose up -d"],
727
+ stop_commands: ["docker compose down"],
728
+ running_status: "running",
729
+ manual_review_steps_zh: ["检查首页加载", "检查登录功能"],
730
+ known_limits_zh: ["首次启动需等待约 30 秒"],
731
+ },
732
+ });
733
+ const access = validateFinalAccess(contract.final_access, contract.project_run_mode);
734
+ if (access.passed)
735
+ evidence.push("最终 URL 交付完整");
736
+ else
737
+ failures.push(`最终 URL 交付失败: ${access.blocking_reasons.join("; ")}`);
738
+ // 无 URL 不得 delivered
739
+ const contractNoUrl = createLocalDockerAcceptanceContract({
740
+ project_run_mode: "docker_compose",
741
+ final_access: {
742
+ frontend_urls: [], backend_urls: [], docs_or_swagger_urls: [],
743
+ start_commands: ["docker compose up -d"],
744
+ stop_commands: ["docker compose down"],
745
+ running_status: "not_started",
746
+ manual_review_steps_zh: [],
747
+ known_limits_zh: [],
748
+ },
749
+ });
750
+ const accessNoUrl = validateFinalAccess(contractNoUrl.final_access, contractNoUrl.project_run_mode);
751
+ if (!accessNoUrl.passed)
752
+ evidence.push("无 URL 不得 delivered");
753
+ else
754
+ failures.push("无 URL 应被阻断");
755
+ return { scenario_id: "scenario-K", scenario_name: "本地 Docker/浏览器验收", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
756
+ }
757
+ function runScenarioL() {
758
+ const evidence = [];
759
+ const failures = [];
760
+ // 模板必须走完消费 pipeline — 使用真实 owner_mechanism_id
761
+ const workflowEntry = createWorkflowTemplateEntry("architecture_design", "templates/knowledge/procedures/架构设计工作流.md");
762
+ workflowEntry.owner_mechanism_ids = ["mc-architecture-design"];
763
+ const pack = createWorkflowTemplatePackContract({
764
+ workflows: [workflowEntry],
765
+ mechanism_consumption_map: [{ template_path: "templates/knowledge/procedures/架构设计工作流.md", consumed_mechanism_id: "mc-architecture-design", consumption_type: "route_trigger", evidence_required: true }],
766
+ });
767
+ // 消费停在中间被检测
768
+ const evidences = [createTemplateConsumptionEvidence("templates/knowledge/procedures/架构设计工作流.md")];
769
+ evidences[0].template_consumption_status = "file_created";
770
+ const v1 = validateWorkflowTemplatePack(pack, evidences);
771
+ if (!v1.valid)
772
+ evidence.push("停在中间状态被检测");
773
+ else
774
+ failures.push("停在 file_created 应不合规");
775
+ // 走完 pipeline 通过 — 必须有真实链路证据
776
+ evidences[0].template_consumption_status = "verified";
777
+ evidences[0].workflow_template_refs = ["wf-architecture-design"];
778
+ evidences[0].route_trigger_refs = ["架构设计"];
779
+ evidences[0].adapter_prompt_refs = [];
780
+ evidences[0].sync_migration_refs = ["manifest:templates/knowledge/procedures/架构设计工作流.md"];
781
+ evidences[0].scenario_refs = ["scenario-H"];
782
+ const v2 = validateWorkflowTemplatePack(pack, evidences);
783
+ if (v2.valid)
784
+ evidence.push("走完 pipeline 通过");
785
+ else
786
+ failures.push(`走完 pipeline 应通过: ${v2.violations.join("; ")}`);
787
+ // pipeline 顺序正确
788
+ const adv1 = advanceTemplateConsumptionStatus("missing");
789
+ if (adv1.allowed && adv1.next === "file_created")
790
+ evidence.push("pipeline 顺序正确");
791
+ else
792
+ failures.push("missing → file_created 应允许");
793
+ // 手工置绿必须被检测
794
+ const fakeEvidences = [createTemplateConsumptionEvidence("templates/knowledge/procedures/架构设计工作流.md")];
795
+ fakeEvidences[0].template_consumption_status = "verified";
796
+ const v3 = validateWorkflowTemplatePack(pack, fakeEvidences);
797
+ if (!v3.valid)
798
+ evidence.push("手工置绿被检测");
799
+ else
800
+ failures.push("手工设置 verified 但无链路引用应不合规");
801
+ return { scenario_id: "scenario-L", scenario_name: "工作流模板包消费", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
802
+ }
803
+ function runScenarioM() {
804
+ const evidence = [];
805
+ const failures = [];
806
+ // 重复问题被检测
807
+ const dup = checkDuplicateIssue("实现缓存方案", [
808
+ { id: "issue-1", title: "实现缓存方案", status: "open" },
809
+ ]);
810
+ if (dup.possible_duplicates.length > 0 && dup.can_merge_into_existing_issue) {
811
+ evidence.push("重复问题被检测");
812
+ }
813
+ else {
814
+ failures.push("重复问题应被检测");
815
+ }
816
+ // 模板演进影响被分析
817
+ const impact = analyzeTemplateEvolutionImpact(["extension_contracts"], ["architecture_design"]);
818
+ if (impact.template_update_required)
819
+ evidence.push("模板演进影响被分析");
820
+ else
821
+ failures.push("有 contract 变更应需要模板更新");
822
+ // 未通过门控不得 accepted
823
+ const gate = createNewIssueRegressionGate({
824
+ issue_candidate_id: "new-1",
825
+ candidate_title: "新问题",
826
+ evolution_gate_status: "pending",
827
+ });
828
+ const result = performEvolutionGate(gate);
829
+ if (!result.allowed)
830
+ evidence.push("未通过门控不得 accepted");
831
+ else
832
+ failures.push("pending 状态不应被接受");
833
+ // 通过门控
834
+ const gate2 = createNewIssueRegressionGate({
835
+ issue_candidate_id: "new-2",
836
+ candidate_title: "全新问题",
837
+ evolution_gate_status: "accepted",
838
+ decision: "create_new_batch",
839
+ });
840
+ const result2 = performEvolutionGate(gate2);
841
+ if (result2.allowed)
842
+ evidence.push("通过门控被接受");
843
+ else
844
+ failures.push(`合规门控应通过: ${result2.reasons.join("; ")}`);
845
+ return { scenario_id: "scenario-M", scenario_name: "演进回归与新问题门控", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
846
+ }
847
+ /** 运行全部 A-M 场景(场景 K 使用 transport-level 内存验收) */
848
+ export async function runAllExtensionScenarios() {
849
+ return [
850
+ runScenarioA(), runScenarioB(), runScenarioC(), runScenarioD(),
851
+ runScenarioE(), runScenarioF(), runScenarioG(), runScenarioH(),
852
+ runScenarioI(), runScenarioJ(),
853
+ await runScenarioKAsync(),
854
+ runScenarioL(), runScenarioM(),
855
+ ];
856
+ }
857
+ /**
858
+ * 异步版本场景 K: 使用 executeHttpAcceptanceWithTransport() 执行 transport-level 验收。
859
+ * 不启动真实本地 HTTP 服务,使用内存 transport。
860
+ * PASS 证据包含 target_url、health_check_output、browser_steps、assertion_results、run_hash。
861
+ * executeRealHttpAcceptance() 属于实际运行/集成验收能力,不属于默认 gate。
862
+ */
863
+ export async function runScenarioKAsync() {
864
+ const evidence = [];
865
+ const failures = [];
866
+ // ── 步骤 1: 评估是否需要本地验收 ──
867
+ const req1 = requiresLocalAcceptance(true, true, true, false);
868
+ if (req1.required && req1.run_mode === "docker_compose")
869
+ evidence.push("docker_compose 项目需要本地验收");
870
+ else
871
+ failures.push("docker_compose 项目应需要本地验收");
872
+ // ── 步骤 2: 内存 transport 验收(不绑定端口) ──
873
+ const targetUrl = "http://127.0.0.1:1/memory-acceptance";
874
+ const transport = async (_url) => ({
875
+ status: 200,
876
+ text: async () => "<html><head><title>SoloForge Test</title></head><body><h1>OK</h1></body></html>",
877
+ });
878
+ // ── 步骤 3: 执行 transport-level HTTP 验收 ──
879
+ const realResult = await executeHttpAcceptanceWithTransport(targetUrl, [
880
+ { name: "状态码 200", check: (status) => status === 200 },
881
+ { name: "body 含 OK", check: (_s, body) => body.includes("OK") },
882
+ ], transport);
883
+ if (realResult.health_check_ok && realResult.http_status === 200) {
884
+ evidence.push(`transport-level 验收通过: ${realResult.health_check_output}`);
885
+ }
886
+ else {
887
+ failures.push(`transport-level 验收失败: ${realResult.health_check_output}`);
888
+ }
889
+ if (realResult.assertion_results.length >= 2 && realResult.assertion_results.every(r => r.endsWith(": PASS"))) {
890
+ evidence.push("transport 断言全部通过");
891
+ }
892
+ else {
893
+ failures.push(`transport 断言失败: ${realResult.assertion_results.join(", ")}`);
894
+ }
895
+ if (realResult.timestamp && realResult.run_hash) {
896
+ evidence.push(`运行证据: ts=${realResult.timestamp}, hash=${realResult.run_hash.slice(0, 20)}...`);
897
+ }
898
+ else {
899
+ failures.push("缺少运行时间戳或 hash");
900
+ }
901
+ // ── 步骤 4: 构造浏览器验收证据 ──
902
+ const browserEvidence = realResultToBrowserEvidence(realResult, "场景K transport-level 验收");
903
+ if (browserEvidence.acceptance_status === "passed") {
904
+ evidence.push("浏览器验收证据状态为 passed");
905
+ }
906
+ else {
907
+ failures.push(`浏览器验收证据状态为 ${browserEvidence.acceptance_status},期望 passed`);
908
+ }
909
+ if (browserEvidence.browser_steps.length > 0 && browserEvidence.assertion_results.length > 0) {
910
+ evidence.push(`browser_steps: ${browserEvidence.browser_steps[0]}`);
911
+ }
912
+ else {
913
+ failures.push("浏览器验收证据缺少 browser_steps 或 assertion_results");
914
+ }
915
+ // ── 步骤 5: 完整本地验收契约验证 ──
916
+ const contract = createLocalDockerAcceptanceContract({
917
+ project_run_mode: "local_dev_server",
918
+ local_runtime_evidence: {
919
+ build_command: "npm run build",
920
+ image_ids: [],
921
+ build_artifacts: ["dist/bundle.js"],
922
+ container_ids: [],
923
+ service_urls: [targetUrl],
924
+ health_check_outputs: [realResult.health_check_output],
925
+ logs_summary_zh: ["内存 transport 服务正常"],
926
+ },
927
+ browser_acceptance_evidence: [browserEvidence],
928
+ final_access: {
929
+ frontend_urls: [targetUrl],
930
+ backend_urls: [],
931
+ docs_or_swagger_urls: [],
932
+ start_commands: ["npm run dev"],
933
+ stop_commands: ["Ctrl+C"],
934
+ running_status: "running",
935
+ manual_review_steps_zh: [],
936
+ known_limits_zh: [],
937
+ },
938
+ });
939
+ const fullResult = validateLocalAcceptanceEvidence(contract);
940
+ if (fullResult.passed) {
941
+ evidence.push("完整本地验收契约验证通过");
942
+ }
943
+ else {
944
+ failures.push(`完整本地验收契约验证失败: ${fullResult.blocking_reasons.join("; ")}`);
945
+ }
946
+ // ── 步骤 6: 首次验收失败 → 修复循环 ──
947
+ const firstAttempt = performBrowserAcceptance({ target_urls: [targetUrl], user_flows: ["首页"], viewport_matrix: ["desktop"], required_assertions: [], screenshot_or_trace_required: false }, ["TypeError: 模拟错误"], { max_iterations: 3, rebuild_required_after_fix: true, redeploy_required_after_fix: true, retest_required_after_fix: true, stop_conditions: ["retry_budget_exhausted"] });
948
+ if (firstAttempt.needsRepair && firstAttempt.evidence.acceptance_status === "failed") {
949
+ evidence.push("首次验收失败被捕获(capture)");
950
+ }
951
+ else {
952
+ failures.push("首次验收失败应触发修复");
953
+ }
954
+ // 空 errors 被 rejected
955
+ const emptyAttempt = performBrowserAcceptance({ target_urls: [targetUrl], user_flows: ["首页"], viewport_matrix: ["desktop"], required_assertions: [], screenshot_or_trace_required: false }, [], { max_iterations: 3, rebuild_required_after_fix: true, redeploy_required_after_fix: true, retest_required_after_fix: true, stop_conditions: ["retry_budget_exhausted"] });
956
+ if (emptyAttempt.evidence.acceptance_status === "failed" && emptyAttempt.stopReason?.includes("executeRealHttpAcceptance")) {
957
+ evidence.push("空 errors 被正确拒绝");
958
+ }
959
+ else {
960
+ failures.push("空 errors 不应直接判定 passed");
961
+ }
962
+ // 无 URL 不得 delivered
963
+ const noUrlResult = validateFinalAccess({
964
+ frontend_urls: [], backend_urls: [], docs_or_swagger_urls: [],
965
+ start_commands: [], stop_commands: [], running_status: "not_started",
966
+ manual_review_steps_zh: [], known_limits_zh: [],
967
+ }, "docker_compose");
968
+ if (!noUrlResult.passed)
969
+ evidence.push("无 URL 不得 delivered");
970
+ else
971
+ failures.push("无 URL 应被阻断");
972
+ return { scenario_id: "scenario-K", scenario_name: "本地 Docker/浏览器验收(transport-level acceptance)", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
973
+ }
974
+ /** @deprecated 使用 runAllExtensionScenarios() 代替,后者已改为 async */
975
+ export const runAllExtensionScenariosAsync = runAllExtensionScenarios;
976
+ //# sourceMappingURL=extension_scenario_registry.js.map