soloforge 1.2.20 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +140 -3
  2. package/dist/adapters/claude_code/claude_md.d.ts +1 -2
  3. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  4. package/dist/adapters/claude_code/claude_md.js +47 -4
  5. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  6. package/dist/adapters/claude_code/hooks.d.ts.map +1 -1
  7. package/dist/adapters/claude_code/hooks.js +2 -1
  8. package/dist/adapters/claude_code/hooks.js.map +1 -1
  9. package/dist/adapters/claude_code/server.js +4 -3
  10. package/dist/adapters/claude_code/server.js.map +1 -1
  11. package/dist/adapters/claude_code/tools.d.ts +255 -1
  12. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  13. package/dist/adapters/claude_code/tools.js +855 -39
  14. package/dist/adapters/claude_code/tools.js.map +1 -1
  15. package/dist/adapters/codex/codex_config.d.ts.map +1 -1
  16. package/dist/adapters/codex/codex_config.js +3 -2
  17. package/dist/adapters/codex/codex_config.js.map +1 -1
  18. package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
  19. package/dist/adapters/codex/codex_rules.js +2 -1
  20. package/dist/adapters/codex/codex_rules.js.map +1 -1
  21. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  22. package/dist/adapters/shared/workflow_template.js +2 -1
  23. package/dist/adapters/shared/workflow_template.js.map +1 -1
  24. package/dist/adapters/trae/trae_config.d.ts +0 -5
  25. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  26. package/dist/adapters/trae/trae_config.js +2 -1
  27. package/dist/adapters/trae/trae_config.js.map +1 -1
  28. package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
  29. package/dist/adapters/trae/trae_rules.js +2 -1
  30. package/dist/adapters/trae/trae_rules.js.map +1 -1
  31. package/dist/bin/config_commands.d.ts.map +1 -1
  32. package/dist/bin/config_commands.js +34 -33
  33. package/dist/bin/config_commands.js.map +1 -1
  34. package/dist/bin/soloforge.d.ts.map +1 -1
  35. package/dist/bin/soloforge.js +1110 -157
  36. package/dist/bin/soloforge.js.map +1 -1
  37. package/dist/engine/adapter_prompt_contract.d.ts +60 -0
  38. package/dist/engine/adapter_prompt_contract.d.ts.map +1 -0
  39. package/dist/engine/adapter_prompt_contract.js +163 -0
  40. package/dist/engine/adapter_prompt_contract.js.map +1 -0
  41. package/dist/engine/architecture_design_contract.d.ts +49 -0
  42. package/dist/engine/architecture_design_contract.d.ts.map +1 -0
  43. package/dist/engine/architecture_design_contract.js +169 -0
  44. package/dist/engine/architecture_design_contract.js.map +1 -0
  45. package/dist/engine/artifact_contract_registry.d.ts.map +1 -1
  46. package/dist/engine/artifact_contract_registry.js +7 -14
  47. package/dist/engine/artifact_contract_registry.js.map +1 -1
  48. package/dist/engine/{batch1_manifest.d.ts → asset_manifest.d.ts} +8 -8
  49. package/dist/engine/asset_manifest.d.ts.map +1 -0
  50. package/dist/engine/{batch1_manifest.js → asset_manifest.js} +52 -9
  51. package/dist/engine/asset_manifest.js.map +1 -0
  52. package/dist/engine/audit_pool.d.ts.map +1 -1
  53. package/dist/engine/audit_pool.js +5 -4
  54. package/dist/engine/audit_pool.js.map +1 -1
  55. package/dist/engine/audit_sampler.d.ts.map +1 -1
  56. package/dist/engine/audit_sampler.js +2 -1
  57. package/dist/engine/audit_sampler.js.map +1 -1
  58. package/dist/engine/audit_verifier.d.ts.map +1 -1
  59. package/dist/engine/audit_verifier.js +5 -4
  60. package/dist/engine/audit_verifier.js.map +1 -1
  61. package/dist/engine/brainstorm_contract.d.ts +46 -0
  62. package/dist/engine/brainstorm_contract.d.ts.map +1 -0
  63. package/dist/engine/brainstorm_contract.js +136 -0
  64. package/dist/engine/brainstorm_contract.js.map +1 -0
  65. package/dist/engine/capability_action_advisor.d.ts.map +1 -1
  66. package/dist/engine/capability_action_advisor.js +8 -7
  67. package/dist/engine/capability_action_advisor.js.map +1 -1
  68. package/dist/engine/capability_registry.d.ts.map +1 -1
  69. package/dist/engine/capability_registry.js +0 -7
  70. package/dist/engine/capability_registry.js.map +1 -1
  71. package/dist/engine/capability_state_store.d.ts.map +1 -1
  72. package/dist/engine/capability_state_store.js +7 -6
  73. package/dist/engine/capability_state_store.js.map +1 -1
  74. package/dist/engine/change_coordinator.d.ts.map +1 -1
  75. package/dist/engine/change_coordinator.js +4 -3
  76. package/dist/engine/change_coordinator.js.map +1 -1
  77. package/dist/engine/chinese_semantic_priority.d.ts +62 -0
  78. package/dist/engine/chinese_semantic_priority.d.ts.map +1 -0
  79. package/dist/engine/chinese_semantic_priority.js +153 -0
  80. package/dist/engine/chinese_semantic_priority.js.map +1 -0
  81. package/dist/engine/coding_readiness_gate.d.ts +46 -0
  82. package/dist/engine/coding_readiness_gate.d.ts.map +1 -0
  83. package/dist/engine/coding_readiness_gate.js +175 -0
  84. package/dist/engine/coding_readiness_gate.js.map +1 -0
  85. package/dist/engine/cognitive_anchor.d.ts.map +1 -1
  86. package/dist/engine/cognitive_anchor.js +7 -6
  87. package/dist/engine/cognitive_anchor.js.map +1 -1
  88. package/dist/engine/command_execution_contract.d.ts.map +1 -1
  89. package/dist/engine/command_execution_contract.js +13 -12
  90. package/dist/engine/command_execution_contract.js.map +1 -1
  91. package/dist/engine/confidence_scorer.d.ts.map +1 -1
  92. package/dist/engine/confidence_scorer.js +2 -1
  93. package/dist/engine/confidence_scorer.js.map +1 -1
  94. package/dist/engine/config_precedence_contract.d.ts.map +1 -1
  95. package/dist/engine/config_precedence_contract.js +9 -8
  96. package/dist/engine/config_precedence_contract.js.map +1 -1
  97. package/dist/engine/conflict_gate.d.ts.map +1 -1
  98. package/dist/engine/conflict_gate.js +4 -3
  99. package/dist/engine/conflict_gate.js.map +1 -1
  100. package/dist/engine/consumable_asset_registry.d.ts +4 -0
  101. package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
  102. package/dist/engine/consumable_asset_registry.js +307 -0
  103. package/dist/engine/consumable_asset_registry.js.map +1 -1
  104. package/dist/engine/consumption_trace_store.d.ts +50 -0
  105. package/dist/engine/consumption_trace_store.d.ts.map +1 -0
  106. package/dist/engine/consumption_trace_store.js +84 -0
  107. package/dist/engine/consumption_trace_store.js.map +1 -0
  108. package/dist/engine/contract_guard.d.ts.map +1 -1
  109. package/dist/engine/contract_guard.js +7 -6
  110. package/dist/engine/contract_guard.js.map +1 -1
  111. package/dist/engine/contract_registry.d.ts +1 -1
  112. package/dist/engine/contract_registry.d.ts.map +1 -1
  113. package/dist/engine/contract_registry.js +511 -38
  114. package/dist/engine/contract_registry.js.map +1 -1
  115. package/dist/engine/convention_detector.d.ts.map +1 -1
  116. package/dist/engine/convention_detector.js +4 -3
  117. package/dist/engine/convention_detector.js.map +1 -1
  118. package/dist/engine/core_engineering_principles.d.ts.map +1 -1
  119. package/dist/engine/core_engineering_principles.js +4 -14
  120. package/dist/engine/core_engineering_principles.js.map +1 -1
  121. package/dist/engine/core_experience_principle.d.ts +194 -0
  122. package/dist/engine/core_experience_principle.d.ts.map +1 -0
  123. package/dist/engine/core_experience_principle.js +349 -0
  124. package/dist/engine/core_experience_principle.js.map +1 -0
  125. package/dist/engine/debt_reporter.d.ts.map +1 -1
  126. package/dist/engine/debt_reporter.js +3 -2
  127. package/dist/engine/debt_reporter.js.map +1 -1
  128. package/dist/engine/debt_tracker.d.ts.map +1 -1
  129. package/dist/engine/debt_tracker.js +8 -7
  130. package/dist/engine/debt_tracker.js.map +1 -1
  131. package/dist/engine/debug_log.d.ts +4 -1
  132. package/dist/engine/debug_log.d.ts.map +1 -1
  133. package/dist/engine/debug_log.js +4 -6
  134. package/dist/engine/debug_log.js.map +1 -1
  135. package/dist/engine/debugger.d.ts.map +1 -1
  136. package/dist/engine/debugger.js +5 -4
  137. package/dist/engine/debugger.js.map +1 -1
  138. package/dist/engine/decision_contract.d.ts.map +1 -1
  139. package/dist/engine/decision_contract.js +4 -3
  140. package/dist/engine/decision_contract.js.map +1 -1
  141. package/dist/engine/delivery.d.ts.map +1 -1
  142. package/dist/engine/delivery.js +16 -15
  143. package/dist/engine/delivery.js.map +1 -1
  144. package/dist/engine/delivery_readiness.d.ts +5 -1
  145. package/dist/engine/delivery_readiness.d.ts.map +1 -1
  146. package/dist/engine/delivery_readiness.js +24 -2
  147. package/dist/engine/delivery_readiness.js.map +1 -1
  148. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  149. package/dist/engine/dependency_scanner.js +6 -5
  150. package/dist/engine/dependency_scanner.js.map +1 -1
  151. package/dist/engine/detail_discipline.d.ts +40 -0
  152. package/dist/engine/detail_discipline.d.ts.map +1 -0
  153. package/dist/engine/detail_discipline.js +107 -0
  154. package/dist/engine/detail_discipline.js.map +1 -0
  155. package/dist/engine/developer_sovereignty.d.ts.map +1 -1
  156. package/dist/engine/developer_sovereignty.js +6 -5
  157. package/dist/engine/developer_sovereignty.js.map +1 -1
  158. package/dist/engine/diff_ownership.d.ts.map +1 -1
  159. package/dist/engine/diff_ownership.js +9 -8
  160. package/dist/engine/diff_ownership.js.map +1 -1
  161. package/dist/engine/diff_ownership_store.d.ts.map +1 -1
  162. package/dist/engine/diff_ownership_store.js +8 -7
  163. package/dist/engine/diff_ownership_store.js.map +1 -1
  164. package/dist/engine/documentation_governance.d.ts +55 -0
  165. package/dist/engine/documentation_governance.d.ts.map +1 -0
  166. package/dist/engine/documentation_governance.js +249 -0
  167. package/dist/engine/documentation_governance.js.map +1 -0
  168. package/dist/engine/dual_layer_mechanism_registry.d.ts +6 -4
  169. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
  170. package/dist/engine/dual_layer_mechanism_registry.js +731 -11
  171. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  172. package/dist/engine/enforcement_guard.d.ts.map +1 -1
  173. package/dist/engine/enforcement_guard.js +14 -0
  174. package/dist/engine/enforcement_guard.js.map +1 -1
  175. package/dist/engine/escape_report.d.ts.map +1 -1
  176. package/dist/engine/escape_report.js +4 -3
  177. package/dist/engine/escape_report.js.map +1 -1
  178. package/dist/engine/evolution_regression_gate.d.ts +42 -0
  179. package/dist/engine/evolution_regression_gate.d.ts.map +1 -0
  180. package/dist/engine/evolution_regression_gate.js +159 -0
  181. package/dist/engine/evolution_regression_gate.js.map +1 -0
  182. package/dist/engine/existing_system_analysis.d.ts +37 -0
  183. package/dist/engine/existing_system_analysis.d.ts.map +1 -0
  184. package/dist/engine/existing_system_analysis.js +151 -0
  185. package/dist/engine/existing_system_analysis.js.map +1 -0
  186. package/dist/engine/exploration.d.ts.map +1 -1
  187. package/dist/engine/exploration.js +7 -6
  188. package/dist/engine/exploration.js.map +1 -1
  189. package/dist/engine/extension_contract.d.ts +50 -0
  190. package/dist/engine/extension_contract.d.ts.map +1 -0
  191. package/dist/engine/extension_contract.js +158 -0
  192. package/dist/engine/extension_contract.js.map +1 -0
  193. package/dist/engine/extension_platform_contracts.d.ts +712 -0
  194. package/dist/engine/extension_platform_contracts.d.ts.map +1 -0
  195. package/dist/engine/extension_platform_contracts.js +42 -0
  196. package/dist/engine/extension_platform_contracts.js.map +1 -0
  197. package/dist/engine/extension_scenario_registry.d.ts +30 -0
  198. package/dist/engine/extension_scenario_registry.d.ts.map +1 -0
  199. package/dist/engine/extension_scenario_registry.js +976 -0
  200. package/dist/engine/extension_scenario_registry.js.map +1 -0
  201. package/dist/engine/failure_classifier.d.ts.map +1 -1
  202. package/dist/engine/failure_classifier.js +9 -8
  203. package/dist/engine/failure_classifier.js.map +1 -1
  204. package/dist/engine/feasibility_checker.d.ts.map +1 -1
  205. package/dist/engine/feasibility_checker.js +5 -4
  206. package/dist/engine/feasibility_checker.js.map +1 -1
  207. package/dist/engine/first_principles.d.ts +35 -0
  208. package/dist/engine/first_principles.d.ts.map +1 -0
  209. package/dist/engine/first_principles.js +128 -0
  210. package/dist/engine/first_principles.js.map +1 -0
  211. package/dist/engine/{batch1_scenario_registry.d.ts → foundation_scenario_registry.d.ts} +15 -15
  212. package/dist/engine/foundation_scenario_registry.d.ts.map +1 -0
  213. package/dist/engine/{batch1_scenario_registry.js → foundation_scenario_registry.js} +22 -25
  214. package/dist/engine/foundation_scenario_registry.js.map +1 -0
  215. package/dist/engine/{batch1_scenario_runners.d.ts → foundation_scenario_runners.d.ts} +1 -1
  216. package/dist/engine/foundation_scenario_runners.d.ts.map +1 -0
  217. package/dist/engine/{batch1_scenario_runners.js → foundation_scenario_runners.js} +8 -7
  218. package/dist/engine/foundation_scenario_runners.js.map +1 -0
  219. package/dist/engine/git_deps.d.ts.map +1 -1
  220. package/dist/engine/git_deps.js +2 -1
  221. package/dist/engine/git_deps.js.map +1 -1
  222. package/dist/engine/governance_report.d.ts.map +1 -1
  223. package/dist/engine/governance_report.js +10 -9
  224. package/dist/engine/governance_report.js.map +1 -1
  225. package/dist/engine/impact_analyzer.d.ts.map +1 -1
  226. package/dist/engine/impact_analyzer.js +5 -4
  227. package/dist/engine/impact_analyzer.js.map +1 -1
  228. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  229. package/dist/engine/implementation_roadmap_registry.js +217 -80
  230. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  231. package/dist/engine/input_material_contract_registry.d.ts.map +1 -1
  232. package/dist/engine/input_material_contract_registry.js +4 -3
  233. package/dist/engine/input_material_contract_registry.js.map +1 -1
  234. package/dist/engine/instruction_contract.d.ts +68 -0
  235. package/dist/engine/instruction_contract.d.ts.map +1 -0
  236. package/dist/engine/instruction_contract.js +123 -0
  237. package/dist/engine/instruction_contract.js.map +1 -0
  238. package/dist/engine/intent_expander.d.ts.map +1 -1
  239. package/dist/engine/intent_expander.js +339 -1
  240. package/dist/engine/intent_expander.js.map +1 -1
  241. package/dist/engine/intent_router.d.ts +11 -2
  242. package/dist/engine/intent_router.d.ts.map +1 -1
  243. package/dist/engine/intent_router.js +121 -1
  244. package/dist/engine/intent_router.js.map +1 -1
  245. package/dist/engine/intent_signal_extractor.d.ts +3 -0
  246. package/dist/engine/intent_signal_extractor.d.ts.map +1 -1
  247. package/dist/engine/intent_signal_extractor.js +49 -0
  248. package/dist/engine/intent_signal_extractor.js.map +1 -1
  249. package/dist/engine/io_controller.d.ts.map +1 -1
  250. package/dist/engine/io_controller.js +8 -7
  251. package/dist/engine/io_controller.js.map +1 -1
  252. package/dist/engine/java_quality_guard.d.ts.map +1 -1
  253. package/dist/engine/java_quality_guard.js +5 -18
  254. package/dist/engine/java_quality_guard.js.map +1 -1
  255. package/dist/engine/job_manager.d.ts.map +1 -1
  256. package/dist/engine/job_manager.js +8 -7
  257. package/dist/engine/job_manager.js.map +1 -1
  258. package/dist/engine/knowledge_acceptance_registry.d.ts +35 -0
  259. package/dist/engine/knowledge_acceptance_registry.d.ts.map +1 -0
  260. package/dist/engine/knowledge_acceptance_registry.js +271 -0
  261. package/dist/engine/knowledge_acceptance_registry.js.map +1 -0
  262. package/dist/engine/knowledge_asset_audit.d.ts +65 -0
  263. package/dist/engine/knowledge_asset_audit.d.ts.map +1 -0
  264. package/dist/engine/knowledge_asset_audit.js +230 -0
  265. package/dist/engine/knowledge_asset_audit.js.map +1 -0
  266. package/dist/engine/knowledge_asset_consumer.d.ts +150 -0
  267. package/dist/engine/knowledge_asset_consumer.d.ts.map +1 -0
  268. package/dist/engine/knowledge_asset_consumer.js +279 -0
  269. package/dist/engine/knowledge_asset_consumer.js.map +1 -0
  270. package/dist/engine/knowledge_asset_generation_gate.d.ts +38 -0
  271. package/dist/engine/knowledge_asset_generation_gate.d.ts.map +1 -0
  272. package/dist/engine/knowledge_asset_generation_gate.js +131 -0
  273. package/dist/engine/knowledge_asset_generation_gate.js.map +1 -0
  274. package/dist/engine/knowledge_asset_migration.d.ts +117 -0
  275. package/dist/engine/knowledge_asset_migration.d.ts.map +1 -0
  276. package/dist/engine/knowledge_asset_migration.js +204 -0
  277. package/dist/engine/knowledge_asset_migration.js.map +1 -0
  278. package/dist/engine/knowledge_asset_schema.d.ts +97 -0
  279. package/dist/engine/knowledge_asset_schema.d.ts.map +1 -0
  280. package/dist/engine/knowledge_asset_schema.js +413 -0
  281. package/dist/engine/knowledge_asset_schema.js.map +1 -0
  282. package/dist/engine/knowledge_config_loader.d.ts.map +1 -1
  283. package/dist/engine/knowledge_config_loader.js +5 -4
  284. package/dist/engine/knowledge_config_loader.js.map +1 -1
  285. package/dist/engine/knowledge_consumption_snapshot.d.ts +91 -0
  286. package/dist/engine/knowledge_consumption_snapshot.d.ts.map +1 -0
  287. package/dist/engine/knowledge_consumption_snapshot.js +113 -0
  288. package/dist/engine/knowledge_consumption_snapshot.js.map +1 -0
  289. package/dist/engine/knowledge_evolution.d.ts +82 -0
  290. package/dist/engine/knowledge_evolution.d.ts.map +1 -0
  291. package/dist/engine/knowledge_evolution.js +272 -0
  292. package/dist/engine/knowledge_evolution.js.map +1 -0
  293. package/dist/engine/knowledge_lifecycle.d.ts +70 -10
  294. package/dist/engine/knowledge_lifecycle.d.ts.map +1 -1
  295. package/dist/engine/knowledge_lifecycle.js +238 -4
  296. package/dist/engine/knowledge_lifecycle.js.map +1 -1
  297. package/dist/engine/knowledge_manager.d.ts.map +1 -1
  298. package/dist/engine/knowledge_manager.js +9 -8
  299. package/dist/engine/knowledge_manager.js.map +1 -1
  300. package/dist/engine/knowledge_scenario_registry.d.ts +21 -0
  301. package/dist/engine/knowledge_scenario_registry.d.ts.map +1 -0
  302. package/dist/engine/knowledge_scenario_registry.js +337 -0
  303. package/dist/engine/knowledge_scenario_registry.js.map +1 -0
  304. package/dist/engine/knowledge_sovereignty.d.ts.map +1 -1
  305. package/dist/engine/knowledge_sovereignty.js +5 -4
  306. package/dist/engine/knowledge_sovereignty.js.map +1 -1
  307. package/dist/engine/knowledge_template_contracts.d.ts +244 -0
  308. package/dist/engine/knowledge_template_contracts.d.ts.map +1 -0
  309. package/dist/engine/knowledge_template_contracts.js +26 -0
  310. package/dist/engine/knowledge_template_contracts.js.map +1 -0
  311. package/dist/engine/language_policy.d.ts +69 -12
  312. package/dist/engine/language_policy.d.ts.map +1 -1
  313. package/dist/engine/language_policy.js +129 -8
  314. package/dist/engine/language_policy.js.map +1 -1
  315. package/dist/engine/llm_gateway.d.ts.map +1 -1
  316. package/dist/engine/llm_gateway.js +10 -9
  317. package/dist/engine/llm_gateway.js.map +1 -1
  318. package/dist/engine/local_docker_acceptance.d.ts +94 -0
  319. package/dist/engine/local_docker_acceptance.d.ts.map +1 -0
  320. package/dist/engine/local_docker_acceptance.js +312 -0
  321. package/dist/engine/local_docker_acceptance.js.map +1 -0
  322. package/dist/engine/logger.d.ts +64 -0
  323. package/dist/engine/logger.d.ts.map +1 -0
  324. package/dist/engine/logger.js +115 -0
  325. package/dist/engine/logger.js.map +1 -0
  326. package/dist/engine/main_path_integration_contract.d.ts.map +1 -1
  327. package/dist/engine/main_path_integration_contract.js +43 -42
  328. package/dist/engine/main_path_integration_contract.js.map +1 -1
  329. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  330. package/dist/engine/mechanism_contract_registry.js +448 -17
  331. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  332. package/dist/engine/metric_governance.d.ts +51 -0
  333. package/dist/engine/metric_governance.d.ts.map +1 -0
  334. package/dist/engine/metric_governance.js +138 -0
  335. package/dist/engine/metric_governance.js.map +1 -0
  336. package/dist/engine/migration_guard.d.ts.map +1 -1
  337. package/dist/engine/migration_guard.js +6 -5
  338. package/dist/engine/migration_guard.js.map +1 -1
  339. package/dist/engine/mutation_audit.d.ts.map +1 -1
  340. package/dist/engine/mutation_audit.js +6 -5
  341. package/dist/engine/mutation_audit.js.map +1 -1
  342. package/dist/engine/observability.d.ts +11 -0
  343. package/dist/engine/observability.d.ts.map +1 -1
  344. package/dist/engine/observability.js +60 -8
  345. package/dist/engine/observability.js.map +1 -1
  346. package/dist/engine/onboarding.d.ts.map +1 -1
  347. package/dist/engine/onboarding.js +17 -16
  348. package/dist/engine/onboarding.js.map +1 -1
  349. package/dist/engine/plan_proposal_gate.d.ts +131 -0
  350. package/dist/engine/plan_proposal_gate.d.ts.map +1 -0
  351. package/dist/engine/plan_proposal_gate.js +340 -0
  352. package/dist/engine/plan_proposal_gate.js.map +1 -0
  353. package/dist/engine/platform_context.d.ts +44 -0
  354. package/dist/engine/platform_context.d.ts.map +1 -0
  355. package/dist/engine/platform_context.js +165 -0
  356. package/dist/engine/platform_context.js.map +1 -0
  357. package/dist/engine/policy_drift_detector.d.ts.map +1 -1
  358. package/dist/engine/policy_drift_detector.js +8 -7
  359. package/dist/engine/policy_drift_detector.js.map +1 -1
  360. package/dist/engine/regression_matrix.d.ts.map +1 -1
  361. package/dist/engine/regression_matrix.js +15 -14
  362. package/dist/engine/regression_matrix.js.map +1 -1
  363. package/dist/engine/release_compatibility.d.ts +62 -0
  364. package/dist/engine/release_compatibility.d.ts.map +1 -0
  365. package/dist/engine/release_compatibility.js +145 -0
  366. package/dist/engine/release_compatibility.js.map +1 -0
  367. package/dist/engine/release_gate.d.ts +29 -0
  368. package/dist/engine/release_gate.d.ts.map +1 -0
  369. package/dist/engine/release_gate.js +675 -0
  370. package/dist/engine/release_gate.js.map +1 -0
  371. package/dist/engine/release_gate_scenario_registry.d.ts +50 -0
  372. package/dist/engine/release_gate_scenario_registry.d.ts.map +1 -0
  373. package/dist/engine/release_gate_scenario_registry.js +514 -0
  374. package/dist/engine/release_gate_scenario_registry.js.map +1 -0
  375. package/dist/engine/release_readiness_gate.d.ts +36 -0
  376. package/dist/engine/release_readiness_gate.d.ts.map +1 -0
  377. package/dist/engine/release_readiness_gate.js +1050 -0
  378. package/dist/engine/release_readiness_gate.js.map +1 -0
  379. package/dist/engine/risk_sampler.d.ts.map +1 -1
  380. package/dist/engine/risk_sampler.js +4 -3
  381. package/dist/engine/risk_sampler.js.map +1 -1
  382. package/dist/engine/runtime_safety.d.ts.map +1 -1
  383. package/dist/engine/runtime_safety.js +18 -17
  384. package/dist/engine/runtime_safety.js.map +1 -1
  385. package/dist/engine/scaffolder.d.ts.map +1 -1
  386. package/dist/engine/scaffolder.js +4 -3
  387. package/dist/engine/scaffolder.js.map +1 -1
  388. package/dist/engine/scope_lease.d.ts.map +1 -1
  389. package/dist/engine/scope_lease.js +4 -3
  390. package/dist/engine/scope_lease.js.map +1 -1
  391. package/dist/engine/semantic_evidence.d.ts.map +1 -1
  392. package/dist/engine/semantic_evidence.js +4 -3
  393. package/dist/engine/semantic_evidence.js.map +1 -1
  394. package/dist/engine/state_fact_classifier.d.ts +47 -0
  395. package/dist/engine/state_fact_classifier.d.ts.map +1 -0
  396. package/dist/engine/state_fact_classifier.js +158 -0
  397. package/dist/engine/state_fact_classifier.js.map +1 -0
  398. package/dist/engine/task_context.d.ts +25 -3
  399. package/dist/engine/task_context.d.ts.map +1 -1
  400. package/dist/engine/task_context.js +126 -37
  401. package/dist/engine/task_context.js.map +1 -1
  402. package/dist/engine/task_planner.d.ts.map +1 -1
  403. package/dist/engine/task_planner.js +6 -5
  404. package/dist/engine/task_planner.js.map +1 -1
  405. package/dist/engine/team_awareness.d.ts.map +1 -1
  406. package/dist/engine/team_awareness.js +2 -1
  407. package/dist/engine/team_awareness.js.map +1 -1
  408. package/dist/engine/technology_decision.d.ts +38 -0
  409. package/dist/engine/technology_decision.d.ts.map +1 -0
  410. package/dist/engine/technology_decision.js +120 -0
  411. package/dist/engine/technology_decision.js.map +1 -0
  412. package/dist/engine/template_manifest_io.d.ts +47 -0
  413. package/dist/engine/template_manifest_io.d.ts.map +1 -0
  414. package/dist/engine/template_manifest_io.js +151 -0
  415. package/dist/engine/template_manifest_io.js.map +1 -0
  416. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -1
  417. package/dist/engine/template_mechanism_auditor.js +5 -4
  418. package/dist/engine/template_mechanism_auditor.js.map +1 -1
  419. package/dist/engine/template_sync.d.ts +98 -0
  420. package/dist/engine/template_sync.d.ts.map +1 -0
  421. package/dist/engine/template_sync.js +355 -0
  422. package/dist/engine/template_sync.js.map +1 -0
  423. package/dist/engine/test_generator.d.ts.map +1 -1
  424. package/dist/engine/test_generator.js +5 -4
  425. package/dist/engine/test_generator.js.map +1 -1
  426. package/dist/engine/test_quality.d.ts.map +1 -1
  427. package/dist/engine/test_quality.js +5 -4
  428. package/dist/engine/test_quality.js.map +1 -1
  429. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
  430. package/dist/engine/tool_invocation_contract_registry.js +32 -31
  431. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  432. package/dist/engine/traceability.d.ts.map +1 -1
  433. package/dist/engine/traceability.js +6 -5
  434. package/dist/engine/traceability.js.map +1 -1
  435. package/dist/engine/user_feedback_contract.d.ts.map +1 -1
  436. package/dist/engine/user_feedback_contract.js +81 -19
  437. package/dist/engine/user_feedback_contract.js.map +1 -1
  438. package/dist/engine/user_promise.d.ts +67 -0
  439. package/dist/engine/user_promise.d.ts.map +1 -0
  440. package/dist/engine/user_promise.js +436 -0
  441. package/dist/engine/user_promise.js.map +1 -0
  442. package/dist/engine/verifier.d.ts +6 -10
  443. package/dist/engine/verifier.d.ts.map +1 -1
  444. package/dist/engine/verifier.js +149 -1
  445. package/dist/engine/verifier.js.map +1 -1
  446. package/dist/engine/workflow_contract_registry.d.ts.map +1 -1
  447. package/dist/engine/workflow_contract_registry.js +127 -10
  448. package/dist/engine/workflow_contract_registry.js.map +1 -1
  449. package/dist/engine/workflow_template_pack.d.ts +71 -0
  450. package/dist/engine/workflow_template_pack.d.ts.map +1 -0
  451. package/dist/engine/workflow_template_pack.js +246 -0
  452. package/dist/engine/workflow_template_pack.js.map +1 -0
  453. package/dist/engine/workspace_resumer.d.ts.map +1 -1
  454. package/dist/engine/workspace_resumer.js +9 -8
  455. package/dist/engine/workspace_resumer.js.map +1 -1
  456. package/dist/engine/zero_config_init.d.ts.map +1 -1
  457. package/dist/engine/zero_config_init.js +16 -15
  458. package/dist/engine/zero_config_init.js.map +1 -1
  459. package/dist/git/operations.d.ts.map +1 -1
  460. package/dist/git/operations.js +18 -17
  461. package/dist/git/operations.js.map +1 -1
  462. package/dist/index.js +10 -9
  463. package/dist/index.js.map +1 -1
  464. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  465. package/dist/knowledge/conflict_detector.js +2 -1
  466. package/dist/knowledge/conflict_detector.js.map +1 -1
  467. package/dist/knowledge/health_checker.d.ts.map +1 -1
  468. package/dist/knowledge/health_checker.js +5 -4
  469. package/dist/knowledge/health_checker.js.map +1 -1
  470. package/dist/knowledge/index_manager.js +4 -4
  471. package/dist/knowledge/index_manager.js.map +1 -1
  472. package/dist/knowledge/loader.d.ts.map +1 -1
  473. package/dist/knowledge/loader.js +20 -14
  474. package/dist/knowledge/loader.js.map +1 -1
  475. package/dist/knowledge/writer.d.ts.map +1 -1
  476. package/dist/knowledge/writer.js +7 -6
  477. package/dist/knowledge/writer.js.map +1 -1
  478. package/dist/types.d.ts +28 -8
  479. package/dist/types.d.ts.map +1 -1
  480. package/package.json +13 -5
  481. package/templates/knowledge/acceptance_templates/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +27 -3
  482. package/templates/knowledge/acceptance_templates/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +27 -3
  483. package/templates/knowledge/acceptance_templates//345/211/215/347/253/257/351/241/265/351/235/242/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -3
  484. package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +31 -3
  485. package/templates/knowledge/acceptance_templates//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -3
  486. package/templates/knowledge/acceptance_templates//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +27 -3
  487. package/templates/knowledge/acceptance_templates//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +27 -3
  488. package/templates/knowledge/acceptance_templates//346/212/200/346/234/257/351/200/211/345/236/213/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -3
  489. package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +26 -3
  490. package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/350/256/276/350/256/241/346/250/241/347/211/210.md +27 -3
  491. package/templates/knowledge/acceptance_templates//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +28 -3
  492. package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +26 -3
  493. package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/351/252/214/346/224/266/346/270/205/345/215/225.md +31 -3
  494. package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +27 -3
  495. package/templates/knowledge/acceptance_templates//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +27 -3
  496. package/templates/knowledge/acceptance_templates//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +26 -3
  497. package/templates/knowledge/acceptance_templates//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +27 -3
  498. package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -3
  499. package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +27 -3
  500. package/templates/knowledge/acceptance_templates//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +27 -3
  501. package/templates/knowledge/checklists//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -0
  502. package/templates/knowledge/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +30 -8
  503. package/templates/knowledge/checklists//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -0
  504. package/templates/knowledge/checklists//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -0
  505. package/templates/knowledge/checklists//347/237/245/350/257/206/346/263/250/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +30 -0
  506. package/templates/knowledge/checklists//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md +29 -0
  507. package/templates/knowledge/checklists//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md +29 -0
  508. package/templates/knowledge/domain//345/244/232/347/247/237/346/210/267.md +28 -3
  509. package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +27 -3
  510. package/templates/knowledge/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +30 -3
  511. package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +32 -3
  512. package/templates/knowledge/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +31 -3
  513. package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +31 -3
  514. package/templates/knowledge/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +28 -3
  515. package/templates/knowledge/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +30 -3
  516. package/templates/knowledge/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +31 -3
  517. package/templates/knowledge/patterns/core/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +24 -7
  518. package/templates/knowledge/patterns/core/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +25 -7
  519. package/templates/knowledge/patterns/core/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +24 -7
  520. package/templates/knowledge/patterns/core//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237.md +24 -7
  521. package/templates/knowledge/patterns/core//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +25 -7
  522. package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/344/270/216/345/257/206/351/222/245/346/213/246/346/210/252.md +24 -7
  523. package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +25 -7
  524. package/templates/knowledge/patterns/core//345/206/262/347/252/201/351/227/250/347/246/201.md +24 -7
  525. package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +26 -7
  526. package/templates/knowledge/patterns/core//345/217/230/345/274/202/345/256/241/350/256/241.md +25 -7
  527. package/templates/knowledge/patterns/core//345/233/236/345/275/222/347/237/251/351/230/265.md +24 -7
  528. package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +24 -7
  529. package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +24 -7
  530. package/templates/knowledge/patterns/core//345/271/266/345/217/221/351/224/201.md +26 -7
  531. package/templates/knowledge/patterns/core//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +26 -7
  532. package/templates/knowledge/patterns/core//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +24 -7
  533. package/templates/knowledge/patterns/core//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +25 -7
  534. package/templates/knowledge/patterns/core//346/265/201/345/274/217/345/277/203/350/267/263.md +25 -7
  535. package/templates/knowledge/patterns/core//347/237/245/350/257/206/344/270/273/346/235/203.md +25 -7
  536. package/templates/knowledge/patterns/core//350/257/255/344/271/211/350/257/201/346/215/256.md +24 -7
  537. package/templates/knowledge/patterns/core//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +25 -7
  538. package/templates/knowledge/patterns/core//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +24 -7
  539. package/templates/knowledge/patterns/core//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +24 -7
  540. package/templates/knowledge/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +29 -3
  541. package/templates/knowledge/procedures//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/350/257/201/346/265/201/347/250/213.md +33 -0
  542. package/templates/knowledge/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +30 -3
  543. package/templates/knowledge/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +30 -3
  544. package/templates/knowledge/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +30 -3
  545. package/templates/knowledge/procedures//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md +34 -0
  546. package/templates/knowledge/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +30 -3
  547. package/templates/knowledge/procedures//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md +34 -0
  548. package/templates/knowledge/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +30 -3
  549. package/templates/knowledge/procedures//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md +34 -0
  550. package/templates/knowledge/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +30 -3
  551. package/templates/knowledge/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +29 -3
  552. package/templates/knowledge/procedures//346/234/254/345/234/260/346/265/217/350/247/210/345/231/250/351/252/214/346/224/266/345/267/245/344/275/234/346/265/201.md +99 -0
  553. package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +95 -0
  554. package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -3
  555. package/templates/knowledge/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +30 -3
  556. package/templates/knowledge/procedures//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201/345/267/245/344/275/234/346/265/201.md +91 -0
  557. package/templates/knowledge/procedures//346/272/220/347/240/201/345/216/237/345/236/213/344/272/244/344/273/230/346/265/201/347/250/213.md +30 -3
  558. package/templates/knowledge/procedures//347/216/260/346/234/211/347/263/273/347/273/237/345/267/256/350/267/235/345/210/206/346/236/220/345/267/245/344/275/234/346/265/201.md +97 -0
  559. package/templates/knowledge/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +30 -3
  560. package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +30 -3
  561. package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +30 -3
  562. package/templates/knowledge/procedures//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md +33 -0
  563. package/templates/knowledge/procedures//347/274/272/351/231/267/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +30 -3
  564. package/templates/knowledge/procedures//350/207/252/344/270/273/351/200/211/345/236/213/346/265/201/347/250/213.md +30 -3
  565. package/templates/knowledge/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -3
  566. package/templates/knowledge/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +30 -3
  567. package/templates/knowledge/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +30 -3
  568. package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +30 -3
  569. package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +30 -3
  570. package/templates/knowledge/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +30 -3
  571. package/templates/knowledge/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +30 -3
  572. package/templates/knowledge/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +30 -3
  573. package/templates/knowledge/procedures//351/252/214/350/257/201/350/256/241/345/210/222/346/265/201/347/250/213.md +30 -3
  574. package/templates/knowledge/review_rules//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  575. package/templates/knowledge/review_rules//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  576. package/templates/knowledge/review_rules//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +23 -3
  577. package/templates/knowledge/review_rules//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  578. package/templates/knowledge/review_rules//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +23 -3
  579. package/templates/knowledge/review_rules//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  580. package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +24 -3
  581. package/templates/knowledge/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  582. package/templates/knowledge/rules//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237/350/247/204/345/210/231.md +65 -0
  583. package/templates/knowledge/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md +36 -0
  584. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  585. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/346/250/241/346/235/277/345/214/205/350/247/204/345/210/231.md +38 -0
  586. package/templates/knowledge/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md +36 -0
  587. package/templates/knowledge/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md +36 -0
  588. package/templates/knowledge/rules//346/211/247/350/241/214/345/256/210/345/215/253/350/257/204/344/274/260/350/247/204/345/210/231.md +36 -0
  589. package/templates/knowledge/rules//346/211/251/345/261/225/347/224/237/345/221/275/345/221/250/346/234/237/350/247/204/345/210/231.md +38 -0
  590. package/templates/knowledge/rules//346/212/200/346/234/257/345/206/263/347/255/226/344/270/273/346/235/203/350/247/204/345/210/231.md +64 -0
  591. package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/345/244/204/347/220/206/350/247/204/345/210/231.md +36 -0
  592. package/templates/knowledge/rules//346/226/275/345/267/245/346/214/207/344/273/244/345/245/221/347/272/246/350/247/204/345/210/231.md +49 -0
  593. package/templates/knowledge/rules//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md +50 -0
  594. package/templates/knowledge/rules//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/345/216/237/345/210/231.md +35 -0
  595. package/templates/knowledge/rules//346/263/250/345/206/214/350/241/250/345/237/272/347/241/200/350/256/276/346/226/275/350/247/204/345/210/231.md +36 -0
  596. package/templates/knowledge/rules//346/274/224/350/277/233/345/233/236/345/275/222/350/247/204/345/210/231.md +51 -0
  597. package/templates/knowledge/rules//346/274/224/350/277/233/345/233/236/345/275/222/351/227/250/346/216/247/350/247/204/345/210/231.md +74 -0
  598. package/templates/knowledge/rules//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246/350/247/204/345/210/231.md +35 -0
  599. package/templates/knowledge/rules//347/237/245/350/257/206/346/263/250/345/205/245/350/276/271/347/225/214/350/247/204/345/210/231.md +36 -0
  600. package/templates/knowledge/rules//347/237/245/350/257/206/350/265/204/344/272/247/346/262/273/347/220/206/350/247/204/345/210/231.md +61 -0
  601. package/templates/knowledge/rules//347/254/254/344/270/200/346/200/247/345/216/237/347/220/206/346/216/250/347/220/206/350/247/204/345/210/231.md +73 -0
  602. package/templates/knowledge/rules//347/273/206/350/212/202/347/272/252/345/276/213/350/247/204/345/210/231.md +67 -0
  603. package/templates/knowledge/rules//350/204/221/346/232/264/344/270/216/346/226/271/346/241/210/346/216/242/347/264/242/350/247/204/345/210/231.md +66 -0
  604. package/templates/knowledge/rules//350/256/241/345/210/222/345/211/215/347/275/256/351/227/250/350/247/204/345/210/231.md +59 -0
  605. package/templates/knowledge/rules//350/267/250/345/271/263/345/217/260/350/267/257/345/276/204/345/256/211/345/205/250/350/247/204/345/210/231.md +38 -0
  606. package/templates/knowledge/rules//350/276/223/345/205/245/346/235/220/346/226/231/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  607. package/templates/knowledge/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +35 -0
  608. package/templates/knowledge/rules//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260/350/247/204/345/210/231.md +36 -0
  609. package/templates/knowledge/rules//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226/350/247/204/345/210/231.md +36 -0
  610. package/templates/knowledge/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md +36 -0
  611. package/templates/knowledge/templates//345/256/241/346/237/245/346/221/230/350/246/201.md +26 -7
  612. package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +30 -3
  613. package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +29 -3
  614. package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +33 -3
  615. package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +31 -3
  616. package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +30 -3
  617. package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +31 -3
  618. package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +31 -3
  619. package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +30 -3
  620. package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +30 -3
  621. package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +31 -3
  622. package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +30 -3
  623. package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +29 -3
  624. package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +33 -3
  625. package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +28 -3
  626. package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +32 -3
  627. package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +31 -3
  628. package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +31 -3
  629. package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +30 -3
  630. package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +34 -3
  631. package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +32 -3
  632. package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +30 -3
  633. package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +31 -3
  634. package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +31 -3
  635. package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +31 -3
  636. package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -3
  637. package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +32 -3
  638. package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +31 -3
  639. package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +30 -3
  640. package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +34 -3
  641. package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +31 -3
  642. package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +29 -3
  643. package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +33 -3
  644. package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +34 -3
  645. package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +30 -3
  646. package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +30 -3
  647. package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +31 -3
  648. package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +34 -3
  649. package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +28 -3
  650. package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -3
  651. package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +32 -3
  652. package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +29 -3
  653. package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +32 -3
  654. package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +31 -3
  655. package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -3
  656. package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +29 -3
  657. package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +30 -3
  658. package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +31 -3
  659. package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +31 -3
  660. package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +33 -3
  661. package/templates/patterns//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241/350/247/204/350/214/203.md +30 -3
  662. package/dist/engine/batch1_manifest.d.ts.map +0 -1
  663. package/dist/engine/batch1_manifest.js.map +0 -1
  664. package/dist/engine/batch1_scenario_registry.d.ts.map +0 -1
  665. package/dist/engine/batch1_scenario_registry.js.map +0 -1
  666. package/dist/engine/batch1_scenario_runners.d.ts.map +0 -1
  667. package/dist/engine/batch1_scenario_runners.js.map +0 -1
@@ -0,0 +1,158 @@
1
+ /**
2
+ * 问题十七: State Fact Classifier — TaskContext 事实分区治理。
3
+ *
4
+ * 将 TaskContext 数据分为三类:
5
+ * - engineering_fact: 可恢复工程事实(文件路径、git 状态、测试结果、验收标准)
6
+ * - ai_inference: AI 推理结果(分类、意图分析、知识匹配、路由决策)
7
+ * - prompt_content: Prompt 内容(发送给 AI 的原始文本、chain_of_thought)
8
+ *
9
+ * 核心规则:
10
+ * - AI 推理不得作为工程事实保存
11
+ * - raw_prompt / chain_of_thought 不得进入 engineering_fact
12
+ * - 违规必须 hard fail 或阻断保存
13
+ */
14
+ // 字段 → 分区映射
15
+ const FIELD_CATEGORY_MAP = {
16
+ // engineering_fact: 可验证的工程事实
17
+ task_id: "engineering_fact",
18
+ status: "engineering_fact",
19
+ project_path: "engineering_fact",
20
+ config: "engineering_fact",
21
+ scope: "engineering_fact",
22
+ acceptance: "engineering_fact",
23
+ changed_files: "engineering_fact",
24
+ test_results: "engineering_fact",
25
+ verification_evidence: "engineering_fact",
26
+ artifacts: "engineering_fact",
27
+ lease: "engineering_fact",
28
+ created_at: "engineering_fact",
29
+ updated_at: "engineering_fact",
30
+ delivery_report: "engineering_fact",
31
+ plan_proposal_gate: "engineering_fact",
32
+ core_experience_evaluation: "engineering_fact",
33
+ failure_report: "engineering_fact",
34
+ degradation_event: "engineering_fact",
35
+ governance_report: "engineering_fact",
36
+ // ai_inference: AI 推理结果
37
+ classification: "ai_inference",
38
+ route_decision: "ai_inference",
39
+ matched_knowledge: "ai_inference",
40
+ matched_patterns: "ai_inference",
41
+ uncertainty_triggers: "ai_inference",
42
+ circuit_breaker: "ai_inference",
43
+ legacy_conventions: "ai_inference",
44
+ ingestion_evidences: "ai_inference",
45
+ prompt_injection_plan: "ai_inference",
46
+ sensitivity_labels: "ai_inference",
47
+ redaction_records: "ai_inference",
48
+ privacy_findings: "ai_inference",
49
+ config_resolution_reports: "ai_inference",
50
+ workflow_trace: "ai_inference",
51
+ output_artifact_record: "ai_inference",
52
+ // prompt_content: Prompt 原始内容
53
+ prompt: "prompt_content",
54
+ expand_result: "prompt_content",
55
+ };
56
+ // 禁止进入 engineering_fact 的关键词
57
+ const ENGINEERING_FACT_BLOCKED_PATTERNS = [
58
+ /chain_of_thought/i,
59
+ /raw_prompt/i,
60
+ /raw_stdout/i,
61
+ /raw_stderr/i,
62
+ /ai_generated/i,
63
+ /inferred/i,
64
+ ];
65
+ /**
66
+ * 获取字段的分区类别。
67
+ */
68
+ export function classifyField(key) {
69
+ return FIELD_CATEGORY_MAP[key] ?? "ai_inference"; // 未知字段默认 ai_inference
70
+ }
71
+ /**
72
+ * 验证 TaskContext 数据分区合规性。
73
+ * 检查所有字段是否符合分区规则。
74
+ */
75
+ export function validateStateFactPartition(data) {
76
+ const violations = [];
77
+ for (const [key, value] of Object.entries(data)) {
78
+ const category = classifyField(key);
79
+ // engineering_fact 字段不得包含 AI 推理内容
80
+ if (category === "engineering_fact" && value !== null && value !== undefined) {
81
+ const strValue = typeof value === "string" ? value : JSON.stringify(value);
82
+ if (strValue) {
83
+ for (const pattern of ENGINEERING_FACT_BLOCKED_PATTERNS) {
84
+ if (pattern.test(strValue)) {
85
+ violations.push({
86
+ severity: "hard_fail",
87
+ key,
88
+ expected_category: "engineering_fact",
89
+ actual_category: "prompt_content",
90
+ message_zh: `工程事实字段 "${key}" 包含禁止内容 (${pattern.source}): 不得将 AI 原始输出保存为工程事实`,
91
+ });
92
+ }
93
+ }
94
+ }
95
+ }
96
+ // prompt_content 字段不得包含结构化工程数据
97
+ if (category === "prompt_content" && typeof value === "object" && value !== null) {
98
+ const obj = value;
99
+ if (obj.test_results || obj.acceptance || obj.changed_files) {
100
+ violations.push({
101
+ severity: "warning",
102
+ key,
103
+ expected_category: "prompt_content",
104
+ actual_category: "engineering_fact",
105
+ message_zh: `Prompt 内容字段 "${key}" 包含工程事实数据: 建议将工程数据与 Prompt 分离`,
106
+ });
107
+ }
108
+ }
109
+ }
110
+ return violations;
111
+ }
112
+ /**
113
+ * 检查指定字段是否允许写入目标分区。
114
+ * 用于 TaskContext save 前的实时校验。
115
+ */
116
+ export function isWriteAllowed(key, targetCategory, value) {
117
+ const sourceCategory = classifyField(key);
118
+ // AI 推理写入 engineering_fact 槽位 → 阻断
119
+ if (targetCategory === "engineering_fact" && sourceCategory === "ai_inference") {
120
+ return {
121
+ allowed: false,
122
+ reason_zh: `禁止将 AI 推理字段 "${key}" 写入工程事实分区`,
123
+ };
124
+ }
125
+ // prompt_content 写入 engineering_fact → 阻断
126
+ if (targetCategory === "engineering_fact" && sourceCategory === "prompt_content") {
127
+ return {
128
+ allowed: false,
129
+ reason_zh: `禁止将 Prompt 内容字段 "${key}" 写入工程事实分区`,
130
+ };
131
+ }
132
+ // 工程事实字段中的禁止内容 → 阻断
133
+ if (targetCategory === "engineering_fact" && value !== null && value !== undefined) {
134
+ const strValue = typeof value === "string" ? value : JSON.stringify(value);
135
+ if (strValue) {
136
+ for (const pattern of ENGINEERING_FACT_BLOCKED_PATTERNS) {
137
+ if (pattern.test(strValue)) {
138
+ return {
139
+ allowed: false,
140
+ reason_zh: `工程事实字段 "${key}" 包含禁止模式 (${pattern.source})`,
141
+ };
142
+ }
143
+ }
144
+ }
145
+ }
146
+ return { allowed: true };
147
+ }
148
+ /**
149
+ * 获取字段分区摘要(用于诊断输出)。
150
+ */
151
+ export function getStateFactSummary(data) {
152
+ const result = { engineering_fact: [], ai_inference: [], prompt_content: [] };
153
+ for (const key of Object.keys(data)) {
154
+ result[classifyField(key)].push(key);
155
+ }
156
+ return result;
157
+ }
158
+ //# sourceMappingURL=state_fact_classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state_fact_classifier.js","sourceRoot":"","sources":["../../src/engine/state_fact_classifier.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { AuditPool } from "./audit_pool.js";
5
5
  import { DiffOwnershipStore } from "./diff_ownership_store.js";
6
6
  import { ScopeLeaseStore } from "./scope_lease.js";
7
7
  import { ConflictGate } from "./conflict_gate.js";
8
+ import type { PlanProposalGateResult, PlanProposalEvidence } from "./plan_proposal_gate.js";
8
9
  /**
9
10
  * 任务上下文管理器 — 负责任务状态的创建、持久化、查询和生命周期管理。
10
11
  * 状态文件存储在 stateDir 目录下,每个任务一个 JSON 文件。
@@ -124,10 +125,16 @@ export declare class TaskContextManager {
124
125
  */
125
126
  autoFailStale(): Promise<string[]>;
126
127
  /**
127
- * 清理过期和超量任务: 删除超过 30 天的任务,超过 100 个时淘汰最旧的已完成/已失败任务。
128
- * @returns 删除的任务数量
128
+ * 清理过期和超量任务: 使用 retention_policy 驱动清理决策。
129
+ * @param dryRun - 默认 true,仅评估不删除
130
+ * @returns 清理评估结果
129
131
  */
130
- cleanup(): Promise<number>;
132
+ cleanup(dryRun?: boolean): Promise<{
133
+ removed: number;
134
+ protected: number;
135
+ forbidden_content_hits: string[];
136
+ dry_run: boolean;
137
+ }>;
131
138
  /**
132
139
  * 设置任务计划结果。
133
140
  * @param taskId - 任务 ID
@@ -153,6 +160,21 @@ export declare class TaskContextManager {
153
160
  * 设置工具调用追踪和违规记录。
154
161
  */
155
162
  setToolTrace(taskId: string, trace: ToolTrace, violations?: ToolInvocationViolation[]): Promise<TaskContext | null>;
163
+ /**
164
+ * 持久化 Plan Proposal Gate 评估结果。
165
+ */
166
+ setPlanProposalGate(taskId: string, gate: PlanProposalGateResult): Promise<TaskContext | null>;
167
+ /**
168
+ * 持久化 Plan Proposal Evidence。
169
+ */
170
+ setPlanProposalEvidence(taskId: string, evidence: PlanProposalEvidence): Promise<TaskContext | null>;
171
+ /**
172
+ * 在执行动作前检查 Plan Gate。
173
+ */
174
+ checkPlanGateBeforeWrite(ctx: TaskContext): {
175
+ allowed: boolean;
176
+ reason_zh: string;
177
+ };
156
178
  /**
157
179
  * 设置任务产物输出。
158
180
  * @param taskId - 任务 ID
@@ -1 +1 @@
1
- {"version":3,"file":"task_context.d.ts","sourceRoot":"","sources":["../../src/engine/task_context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task_context.d.ts","sourceRoot":"","sources":["../../src/engine/task_context.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ import { DiffOwnershipStore } from "./diff_ownership_store.js";
9
9
  import { ScopeLeaseStore } from "./scope_lease.js";
10
10
  import { ConflictGate } from "./conflict_gate.js";
11
11
  import { evaluateStateGuard } from "./enforcement_guard.js";
12
+ import { evaluateNoFalseCompletion, recordCepIntegration } from "./core_experience_principle.js";
13
+ import { debug } from "./logger.js";
12
14
  /**
13
15
  * 任务上下文管理器 — 管理任务的完整生命周期状态持久化。
14
16
  *
@@ -108,7 +110,7 @@ export class TaskContextManager {
108
110
  }
109
111
  await this.save(ctx);
110
112
  await this.writeCurrentPointer(taskId);
111
- console.error("[soloForge] 任务上下文: 创建任务 " + taskId);
113
+ debug("任务上下文", "创建任务 " + taskId);
112
114
  return ctx;
113
115
  }
114
116
  /**
@@ -123,7 +125,7 @@ export class TaskContextManager {
123
125
  return JSON.parse(data);
124
126
  }
125
127
  catch (e) {
126
- console.error("[soloForge] 任务上下文: 加载任务文件失败(预期行为: 文件不存在或解析错误) —", taskId, e);
128
+ debug("任务上下文", "加载任务文件失败(预期行为: 文件不存在或解析错误) —", taskId, e);
127
129
  return null;
128
130
  }
129
131
  }
@@ -132,6 +134,14 @@ export class TaskContextManager {
132
134
  * @param ctx - 任务上下文对象
133
135
  */
134
136
  async save(ctx) {
137
+ // problem-17: 保存前校验 StateFact 分区合规性
138
+ const { validateStateFactPartition } = await import("./state_fact_classifier.js");
139
+ const violations = validateStateFactPartition(ctx);
140
+ const hardFails = violations.filter(v => v.severity === "hard_fail");
141
+ if (hardFails.length > 0) {
142
+ const msgs = hardFails.map(v => v.message_zh).join("; ");
143
+ throw new Error(`StateFact 分区违规: ${msgs}`);
144
+ }
135
145
  const filePath = this.taskFilePath(ctx.task_id);
136
146
  // 原子写入: 先写 .tmp 临时文件,再 rename 覆盖,防止写入中断导致文件损坏
137
147
  const tmpPath = `${filePath}.tmp`;
@@ -152,11 +162,11 @@ export class TaskContextManager {
152
162
  if (!VALID_TRANSITIONS[ctx.status].includes(status)) {
153
163
  throw new Error(`无效状态转换: ${ctx.status} → ${status}`);
154
164
  }
155
- // Batch2: 状态护栏 — 阻断 failed/blocked/requires_human → done
165
+ // 状态护栏 — 阻断 failed/blocked/requires_human → done
156
166
  if (["failed", "blocked", "requires_human"].includes(ctx.status) && status === "done") {
157
167
  const guardFindings = evaluateStateGuard(ctx.status, "completed", "task_context_contract");
158
168
  if (guardFindings.length > 0 && guardFindings[0].blocked) {
159
- throw new Error(`Batch2 状态护栏阻断: ${guardFindings[0].reason_zh}`);
169
+ throw new Error(`状态护栏阻断: ${guardFindings[0].reason_zh}`);
160
170
  }
161
171
  }
162
172
  // 事实前置条件校验:防止无数据伪推进
@@ -186,7 +196,7 @@ export class TaskContextManager {
186
196
  const prevStatus = ctx.status;
187
197
  ctx.status = status;
188
198
  await this.save(ctx);
189
- console.error("[soloForge] 任务上下文: 任务 " + taskId + " 状态转换 " + prevStatus + " → " + status);
199
+ debug("任务上下文", "任务 " + taskId + " 状态转换 " + prevStatus + " → " + status);
190
200
  if (status === "executing") {
191
201
  // CAP-011: 进入执行阶段时自动从膨胀范围捕获 baseline
192
202
  const scopePaths = ctx.expansion?.scope?.allowed_paths;
@@ -405,7 +415,7 @@ export class TaskContextManager {
405
415
  return ctx;
406
416
  }
407
417
  catch (e) {
408
- console.error("[soloForge] 任务上下文: 获取当前任务失败(预期行为: 指针文件不存在或解析错误) —", e);
418
+ debug("任务上下文", "获取当前任务失败(预期行为: 指针文件不存在或解析错误) —", e);
409
419
  return null;
410
420
  }
411
421
  }
@@ -423,7 +433,7 @@ export class TaskContextManager {
423
433
  // 通过 VALID_TRANSITIONS 校验取消是否合法
424
434
  const allowed = VALID_TRANSITIONS[ctx.status];
425
435
  if (!allowed || !allowed.includes("failed")) {
426
- console.error(`[soloForge] 任务上下文: 无法从 ${ctx.status} 取消到 failed`);
436
+ debug("任务上下文", `无法从 ${ctx.status} 取消到 failed`);
427
437
  return false;
428
438
  }
429
439
  ctx.status = "failed";
@@ -432,7 +442,7 @@ export class TaskContextManager {
432
442
  this.diffOwnership.clearTask(taskId);
433
443
  this.scopeLease.release(taskId);
434
444
  await this.clearCurrentPointerIfMatches(taskId);
435
- console.error("[soloForge] 任务上下文: 已取消任务 " + taskId);
445
+ debug("任务上下文", "已取消任务 " + taskId);
436
446
  return true;
437
447
  }
438
448
  /**
@@ -511,7 +521,7 @@ export class TaskContextManager {
511
521
  ctx.status = "failed";
512
522
  await this.save(ctx);
513
523
  failed.push(ctx.task_id);
514
- console.error(`[soloForge] 任务上下文: 自动终结陈旧任务 ${ctx.task_id} (${prevStatus}, ${Math.round(elapsed / 60000)}min)`);
524
+ debug("任务上下文", `自动终结陈旧任务 ${ctx.task_id} (${prevStatus}, ${Math.round(elapsed / 60000)}min)`);
515
525
  }
516
526
  }
517
527
  catch {
@@ -521,53 +531,68 @@ export class TaskContextManager {
521
531
  return failed;
522
532
  }
523
533
  /**
524
- * 清理过期和超量任务: 删除超过 30 天的任务,超过 100 个时淘汰最旧的已完成/已失败任务。
525
- * @returns 删除的任务数量
534
+ * 清理过期和超量任务: 使用 retention_policy 驱动清理决策。
535
+ * @param dryRun - 默认 true,仅评估不删除
536
+ * @returns 清理评估结果
526
537
  */
527
- async cleanup() {
538
+ async cleanup(dryRun = true) {
539
+ const { evaluateCleanup, checkForbiddenContent } = await import("./retention_policy.js");
528
540
  const files = await fs.readdir(this.stateDir);
529
541
  const taskFiles = files.filter((f) => f.startsWith("task-") && f.endsWith(".json"));
530
542
  const now = Date.now();
531
- const maxAge = MAX_TASK_AGE_DAYS * 24 * 60 * 60 * 1000;
532
- let removed = 0;
543
+ const allForbiddenHits = [];
533
544
  const allTasks = [];
534
545
  for (const f of taskFiles) {
535
546
  try {
536
547
  const filePath = path.join(this.stateDir, f);
537
548
  const content = await fs.readFile(filePath, "utf-8");
538
549
  const ctx = JSON.parse(content);
550
+ // 检查禁止内容: task_context 不得包含 raw_prompt/chain_of_thought/secret 等
551
+ const forbiddenHits = checkForbiddenContent("task_context", content);
552
+ if (forbiddenHits.length > 0) {
553
+ allForbiddenHits.push(`${ctx.task_id ?? f}: ${forbiddenHits.join(", ")}`);
554
+ }
555
+ const createdAt = ctx.created_at ? new Date(ctx.created_at).getTime() : now;
539
556
  const stat = await fs.stat(filePath);
540
- const createdAt = ctx.created_at ? new Date(ctx.created_at).getTime() : Infinity;
541
557
  const earliestTime = Math.min(createdAt, stat.mtimeMs);
542
- // 收集元数据用于后续超量淘汰
558
+ const ageDays = Math.max(0, (now - earliestTime) / (24 * 60 * 60 * 1000));
559
+ const isReferenced = !["done", "failed"].includes(ctx.status ?? "");
543
560
  if (ctx.task_id && ctx.created_at && ctx.status) {
544
- allTasks.push({ task_id: ctx.task_id, created_at: ctx.created_at, status: ctx.status });
561
+ allTasks.push({ task_id: ctx.task_id, created_at: ctx.created_at, status: ctx.status, file: filePath, age_days: ageDays });
545
562
  }
546
- if (now - earliestTime > maxAge) {
547
- await fs.unlink(filePath);
548
- removed++;
563
+ else if (ageDays > MAX_TASK_AGE_DAYS) {
564
+ // 无法解析的过期文件
565
+ allTasks.push({ task_id: f, created_at: "", status: "done", file: filePath, age_days: ageDays });
549
566
  }
550
567
  }
551
- catch (e) {
552
- console.error("[soloForge] 任务上下文: 清理任务文件失败(预期行为: 文件无法删除) —", e);
568
+ catch {
569
+ // 跳过不可读文件
553
570
  }
554
571
  }
555
- // 基于已收集的元数据进行超量淘汰,避免二次 I/O
556
- const surviving = allTasks
557
- .sort((a, b) => b.created_at.localeCompare(a.created_at));
558
- if (surviving.length > MAX_TASKS) {
559
- const toDelete = surviving.slice(MAX_TASKS).filter((t) => t.status === "done" || t.status === "failed");
560
- for (const t of toDelete) {
561
- try {
562
- await fs.unlink(this.taskFilePath(t.task_id));
563
- removed++;
564
- }
565
- catch (e) {
566
- console.debug("[soloForge]", e);
572
+ // 使用 retention policy 评估清理候选
573
+ const records = allTasks.map(t => ({ id: t.task_id, age_days: t.age_days, is_referenced: !["done", "failed"].includes(t.status) }));
574
+ const result = evaluateCleanup("task_context", records, dryRun);
575
+ let removed = 0;
576
+ if (!dryRun && result.cleanup_candidates.length > 0) {
577
+ for (const taskId of result.cleanup_candidates) {
578
+ const task = allTasks.find(t => t.task_id === taskId);
579
+ if (task) {
580
+ try {
581
+ await fs.unlink(task.file);
582
+ removed++;
583
+ }
584
+ catch {
585
+ // 文件已被删除
586
+ }
567
587
  }
568
588
  }
569
589
  }
570
- return removed;
590
+ return {
591
+ removed: dryRun ? 0 : removed,
592
+ protected: result.protected_records,
593
+ forbidden_content_hits: allForbiddenHits,
594
+ dry_run: result.dry_run,
595
+ };
571
596
  }
572
597
  /**
573
598
  * 设置任务计划结果。
@@ -627,6 +652,44 @@ export class TaskContextManager {
627
652
  await this.save(ctx);
628
653
  return ctx;
629
654
  }
655
+ /**
656
+ * 持久化 Plan Proposal Gate 评估结果。
657
+ */
658
+ async setPlanProposalGate(taskId, gate) {
659
+ const ctx = await this.load(taskId);
660
+ if (!ctx)
661
+ return null;
662
+ ctx.plan_proposal_gate = gate;
663
+ await this.save(ctx);
664
+ return ctx;
665
+ }
666
+ /**
667
+ * 持久化 Plan Proposal Evidence。
668
+ */
669
+ async setPlanProposalEvidence(taskId, evidence) {
670
+ const ctx = await this.load(taskId);
671
+ if (!ctx)
672
+ return null;
673
+ ctx.plan_proposal_evidence = evidence;
674
+ await this.save(ctx);
675
+ return ctx;
676
+ }
677
+ /**
678
+ * 在执行动作前检查 Plan Gate。
679
+ */
680
+ checkPlanGateBeforeWrite(ctx) {
681
+ const gate = ctx.plan_proposal_gate;
682
+ if (!gate) {
683
+ return { allowed: false, reason_zh: "执行前缺少 Plan Proposal Gate 评估结果" };
684
+ }
685
+ if (!gate.passed) {
686
+ return { allowed: false, reason_zh: `Plan Gate 未通过: ${gate.reason_zh}` };
687
+ }
688
+ if (gate.blocked_actions.length > 0) {
689
+ return { allowed: false, reason_zh: `以下动作被 Plan Gate 阻断: ${gate.blocked_actions.join(", ")}` };
690
+ }
691
+ return { allowed: true, reason_zh: "Plan Gate 通过" };
692
+ }
630
693
  /**
631
694
  * 设置任务产物输出。
632
695
  * @param taskId - 任务 ID
@@ -749,7 +812,7 @@ export class TaskContextManager {
749
812
  }
750
813
  catch (e) {
751
814
  // 文件不存在或解析失败 → 删除损坏的指针
752
- console.error("[soloForge] 任务上下文: 清除当前任务指针失败(预期行为: 指针文件不存在或解析错误) —", e);
815
+ debug("任务上下文", "清除当前任务指针失败(预期行为: 指针文件不存在或解析错误) —", e);
753
816
  await fs.unlink(this.pointerPath).catch(() => { });
754
817
  }
755
818
  }
@@ -781,7 +844,7 @@ export class TaskContextManager {
781
844
  * @returns 阶段指令
782
845
  */
783
846
  export function computePhaseDirective(ctx) {
784
- console.error("[soloForge] task_context: computePhaseDirective() 开始执行");
847
+ debug("task_context", "computePhaseDirective() 开始执行");
785
848
  // 审查通过 → 完成
786
849
  if (ctx.code_review && ctx.code_review.findings.length === 0) {
787
850
  return "completed";
@@ -795,6 +858,19 @@ export function computePhaseDirective(ctx) {
795
858
  if (reworkCount >= MAX_REWORK) {
796
859
  return "stop_escalate";
797
860
  }
861
+ // CEP: repair_reverify 决策点
862
+ const cepRepairResult = evaluateNoFalseCompletion({
863
+ verification_passed: false, build_passed: false,
864
+ browser_acceptance_passed: false, guard_passed: true,
865
+ evidence_sufficient: false, current_status: ctx.status,
866
+ });
867
+ recordCepIntegration("repair_reverify", {
868
+ passed: cepRepairResult.decision === "repair_reverify",
869
+ violations: cepRepairResult.decision === "blocked" ? [{
870
+ principle: "auto_repair_no_fake_completion", severity: "blocking",
871
+ reason_zh: cepRepairResult.reason_zh, evidence_refs: [], required_action: "repair_reverify",
872
+ }] : [],
873
+ });
798
874
  return "repair_reverify";
799
875
  }
800
876
  }
@@ -804,6 +880,19 @@ export function computePhaseDirective(ctx) {
804
880
  if (reworkCount >= MAX_REWORK) {
805
881
  return "stop_escalate";
806
882
  }
883
+ // CEP: repair_reverify 决策点(主链路集成失败)
884
+ const cepRepairResult2 = evaluateNoFalseCompletion({
885
+ verification_passed: false, build_passed: true,
886
+ browser_acceptance_passed: true, guard_passed: true,
887
+ evidence_sufficient: false, current_status: ctx.status,
888
+ });
889
+ recordCepIntegration("repair_reverify", {
890
+ passed: cepRepairResult2.decision === "repair_reverify",
891
+ violations: cepRepairResult2.decision === "blocked" ? [{
892
+ principle: "auto_repair_no_fake_completion", severity: "blocking",
893
+ reason_zh: cepRepairResult2.reason_zh, evidence_refs: [], required_action: "repair_reverify",
894
+ }] : [],
895
+ });
807
896
  return "repair_reverify";
808
897
  }
809
898
  // 验证失败 → 根据修复循环状态决定