soloforge 1.1.36 → 1.1.38

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 (847) hide show
  1. package/README.md +6 -6
  2. package/dist/adapters/claude_code/claude_md.js +2 -2
  3. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  4. package/dist/adapters/codex/codex_rules.js +1 -1
  5. package/dist/adapters/codex/codex_rules.js.map +1 -1
  6. package/dist/adapters/shared/workflow_template.js +1 -1
  7. package/dist/adapters/trae/trae_rules.js +1 -1
  8. package/dist/adapters/trae/trae_rules.js.map +1 -1
  9. package/dist/bin/commands/audit.js +1 -1
  10. package/dist/bin/commands/audit.js.map +1 -1
  11. package/dist/bin/commands/check_bash.d.ts.map +1 -1
  12. package/dist/bin/commands/check_bash.js +19 -1
  13. package/dist/bin/commands/check_bash.js.map +1 -1
  14. package/dist/bin/commands/check_write.d.ts.map +1 -1
  15. package/dist/bin/commands/check_write.js +115 -2
  16. package/dist/bin/commands/check_write.js.map +1 -1
  17. package/dist/bin/commands/sync.js +3 -3
  18. package/dist/bin/commands/sync.js.map +1 -1
  19. package/dist/bin/commands/validate.d.ts.map +1 -1
  20. package/dist/bin/commands/validate.js +24 -5
  21. package/dist/bin/commands/validate.js.map +1 -1
  22. package/dist/engine/adapter_prompt_contract.d.ts +1 -1
  23. package/dist/engine/adapter_prompt_contract.d.ts.map +1 -1
  24. package/dist/engine/adapter_prompt_contract.js +1 -1
  25. package/dist/engine/adapter_prompt_contract.js.map +1 -1
  26. package/dist/engine/audit/audit_sampler.d.ts +1 -1
  27. package/dist/engine/audit/confidence_scorer.d.ts +16 -0
  28. package/dist/engine/audit/confidence_scorer.d.ts.map +1 -1
  29. package/dist/engine/audit/confidence_scorer.js +19 -0
  30. package/dist/engine/audit/confidence_scorer.js.map +1 -1
  31. package/dist/engine/audit/core_engineering_principles.d.ts +4 -4
  32. package/dist/engine/audit/core_engineering_principles.d.ts.map +1 -1
  33. package/dist/engine/audit/core_engineering_principles.js +18 -21
  34. package/dist/engine/audit/core_engineering_principles.js.map +1 -1
  35. package/dist/engine/audit/core_experience_principle.js +3 -3
  36. package/dist/engine/audit/core_experience_principle.js.map +1 -1
  37. package/dist/engine/audit/debt_reporter.d.ts +1 -1
  38. package/dist/engine/audit/debugger.d.ts +1 -1
  39. package/dist/engine/audit/delivery_readiness.d.ts +2 -2
  40. package/dist/engine/audit/delivery_readiness.js +2 -2
  41. package/dist/engine/audit/diagnostic_registry.js +4 -4
  42. package/dist/engine/audit/diagnostic_registry.js.map +1 -1
  43. package/dist/engine/audit/evolver.d.ts.map +1 -1
  44. package/dist/engine/audit/evolver.js +29 -2
  45. package/dist/engine/audit/evolver.js.map +1 -1
  46. package/dist/engine/audit/observability.d.ts +1 -1
  47. package/dist/engine/audit/observability.js +1 -1
  48. package/dist/engine/audit/risk_sampler.d.ts +1 -1
  49. package/dist/engine/audit/risk_sampler.js +1 -1
  50. package/dist/engine/audit/semantic_evidence.d.ts +1 -1
  51. package/dist/engine/audit/semantic_evidence.js +1 -1
  52. package/dist/engine/audit/test_generator.js +1 -1
  53. package/dist/engine/audit/test_quality.d.ts +1 -1
  54. package/dist/engine/audit/test_quality.js +1 -1
  55. package/dist/engine/config/regression_matrix.d.ts.map +1 -1
  56. package/dist/engine/config/regression_matrix.js +9 -35
  57. package/dist/engine/config/regression_matrix.js.map +1 -1
  58. package/dist/engine/contracts/architecture_decision_workshop.d.ts +7 -2
  59. package/dist/engine/contracts/architecture_decision_workshop.d.ts.map +1 -1
  60. package/dist/engine/contracts/architecture_decision_workshop.js +6 -2
  61. package/dist/engine/contracts/architecture_decision_workshop.js.map +1 -1
  62. package/dist/engine/contracts/capability_registry.d.ts.map +1 -1
  63. package/dist/engine/contracts/capability_registry.js +4 -5
  64. package/dist/engine/contracts/capability_registry.js.map +1 -1
  65. package/dist/engine/contracts/code_maintainability_observability_contract.js +2 -2
  66. package/dist/engine/contracts/code_maintainability_observability_contract.js.map +1 -1
  67. package/dist/engine/contracts/command_execution_contract.d.ts +1 -1
  68. package/dist/engine/contracts/command_execution_contract.js +3 -3
  69. package/dist/engine/contracts/command_execution_contract.js.map +1 -1
  70. package/dist/engine/contracts/contract_registry/builtin_contracts_core.js +12 -12
  71. package/dist/engine/contracts/contract_registry/builtin_contracts_core.js.map +1 -1
  72. package/dist/engine/contracts/control_plane_contract.d.ts.map +1 -1
  73. package/dist/engine/contracts/control_plane_contract.js +27 -13
  74. package/dist/engine/contracts/control_plane_contract.js.map +1 -1
  75. package/dist/engine/contracts/decision_contract.d.ts +1 -1
  76. package/dist/engine/contracts/decision_contract.js +1 -1
  77. package/dist/engine/contracts/decision_workshop.d.ts +1 -3
  78. package/dist/engine/contracts/decision_workshop.d.ts.map +1 -1
  79. package/dist/engine/contracts/decision_workshop.js.map +1 -1
  80. package/dist/engine/contracts/design_lifecycle_contract.d.ts +2 -2
  81. package/dist/engine/contracts/design_lifecycle_contract.d.ts.map +1 -1
  82. package/dist/engine/contracts/design_lifecycle_contract.js +12 -12
  83. package/dist/engine/contracts/design_lifecycle_contract.js.map +1 -1
  84. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit.js +11 -11
  85. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit.js.map +1 -1
  86. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit_tail.js +3 -3
  87. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_audit_tail.js.map +1 -1
  88. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_core.d.ts.map +1 -1
  89. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_core.js +68 -28
  90. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_core.js.map +1 -1
  91. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_extension.js +11 -11
  92. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_extension.js.map +1 -1
  93. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_governance.js +10 -10
  94. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_governance.js.map +1 -1
  95. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_infra.js +8 -8
  96. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_infra.js.map +1 -1
  97. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_platform.js +18 -18
  98. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_platform.js.map +1 -1
  99. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_release.js +12 -12
  100. package/dist/engine/contracts/dual_layer_mechanism_registry/mechanisms_release.js.map +1 -1
  101. package/dist/engine/contracts/dual_layer_mechanism_registry/shared.js +2 -2
  102. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.d.ts.map +1 -1
  103. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js +4 -3
  104. package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js.map +1 -1
  105. package/dist/engine/contracts/enforcement_guard.d.ts +1 -1
  106. package/dist/engine/contracts/enforcement_guard.js +3 -3
  107. package/dist/engine/contracts/enforcement_guard.js.map +1 -1
  108. package/dist/engine/contracts/evolution_regression_gate.d.ts +1 -1
  109. package/dist/engine/contracts/evolution_regression_gate.js +1 -1
  110. package/dist/engine/contracts/instruction_contract.js +1 -1
  111. package/dist/engine/contracts/instruction_contract.js.map +1 -1
  112. package/dist/engine/contracts/lifecycle_knowledge_contract.d.ts +2 -2
  113. package/dist/engine/contracts/lifecycle_knowledge_contract.d.ts.map +1 -1
  114. package/dist/engine/contracts/lifecycle_knowledge_contract.js +10 -10
  115. package/dist/engine/contracts/lifecycle_knowledge_contract.js.map +1 -1
  116. package/dist/engine/contracts/mechanism_contract_registry/contracts-audit.d.ts.map +1 -1
  117. package/dist/engine/contracts/mechanism_contract_registry/contracts-audit.js +18 -17
  118. package/dist/engine/contracts/mechanism_contract_registry/contracts-audit.js.map +1 -1
  119. package/dist/engine/contracts/mechanism_contract_registry/contracts-governance.js +30 -30
  120. package/dist/engine/contracts/mechanism_contract_registry/contracts-governance.js.map +1 -1
  121. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.d.ts +3 -2
  122. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.d.ts.map +1 -1
  123. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.js +75 -52
  124. package/dist/engine/contracts/mechanism_contract_registry/contracts-pipeline.js.map +1 -1
  125. package/dist/engine/contracts/mechanism_contract_registry/contracts-platform.js +20 -20
  126. package/dist/engine/contracts/mechanism_contract_registry/contracts-platform.js.map +1 -1
  127. package/dist/engine/contracts/mechanism_health_check.d.ts +1 -1
  128. package/dist/engine/contracts/mechanism_health_check.js +1 -1
  129. package/dist/engine/contracts/omission_scanner.d.ts +1 -1
  130. package/dist/engine/contracts/omission_scanner.js +1 -1
  131. package/dist/engine/contracts/platform_context.d.ts +1 -1
  132. package/dist/engine/contracts/platform_context.js +1 -1
  133. package/dist/engine/contracts/project_knowledge_contract.d.ts +2 -2
  134. package/dist/engine/contracts/project_knowledge_contract.d.ts.map +1 -1
  135. package/dist/engine/contracts/project_knowledge_contract.js +6 -6
  136. package/dist/engine/contracts/project_knowledge_contract.js.map +1 -1
  137. package/dist/engine/contracts/state_machine_contracts.d.ts +17 -0
  138. package/dist/engine/contracts/state_machine_contracts.d.ts.map +1 -0
  139. package/dist/engine/contracts/state_machine_contracts.js +97 -0
  140. package/dist/engine/contracts/state_machine_contracts.js.map +1 -0
  141. package/dist/engine/contracts/technology_decision.d.ts +18 -0
  142. package/dist/engine/contracts/technology_decision.d.ts.map +1 -1
  143. package/dist/engine/contracts/technology_decision.js +38 -0
  144. package/dist/engine/contracts/technology_decision.js.map +1 -1
  145. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts +2 -3
  146. package/dist/engine/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
  147. package/dist/engine/contracts/tool_invocation_contract_registry.js +163 -186
  148. package/dist/engine/contracts/tool_invocation_contract_registry.js.map +1 -1
  149. package/dist/engine/contracts/user_feedback_contract.d.ts +1 -1
  150. package/dist/engine/contracts/user_feedback_contract.d.ts.map +1 -1
  151. package/dist/engine/contracts/user_feedback_contract.js +6 -9
  152. package/dist/engine/contracts/user_feedback_contract.js.map +1 -1
  153. package/dist/engine/contracts/workflow_template_pack.d.ts +1 -1
  154. package/dist/engine/contracts/workflow_template_pack.js +5 -5
  155. package/dist/engine/contracts/workflow_template_pack.js.map +1 -1
  156. package/dist/engine/core/debug_log.d.ts +1 -1
  157. package/dist/engine/core/debug_log.js +1 -1
  158. package/dist/engine/knowledge/knowledge_asset_audit.d.ts.map +1 -1
  159. package/dist/engine/knowledge/knowledge_asset_audit.js +4 -2
  160. package/dist/engine/knowledge/knowledge_asset_audit.js.map +1 -1
  161. package/dist/engine/knowledge/knowledge_asset_consumer.d.ts +21 -20
  162. package/dist/engine/knowledge/knowledge_asset_consumer.d.ts.map +1 -1
  163. package/dist/engine/knowledge/knowledge_asset_consumer.js +24 -22
  164. package/dist/engine/knowledge/knowledge_asset_consumer.js.map +1 -1
  165. package/dist/engine/knowledge/knowledge_asset_migration.js +1 -1
  166. package/dist/engine/knowledge/knowledge_asset_migration.js.map +1 -1
  167. package/dist/engine/knowledge/knowledge_asset_schema.d.ts +2 -1
  168. package/dist/engine/knowledge/knowledge_asset_schema.d.ts.map +1 -1
  169. package/dist/engine/knowledge/knowledge_asset_schema.js +25 -7
  170. package/dist/engine/knowledge/knowledge_asset_schema.js.map +1 -1
  171. package/dist/engine/knowledge/knowledge_consumption_snapshot.d.ts +3 -3
  172. package/dist/engine/knowledge/knowledge_consumption_snapshot.d.ts.map +1 -1
  173. package/dist/engine/knowledge/knowledge_consumption_snapshot.js +5 -5
  174. package/dist/engine/knowledge/knowledge_consumption_snapshot.js.map +1 -1
  175. package/dist/engine/knowledge/knowledge_injection_boundary.d.ts +36 -5
  176. package/dist/engine/knowledge/knowledge_injection_boundary.d.ts.map +1 -1
  177. package/dist/engine/knowledge/knowledge_injection_boundary.js +95 -40
  178. package/dist/engine/knowledge/knowledge_injection_boundary.js.map +1 -1
  179. package/dist/engine/knowledge/knowledge_scenario_registry.js +1 -1
  180. package/dist/engine/knowledge/knowledge_scenario_registry.js.map +1 -1
  181. package/dist/engine/knowledge/knowledge_writer.js +3 -3
  182. package/dist/engine/knowledge/knowledge_writer.js.map +1 -1
  183. package/dist/engine/knowledge/language_policy.d.ts +2 -2
  184. package/dist/engine/knowledge/language_policy.js +2 -2
  185. package/dist/engine/onboarding.d.ts +1 -1
  186. package/dist/engine/onboarding.js +2 -2
  187. package/dist/engine/onboarding.js.map +1 -1
  188. package/dist/engine/pipeline/artifact_aliases.d.ts +19 -0
  189. package/dist/engine/pipeline/artifact_aliases.d.ts.map +1 -0
  190. package/dist/engine/pipeline/artifact_aliases.js +39 -0
  191. package/dist/engine/pipeline/artifact_aliases.js.map +1 -0
  192. package/dist/engine/pipeline/input_material_extractor.d.ts +1 -1
  193. package/dist/engine/pipeline/input_material_extractor.d.ts.map +1 -1
  194. package/dist/engine/pipeline/intent_expander/helpers.d.ts +15 -29
  195. package/dist/engine/pipeline/intent_expander/helpers.d.ts.map +1 -1
  196. package/dist/engine/pipeline/intent_expander/helpers.js +15 -158
  197. package/dist/engine/pipeline/intent_expander/helpers.js.map +1 -1
  198. package/dist/engine/pipeline/intent_expander/index.d.ts +1 -2
  199. package/dist/engine/pipeline/intent_expander/index.d.ts.map +1 -1
  200. package/dist/engine/pipeline/intent_expander/index.js +1 -3
  201. package/dist/engine/pipeline/intent_expander/index.js.map +1 -1
  202. package/dist/engine/pipeline/intent_expander/knowledge.d.ts +4 -13
  203. package/dist/engine/pipeline/intent_expander/knowledge.d.ts.map +1 -1
  204. package/dist/engine/pipeline/intent_expander/knowledge.js +14 -169
  205. package/dist/engine/pipeline/intent_expander/knowledge.js.map +1 -1
  206. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts +7 -5
  207. package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts.map +1 -1
  208. package/dist/engine/pipeline/intent_expander/knowledge_resolution.js +84 -30
  209. package/dist/engine/pipeline/intent_expander/knowledge_resolution.js.map +1 -1
  210. package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts +13 -100
  211. package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts.map +1 -1
  212. package/dist/engine/pipeline/intent_expander/privacy_gates.js +18 -268
  213. package/dist/engine/pipeline/intent_expander/privacy_gates.js.map +1 -1
  214. package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts +9 -5
  215. package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts.map +1 -1
  216. package/dist/engine/pipeline/intent_expander/scope_acceptance.js +13 -31
  217. package/dist/engine/pipeline/intent_expander/scope_acceptance.js.map +1 -1
  218. package/dist/engine/pipeline/intent_expander/templates.d.ts +2 -1
  219. package/dist/engine/pipeline/intent_expander/templates.d.ts.map +1 -1
  220. package/dist/engine/pipeline/intent_expander/templates.js +73 -0
  221. package/dist/engine/pipeline/intent_expander/templates.js.map +1 -1
  222. package/dist/engine/pipeline/intent_expander/types.d.ts +0 -2
  223. package/dist/engine/pipeline/intent_expander/types.d.ts.map +1 -1
  224. package/dist/engine/pipeline/intent_expander.d.ts +5 -3
  225. package/dist/engine/pipeline/intent_expander.d.ts.map +1 -1
  226. package/dist/engine/pipeline/intent_expander.js +4 -3
  227. package/dist/engine/pipeline/intent_expander.js.map +1 -1
  228. package/dist/engine/pipeline/job_manager.d.ts +1 -1
  229. package/dist/engine/pipeline/job_manager.js +1 -1
  230. package/dist/engine/pipeline/prompt_template_resolver.d.ts +13 -0
  231. package/dist/engine/pipeline/prompt_template_resolver.d.ts.map +1 -0
  232. package/dist/engine/pipeline/prompt_template_resolver.js +25 -0
  233. package/dist/engine/pipeline/prompt_template_resolver.js.map +1 -0
  234. package/dist/engine/pipeline/rollback_router.d.ts +1 -1
  235. package/dist/engine/pipeline/rollback_router.d.ts.map +1 -1
  236. package/dist/engine/pipeline/scope_resolver.d.ts +9 -2
  237. package/dist/engine/pipeline/scope_resolver.d.ts.map +1 -1
  238. package/dist/engine/pipeline/scope_resolver.js +29 -15
  239. package/dist/engine/pipeline/scope_resolver.js.map +1 -1
  240. package/dist/engine/pipeline/slice_executor.d.ts +5 -1
  241. package/dist/engine/pipeline/slice_executor.d.ts.map +1 -1
  242. package/dist/engine/pipeline/slice_executor.js +4 -1
  243. package/dist/engine/pipeline/slice_executor.js.map +1 -1
  244. package/dist/engine/pipeline/state_machine/audit_logger.d.ts +42 -0
  245. package/dist/engine/pipeline/state_machine/audit_logger.d.ts.map +1 -0
  246. package/dist/engine/pipeline/state_machine/audit_logger.js +65 -0
  247. package/dist/engine/pipeline/state_machine/audit_logger.js.map +1 -0
  248. package/dist/engine/pipeline/state_machine/capability_safety_valve.d.ts +51 -0
  249. package/dist/engine/pipeline/state_machine/capability_safety_valve.d.ts.map +1 -0
  250. package/dist/engine/pipeline/state_machine/capability_safety_valve.js +131 -0
  251. package/dist/engine/pipeline/state_machine/capability_safety_valve.js.map +1 -0
  252. package/dist/engine/pipeline/state_machine/certainty_gate.d.ts +92 -0
  253. package/dist/engine/pipeline/state_machine/certainty_gate.d.ts.map +1 -0
  254. package/dist/engine/pipeline/state_machine/certainty_gate.js +317 -0
  255. package/dist/engine/pipeline/state_machine/certainty_gate.js.map +1 -0
  256. package/dist/engine/pipeline/state_machine/command_state_verifier.d.ts +50 -0
  257. package/dist/engine/pipeline/state_machine/command_state_verifier.d.ts.map +1 -0
  258. package/dist/engine/pipeline/state_machine/command_state_verifier.js +160 -0
  259. package/dist/engine/pipeline/state_machine/command_state_verifier.js.map +1 -0
  260. package/dist/engine/pipeline/state_machine/hook_classifier.d.ts +58 -0
  261. package/dist/engine/pipeline/state_machine/hook_classifier.d.ts.map +1 -0
  262. package/dist/engine/pipeline/state_machine/hook_classifier.js +123 -0
  263. package/dist/engine/pipeline/state_machine/hook_classifier.js.map +1 -0
  264. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.d.ts +33 -0
  265. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.d.ts.map +1 -0
  266. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.js +72 -0
  267. package/dist/engine/pipeline/state_machine/human_uncertainty_detector.js.map +1 -0
  268. package/dist/engine/pipeline/state_machine/knowledge_stage_query.d.ts +21 -0
  269. package/dist/engine/pipeline/state_machine/knowledge_stage_query.d.ts.map +1 -0
  270. package/dist/engine/pipeline/state_machine/knowledge_stage_query.js +33 -0
  271. package/dist/engine/pipeline/state_machine/knowledge_stage_query.js.map +1 -0
  272. package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts +154 -0
  273. package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts.map +1 -0
  274. package/dist/engine/pipeline/state_machine/pipeline_state_machine.js +1089 -0
  275. package/dist/engine/pipeline/state_machine/pipeline_state_machine.js.map +1 -0
  276. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.d.ts +34 -0
  277. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.d.ts.map +1 -0
  278. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.js +152 -0
  279. package/dist/engine/pipeline/state_machine/risk_pattern_scanner.js.map +1 -0
  280. package/dist/engine/pipeline/state_machine/route_usage_stats.d.ts +28 -0
  281. package/dist/engine/pipeline/state_machine/route_usage_stats.d.ts.map +1 -0
  282. package/dist/engine/pipeline/state_machine/route_usage_stats.js +76 -0
  283. package/dist/engine/pipeline/state_machine/route_usage_stats.js.map +1 -0
  284. package/dist/engine/pipeline/state_machine/sf_command_parser.d.ts +22 -0
  285. package/dist/engine/pipeline/state_machine/sf_command_parser.d.ts.map +1 -0
  286. package/dist/engine/pipeline/state_machine/sf_command_parser.js +170 -0
  287. package/dist/engine/pipeline/state_machine/sf_command_parser.js.map +1 -0
  288. package/dist/engine/pipeline/state_machine/stage_command_registry.d.ts +38 -0
  289. package/dist/engine/pipeline/state_machine/stage_command_registry.d.ts.map +1 -0
  290. package/dist/engine/pipeline/state_machine/stage_command_registry.js +218 -0
  291. package/dist/engine/pipeline/state_machine/stage_command_registry.js.map +1 -0
  292. package/dist/engine/pipeline/state_machine/stage_executor.d.ts +37 -0
  293. package/dist/engine/pipeline/state_machine/stage_executor.d.ts.map +1 -0
  294. package/dist/engine/pipeline/state_machine/stage_executor.js +67 -0
  295. package/dist/engine/pipeline/state_machine/stage_executor.js.map +1 -0
  296. package/dist/engine/pipeline/state_machine/state_migrator.d.ts +21 -0
  297. package/dist/engine/pipeline/state_machine/state_migrator.d.ts.map +1 -0
  298. package/dist/engine/pipeline/state_machine/state_migrator.js +130 -0
  299. package/dist/engine/pipeline/state_machine/state_migrator.js.map +1 -0
  300. package/dist/engine/pipeline/state_machine/state_self_diagnostic.d.ts +48 -0
  301. package/dist/engine/pipeline/state_machine/state_self_diagnostic.d.ts.map +1 -0
  302. package/dist/engine/pipeline/state_machine/state_self_diagnostic.js +566 -0
  303. package/dist/engine/pipeline/state_machine/state_self_diagnostic.js.map +1 -0
  304. package/dist/engine/pipeline/state_machine/static_route_table.d.ts +36 -0
  305. package/dist/engine/pipeline/state_machine/static_route_table.d.ts.map +1 -0
  306. package/dist/engine/pipeline/state_machine/static_route_table.js +112 -0
  307. package/dist/engine/pipeline/state_machine/static_route_table.js.map +1 -0
  308. package/dist/engine/pipeline/state_machine/strong_confirmation.d.ts +45 -0
  309. package/dist/engine/pipeline/state_machine/strong_confirmation.d.ts.map +1 -0
  310. package/dist/engine/pipeline/state_machine/strong_confirmation.js +57 -0
  311. package/dist/engine/pipeline/state_machine/strong_confirmation.js.map +1 -0
  312. package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts +55 -0
  313. package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts.map +1 -0
  314. package/dist/engine/pipeline/state_machine/uncertainty_bridge.js +48 -0
  315. package/dist/engine/pipeline/state_machine/uncertainty_bridge.js.map +1 -0
  316. package/dist/engine/pipeline/task_context/manager.d.ts +40 -1
  317. package/dist/engine/pipeline/task_context/manager.d.ts.map +1 -1
  318. package/dist/engine/pipeline/task_context/manager.js +348 -114
  319. package/dist/engine/pipeline/task_context/manager.js.map +1 -1
  320. package/dist/engine/pipeline/task_context/manager_setters.d.ts +23 -1
  321. package/dist/engine/pipeline/task_context/manager_setters.d.ts.map +1 -1
  322. package/dist/engine/pipeline/task_context/manager_setters.js +237 -119
  323. package/dist/engine/pipeline/task_context/manager_setters.js.map +1 -1
  324. package/dist/engine/pipeline/task_context/status_transitions.d.ts +7 -2
  325. package/dist/engine/pipeline/task_context/status_transitions.d.ts.map +1 -1
  326. package/dist/engine/pipeline/task_context/status_transitions.js +9 -14
  327. package/dist/engine/pipeline/task_context/status_transitions.js.map +1 -1
  328. package/dist/engine/pipeline/task_planner.js +14 -8
  329. package/dist/engine/pipeline/task_planner.js.map +1 -1
  330. package/dist/engine/pipeline/task_stage_detector.d.ts +2 -0
  331. package/dist/engine/pipeline/task_stage_detector.d.ts.map +1 -1
  332. package/dist/engine/pipeline/task_stage_detector.js +34 -3
  333. package/dist/engine/pipeline/task_stage_detector.js.map +1 -1
  334. package/dist/engine/pipeline/workspace_lease.d.ts +1 -1
  335. package/dist/engine/pipeline/workspace_lease.js +1 -1
  336. package/dist/engine/pipeline/workspace_resumer.js +2 -2
  337. package/dist/engine/pipeline/workspace_resumer.js.map +1 -1
  338. package/dist/engine/release/foundation_scenario_registry.js +45 -45
  339. package/dist/engine/release/foundation_scenario_registry.js.map +1 -1
  340. package/dist/engine/release/foundation_scenario_runners.d.ts +3 -3
  341. package/dist/engine/release/foundation_scenario_runners.d.ts.map +1 -1
  342. package/dist/engine/release/foundation_scenario_runners.js +27 -485
  343. package/dist/engine/release/foundation_scenario_runners.js.map +1 -1
  344. package/dist/engine/release/gate_checks/checkControlPlaneTrust.d.ts.map +1 -1
  345. package/dist/engine/release/gate_checks/checkControlPlaneTrust.js +23 -21
  346. package/dist/engine/release/gate_checks/checkControlPlaneTrust.js.map +1 -1
  347. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.d.ts.map +1 -1
  348. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js +8 -9
  349. package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js.map +1 -1
  350. package/dist/engine/release/gate_checks/checkMainlineConsumption.js +3 -3
  351. package/dist/engine/release/gate_checks/checkMainlineConsumption.js.map +1 -1
  352. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.d.ts.map +1 -1
  353. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js +8 -56
  354. package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js.map +1 -1
  355. package/dist/engine/release/release_gate_scenario_registry.js +2 -2
  356. package/dist/engine/release/release_gate_scenario_registry.js.map +1 -1
  357. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js +39 -39
  358. package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js.map +1 -1
  359. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js +19 -19
  360. package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js.map +1 -1
  361. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js +60 -60
  362. package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js.map +1 -1
  363. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.d.ts.map +1 -1
  364. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js +39 -43
  365. package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js.map +1 -1
  366. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.d.ts.map +1 -1
  367. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js +104 -27
  368. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js.map +1 -1
  369. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js +15 -15
  370. package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js.map +1 -1
  371. package/dist/engine/release/types.d.ts +2 -2
  372. package/dist/engine/release/types.d.ts.map +1 -1
  373. package/dist/engine/release/verifier.js +7 -7
  374. package/dist/engine/release/verifier.js.map +1 -1
  375. package/dist/engine/state_fact_classifier.d.ts +3 -3
  376. package/dist/engine/state_fact_classifier.js +4 -4
  377. package/dist/engine/state_fact_classifier.js.map +1 -1
  378. package/dist/engine/templates/asset_manifest.d.ts.map +1 -1
  379. package/dist/engine/templates/asset_manifest.js +18 -16
  380. package/dist/engine/templates/asset_manifest.js.map +1 -1
  381. package/dist/engine/templates/consumable_asset_registry/builtin_assets_core.js +11 -11
  382. package/dist/engine/templates/consumable_asset_registry/builtin_assets_core.js.map +1 -1
  383. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.d.ts +1 -1
  384. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.d.ts.map +1 -1
  385. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.js +34 -10
  386. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_core.js.map +1 -1
  387. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext.js +10 -10
  388. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext.js.map +1 -1
  389. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext2.js +18 -18
  390. package/dist/engine/templates/consumable_asset_registry/builtin_assets_dual_layer_ext2.js.map +1 -1
  391. package/dist/engine/templates/consumable_asset_registry/types.js +4 -4
  392. package/dist/engine/templates/consumable_asset_registry/types.js.map +1 -1
  393. package/dist/engine/templates/consumption_trace_store.d.ts +3 -3
  394. package/dist/engine/templates/consumption_trace_store.d.ts.map +1 -1
  395. package/dist/engine/templates/consumption_trace_store.js +4 -4
  396. package/dist/engine/templates/consumption_trace_store.js.map +1 -1
  397. package/dist/engine/templates/explicit_asset_registry/adapters.js +4 -4
  398. package/dist/engine/templates/explicit_asset_registry/adapters.js.map +1 -1
  399. package/dist/engine/templates/explicit_asset_registry/artifacts_existing_system.js +10 -10
  400. package/dist/engine/templates/explicit_asset_registry/artifacts_existing_system.js.map +1 -1
  401. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part1.js +25 -25
  402. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part1.js.map +1 -1
  403. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part2.js +5 -5
  404. package/dist/engine/templates/explicit_asset_registry/artifacts_shared_part2.js.map +1 -1
  405. package/dist/engine/templates/explicit_asset_registry/checklists.js +7 -7
  406. package/dist/engine/templates/explicit_asset_registry/contributing.js +1 -1
  407. package/dist/engine/templates/explicit_asset_registry/domain.js +9 -9
  408. package/dist/engine/templates/explicit_asset_registry/gates.js +20 -20
  409. package/dist/engine/templates/explicit_asset_registry/gates.js.map +1 -1
  410. package/dist/engine/templates/explicit_asset_registry/internal_patterns.js +27 -27
  411. package/dist/engine/templates/explicit_asset_registry/internal_rules_part1.d.ts.map +1 -1
  412. package/dist/engine/templates/explicit_asset_registry/internal_rules_part1.js +42 -26
  413. package/dist/engine/templates/explicit_asset_registry/internal_rules_part1.js.map +1 -1
  414. package/dist/engine/templates/explicit_asset_registry/internal_rules_part2.js +20 -20
  415. package/dist/engine/templates/explicit_asset_registry/internal_rules_part2.js.map +1 -1
  416. package/dist/engine/templates/explicit_asset_registry/patterns_part1.js +25 -25
  417. package/dist/engine/templates/explicit_asset_registry/patterns_part2.js +25 -25
  418. package/dist/engine/templates/explicit_asset_registry/patterns_part3.js +2 -2
  419. package/dist/engine/templates/explicit_asset_registry/patterns_part3.js.map +1 -1
  420. package/dist/engine/templates/explicit_asset_registry/procedures_part1.d.ts.map +1 -1
  421. package/dist/engine/templates/explicit_asset_registry/procedures_part1.js +42 -26
  422. package/dist/engine/templates/explicit_asset_registry/procedures_part1.js.map +1 -1
  423. package/dist/engine/templates/explicit_asset_registry/procedures_part2.d.ts.map +1 -1
  424. package/dist/engine/templates/explicit_asset_registry/procedures_part2.js +29 -12
  425. package/dist/engine/templates/explicit_asset_registry/procedures_part2.js.map +1 -1
  426. package/dist/engine/templates/explicit_asset_registry/profiles.js +3 -3
  427. package/dist/engine/templates/explicit_asset_registry/profiles.js.map +1 -1
  428. package/dist/engine/templates/explicit_asset_registry/rules_pipeline.js +9 -9
  429. package/dist/engine/templates/explicit_asset_registry/rules_pipeline.js.map +1 -1
  430. package/dist/engine/templates/explicit_asset_registry/rules_shared.js +16 -16
  431. package/dist/engine/templates/explicit_asset_registry/rules_shared.js.map +1 -1
  432. package/dist/engine/templates/explicit_asset_registry/scaffolds.js +22 -22
  433. package/dist/engine/templates/explicit_asset_registry/scaffolds.js.map +1 -1
  434. package/dist/engine/templates/explicit_asset_registry/types.d.ts +1 -1
  435. package/dist/engine/templates/observed_consumption.d.ts +2 -2
  436. package/dist/engine/templates/observed_consumption.d.ts.map +1 -1
  437. package/dist/engine/templates/observed_consumption.js +5 -22
  438. package/dist/engine/templates/observed_consumption.js.map +1 -1
  439. package/dist/engine/templates/scaffolder.js +8 -8
  440. package/dist/engine/templates/scaffolder.js.map +1 -1
  441. package/dist/engine/templates/standard_asset_contract.d.ts +5 -5
  442. package/dist/engine/templates/standard_asset_contract.d.ts.map +1 -1
  443. package/dist/engine/templates/standard_asset_contract.js +18 -18
  444. package/dist/engine/templates/standard_asset_contract.js.map +1 -1
  445. package/dist/engine/templates/standard_asset_coverage.js +12 -12
  446. package/dist/engine/templates/standard_asset_coverage.js.map +1 -1
  447. package/dist/engine/templates/template_asset_contract_registry.d.ts +2 -2
  448. package/dist/engine/templates/template_asset_contract_registry.js +23 -23
  449. package/dist/engine/templates/template_asset_contract_registry.js.map +1 -1
  450. package/dist/engine/templates/template_asset_visibility.d.ts +1 -1
  451. package/dist/engine/templates/template_asset_visibility.js +4 -4
  452. package/dist/engine/templates/template_asset_visibility.js.map +1 -1
  453. package/dist/engine/templates/template_init_sync.js +11 -11
  454. package/dist/engine/templates/template_init_sync.js.map +1 -1
  455. package/dist/engine/templates/template_manifest_io.js +6 -6
  456. package/dist/engine/templates/template_manifest_io.js.map +1 -1
  457. package/dist/engine/templates/template_mechanism_auditor.d.ts.map +1 -1
  458. package/dist/engine/templates/template_mechanism_auditor.js +6 -5
  459. package/dist/engine/templates/template_mechanism_auditor.js.map +1 -1
  460. package/dist/engine/templates/workflow_rule_generator.d.ts.map +1 -1
  461. package/dist/engine/templates/workflow_rule_generator.js +8 -10
  462. package/dist/engine/templates/workflow_rule_generator.js.map +1 -1
  463. package/dist/engine/workflow/index.d.ts +2 -2
  464. package/dist/engine/workflow/index.d.ts.map +1 -1
  465. package/dist/engine/workflow/index.js +1 -1
  466. package/dist/engine/workflow/index.js.map +1 -1
  467. package/dist/engine/workflow/next_action_planner.js +11 -9
  468. package/dist/engine/workflow/next_action_planner.js.map +1 -1
  469. package/dist/engine/workflow/workflow_contract_registry.d.ts +49 -31
  470. package/dist/engine/workflow/workflow_contract_registry.d.ts.map +1 -1
  471. package/dist/engine/workflow/workflow_contract_registry.js +81 -642
  472. package/dist/engine/workflow/workflow_contract_registry.js.map +1 -1
  473. package/dist/knowledge/index_manager.d.ts +6 -1
  474. package/dist/knowledge/index_manager.d.ts.map +1 -1
  475. package/dist/knowledge/index_manager.js +156 -74
  476. package/dist/knowledge/index_manager.js.map +1 -1
  477. package/dist/knowledge/writer.d.ts +10 -0
  478. package/dist/knowledge/writer.d.ts.map +1 -1
  479. package/dist/knowledge/writer.js +40 -0
  480. package/dist/knowledge/writer.js.map +1 -1
  481. package/dist/server/tools/cep_assessment.d.ts +1 -1
  482. package/dist/server/tools/cep_assessment.d.ts.map +1 -1
  483. package/dist/server/tools/cep_assessment.js +15 -6
  484. package/dist/server/tools/cep_assessment.js.map +1 -1
  485. package/dist/server/tools/gate_checks.d.ts +9 -0
  486. package/dist/server/tools/gate_checks.d.ts.map +1 -1
  487. package/dist/server/tools/gate_checks.js +55 -1
  488. package/dist/server/tools/gate_checks.js.map +1 -1
  489. package/dist/server/tools/index.d.ts.map +1 -1
  490. package/dist/server/tools/index.js +8 -29
  491. package/dist/server/tools/index.js.map +1 -1
  492. package/dist/server/tools/lazy_loaders.d.ts +0 -3
  493. package/dist/server/tools/lazy_loaders.d.ts.map +1 -1
  494. package/dist/server/tools/lazy_loaders.js +0 -3
  495. package/dist/server/tools/lazy_loaders.js.map +1 -1
  496. package/dist/server/tools/middleware.d.ts.map +1 -1
  497. package/dist/server/tools/middleware.js +419 -394
  498. package/dist/server/tools/middleware.js.map +1 -1
  499. package/dist/server/tools/schemas.d.ts +40 -7
  500. package/dist/server/tools/schemas.d.ts.map +1 -1
  501. package/dist/server/tools/schemas.js +27 -11
  502. package/dist/server/tools/schemas.js.map +1 -1
  503. package/dist/server/tools/tool_groups/admin.d.ts.map +1 -1
  504. package/dist/server/tools/tool_groups/admin.js +4 -107
  505. package/dist/server/tools/tool_groups/admin.js.map +1 -1
  506. package/dist/server/tools/tool_groups/auxiliary.d.ts.map +1 -1
  507. package/dist/server/tools/tool_groups/auxiliary.js +4 -21
  508. package/dist/server/tools/tool_groups/auxiliary.js.map +1 -1
  509. package/dist/server/tools/tool_groups/scaffold_accept_deliver.d.ts +0 -1
  510. package/dist/server/tools/tool_groups/scaffold_accept_deliver.d.ts.map +1 -1
  511. package/dist/server/tools/tool_groups/scaffold_accept_deliver.js +5 -427
  512. package/dist/server/tools/tool_groups/scaffold_accept_deliver.js.map +1 -1
  513. package/dist/server/tools/tool_groups/state_machine.d.ts +13 -0
  514. package/dist/server/tools/tool_groups/state_machine.d.ts.map +1 -0
  515. package/dist/server/tools/tool_groups/state_machine.js +422 -0
  516. package/dist/server/tools/tool_groups/state_machine.js.map +1 -0
  517. package/dist/server/tools/tool_names.d.ts +19 -19
  518. package/dist/server/tools/tool_names.d.ts.map +1 -1
  519. package/dist/server/tools/tool_names.js +23 -24
  520. package/dist/server/tools/tool_names.js.map +1 -1
  521. package/dist/types/dual_layer.d.ts +3 -3
  522. package/dist/types/index.d.ts +1 -0
  523. package/dist/types/index.d.ts.map +1 -1
  524. package/dist/types/index.js +1 -0
  525. package/dist/types/index.js.map +1 -1
  526. package/dist/types/pipeline.d.ts +17 -7
  527. package/dist/types/pipeline.d.ts.map +1 -1
  528. package/dist/types/pipeline.js +4 -0
  529. package/dist/types/pipeline.js.map +1 -1
  530. package/dist/types/state_machine.d.ts +344 -0
  531. package/dist/types/state_machine.d.ts.map +1 -0
  532. package/dist/types/state_machine.js +47 -0
  533. package/dist/types/state_machine.js.map +1 -0
  534. package/dist/types/task.d.ts +35 -8
  535. package/dist/types/task.d.ts.map +1 -1
  536. package/package.json +3 -3
  537. package/templates/artifacts/existing-system//345/216/206/345/217/262/346/225/260/346/215/256/346/270/205/346/264/227/350/204/232/346/234/254/346/250/241/347/211/210.md +0 -2
  538. package/templates/artifacts/existing-system//345/216/206/345/217/262/351/201/227/347/225/231/351/233/267/345/214/272/346/270/205/345/215/225/346/250/241/347/211/210.md +0 -2
  539. package/templates/artifacts/existing-system//345/220/221/345/220/216/345/205/274/345/256/271/346/200/247/345/220/210/350/247/204/346/212/245/345/221/212/346/250/241/347/211/210.md +0 -2
  540. package/templates/artifacts/existing-system//345/242/236/351/207/217/350/276/271/347/225/214/347/225/214/345/256/232/346/226/207/346/241/243/346/250/241/347/211/210.md +0 -2
  541. package/templates/artifacts/existing-system//346/224/271/351/200/240/345/275/261/345/223/215/350/214/203/345/233/264/350/257/204/344/274/260/346/250/241/347/211/210.md +0 -2
  542. package/templates/artifacts/existing-system//346/225/260/346/215/256/350/241/200/347/274/230/345/233/276/346/250/241/347/211/210.md +0 -2
  543. package/templates/artifacts/existing-system//346/226/260/350/200/201/351/200/273/350/276/221/346/257/224/345/257/271/346/227/245/345/277/227/346/250/241/347/211/210.md +0 -2
  544. package/templates/artifacts/existing-system//347/264/247/346/200/245/345/233/236/346/273/232/346/211/213/345/206/214/346/250/241/347/211/210.md +0 -2
  545. package/templates/artifacts/existing-system//351/232/224/347/246/273/351/200/202/351/205/215/345/231/250/346/226/271/346/241/210/346/250/241/347/211/210.md +0 -2
  546. package/templates/artifacts/shared/ADR/346/250/241/347/211/210.md +0 -2
  547. package/templates/artifacts/shared/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243/346/250/241/347/211/210.md +0 -2
  548. package/templates/artifacts/shared/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +0 -2
  549. package/templates/artifacts/shared/OOD/350/256/276/350/256/241/346/221/230/350/246/201/346/250/241/347/211/210.md +0 -3
  550. package/templates/artifacts/shared/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +0 -2
  551. package/templates/artifacts/shared//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212/346/250/241/347/211/210.md +0 -2
  552. package/templates/artifacts/shared//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/351/252/214/346/224/266/346/250/241/347/211/210.md +0 -1
  553. package/templates/artifacts/shared//345/210/207/347/211/207/350/256/241/345/210/222/346/250/241/347/211/210.md +0 -3
  554. package/templates/artifacts/shared//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 +0 -2
  555. package/templates/artifacts/shared//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +0 -2
  556. package/templates/artifacts/shared//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +0 -2
  557. package/templates/artifacts/shared//345/220/216/347/253/257/345/256/236/347/216/260/351/252/214/346/224/266/346/270/205/345/215/225.md +0 -1
  558. package/templates/artifacts/shared//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +0 -2
  559. package/templates/artifacts/shared//345/256/241/346/237/245/346/221/230/350/246/201.md +0 -2
  560. package/templates/artifacts/shared//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +0 -2
  561. package/templates/artifacts/shared//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 +0 -2
  562. package/templates/artifacts/shared//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +0 -2
  563. package/templates/artifacts/shared//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +0 -2
  564. package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +0 -2
  565. package/templates/artifacts/shared//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 +0 -2
  566. package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243/346/250/241/347/211/210.md +0 -2
  567. package/templates/artifacts/shared//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +0 -2
  568. package/templates/artifacts/shared//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +0 -2
  569. package/templates/artifacts/shared//350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/351/252/214/346/224/266/346/212/245/345/221/212/346/250/241/347/211/210.md +0 -1
  570. package/templates/artifacts/shared//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +0 -2
  571. package/templates/artifacts/shared//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +0 -2
  572. package/templates/artifacts/shared//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 +0 -2
  573. package/templates/artifacts/shared//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +0 -2
  574. package/templates/artifacts/shared//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +0 -2
  575. package/templates/artifacts/shared//351/234/200/346/261/202/345/216/237/345/236/213/350/256/276/350/256/241/345/256/236/347/216/260/350/277/275/350/270/252/347/237/251/351/230/265/346/250/241/347/211/210.md +0 -1
  576. package/templates/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 +0 -1
  577. package/templates/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +0 -1
  578. package/templates/checklists//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md +0 -1
  579. package/templates/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 +0 -1
  580. package/templates/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 +0 -1
  581. package/templates/checklists//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md +0 -1
  582. package/templates/checklists//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md +0 -1
  583. package/templates/domain//345/244/232/347/247/237/346/210/267.md +0 -2
  584. package/templates/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +0 -2
  585. package/templates/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +0 -2
  586. package/templates/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +0 -2
  587. package/templates/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +0 -2
  588. package/templates/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +0 -2
  589. package/templates/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +0 -2
  590. package/templates/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +0 -2
  591. package/templates/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +0 -2
  592. package/templates/internal/patterns/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +0 -2
  593. package/templates/internal/patterns/Hook/345/261/202/344/272/247/347/211/251/347/273/223/346/236/204/346/240/241/351/252/214.md +0 -2
  594. package/templates/internal/patterns/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +0 -2
  595. package/templates/internal/patterns/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +0 -2
  596. package/templates/internal/patterns//344/272/247/347/211/251Schema/346/263/250/345/206/214/344/270/255/345/277/203.md +0 -2
  597. package/templates/internal/patterns//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 +0 -2
  598. package/templates/internal/patterns//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +0 -2
  599. package/templates/internal/patterns//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 +0 -2
  600. package/templates/internal/patterns//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +0 -2
  601. package/templates/internal/patterns//345/206/262/347/252/201/351/227/250/347/246/201.md +0 -2
  602. package/templates/internal/patterns//345/206/263/347/255/226/347/275/221/345/205/263.md +0 -2
  603. package/templates/internal/patterns//345/210/206/345/234/272/346/231/257/350/277/207/347/250/213/350/247/204/345/210/231.md +0 -2
  604. package/templates/internal/patterns//345/217/230/345/274/202/345/256/241/350/256/241.md +0 -2
  605. package/templates/internal/patterns//345/233/236/345/275/222/347/237/251/351/230/265.md +0 -2
  606. package/templates/internal/patterns//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +0 -2
  607. package/templates/internal/patterns//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +0 -2
  608. package/templates/internal/patterns//345/271/266/345/217/221/351/224/201.md +0 -2
  609. package/templates/internal/patterns//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +1 -3
  610. package/templates/internal/patterns//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +0 -2
  611. package/templates/internal/patterns//346/250/241/347/211/210Frontmatter/350/247/243/346/236/220.md +0 -2
  612. package/templates/internal/patterns//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +0 -2
  613. package/templates/internal/patterns//346/265/201/345/274/217/345/277/203/350/267/263.md +0 -2
  614. package/templates/internal/patterns//347/237/245/350/257/206/344/270/273/346/235/203.md +0 -2
  615. package/templates/internal/patterns//350/257/255/344/271/211/350/257/201/346/215/256.md +0 -2
  616. package/templates/internal/patterns//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +0 -2
  617. package/templates/internal/patterns//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +0 -2
  618. package/templates/internal/patterns//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +0 -2
  619. package/templates/internal/rules/OOD/344/270/216SOLID/350/256/276/350/256/241/350/247/204/345/210/231.md +0 -1
  620. package/templates/internal/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md +1 -2
  621. package/templates/internal/rules//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/345/245/221/347/272/246/350/247/204/345/210/231.md +0 -1
  622. package/templates/internal/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 +0 -1
  623. package/templates/internal/rules//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/245/221/347/272/246/350/247/204/345/210/231.md +0 -1
  624. package/templates/internal/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md +0 -1
  625. package/templates/internal/rules//345/221/275/344/273/244/350/267/257/347/224/261/350/247/204/345/210/231.md +36 -0
  626. package/templates/internal/rules//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246/350/247/204/345/210/231.md +0 -1
  627. package/templates/internal/rules//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246/350/247/204/345/210/231.md +6 -7
  628. package/templates/internal/rules//345/267/245/344/275/234/346/265/201/346/250/241/347/211/210/345/214/205/350/247/204/345/210/231.md +0 -1
  629. package/templates/internal/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md +0 -1
  630. package/templates/internal/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md +4 -3
  631. package/templates/internal/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 +3 -4
  632. package/templates/internal/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 +0 -1
  633. package/templates/internal/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 +0 -1
  634. package/templates/internal/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 +0 -1
  635. package/templates/internal/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 +0 -1
  636. package/templates/internal/rules//346/227/245/345/277/227/346/262/273/347/220/206/350/247/204/345/210/231.md +0 -1
  637. package/templates/internal/rules//346/234/272/345/210/266/350/207/252/346/262/273/347/220/206/350/247/204/345/210/231.md +0 -1
  638. package/templates/internal/rules//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +0 -2
  639. package/templates/internal/rules//346/240/207/345/207/206/350/265/204/344/272/247/350/246/206/347/233/226/350/247/204/345/210/231.md +2 -6
  640. package/templates/internal/rules//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md +0 -1
  641. package/templates/internal/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 +0 -1
  642. package/templates/internal/rules//346/250/241/347/211/210Frontmatter/350/247/204/350/214/203.md +2 -3
  643. package/templates/internal/rules//346/250/241/347/211/210/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247/350/247/204/345/210/231.md +0 -4
  644. package/templates/internal/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 +0 -1
  645. package/templates/internal/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 +0 -1
  646. package/templates/internal/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 +3 -4
  647. package/templates/internal/rules//347/237/245/350/257/206/346/262/273/347/220/206/350/247/204/345/210/231.md +0 -1
  648. package/templates/internal/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 +0 -1
  649. package/templates/internal/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 +1 -2
  650. package/templates/internal/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 +0 -1
  651. package/templates/internal/rules//347/273/206/350/212/202/347/272/252/345/276/213/350/247/204/345/210/231.md +0 -1
  652. package/templates/internal/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 +0 -1
  653. package/templates/internal/rules//350/256/241/345/210/222/345/211/215/347/275/256/351/227/250/350/247/204/345/210/231.md +0 -5
  654. package/templates/internal/rules//350/256/276/350/256/241/344/272/247/347/211/251/345/214/205/350/247/204/345/210/231.md +0 -3
  655. package/templates/internal/rules//350/257/201/346/215/256/351/251/261/345/212/250/344/270/216/345/217/215/345/271/273/350/247/211/350/247/204/345/210/231.md +0 -1
  656. package/templates/internal/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 +0 -1
  657. package/templates/internal/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 +0 -1
  658. package/templates/internal/rules//351/200/232/347/224/250/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +0 -4
  659. package/templates/internal/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +0 -1
  660. package/templates/internal/rules//351/205/215/347/275/256/350/220/275/347/233/230/350/276/271/347/225/214/350/247/204/345/210/231.md +0 -2
  661. package/templates/internal/rules//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260/350/247/204/345/210/231.md +0 -1
  662. package/templates/internal/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 +0 -1
  663. package/templates/internal/rules//351/252/214/346/224/266/346/250/241/347/211/210/350/276/223/345/207/272/345/245/221/347/272/246/350/247/204/345/210/231.md +2 -3
  664. package/templates/internal/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md +0 -1
  665. package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +0 -2
  666. package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +0 -2
  667. package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +0 -2
  668. package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +0 -2
  669. package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +0 -2
  670. package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +0 -2
  671. package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +0 -2
  672. package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +0 -2
  673. package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +0 -2
  674. package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +0 -2
  675. package/templates/patterns/SOLID/350/256/276/350/256/241/350/247/204/350/214/203.md +0 -2
  676. package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +0 -2
  677. package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +0 -2
  678. package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +0 -2
  679. package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +0 -2
  680. package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +0 -2
  681. package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +0 -2
  682. package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +0 -2
  683. package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +0 -2
  684. package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +0 -2
  685. package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +0 -2
  686. package/templates/patterns//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/350/247/204/350/214/203.md +0 -2
  687. package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +0 -2
  688. package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +0 -2
  689. package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +0 -2
  690. package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +0 -2
  691. package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +0 -2
  692. package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +0 -2
  693. package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +0 -2
  694. package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +0 -2
  695. package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +0 -2
  696. package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +0 -2
  697. package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +0 -2
  698. package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +0 -2
  699. package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +0 -2
  700. package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +0 -2
  701. package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +0 -2
  702. package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +0 -2
  703. package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +0 -2
  704. package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +0 -2
  705. package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +0 -2
  706. package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +0 -2
  707. package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +0 -2
  708. package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +0 -2
  709. package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +0 -2
  710. package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +0 -2
  711. package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +0 -2
  712. package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +0 -2
  713. package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +0 -2
  714. package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +0 -2
  715. package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +0 -2
  716. 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 +0 -2
  717. package/templates/procedures/OOD/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +0 -3
  718. package/templates/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +4 -6
  719. package/templates/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 +0 -2
  720. package/templates/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +0 -2
  721. package/templates/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +0 -2
  722. package/templates/procedures//344/274/232/350/257/235/346/201/242/345/244/215/346/265/201/347/250/213.md +0 -3
  723. package/templates/procedures//345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201/345/257/274/350/210/252.md +1 -2
  724. package/templates/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +0 -2
  725. package/templates/procedures//345/220/216/347/253/257/346/216/245/345/217/243/345/256/236/347/216/260/345/267/245/344/275/234/346/265/201.md +0 -3
  726. package/templates/procedures//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md +0 -2
  727. package/templates/procedures//345/221/275/344/273/244/350/267/257/347/224/261/346/265/201/347/250/213.md +38 -0
  728. package/templates/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +3 -5
  729. package/templates/procedures//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md +0 -2
  730. package/templates/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +3 -5
  731. package/templates/procedures//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md +3 -3
  732. package/templates/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +4 -6
  733. package/templates/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +0 -2
  734. package/templates/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 +0 -2
  735. package/templates/procedures//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/345/267/245/344/275/234/346/265/201.md +0 -2
  736. package/templates/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +0 -2
  737. package/templates/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +3 -5
  738. package/templates/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 +0 -2
  739. package/templates/procedures//346/272/220/347/240/201/345/216/237/345/236/213/344/272/244/344/273/230/346/265/201/347/250/213.md +2 -4
  740. package/templates/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 +0 -2
  741. package/templates/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +2 -4
  742. package/templates/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +5 -7
  743. package/templates/procedures//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md +0 -2
  744. package/templates/procedures//350/207/252/344/270/273/351/200/211/345/236/213/346/265/201/347/250/213.md +1 -3
  745. package/templates/procedures//350/256/276/350/256/241/344/272/247/347/211/251/347/224/237/346/210/220/344/270/216/345/244/215/351/252/214/345/267/245/344/275/234/346/265/201.md +0 -2
  746. package/templates/procedures//350/256/276/350/256/241/345/256/241/350/256/241/346/265/201/347/250/213.md +184 -0
  747. package/templates/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +0 -2
  748. package/templates/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +0 -2
  749. package/templates/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +3 -5
  750. package/templates/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +0 -2
  751. package/templates/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +3 -5
  752. package/templates/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +0 -2
  753. package/templates/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +2 -4
  754. package/templates/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +0 -2
  755. package/templates/rules/existing-system//345/205/274/345/256/271/346/200/247/346/243/200/346/237/245/350/247/204/345/210/231.md +0 -3
  756. package/templates/rules/existing-system//350/200/246/345/220/210/346/243/200/346/265/213/350/247/204/345/210/231.md +0 -3
  757. package/templates/rules/existing-system//350/257/225/350/277/220/350/241/214/347/206/224/346/226/255/350/247/204/345/210/231.md +0 -2
  758. package/templates/rules/existing-system//351/230/262/345/276/241/346/200/247/347/274/226/347/240/201/350/247/204/345/210/231.md +0 -2
  759. package/templates/rules/existing-system//351/233/267/345/214/272/345/217/215/346/250/241/345/274/217/346/270/205/345/215/225.md +0 -3
  760. package/templates/rules/new-system//350/201/224/350/260/203/350/256/276/350/256/241/347/274/272/351/231/267/345/210/244/345/256/232/350/247/204/345/210/231.md +0 -2
  761. package/templates/rules/shared/SOLID/344/273/243/347/240/201/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  762. package/templates/rules/shared//344/270/200/350/207/264/346/200/247/346/240/241/351/252/214/350/247/204/345/210/231.md +0 -1
  763. package/templates/rules/shared//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 +0 -2
  764. package/templates/rules/shared//344/273/243/347/240/201/345/217/257/347/273/264/346/212/244/346/200/247/344/270/216/345/217/257/350/247/202/346/265/213/346/200/247/345/256/241/346/237/245.md +0 -3
  765. package/templates/rules/shared//345/206/263/347/255/226/345/256/214/346/225/264/346/200/247/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -1
  766. package/templates/rules/shared//345/217/221/345/270/203/345/220/216/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  767. package/templates/rules/shared//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  768. package/templates/rules/shared//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  769. package/templates/rules/shared//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  770. package/templates/rules/shared//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  771. package/templates/rules/shared//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 +0 -2
  772. package/templates/rules/shared//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  773. package/templates/rules/shared//347/274/226/347/240/201/345/260/261/347/273/252/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  774. package/templates/rules/shared//350/201/224/350/260/203/351/252/214/350/257/201/346/270/205/345/215/225.md +0 -2
  775. package/templates/rules/shared//350/246/206/347/233/226/347/216/207/346/240/207/345/207/206.md +0 -1
  776. package/templates/rules/shared//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  777. package/templates/rules/shared//351/234/200/346/261/202/350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -2
  778. package/templates/rules/shared//351/252/214/346/224/266/346/240/207/345/207/206/345/256/241/346/237/245/350/247/204/345/210/231.md +0 -2
  779. package/templates//346/250/241/347/211/210/350/264/241/347/214/256/346/214/207/345/215/227.md +0 -3
  780. package/dist/engine/contracts/route_decision_contract_verifier.d.ts +0 -44
  781. package/dist/engine/contracts/route_decision_contract_verifier.d.ts.map +0 -1
  782. package/dist/engine/contracts/route_decision_contract_verifier.js +0 -154
  783. package/dist/engine/contracts/route_decision_contract_verifier.js.map +0 -1
  784. package/dist/engine/pipeline/classifier.d.ts +0 -24
  785. package/dist/engine/pipeline/classifier.d.ts.map +0 -1
  786. package/dist/engine/pipeline/classifier.js +0 -209
  787. package/dist/engine/pipeline/classifier.js.map +0 -1
  788. package/dist/engine/pipeline/expand_pipeline.d.ts +0 -122
  789. package/dist/engine/pipeline/expand_pipeline.d.ts.map +0 -1
  790. package/dist/engine/pipeline/expand_pipeline.js +0 -141
  791. package/dist/engine/pipeline/expand_pipeline.js.map +0 -1
  792. package/dist/engine/pipeline/hook_context_types.d.ts +0 -66
  793. package/dist/engine/pipeline/hook_context_types.d.ts.map +0 -1
  794. package/dist/engine/pipeline/hook_context_types.js +0 -118
  795. package/dist/engine/pipeline/hook_context_types.js.map +0 -1
  796. package/dist/engine/pipeline/intent_expander/expand.d.ts +0 -16
  797. package/dist/engine/pipeline/intent_expander/expand.d.ts.map +0 -1
  798. package/dist/engine/pipeline/intent_expander/expand.js +0 -308
  799. package/dist/engine/pipeline/intent_expander/expand.js.map +0 -1
  800. package/dist/engine/pipeline/intent_route_scorer.d.ts +0 -45
  801. package/dist/engine/pipeline/intent_route_scorer.d.ts.map +0 -1
  802. package/dist/engine/pipeline/intent_route_scorer.js +0 -341
  803. package/dist/engine/pipeline/intent_route_scorer.js.map +0 -1
  804. package/dist/engine/pipeline/intent_router.d.ts +0 -132
  805. package/dist/engine/pipeline/intent_router.d.ts.map +0 -1
  806. package/dist/engine/pipeline/intent_router.js +0 -608
  807. package/dist/engine/pipeline/intent_router.js.map +0 -1
  808. package/dist/engine/pipeline/intent_signal_extractor.d.ts +0 -91
  809. package/dist/engine/pipeline/intent_signal_extractor.d.ts.map +0 -1
  810. package/dist/engine/pipeline/intent_signal_extractor.js +0 -296
  811. package/dist/engine/pipeline/intent_signal_extractor.js.map +0 -1
  812. package/dist/engine/pipeline/route_types.d.ts +0 -10
  813. package/dist/engine/pipeline/route_types.d.ts.map +0 -1
  814. package/dist/engine/pipeline/route_types.js +0 -9
  815. package/dist/engine/pipeline/route_types.js.map +0 -1
  816. package/dist/engine/pipeline/stage_gate_engine.d.ts +0 -34
  817. package/dist/engine/pipeline/stage_gate_engine.d.ts.map +0 -1
  818. package/dist/engine/pipeline/stage_gate_engine.js +0 -123
  819. package/dist/engine/pipeline/stage_gate_engine.js.map +0 -1
  820. package/dist/engine/pipeline/stage_prechecks.d.ts +0 -83
  821. package/dist/engine/pipeline/stage_prechecks.d.ts.map +0 -1
  822. package/dist/engine/pipeline/stage_prechecks.js +0 -199
  823. package/dist/engine/pipeline/stage_prechecks.js.map +0 -1
  824. package/dist/engine/workflow/legacy_type_migration.d.ts +0 -64
  825. package/dist/engine/workflow/legacy_type_migration.d.ts.map +0 -1
  826. package/dist/engine/workflow/legacy_type_migration.js +0 -228
  827. package/dist/engine/workflow/legacy_type_migration.js.map +0 -1
  828. package/dist/server/tools/tool_groups/classify_expand.d.ts +0 -3
  829. package/dist/server/tools/tool_groups/classify_expand.d.ts.map +0 -1
  830. package/dist/server/tools/tool_groups/classify_expand.js +0 -7
  831. package/dist/server/tools/tool_groups/classify_expand.js.map +0 -1
  832. package/dist/server/tools/tool_groups/classify_handler.d.ts +0 -3
  833. package/dist/server/tools/tool_groups/classify_handler.d.ts.map +0 -1
  834. package/dist/server/tools/tool_groups/classify_handler.js +0 -65
  835. package/dist/server/tools/tool_groups/classify_handler.js.map +0 -1
  836. package/dist/server/tools/tool_groups/expand_handler.d.ts +0 -3
  837. package/dist/server/tools/tool_groups/expand_handler.d.ts.map +0 -1
  838. package/dist/server/tools/tool_groups/expand_handler.js +0 -823
  839. package/dist/server/tools/tool_groups/expand_handler.js.map +0 -1
  840. package/dist/server/tools/tool_groups/status_plan_analyze_review.d.ts +0 -4
  841. package/dist/server/tools/tool_groups/status_plan_analyze_review.d.ts.map +0 -1
  842. package/dist/server/tools/tool_groups/status_plan_analyze_review.js +0 -395
  843. package/dist/server/tools/tool_groups/status_plan_analyze_review.js.map +0 -1
  844. package/dist/server/tools/tool_groups/verify_learn.d.ts +0 -3
  845. package/dist/server/tools/tool_groups/verify_learn.d.ts.map +0 -1
  846. package/dist/server/tools/tool_groups/verify_learn.js +0 -804
  847. package/dist/server/tools/tool_groups/verify_learn.js.map +0 -1
@@ -1,804 +0,0 @@
1
- // ── sf_verify、sf_record_verification_execution、sf_learn 工具注册 ──
2
- // 从 tools.ts 第 2578-3300 行提取。
3
- import path from "node:path";
4
- import { promises as fsp } from "node:fs";
5
- import crypto from "node:crypto";
6
- import { internalWarn } from "../../../engine/core/logger.js";
7
- import { isSameOrDescendantPath } from "../../../engine/core/path_scope_utils.js";
8
- import { detectTaskStage } from "../../../engine/pipeline/task_stage_detector.js";
9
- import { verifyArtifact } from "../../../engine/contracts/artifact_contract_registry.js";
10
- import { verifyRouteDecisionContract } from "../../../engine/contracts/route_decision_contract_verifier.js";
11
- import { scanArtifactForOmissions } from "../../../engine/contracts/omission_scanner.js";
12
- import { detectLazyPatterns } from "../../../engine/contracts/lazy_pattern_detector.js";
13
- import { verifyErrorHandlingPaths } from "../../../engine/contracts/error_path_verifier.js";
14
- import { verifyBehaviorCoverage } from "../../../engine/contracts/behavior_coverage_verifier.js";
15
- import { inferArtifactKindFromPath } from "../../../bin/commands/check_write.js";
16
- import { TOOL_DIAGNOSTIC_CODES } from "../../../engine/audit/diagnostic_registry.js";
17
- import { createToolRegistrar } from "../middleware.js";
18
- import { VerifySchema, RecordVerificationExecutionSchema, LearnSchema } from "../schemas.js";
19
- import { lazyVerifier, lazyEvolver, lazyTraceability, lazyOodSolid, lazyBackendImplementation, lazyCodeObservability, lazyDesignArtifactPack, lazyStandardAssetContract, lazyVerificationContract, lazyEnforcementGuard, lazyFailureReport, lazyDegradation, } from "../lazy_loaders.js";
20
- import { errorMessage } from "../../../engine/core/helpers.js";
21
- export async function registerVerifyLearnTools(ctx) {
22
- const { registerSafeTool, loadRelevantAnchors } = createToolRegistrar(ctx);
23
- const { taskContext, config, projectPath, ioController, knowledgeIndex } = ctx;
24
- // ── sf_verify: 生成验证命令(构建、测试、验收检查) ──
25
- registerSafeTool("sf_verify", "根据变更文件生成验证命令(构建、测试、验收检查),由 Claude Code Bash 执行", VerifySchema, async (args) => {
26
- const loadedCtx = await taskContext.load(args.task_id);
27
- if (!loadedCtx) {
28
- return {
29
- result: { error: "任务不存在" },
30
- };
31
- }
32
- // Phase 9a: 知识感知 — 加载阶段匹配的审查规则、代码模式和检查清单
33
- if (knowledgeIndex) {
34
- const stage = detectTaskStage(loadedCtx);
35
- const reviewRules = knowledgeIndex.query({
36
- type: "review_rule",
37
- stages: stage ? [stage] : undefined,
38
- limit: 5,
39
- });
40
- const codePatterns = knowledgeIndex.query({
41
- type: "pattern",
42
- stages: stage ? [stage] : undefined,
43
- limit: 3,
44
- });
45
- const checklists = knowledgeIndex.query({
46
- type: "checklist",
47
- stages: stage ? [stage] : undefined,
48
- limit: 2,
49
- });
50
- loadedCtx.review_knowledge_hints = [...reviewRules, ...codePatterns, ...checklists]
51
- .map(e => e.body ?? e.when).filter(Boolean);
52
- await taskContext.save(loadedCtx);
53
- }
54
- const implementationFiles = args.changed_files.filter((file) => /\.(?:ts|tsx|js|jsx|java|kt|cs|go|py)$/.test(file)
55
- && !/(?:^|\/)tests?\//.test(file));
56
- if (implementationFiles.length > 0) {
57
- const implementationContents = {};
58
- for (const changedFile of implementationFiles) {
59
- const absoluteFile = path.resolve(projectPath, changedFile);
60
- try {
61
- if (isSameOrDescendantPath(absoluteFile, path.resolve(projectPath), { caseSensitive: false }) && (await fsp.stat(absoluteFile)).isFile()) {
62
- implementationContents[changedFile] = await fsp.readFile(absoluteFile, "utf-8");
63
- }
64
- }
65
- catch {
66
- // 文件缺失会由验证命令或现有产物检查报告。
67
- }
68
- }
69
- const traceabilityModule = await lazyTraceability();
70
- const traceVerification = traceabilityModule.verifyChangedFilesAgainstDesignTraceability(projectPath, implementationFiles, loadedCtx);
71
- if (!traceVerification.passed) {
72
- loadedCtx.traceability_binding = {
73
- requirement_ids: traceVerification.binding_ids.filter((id) => id.startsWith("REQ-")),
74
- prototype_ids: traceVerification.binding_ids.filter((id) => id.startsWith("PROTO-")),
75
- architecture_ids: traceVerification.binding_ids.filter((id) => id.startsWith("ARCH-")),
76
- detail_design_ids: traceVerification.binding_ids.filter((id) => id.startsWith("DD-")),
77
- phase_ids: traceVerification.binding_ids.filter((id) => id.startsWith("PHASE-")),
78
- slice_ids: traceVerification.binding_ids.filter((id) => id.startsWith("SLICE-")),
79
- acceptance_ids: traceVerification.binding_ids.filter((id) => id.startsWith("AC-")),
80
- status: "missing",
81
- findings: traceVerification.findings.map((finding) => `${finding.code}: ${finding.message_zh}`),
82
- };
83
- await taskContext.save(loadedCtx);
84
- return {
85
- result: {
86
- error: "编码变更未绑定需求/原型/设计/切片/验收追踪链路,需修复后重验",
87
- status: "blocked",
88
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityVerifyFailed,
89
- traceability_findings: traceVerification.findings,
90
- recovery: "补齐追踪矩阵并在任务中绑定 PHASE-*、SLICE-*、DD-*、AC-* 后重新执行 sf_verify",
91
- },
92
- };
93
- }
94
- const oodModule = await lazyOodSolid();
95
- const oodGate = oodModule.evaluateOodDesignGate({
96
- task_id: args.task_id,
97
- intent: loadedCtx.intent,
98
- route: loadedCtx.expansion?.workflow_trace?.route,
99
- changed_files: implementationFiles,
100
- summary: loadedCtx.ood_solid_summary,
101
- });
102
- if (!oodGate.allowed) {
103
- return {
104
- result: {
105
- error: oodGate.reason_zh,
106
- status: "blocked",
107
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.oodMissingSummary,
108
- ood_solid_summary: oodGate.required_summary,
109
- recovery: "完成 OOD/SOLID 摘要后重新执行 sf_expand 与 sf_verify",
110
- },
111
- };
112
- }
113
- const backendModule = await lazyBackendImplementation();
114
- const backendGate = backendModule.evaluateBackendImplementationGate({
115
- task_id: args.task_id,
116
- intent: loadedCtx.intent,
117
- route: loadedCtx.expansion?.workflow_trace?.route,
118
- changed_files: implementationFiles,
119
- work_package: loadedCtx.backend_implementation_work_package,
120
- });
121
- if (!backendGate.allowed) {
122
- return {
123
- result: {
124
- error: backendGate.reason_zh,
125
- status: "blocked",
126
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.backendMissingSummary,
127
- backend_implementation_work_package: backendGate.work_package,
128
- recovery: "完成后端工程工作包后重新执行 sf_expand 与 sf_verify",
129
- },
130
- };
131
- }
132
- const solidFindings = oodGate.applicable ? oodModule.reviewSolidCode(implementationContents) : [];
133
- const backendFindings = backendGate.applicable ? backendModule.reviewBackendImplementationFiles(implementationContents) : [];
134
- if (backendGate.applicable) {
135
- const openApiPath = path.join(projectPath, "docs", "api", "openapi.yaml");
136
- const apiMarkdownPath = path.join(projectPath, "docs", "architecture", "03-API接口规格文档.md");
137
- const migrationDirectory = path.join(projectPath, "db", "migrations");
138
- const openapiText = await fsp.access(openApiPath).then(() => true, () => false) ? await fsp.readFile(openApiPath, "utf-8") : undefined;
139
- const apiDocumentText = await fsp.access(apiMarkdownPath).then(() => true, () => false) ? await fsp.readFile(apiMarkdownPath, "utf-8") : undefined;
140
- let migrationText;
141
- if (await fsp.access(migrationDirectory).then(() => true, () => false)) {
142
- const migrationFiles = (await fsp.readdir(migrationDirectory)).filter((name) => /\.sql$/i.test(name));
143
- const migrationContents = await Promise.all(migrationFiles.map((name) => fsp.readFile(path.join(migrationDirectory, name), "utf-8")));
144
- migrationText = migrationContents.join("\n");
145
- }
146
- backendFindings.push(...backendModule.verifyBackendArtifactAlignment({
147
- openapiText,
148
- apiDocumentText,
149
- migrationText,
150
- sourceFiles: implementationContents,
151
- }));
152
- }
153
- loadedCtx.ood_solid_findings = solidFindings;
154
- loadedCtx.backend_implementation_findings = backendFindings;
155
- await taskContext.save(loadedCtx);
156
- if (oodModule.hasBlockingSolidFindings(solidFindings)) {
157
- return {
158
- result: {
159
- error: "OOD/SOLID 代码复验发现阻断项,需修复后重验",
160
- status: "blocked",
161
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.oodDeliveryBlock,
162
- ood_solid_findings: solidFindings,
163
- },
164
- };
165
- }
166
- if (backendModule.hasBlockingBackendFindings(backendFindings)) {
167
- return {
168
- result: {
169
- error: "后端实现工程复验发现阻断项,需修复后重验",
170
- status: "blocked",
171
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.backendDeliveryBlock,
172
- backend_implementation_findings: backendFindings,
173
- },
174
- };
175
- }
176
- // 问题六十八: 代码可维护性与可观测性契约
177
- const codeObsModule = await lazyCodeObservability();
178
- const obsFindings = codeObsModule.verifyChangedFilesObservability({
179
- changed_files: implementationFiles,
180
- file_contents: implementationContents,
181
- intent: loadedCtx.intent,
182
- });
183
- loadedCtx.code_observability_findings = obsFindings;
184
- await taskContext.save(loadedCtx);
185
- if (codeObsModule.hasBlockingObservabilityFindings(obsFindings)) {
186
- return {
187
- result: {
188
- error: "代码可维护性/可观测性复验发现阻断项,需修复后重验",
189
- status: "blocked",
190
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.codeObservabilityFinding,
191
- code_observability_findings: obsFindings,
192
- },
193
- };
194
- }
195
- }
196
- // 问题六十二: 设计产物验证必须读取用户项目真实文件,不接受占位合同自证通过。
197
- const verifyWorkflowIntent = loadedCtx.route_decision?.workflow_intent ?? loadedCtx.classification?.route_decision?.workflow_intent;
198
- const touchesDesignArtifacts = args.changed_files.some((file) => /docs\/architecture\/|docs\/api\/|openapi|db\/(?:migrations|schema)|架构设计|数据库设计|API接口规格/i.test(file));
199
- if (verifyWorkflowIntent === "architecture_design" || touchesDesignArtifacts) {
200
- const designModule = await lazyDesignArtifactPack();
201
- const designPack = loadedCtx.design_artifact_pack ?? designModule.createDesignArtifactPack(args.task_id);
202
- const designVerification = designModule.verifyDesignArtifactPack(projectPath, designPack);
203
- loadedCtx.design_artifact_pack = {
204
- ...designPack,
205
- status: designVerification.status,
206
- findings: designVerification.findings,
207
- baseline_hashes: designVerification.hashes,
208
- verified_at: new Date().toISOString(),
209
- };
210
- await taskContext.save(loadedCtx);
211
- if (!designVerification.passed) {
212
- return {
213
- result: {
214
- error: "设计产物包复验未通过,不得继续生成编码或交付结论",
215
- status: "blocked",
216
- diagnostic_code: "SF-DESIGN-PACK-VERIFY-FAILED",
217
- design_artifact_findings: designVerification.findings,
218
- checked_files: designVerification.checked_files,
219
- recovery: "修复设计产物、补充用户确认并重新执行 sf_verify;不得只提交报告绕过缺口",
220
- },
221
- };
222
- }
223
- }
224
- // 问题六十三: 模板契约验证 — 按文件逐一匹配契约并校验
225
- const sacModule = await lazyStandardAssetContract();
226
- const formalArtifactContract = sacModule.matchTemplateContract({
227
- output_artifact_kind: loadedCtx.artifact_output?.kind,
228
- workflow_intent: verifyWorkflowIntent,
229
- route_decision: loadedCtx.route_decision?.workflow_intent,
230
- });
231
- if (formalArtifactContract || !sacModule.isLowRiskTask({
232
- route_decision: verifyWorkflowIntent ?? loadedCtx.classification?.route_decision?.workflow_intent,
233
- workflow_intent: verifyWorkflowIntent,
234
- changed_files: args.changed_files,
235
- })) {
236
- for (const changedFile of args.changed_files) {
237
- const absFile = path.join(projectPath, changedFile);
238
- if (!await fsp.access(absFile).then(() => true, () => false) || !/\.md$/.test(changedFile))
239
- continue;
240
- // 按实际文件路径匹配契约(不再使用 changed_files[0] 的契约校验全部文件)
241
- const perFileContract = sacModule.matchTemplateContract({
242
- output_artifact_kind: loadedCtx.artifact_output?.kind,
243
- workflow_intent: verifyWorkflowIntent,
244
- route_decision: loadedCtx.route_decision?.workflow_intent,
245
- file_path: changedFile,
246
- });
247
- if (!perFileContract)
248
- continue;
249
- const content = await fsp.readFile(absFile, "utf-8");
250
- // 草稿阻断下游消费 — 不再静默跳过
251
- if (sacModule.isDraftDocument(content)) {
252
- loadedCtx.repair_reverify_directive = {
253
- contract_id: perFileContract.asset_id,
254
- file_path: changedFile,
255
- status: "draft_blocked",
256
- repair_suggestion: `文件 ${changedFile} 仍为草稿状态,草稿不可用于实现。请完善内容后重新验证。`,
257
- blocked: true,
258
- };
259
- await taskContext.save(loadedCtx);
260
- return {
261
- result: {
262
- error: `草稿文件 ${changedFile} 不可用于实现,需完善后重新验证`,
263
- status: "blocked",
264
- diagnostic_code: "SF-CONTRACT-DRAFT",
265
- template_contract_id: perFileContract.asset_id,
266
- recovery: "完善草稿内容后重新执行 sf_verify",
267
- },
268
- };
269
- }
270
- const contractResult = sacModule.verifyOutputAgainstContract(perFileContract, content, projectPath);
271
- if (!contractResult.passed) {
272
- const repairDirective = sacModule.createRepairReverifyDirective(perFileContract, contractResult);
273
- loadedCtx.repair_reverify_directive = {
274
- contract_id: perFileContract.asset_id,
275
- file_path: changedFile,
276
- status: "repair_required",
277
- repair_suggestion: repairDirective.repair_suggestion,
278
- blocked: true,
279
- };
280
- await taskContext.save(loadedCtx);
281
- return {
282
- result: {
283
- error: `文件 ${changedFile} 模板契约验证未通过,进入修复重验闭环`,
284
- status: "blocked",
285
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.contractDraft,
286
- template_contract_id: perFileContract.asset_id,
287
- missing_fields: contractResult.missing_fields,
288
- messages: contractResult.messages,
289
- repair_suggestion: repairDirective.repair_suggestion,
290
- recovery: "修复文档缺口后重新执行 sf_verify;不得只报告不修复",
291
- },
292
- };
293
- }
294
- }
295
- // 全部契约验证通过 — 清零修复重验指令
296
- if (loadedCtx.repair_reverify_directive) {
297
- delete loadedCtx.repair_reverify_directive;
298
- await taskContext.save(loadedCtx);
299
- }
300
- }
301
- // ── 遗漏扫描:检测空洞章节、占位符、空表格(防 AI 偷懒) ──
302
- const omissionScannedFiles = [];
303
- const allOmissionFindings = [];
304
- for (const changedFile of args.changed_files) {
305
- if (!/\.md$/.test(changedFile))
306
- continue;
307
- const kind = inferArtifactKindFromPath(changedFile);
308
- if (!kind)
309
- continue;
310
- const absFile = path.join(projectPath, changedFile);
311
- if (!await fsp.access(absFile).then(() => true, () => false))
312
- continue;
313
- const content = await fsp.readFile(absFile, "utf-8");
314
- if (content.length < 100)
315
- continue; // 初始写入跳过
316
- const omissionResult = scanArtifactForOmissions(kind, content, {
317
- generate_adversarial_prompt: true,
318
- });
319
- if (omissionResult.findings.length > 0) {
320
- omissionScannedFiles.push(changedFile);
321
- allOmissionFindings.push({ file: changedFile, findings: omissionResult.findings });
322
- }
323
- if (!omissionResult.passed) {
324
- const hardFails = omissionResult.findings.filter((f) => f.severity === "hard_fail");
325
- const reasons = hardFails.map((f) => f.message).join(";");
326
- await taskContext.save(loadedCtx);
327
- return {
328
- result: {
329
- error: `产物遗漏扫描失败(${changedFile}):${reasons}`,
330
- status: "blocked",
331
- diagnostic_code: "SF-OMISSION-SCAN-FAILED",
332
- recovery: `补齐以下缺失内容后重新执行 sf_verify:${reasons}`,
333
- },
334
- };
335
- }
336
- }
337
- // 将遗漏扫描结果写入 VerifyResult(通过 loadedCtx 传递到最终结果组装)
338
- if (omissionScannedFiles.length > 0) {
339
- const totalFindings = allOmissionFindings.reduce((s, o) => s + o.findings.length, 0);
340
- const hardFailCount = allOmissionFindings.reduce((s, o) => s + o.findings.filter((f) => f.severity === "hard_fail").length, 0);
341
- // 生成对抗性 prompt(取第一个有 findings 的文件的 prompt)
342
- const firstResultWithPrompt = allOmissionFindings[0];
343
- loadedCtx.omission_scan_result = {
344
- scanned_files: omissionScannedFiles,
345
- total_findings: totalFindings,
346
- hard_fail_count: hardFailCount,
347
- summary: hardFailCount > 0
348
- ? `❌ 遗漏扫描发现 ${totalFindings} 项问题(${hardFailCount} 个阻塞)`
349
- : `⚠️ 遗漏扫描发现 ${totalFindings} 个警告`,
350
- adversarial_prompt: firstResultWithPrompt?.findings.length
351
- ? `对文件 ${firstResultWithPrompt.file} 执行深度遗漏审计`
352
- : undefined,
353
- };
354
- await taskContext.save(loadedCtx);
355
- }
356
- // ── 步骤 7a: 偷懒模式检测(.ts 文件) ──
357
- let lazyPatternHardFails = 0;
358
- let lazyPatternWarnings = 0;
359
- for (const changedFile of args.changed_files) {
360
- if (!/\.ts$/.test(changedFile) || /\.d\.ts$/.test(changedFile))
361
- continue;
362
- const absFile = path.join(projectPath, changedFile);
363
- if (!await fsp.access(absFile).then(() => true, () => false))
364
- continue;
365
- const content = await fsp.readFile(absFile, "utf-8");
366
- const findings = detectLazyPatterns(content, changedFile);
367
- const hfs = findings.filter((f) => f.severity === "hard_fail");
368
- const wfs = findings.filter((f) => f.severity === "warning");
369
- lazyPatternHardFails += hfs.length;
370
- lazyPatternWarnings += wfs.length;
371
- if (hfs.length > 0) {
372
- const reasons = hfs.map((f) => f.message).join(";");
373
- await taskContext.save(loadedCtx);
374
- return {
375
- result: {
376
- error: `代码偷懒模式检测失败(${changedFile}):${reasons}`,
377
- status: "blocked",
378
- diagnostic_code: "SF-LAZY-PATTERN-DETECTED",
379
- recovery: `修复以下代码质量问题后重新执行 sf_verify:${reasons}`,
380
- },
381
- };
382
- }
383
- }
384
- // ── 步骤 7b: 错误处理路径验证(.ts 文件) ──
385
- let errorPathHardFails = 0;
386
- for (const changedFile of args.changed_files) {
387
- if (!/\.ts$/.test(changedFile) || /\.d\.ts$/.test(changedFile))
388
- continue;
389
- const absFile = path.join(projectPath, changedFile);
390
- if (!await fsp.access(absFile).then(() => true, () => false))
391
- continue;
392
- const content = await fsp.readFile(absFile, "utf-8");
393
- const findings = verifyErrorHandlingPaths(content, changedFile);
394
- const hfs = findings.filter((f) => f.severity === "hard_fail");
395
- errorPathHardFails += hfs.length;
396
- if (hfs.length > 0) {
397
- const reasons = hfs.map((f) => f.message).join(";");
398
- await taskContext.save(loadedCtx);
399
- return {
400
- result: {
401
- error: `错误处理路径验证失败(${changedFile}):${reasons}`,
402
- status: "blocked",
403
- diagnostic_code: "SF-ERROR-PATH-VERIFICATION-FAILED",
404
- recovery: `修复以下错误处理问题后重新执行 sf_verify:${reasons}`,
405
- },
406
- };
407
- }
408
- }
409
- // ── 步骤 7c: 行为覆盖率检查 ──
410
- const coverageFindings = verifyBehaviorCoverage(args.changed_files, projectPath);
411
- const coverageWarnings = coverageFindings.length;
412
- // ── 汇总 code_quality 结果到 loadedCtx ──
413
- if (lazyPatternHardFails > 0 || lazyPatternWarnings > 0 || errorPathHardFails > 0 || coverageWarnings > 0) {
414
- loadedCtx.code_quality_result = {
415
- lazy_pattern_findings: lazyPatternHardFails + lazyPatternWarnings,
416
- error_path_findings: errorPathHardFails,
417
- test_quality_hard_fails: 0,
418
- mutation_hard_fails: 0,
419
- behavior_coverage_warnings: coverageWarnings,
420
- summary: `偷懒模式: ${lazyPatternHardFails} 阻塞/${lazyPatternWarnings} 警告;错误路径: ${errorPathHardFails};行为覆盖: ${coverageWarnings} 警告`,
421
- };
422
- await taskContext.save(loadedCtx);
423
- }
424
- // RouteDecision 合同验证 — 无条件,在状态预检之前
425
- const rdFromCtx = loadedCtx.route_decision ?? loadedCtx.classification?.route_decision ?? null;
426
- const wtFromCtx = loadedCtx.workflow_trace ?? loadedCtx.expansion?.workflow_trace ?? null;
427
- const rdContractInput = {
428
- route_decision: rdFromCtx,
429
- workflow_trace: wtFromCtx,
430
- expansion_input_materials: loadedCtx.expansion?.input_materials?.map((m) => ({ path_or_ref: m.path_or_ref })),
431
- expansion_output_artifact: loadedCtx.artifact_output ? { kind: loadedCtx.artifact_output.kind, path: loadedCtx.artifact_output.path } : null,
432
- expansion_constraints: loadedCtx.expansion?.contract?.constraints,
433
- };
434
- const rdFindings = verifyRouteDecisionContract(rdContractInput);
435
- const hasHardFail = rdFindings.some(f => f.severity === "hard_fail" || f.severity === "blocked");
436
- if (hasHardFail) {
437
- return {
438
- result: {
439
- error: "RouteDecision 合同检查失败",
440
- route_decision_contract_findings: rdFindings,
441
- status: "blocked",
442
- },
443
- };
444
- }
445
- const VALID_VERIFY_STATES = ["executing", "retrying"];
446
- if (!VALID_VERIFY_STATES.includes(loadedCtx.status)) {
447
- return {
448
- result: { error: `任务状态 ${loadedCtx.status} 不可验证,需要 executing 或 retrying`, status: loadedCtx.status },
449
- };
450
- }
451
- const acceptanceItems = loadedCtx.expansion
452
- ? [...loadedCtx.expansion.acceptance.automated, ...loadedCtx.expansion.acceptance.manual]
453
- : [];
454
- // H4: 工作区完整性检查 — advisory 模式,仅警告不阻断
455
- const integrity = await ioController.verify();
456
- const h4Warning = !integrity.clean
457
- ? { warning: `H4 advisory: ${integrity.message}`, dirty_files: integrity.dirty_files }
458
- : undefined;
459
- const verifyResult = (await lazyVerifier()).generateVerifyCommands(config, args.changed_files, acceptanceItems, loadedCtx?.expansion?.workflow_trace?.route);
460
- verifyResult.task_id = args.task_id;
461
- // 创建 VerificationPlan(plan_only,非执行结果)
462
- const vcModule = await lazyVerificationContract();
463
- const allCommands = [
464
- ...(verifyResult.checks?.build ?? []),
465
- ...(verifyResult.checks?.tests ?? []),
466
- ].map((c) => c.command);
467
- const vPlan = vcModule.createVerificationPlan(args.task_id, allCommands, acceptanceItems.map((a) => a.description));
468
- // sf_verify 仅生成计划,不执行命令 — 始终保存 not_executed
469
- // 真实执行结果必须通过 recordVerificationExecution 单独录入
470
- const vResult = vcModule.createNotExecutedResult(args.task_id, vPlan.plan_id, "sf_verify 生成命令,等待执行");
471
- // 存储验证契约到任务上下文
472
- const ctxForV = await taskContext.load(args.task_id);
473
- if (ctxForV) {
474
- ctxForV.verification_plan = vPlan;
475
- ctxForV.verification_result = vResult;
476
- await taskContext.save(ctxForV);
477
- }
478
- // 产物生命周期检查: draft → verified 需要 ArtifactVerificationResult.passed
479
- let artifactVerificationResult;
480
- let artifactFileMissing = false;
481
- if (loadedCtx.artifact_output && loadedCtx.artifact_output.status === "draft") {
482
- // 验证前解析产物文件并计算 hash
483
- const artifact = loadedCtx.artifact_output;
484
- const fullPath = path.join(projectPath, artifact.path);
485
- if (await fsp.access(fullPath).then(() => true, () => false)) {
486
- const fileContent = await fsp.readFile(fullPath);
487
- const hash = crypto.createHash("sha256").update(fileContent).digest("hex");
488
- artifact.hash = `sha256:${hash}`;
489
- if (!artifact.evidence_refs.some(r => r.startsWith("file:artifact:"))) {
490
- artifact.evidence_refs.push(`file:artifact:path=${artifact.path} hash=sha256:${hash}`);
491
- }
492
- // 保存更新后的产物(含 hash)
493
- const ctxForHash = await taskContext.load(args.task_id);
494
- if (ctxForHash?.artifact_output) {
495
- ctxForHash.artifact_output.hash = artifact.hash;
496
- if (!ctxForHash.artifact_output.evidence_refs.some(r => r.startsWith("file:artifact:"))) {
497
- ctxForHash.artifact_output.evidence_refs.push(`file:artifact:path=${artifact.path} hash=sha256:${hash}`);
498
- }
499
- await taskContext.save(ctxForHash);
500
- }
501
- }
502
- else {
503
- artifactFileMissing = true;
504
- }
505
- artifactVerificationResult = verifyArtifact(artifact.kind, artifact);
506
- }
507
- // 记录变更文件
508
- // 写入护栏 — 检查变更文件是否在允许范围
509
- if (args.changed_files.length > 0) {
510
- const guardModule = await lazyEnforcementGuard();
511
- const scopePaths = loadedCtx.expansion?.scope?.allowed_paths ?? [];
512
- for (const cf of args.changed_files) {
513
- const writeFindings = guardModule.evaluateWriteGuard(loadedCtx.classification?.route_decision?.route ?? "code_execution", cf, scopePaths, "command_execution_contract");
514
- if (writeFindings.some((f) => f.blocked)) {
515
- return {
516
- result: {
517
- error: `写入护栏阻断: ${writeFindings[0].reason_zh}`,
518
- blocked_file: cf,
519
- guard_id: writeFindings[0].guard_id,
520
- },
521
- };
522
- }
523
- }
524
- }
525
- await taskContext.setExecution(args.task_id, args.changed_files);
526
- // 无实际文件变更但存在产物时标记 no_change_artifact
527
- if (args.changed_files.length === 0 && loadedCtx.artifact_output) {
528
- const execCtx = await taskContext.load(args.task_id);
529
- if (execCtx?.execution) {
530
- execCtx.execution.no_change_artifact = true;
531
- await taskContext.save(execCtx);
532
- }
533
- }
534
- // 生成验证命令成功后再转换状态,避免操作失败导致任务卡在 verifying
535
- if (loadedCtx.status === "retrying") {
536
- await taskContext.updateStatus(args.task_id, "executing");
537
- }
538
- await taskContext.updateStatus(args.task_id, "verifying");
539
- // 存储验证结果
540
- await taskContext.setVerification(args.task_id, verifyResult);
541
- // 产物生命周期转换: draft → verified 仅在 ArtifactVerificationResult.passed 时
542
- if (loadedCtx.artifact_output && loadedCtx.artifact_output.status === "draft" && artifactVerificationResult?.passed) {
543
- const evidenceRef = `verification:${loadedCtx.task_id}:checks=${artifactVerificationResult.checks.length}:summary=${artifactVerificationResult.summary.slice(0, 60)}`;
544
- try {
545
- await taskContext.updateArtifactStatus(args.task_id, {
546
- status: "verified",
547
- evidenceRef,
548
- hasVerification: true,
549
- });
550
- }
551
- catch {
552
- // 转换被阻止 — 产物保持 draft,流水线继续
553
- }
554
- }
555
- // 认知锚点上下文回放(按变更文件相关性)
556
- const verifyAnchors = await loadRelevantAnchors({ file_paths: args.changed_files });
557
- const verifyExtras = {};
558
- if (h4Warning)
559
- verifyExtras.h4_advisory = h4Warning;
560
- if (verifyAnchors && verifyAnchors.length > 0)
561
- verifyExtras.cognitive_anchors = verifyAnchors;
562
- if (loadedCtx.artifact_output && loadedCtx.artifact_output.status === "draft" && artifactVerificationResult && !artifactVerificationResult.passed) {
563
- const reason = artifactFileMissing
564
- ? `产物文件不存在 (${loadedCtx.artifact_output.path}),无法计算 hash`
565
- : artifactVerificationResult.summary;
566
- verifyExtras.artifact_warning = `产物验收检查未通过: ${reason}`;
567
- verifyExtras.artifact_verification = artifactVerificationResult;
568
- }
569
- const verifyPayload = Object.keys(verifyExtras).length > 0
570
- ? { ...verifyResult, ...verifyExtras }
571
- : { ...verifyResult };
572
- // 附加验证契约引用到返回结果
573
- verifyPayload.verification_plan = vPlan;
574
- verifyPayload.verification_result = vResult;
575
- // 问题六十:验证结论必须经过 FactClaimVerifier,不得把计划当结果
576
- {
577
- const { createEvidenceGroundingSystem, assessTaskRisk } = await import("../../../engine/contracts/evidence_grounding_contract.js");
578
- const _vRoute = loadedCtx.route_decision?.route ?? loadedCtx.classification?.route_decision?.route;
579
- const _vRisk = assessTaskRisk(loadedCtx.classification?.task_type, _vRoute, loadedCtx.intent);
580
- if (_vRisk !== "low") {
581
- const _veg = createEvidenceGroundingSystem();
582
- // 只有真实执行结果才能作为 validation_result 证据
583
- const _hasRealPassed = loadedCtx.verification_result && loadedCtx.verification_result.status === "passed";
584
- if (_hasRealPassed) {
585
- _veg.registry.register({
586
- source_type: "validation_result",
587
- authority: "authoritative",
588
- freshness: "current",
589
- permission: "allowed",
590
- scope: "verification",
591
- description: `验证状态: ${loadedCtx.verification_result?.status ?? "unknown"}`,
592
- source_ref: `verification:${args.task_id}`,
593
- });
594
- }
595
- // 验证计划注册为 task_context,不冒充 validation_result
596
- _veg.registry.register({
597
- source_type: "task_context",
598
- authority: "supporting",
599
- freshness: "current",
600
- permission: "allowed",
601
- scope: "verification_plan",
602
- description: `验证计划: ${vPlan ? "已生成" : "未生成"}`,
603
- source_ref: `verification-plan:${args.task_id}`,
604
- });
605
- if (args.changed_files.length > 0) {
606
- _veg.registry.register({
607
- source_type: "project_file",
608
- authority: "authoritative",
609
- freshness: "current",
610
- permission: "allowed",
611
- scope: "changed_files",
612
- description: `变更文件: ${args.changed_files.join(", ")}`,
613
- source_ref: `files:${args.changed_files.join(",")}`,
614
- });
615
- }
616
- const _vClaims = [{
617
- id: "claim-verify-1",
618
- category: "validation_result",
619
- claim_text: "验证结果基于真实命令执行",
620
- evidence_ids: _veg.registry.query({ source_type: "validation_result" }).map((e) => e.id),
621
- is_uncertain: false,
622
- risk_level: _vRisk,
623
- }];
624
- const _vVerResult = _veg.verifier.verify(_vClaims, _vRisk);
625
- const _vMatrix = _veg.builder.buildContext(_vClaims, {
626
- target_claims: _vClaims.map((c) => c.claim_text),
627
- source_types: [], keywords: [], max_results: 10,
628
- });
629
- _vMatrix.task_id = args.task_id;
630
- const _vGate = _veg.gate.evaluate(_vMatrix, _vRisk);
631
- // 写回 TaskContext
632
- await taskContext.setEvidenceGroundingResult(args.task_id, {
633
- evidence_matrix: _vMatrix,
634
- evidence_gate_result: _vGate,
635
- unsupported_claims: _vGate.unsupported_claims,
636
- conflict_resolutions: _vMatrix.conflicts,
637
- });
638
- if (_vVerResult.unsupported.length > 0) {
639
- // 高风险:只有 plan 无 result → 写入 payload(不用 verifyExtras)
640
- verifyPayload._evidence_status = "not_verified";
641
- verifyPayload._evidence_reason = "验证结论需真实命令执行结果支撑,验证计划不能当作验证结果。请通过 sf_record_verification_execution 录入真实验证结果。";
642
- if (_vRisk === "high" || _vRisk === "critical") {
643
- verifyPayload._evidence_blocked = true;
644
- }
645
- else {
646
- verifyPayload._evidence_advisory = "验证结论需真实命令执行结果支撑,验证计划不能当作验证结果";
647
- }
648
- }
649
- }
650
- }
651
- // 验证后核心体验评估
652
- try {
653
- const hasVerificationEvidence = (verifyResult.checks?.build?.length ?? 0) > 0 || (verifyResult.checks?.tests?.length ?? 0) > 0;
654
- // 将完整 CEP 结果写入 TaskContext
655
- const cepModule = await import("../../../engine/audit/core_experience_principle.js");
656
- const fullCepEval = cepModule.evaluateCoreExperiencePrinciple({
657
- task_id: args.task_id, workflow_id: "sf_verify",
658
- has_mainline_hooks: true, has_owner_contracts: true, natural_language_entry: true,
659
- requires_internal_contract_knowledge: false, user_path_steps: 3,
660
- has_failures: false, hard_fail_downgraded: false, forced_heavy_process: false,
661
- has_sufficient_evidence: hasVerificationEvidence,
662
- output_too_long_no_summary: false, report_only_no_repair: false,
663
- failed_but_marked_done: false, auto_repair_overreach: false,
664
- repair_reverified: false, outputs_raw_noise: false,
665
- });
666
- const ctxForCep = await taskContext.load(args.task_id);
667
- if (ctxForCep) {
668
- ctxForCep.core_experience_evaluation = fullCepEval;
669
- await taskContext.save(ctxForCep);
670
- }
671
- }
672
- catch (cepErr) {
673
- internalWarn("CEP评估", "评估异常 (task=" + args.task_id + "):", errorMessage(cepErr));
674
- }
675
- return {
676
- result: verifyPayload,
677
- };
678
- });
679
- // ── sf_record_verification_execution: 录入真实验证执行结果(唯一 passed 入口) ──
680
- registerSafeTool("sf_record_verification_execution", "录入真实验证执行结果,VerificationResult.status=passed 的唯一合法入口", RecordVerificationExecutionSchema, async (args) => {
681
- const ctx = await taskContext.load(args.task_id);
682
- if (!ctx) {
683
- return { result: { error: "任务不存在" } };
684
- }
685
- // 必须有 VerificationPlan
686
- const currentPlan = ctx.verification_plan;
687
- if (!currentPlan) {
688
- return { result: { error: "任务无 VerificationPlan,先执行 sf_verify 生成计划" } };
689
- }
690
- // plan_id 必须与 TaskContext 中当前 plan 一致
691
- if (args.plan_id !== currentPlan.plan_id) {
692
- return {
693
- result: {
694
- error: `plan_id 不匹配: 请求 "${args.plan_id}",当前任务计划 "${currentPlan.plan_id}" [${TOOL_DIAGNOSTIC_CODES.verifyPlanMismatch}]`,
695
- diagnostic_code: TOOL_DIAGNOSTIC_CODES.verifyPlanMismatch,
696
- },
697
- };
698
- }
699
- const vcModule = await lazyVerificationContract();
700
- const result = vcModule.recordVerificationExecution(args.task_id, args.plan_id, args.execution_records, currentPlan);
701
- // 持久化到 TaskContext
702
- const ctxForSave = await taskContext.load(args.task_id);
703
- if (ctxForSave) {
704
- ctxForSave.verification_result = result;
705
- await taskContext.save(ctxForSave);
706
- }
707
- return { result };
708
- });
709
- // ── sf_learn: 从执行结果中提取知识,支持重试循环控制 ──
710
- registerSafeTool("sf_learn", "从任务执行结果中提取知识,低置信度暂存,高置信度直接入库", LearnSchema, async (args) => {
711
- const ctx = await taskContext.load(args.task_id);
712
- if (!ctx) {
713
- return {
714
- result: { error: "任务不存在" },
715
- };
716
- }
717
- const VALID_LEARN_STATES = ["verifying", "executing"];
718
- if (!VALID_LEARN_STATES.includes(ctx.status)) {
719
- return {
720
- result: { error: `任务状态 ${ctx.status} 不可学习,需要 verifying 或 executing`, status: ctx.status },
721
- };
722
- }
723
- // 如适用,记录失败
724
- if (args.result === "failure" && args.failure_type) {
725
- await taskContext.setExecution(args.task_id, [], {
726
- attempt: (ctx.execution?.attempt_count ?? 0) + 1,
727
- type: args.failure_type,
728
- message: args.verify_output
729
- ? `build=${args.verify_output.build_passed} tests=${args.verify_output.tests_passed}`
730
- : "unknown failure",
731
- timestamp: new Date().toISOString(),
732
- });
733
- // 创建 FailureReport(脱敏,非 raw error_output)
734
- const frModule = await lazyFailureReport();
735
- const failureClass = args.failure_type;
736
- const errorOutput = args.verify_output
737
- ? `build=${args.verify_output.build_passed} tests=${args.verify_output.tests_passed}`
738
- : "unknown failure";
739
- const retryCount = (ctx.execution?.attempt_count ?? 0) + 1;
740
- const policy = frModule.getRecoveryPolicy(failureClass);
741
- const failureReport = frModule.createFailureReport(args.task_id, failureClass, errorOutput, retryCount, policy?.max_retries ?? 0);
742
- // 存储 FailureReport 到任务上下文
743
- const ctxForFailure = await taskContext.load(args.task_id);
744
- if (ctxForFailure) {
745
- ctxForFailure.failure_report = failureReport;
746
- await taskContext.save(ctxForFailure);
747
- }
748
- // verifier 不可用时创建 DegradationEvent
749
- if (!args.verify_output) {
750
- const degModule = await lazyDegradation();
751
- const degradationEvent = degModule.createDegradationEvent(args.task_id, "verifier", "full", "验证器输出不可用,无法判断 build/test 结果", ["verification_execution"]);
752
- if (degradationEvent) {
753
- const ctxForDeg = await taskContext.load(args.task_id);
754
- if (ctxForDeg) {
755
- ctxForDeg.degradation_event = degradationEvent;
756
- await taskContext.save(ctxForDeg);
757
- }
758
- }
759
- }
760
- }
761
- // 转换到学习阶段
762
- await taskContext.updateStatus(args.task_id, "learning");
763
- const learnResult = await (await lazyEvolver()).evolve({
764
- taskContext: ctx,
765
- result: args.result,
766
- verifyOutput: args.verify_output,
767
- failureType: args.failure_type,
768
- retryCount: ctx.execution?.attempt_count ?? 0,
769
- }, projectPath);
770
- // 确定最终状态: 重试或完成
771
- const attemptCount = (ctx.execution?.attempt_count ?? 0) + (args.result === "failure" ? 1 : 0);
772
- const maxAttempts = ctx.execution?.max_attempts ?? 3;
773
- if (args.result === "failure" && attemptCount < maxAttempts && args.failure_type !== "deterministic") {
774
- // 可重试: 转换到重试阶段
775
- await taskContext.updateStatus(args.task_id, "retrying");
776
- learnResult.retry_hint = `第 ${attemptCount}/${maxAttempts} 次尝试失败,${args.failure_type === "scope_insufficient" ? "需要扩大范围" : "请修复后重试"}`;
777
- }
778
- else {
779
- // 检查主链路集成 — 即使 build/test 全绿,孤岛仍阻断 done
780
- const integrationBlocked = ctx.verification?.main_path_integration
781
- && !ctx.verification.main_path_integration.passed;
782
- // 核心工程执行原则门禁 — required 原则失败不能进入 completed
783
- const principlesBlocked = ctx.verification?.core_principles
784
- && !ctx.verification.core_principles.overall_passed;
785
- const finalStatus = args.result === "failure"
786
- ? "failed"
787
- : (integrationBlocked || principlesBlocked) ? "retrying" : "done";
788
- await taskContext.updateStatus(args.task_id, finalStatus);
789
- if (integrationBlocked && finalStatus === "retrying") {
790
- learnResult.retry_hint = "主链路集成检查失败: 存在孤岛模块,请接入主链路后重试";
791
- }
792
- if (principlesBlocked && finalStatus === "retrying") {
793
- const failedPrinciples = (ctx.verification?.core_principles?.principles ?? [])
794
- .filter((p) => p.status === "failed")
795
- .map((p) => p.principle_id);
796
- learnResult.retry_hint = `核心工程执行原则检查失败: ${failedPrinciples.join(", ")},请修复后重试`;
797
- }
798
- }
799
- return {
800
- result: learnResult,
801
- };
802
- });
803
- }
804
- //# sourceMappingURL=verify_learn.js.map