soloforge 1.4.16 → 1.5.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 (721) hide show
  1. package/README.md +76 -3
  2. package/dist/adapters/claude_code/claude_md.d.ts +1 -1
  3. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  4. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  5. package/dist/adapters/claude_code/pre_prompt_contract.d.ts +4 -59
  6. package/dist/adapters/claude_code/pre_prompt_contract.d.ts.map +1 -1
  7. package/dist/adapters/claude_code/pre_prompt_contract.js +3 -111
  8. package/dist/adapters/claude_code/pre_prompt_contract.js.map +1 -1
  9. package/dist/adapters/claude_code/server.d.ts +1 -1
  10. package/dist/adapters/claude_code/server.d.ts.map +1 -1
  11. package/dist/adapters/claude_code/server.js.map +1 -1
  12. package/dist/adapters/claude_code/tools.d.ts +1 -1
  13. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  14. package/dist/adapters/claude_code/tools.js +65 -46
  15. package/dist/adapters/claude_code/tools.js.map +1 -1
  16. package/dist/adapters/codex/codex_rules.d.ts +1 -1
  17. package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
  18. package/dist/adapters/codex/codex_rules.js +1 -24
  19. package/dist/adapters/codex/codex_rules.js.map +1 -1
  20. package/dist/adapters/shared/workflow_template.d.ts +8 -12
  21. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  22. package/dist/adapters/shared/workflow_template.js +16 -78
  23. package/dist/adapters/shared/workflow_template.js.map +1 -1
  24. package/dist/adapters/trae/trae_rules.d.ts +1 -1
  25. package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
  26. package/dist/adapters/trae/trae_rules.js +1 -10
  27. package/dist/adapters/trae/trae_rules.js.map +1 -1
  28. package/dist/bin/soloforge.d.ts.map +1 -1
  29. package/dist/bin/soloforge.js +53 -100
  30. package/dist/bin/soloforge.js.map +1 -1
  31. package/dist/engine/asset_manifest.d.ts.map +1 -1
  32. package/dist/engine/asset_manifest.js +118 -120
  33. package/dist/engine/asset_manifest.js.map +1 -1
  34. package/dist/engine/audit_pool.js.map +1 -1
  35. package/dist/engine/capability_registry.js +25 -25
  36. package/dist/engine/capability_registry.js.map +1 -1
  37. package/dist/engine/capability_state_store.js.map +1 -1
  38. package/dist/engine/change_coordinator.d.ts +1 -1
  39. package/dist/engine/change_coordinator.d.ts.map +1 -1
  40. package/dist/engine/change_coordinator.js.map +1 -1
  41. package/dist/engine/classifier.d.ts +1 -1
  42. package/dist/engine/classifier.d.ts.map +1 -1
  43. package/dist/engine/classifier.js +1 -1
  44. package/dist/engine/classifier.js.map +1 -1
  45. package/dist/engine/code_reviewer.d.ts +1 -1
  46. package/dist/engine/code_reviewer.d.ts.map +1 -1
  47. package/dist/engine/code_reviewer.js +1 -1
  48. package/dist/engine/code_reviewer.js.map +1 -1
  49. package/dist/engine/confidence_scorer.d.ts +1 -1
  50. package/dist/engine/confidence_scorer.d.ts.map +1 -1
  51. package/dist/engine/config_auto_repair.js.map +1 -1
  52. package/dist/engine/config_precedence_contract.js.map +1 -1
  53. package/dist/engine/consumable_asset_registry.d.ts +1 -1
  54. package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
  55. package/dist/engine/consumable_asset_registry.js +236 -126
  56. package/dist/engine/consumable_asset_registry.js.map +1 -1
  57. package/dist/engine/consumption_trace_store.d.ts +40 -6
  58. package/dist/engine/consumption_trace_store.d.ts.map +1 -1
  59. package/dist/engine/consumption_trace_store.js +90 -47
  60. package/dist/engine/consumption_trace_store.js.map +1 -1
  61. package/dist/engine/contract_guard.d.ts +1 -1
  62. package/dist/engine/contract_guard.d.ts.map +1 -1
  63. package/dist/engine/contract_guard.js +9 -8
  64. package/dist/engine/contract_guard.js.map +1 -1
  65. package/dist/engine/contract_registry.d.ts.map +1 -1
  66. package/dist/engine/contract_registry.js +9 -11
  67. package/dist/engine/contract_registry.js.map +1 -1
  68. package/dist/engine/control_plane_contract.d.ts.map +1 -1
  69. package/dist/engine/control_plane_contract.js +7 -3
  70. package/dist/engine/control_plane_contract.js.map +1 -1
  71. package/dist/engine/convention_detector.js.map +1 -1
  72. package/dist/engine/core_engineering_principles.d.ts +1 -1
  73. package/dist/engine/core_engineering_principles.d.ts.map +1 -1
  74. package/dist/engine/core_engineering_principles.js +6 -6
  75. package/dist/engine/core_engineering_principles.js.map +1 -1
  76. package/dist/engine/core_experience_principle.d.ts +2 -2
  77. package/dist/engine/core_experience_principle.d.ts.map +1 -1
  78. package/dist/engine/core_experience_principle.js +4 -4
  79. package/dist/engine/core_experience_principle.js.map +1 -1
  80. package/dist/engine/debt_reporter.d.ts +1 -1
  81. package/dist/engine/debt_reporter.d.ts.map +1 -1
  82. package/dist/engine/debt_tracker.d.ts +1 -1
  83. package/dist/engine/debt_tracker.d.ts.map +1 -1
  84. package/dist/engine/debt_tracker.js.map +1 -1
  85. package/dist/engine/debugger.d.ts +1 -1
  86. package/dist/engine/debugger.d.ts.map +1 -1
  87. package/dist/engine/delivery.d.ts +1 -1
  88. package/dist/engine/delivery.d.ts.map +1 -1
  89. package/dist/engine/delivery.js.map +1 -1
  90. package/dist/engine/delivery_readiness.d.ts +2 -2
  91. package/dist/engine/delivery_readiness.d.ts.map +1 -1
  92. package/dist/engine/delivery_readiness.js.map +1 -1
  93. package/dist/engine/dependency_scanner.d.ts +1 -1
  94. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  95. package/dist/engine/design_lifecycle_contract.js +2 -2
  96. package/dist/engine/design_lifecycle_contract.js.map +1 -1
  97. package/dist/engine/developer_sovereignty.d.ts +1 -1
  98. package/dist/engine/developer_sovereignty.d.ts.map +1 -1
  99. package/dist/engine/developer_sovereignty.js.map +1 -1
  100. package/dist/engine/diff_ownership_store.js.map +1 -1
  101. package/dist/engine/dual_layer_mechanism_registry.d.ts +1 -1
  102. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
  103. package/dist/engine/dual_layer_mechanism_registry.js +206 -84
  104. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  105. package/dist/engine/evolution_regression_gate.d.ts +2 -2
  106. package/dist/engine/evolution_regression_gate.js +3 -3
  107. package/dist/engine/evolution_regression_gate.js.map +1 -1
  108. package/dist/engine/evolver.d.ts +1 -1
  109. package/dist/engine/evolver.d.ts.map +1 -1
  110. package/dist/engine/evolver.js +1 -1
  111. package/dist/engine/evolver.js.map +1 -1
  112. package/dist/engine/expand_pipeline.d.ts +1 -1
  113. package/dist/engine/expand_pipeline.d.ts.map +1 -1
  114. package/dist/engine/explicit_asset_registry.d.ts.map +1 -1
  115. package/dist/engine/explicit_asset_registry.js +641 -268
  116. package/dist/engine/explicit_asset_registry.js.map +1 -1
  117. package/dist/engine/exploration.d.ts +1 -1
  118. package/dist/engine/exploration.d.ts.map +1 -1
  119. package/dist/engine/extension_platform_contracts.d.ts +2 -4
  120. package/dist/engine/extension_platform_contracts.d.ts.map +1 -1
  121. package/dist/engine/extension_platform_contracts.js +2 -3
  122. package/dist/engine/extension_platform_contracts.js.map +1 -1
  123. package/dist/engine/extension_scenario_registry.d.ts.map +1 -1
  124. package/dist/engine/extension_scenario_registry.js +5 -18
  125. package/dist/engine/extension_scenario_registry.js.map +1 -1
  126. package/dist/engine/failure_classifier.d.ts +1 -1
  127. package/dist/engine/failure_classifier.d.ts.map +1 -1
  128. package/dist/engine/feasibility_checker.d.ts +1 -1
  129. package/dist/engine/feasibility_checker.d.ts.map +1 -1
  130. package/dist/engine/foundation_scenario_registry.d.ts +3 -35
  131. package/dist/engine/foundation_scenario_registry.d.ts.map +1 -1
  132. package/dist/engine/foundation_scenario_registry.js +4 -181
  133. package/dist/engine/foundation_scenario_registry.js.map +1 -1
  134. package/dist/engine/foundation_scenario_runners.js +5 -5
  135. package/dist/engine/foundation_scenario_runners.js.map +1 -1
  136. package/dist/engine/gate_checks/checkAdapterLayerConsistency.d.ts +6 -0
  137. package/dist/engine/gate_checks/checkAdapterLayerConsistency.d.ts.map +1 -0
  138. package/dist/engine/gate_checks/checkAdapterLayerConsistency.js +117 -0
  139. package/dist/engine/gate_checks/checkAdapterLayerConsistency.js.map +1 -0
  140. package/dist/engine/gate_checks/checkCodeObservability.d.ts +6 -0
  141. package/dist/engine/gate_checks/checkCodeObservability.d.ts.map +1 -0
  142. package/dist/engine/gate_checks/checkCodeObservability.js +252 -0
  143. package/dist/engine/gate_checks/checkCodeObservability.js.map +1 -0
  144. package/dist/engine/gate_checks/checkCodeStyleEnforcement.d.ts +7 -0
  145. package/dist/engine/gate_checks/checkCodeStyleEnforcement.d.ts.map +1 -0
  146. package/dist/engine/gate_checks/checkCodeStyleEnforcement.js +73 -0
  147. package/dist/engine/gate_checks/checkCodeStyleEnforcement.js.map +1 -0
  148. package/dist/engine/gate_checks/checkControlPlaneTrust.d.ts +9 -0
  149. package/dist/engine/gate_checks/checkControlPlaneTrust.d.ts.map +1 -0
  150. package/dist/engine/gate_checks/checkControlPlaneTrust.js +111 -0
  151. package/dist/engine/gate_checks/checkControlPlaneTrust.js.map +1 -0
  152. package/dist/engine/gate_checks/checkCriticalProblemConsumption.d.ts +6 -0
  153. package/dist/engine/gate_checks/checkCriticalProblemConsumption.d.ts.map +1 -0
  154. package/dist/engine/gate_checks/checkCriticalProblemConsumption.js +476 -0
  155. package/dist/engine/gate_checks/checkCriticalProblemConsumption.js.map +1 -0
  156. package/dist/engine/gate_checks/checkDependencyAudit.d.ts +6 -0
  157. package/dist/engine/gate_checks/checkDependencyAudit.d.ts.map +1 -0
  158. package/dist/engine/gate_checks/checkDependencyAudit.js +40 -0
  159. package/dist/engine/gate_checks/checkDependencyAudit.js.map +1 -0
  160. package/dist/engine/gate_checks/checkDeprecatedCode.d.ts +6 -0
  161. package/dist/engine/gate_checks/checkDeprecatedCode.d.ts.map +1 -0
  162. package/dist/engine/gate_checks/checkDeprecatedCode.js +262 -0
  163. package/dist/engine/gate_checks/checkDeprecatedCode.js.map +1 -0
  164. package/dist/engine/gate_checks/checkDiagnosticCentralization.d.ts +9 -0
  165. package/dist/engine/gate_checks/checkDiagnosticCentralization.d.ts.map +1 -0
  166. package/dist/engine/gate_checks/checkDiagnosticCentralization.js +24 -0
  167. package/dist/engine/gate_checks/checkDiagnosticCentralization.js.map +1 -0
  168. package/dist/engine/gate_checks/checkDistFreshness.d.ts +6 -0
  169. package/dist/engine/gate_checks/checkDistFreshness.d.ts.map +1 -0
  170. package/dist/engine/gate_checks/checkDistFreshness.js +57 -0
  171. package/dist/engine/gate_checks/checkDistFreshness.js.map +1 -0
  172. package/dist/engine/gate_checks/checkDualLayerSemantics.d.ts +6 -0
  173. package/dist/engine/gate_checks/checkDualLayerSemantics.d.ts.map +1 -0
  174. package/dist/engine/gate_checks/checkDualLayerSemantics.js +88 -0
  175. package/dist/engine/gate_checks/checkDualLayerSemantics.js.map +1 -0
  176. package/dist/engine/gate_checks/checkImplementationContract.d.ts +6 -0
  177. package/dist/engine/gate_checks/checkImplementationContract.d.ts.map +1 -0
  178. package/dist/engine/gate_checks/checkImplementationContract.js +90 -0
  179. package/dist/engine/gate_checks/checkImplementationContract.js.map +1 -0
  180. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.d.ts +6 -0
  181. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.d.ts.map +1 -0
  182. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.js +30 -0
  183. package/dist/engine/gate_checks/checkKnowledgeAssetSchemaP0.js.map +1 -0
  184. package/dist/engine/gate_checks/checkKnowledgeLayer.d.ts +6 -0
  185. package/dist/engine/gate_checks/checkKnowledgeLayer.d.ts.map +1 -0
  186. package/dist/engine/gate_checks/checkKnowledgeLayer.js +163 -0
  187. package/dist/engine/gate_checks/checkKnowledgeLayer.js.map +1 -0
  188. package/dist/engine/gate_checks/checkLongTermMechanization.d.ts +6 -0
  189. package/dist/engine/gate_checks/checkLongTermMechanization.d.ts.map +1 -0
  190. package/dist/engine/gate_checks/checkLongTermMechanization.js +55 -0
  191. package/dist/engine/gate_checks/checkLongTermMechanization.js.map +1 -0
  192. package/dist/engine/gate_checks/checkMainlineConsumption.d.ts +6 -0
  193. package/dist/engine/gate_checks/checkMainlineConsumption.d.ts.map +1 -0
  194. package/dist/engine/gate_checks/checkMainlineConsumption.js +312 -0
  195. package/dist/engine/gate_checks/checkMainlineConsumption.js.map +1 -0
  196. package/dist/engine/gate_checks/checkMechanismChain.d.ts +6 -0
  197. package/dist/engine/gate_checks/checkMechanismChain.d.ts.map +1 -0
  198. package/dist/engine/gate_checks/checkMechanismChain.js +196 -0
  199. package/dist/engine/gate_checks/checkMechanismChain.js.map +1 -0
  200. package/dist/engine/gate_checks/checkMechanismIdentity.d.ts +6 -0
  201. package/dist/engine/gate_checks/checkMechanismIdentity.d.ts.map +1 -0
  202. package/dist/engine/gate_checks/checkMechanismIdentity.js +125 -0
  203. package/dist/engine/gate_checks/checkMechanismIdentity.js.map +1 -0
  204. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.d.ts +6 -0
  205. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.d.ts.map +1 -0
  206. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.js +736 -0
  207. package/dist/engine/gate_checks/checkReleaseIssueDesignPath.js.map +1 -0
  208. package/dist/engine/gate_checks/checkStandardAssetCoverage.d.ts +6 -0
  209. package/dist/engine/gate_checks/checkStandardAssetCoverage.d.ts.map +1 -0
  210. package/dist/engine/gate_checks/checkStandardAssetCoverage.js +34 -0
  211. package/dist/engine/gate_checks/checkStandardAssetCoverage.js.map +1 -0
  212. package/dist/engine/gate_checks/checkStateChainHealth.d.ts +6 -0
  213. package/dist/engine/gate_checks/checkStateChainHealth.d.ts.map +1 -0
  214. package/dist/engine/gate_checks/checkStateChainHealth.js +147 -0
  215. package/dist/engine/gate_checks/checkStateChainHealth.js.map +1 -0
  216. package/dist/engine/gate_checks/checkTemplateKnowledgeHygiene.d.ts +10 -0
  217. package/dist/engine/gate_checks/checkTemplateKnowledgeHygiene.d.ts.map +1 -0
  218. package/dist/engine/gate_checks/checkTemplateKnowledgeHygiene.js +314 -0
  219. package/dist/engine/gate_checks/checkTemplateKnowledgeHygiene.js.map +1 -0
  220. package/dist/engine/gate_checks/checkTestPollution.d.ts +6 -0
  221. package/dist/engine/gate_checks/checkTestPollution.d.ts.map +1 -0
  222. package/dist/engine/gate_checks/checkTestPollution.js +67 -0
  223. package/dist/engine/gate_checks/checkTestPollution.js.map +1 -0
  224. package/dist/engine/gate_checks/checkWorkflowNavigation.d.ts +6 -0
  225. package/dist/engine/gate_checks/checkWorkflowNavigation.d.ts.map +1 -0
  226. package/dist/engine/gate_checks/checkWorkflowNavigation.js +168 -0
  227. package/dist/engine/gate_checks/checkWorkflowNavigation.js.map +1 -0
  228. package/dist/engine/gate_checks/helpers.d.ts +28 -0
  229. package/dist/engine/gate_checks/helpers.d.ts.map +1 -0
  230. package/dist/engine/gate_checks/helpers.js +91 -0
  231. package/dist/engine/gate_checks/helpers.js.map +1 -0
  232. package/dist/engine/gate_checks/types.d.ts +38 -0
  233. package/dist/engine/gate_checks/types.d.ts.map +1 -0
  234. package/dist/engine/gate_checks/types.js +5 -0
  235. package/dist/engine/gate_checks/types.js.map +1 -0
  236. package/dist/engine/governance_report.d.ts +1 -1
  237. package/dist/engine/governance_report.d.ts.map +1 -1
  238. package/dist/engine/helpers.d.ts +9 -0
  239. package/dist/engine/helpers.d.ts.map +1 -0
  240. package/dist/engine/helpers.js +13 -0
  241. package/dist/engine/helpers.js.map +1 -0
  242. package/dist/engine/hook_context_types.d.ts +66 -0
  243. package/dist/engine/hook_context_types.d.ts.map +1 -0
  244. package/dist/engine/hook_context_types.js +118 -0
  245. package/dist/engine/hook_context_types.js.map +1 -0
  246. package/dist/engine/impact_analyzer.d.ts +1 -1
  247. package/dist/engine/impact_analyzer.d.ts.map +1 -1
  248. package/dist/engine/impact_analyzer.js.map +1 -1
  249. package/dist/engine/input_material_extractor.d.ts.map +1 -1
  250. package/dist/engine/input_material_extractor.js +10 -9
  251. package/dist/engine/input_material_extractor.js.map +1 -1
  252. package/dist/engine/instruction_contract.d.ts +6 -0
  253. package/dist/engine/instruction_contract.d.ts.map +1 -1
  254. package/dist/engine/instruction_contract.js +2 -3
  255. package/dist/engine/instruction_contract.js.map +1 -1
  256. package/dist/engine/intent_expander.d.ts +10 -1
  257. package/dist/engine/intent_expander.d.ts.map +1 -1
  258. package/dist/engine/intent_expander.js +49 -9
  259. package/dist/engine/intent_expander.js.map +1 -1
  260. package/dist/engine/intent_router.d.ts +2 -0
  261. package/dist/engine/intent_router.d.ts.map +1 -1
  262. package/dist/engine/intent_router.js +1 -1
  263. package/dist/engine/intent_router.js.map +1 -1
  264. package/dist/engine/job_manager.js.map +1 -1
  265. package/dist/engine/knowledge_acceptance_registry.d.ts.map +1 -1
  266. package/dist/engine/knowledge_acceptance_registry.js +0 -10
  267. package/dist/engine/knowledge_acceptance_registry.js.map +1 -1
  268. package/dist/engine/knowledge_asset_consumer.d.ts +1 -1
  269. package/dist/engine/knowledge_asset_consumer.js +11 -11
  270. package/dist/engine/knowledge_asset_consumer.js.map +1 -1
  271. package/dist/engine/knowledge_asset_schema.d.ts +1 -1
  272. package/dist/engine/knowledge_asset_schema.js +1 -1
  273. package/dist/engine/knowledge_config_loader.d.ts.map +1 -1
  274. package/dist/engine/knowledge_config_loader.js +35 -4
  275. package/dist/engine/knowledge_config_loader.js.map +1 -1
  276. package/dist/engine/knowledge_injection_boundary.d.ts +1 -1
  277. package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -1
  278. package/dist/engine/knowledge_injection_boundary.js +10 -4
  279. package/dist/engine/knowledge_injection_boundary.js.map +1 -1
  280. package/dist/engine/knowledge_manager.d.ts +1 -1
  281. package/dist/engine/knowledge_manager.d.ts.map +1 -1
  282. package/dist/engine/knowledge_scenario_registry.d.ts.map +1 -1
  283. package/dist/engine/knowledge_scenario_registry.js +0 -8
  284. package/dist/engine/knowledge_scenario_registry.js.map +1 -1
  285. package/dist/engine/knowledge_sovereignty.js.map +1 -1
  286. package/dist/engine/knowledge_template_contracts.d.ts +0 -1
  287. package/dist/engine/knowledge_template_contracts.d.ts.map +1 -1
  288. package/dist/engine/knowledge_template_contracts.js.map +1 -1
  289. package/dist/engine/legacy_type_migration.d.ts +63 -0
  290. package/dist/engine/legacy_type_migration.d.ts.map +1 -0
  291. package/dist/engine/legacy_type_migration.js +227 -0
  292. package/dist/engine/legacy_type_migration.js.map +1 -0
  293. package/dist/engine/lifecycle_knowledge_contract.d.ts +1 -1
  294. package/dist/engine/lifecycle_knowledge_contract.d.ts.map +1 -1
  295. package/dist/engine/local_docker_acceptance.js.map +1 -1
  296. package/dist/engine/log_governance.js +1 -1
  297. package/dist/engine/log_governance.js.map +1 -1
  298. package/dist/engine/main_path_integration_contract.js.map +1 -1
  299. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  300. package/dist/engine/mechanism_contract_registry.js +79 -14
  301. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  302. package/dist/engine/mechanism_health_check.d.ts.map +1 -1
  303. package/dist/engine/mechanism_health_check.js +2 -3
  304. package/dist/engine/mechanism_health_check.js.map +1 -1
  305. package/dist/engine/migration_guard.d.ts +1 -1
  306. package/dist/engine/migration_guard.d.ts.map +1 -1
  307. package/dist/engine/mutation_audit.d.ts +1 -1
  308. package/dist/engine/mutation_audit.d.ts.map +1 -1
  309. package/dist/engine/next_action_planner.d.ts +1 -1
  310. package/dist/engine/next_action_planner.d.ts.map +1 -1
  311. package/dist/engine/next_action_planner.js +32 -36
  312. package/dist/engine/next_action_planner.js.map +1 -1
  313. package/dist/engine/observability.d.ts +1 -1
  314. package/dist/engine/observability.d.ts.map +1 -1
  315. package/dist/engine/observability.js.map +1 -1
  316. package/dist/engine/observed_consumption.d.ts.map +1 -1
  317. package/dist/engine/observed_consumption.js +5 -2
  318. package/dist/engine/observed_consumption.js.map +1 -1
  319. package/dist/engine/onboarding.d.ts +1 -1
  320. package/dist/engine/onboarding.d.ts.map +1 -1
  321. package/dist/engine/privacy_secret_contract.js +1 -1
  322. package/dist/engine/privacy_secret_contract.js.map +1 -1
  323. package/dist/engine/project_knowledge_contract.d.ts +1 -1
  324. package/dist/engine/project_knowledge_contract.d.ts.map +1 -1
  325. package/dist/engine/project_knowledge_contract.js +2 -1
  326. package/dist/engine/project_knowledge_contract.js.map +1 -1
  327. package/dist/engine/project_stage_detector.js.map +1 -1
  328. package/dist/engine/regression_matrix.js.map +1 -1
  329. package/dist/engine/release_issue_scenario_registry.d.ts +1 -3
  330. package/dist/engine/release_issue_scenario_registry.d.ts.map +1 -1
  331. package/dist/engine/release_issue_scenario_registry.js +7 -49
  332. package/dist/engine/release_issue_scenario_registry.js.map +1 -1
  333. package/dist/engine/release_readiness_gate.d.ts +25 -39
  334. package/dist/engine/release_readiness_gate.d.ts.map +1 -1
  335. package/dist/engine/release_readiness_gate.js +129 -3353
  336. package/dist/engine/release_readiness_gate.js.map +1 -1
  337. package/dist/engine/release_tool_harness.d.ts +2 -2
  338. package/dist/engine/release_tool_harness.d.ts.map +1 -1
  339. package/dist/engine/release_tool_harness.js +1 -1
  340. package/dist/engine/rollback_router.d.ts +35 -0
  341. package/dist/engine/rollback_router.d.ts.map +1 -0
  342. package/dist/engine/rollback_router.js +50 -0
  343. package/dist/engine/rollback_router.js.map +1 -0
  344. package/dist/engine/scaffolder.d.ts +1 -1
  345. package/dist/engine/scaffolder.d.ts.map +1 -1
  346. package/dist/engine/scope_controller.d.ts +1 -1
  347. package/dist/engine/scope_controller.d.ts.map +1 -1
  348. package/dist/engine/scope_controller.js +1 -1
  349. package/dist/engine/scope_controller.js.map +1 -1
  350. package/dist/engine/scope_resolver.d.ts +1 -1
  351. package/dist/engine/scope_resolver.d.ts.map +1 -1
  352. package/dist/engine/semantic_evidence.d.ts +1 -1
  353. package/dist/engine/semantic_evidence.d.ts.map +1 -1
  354. package/dist/engine/slice_executor.d.ts +79 -0
  355. package/dist/engine/slice_executor.d.ts.map +1 -0
  356. package/dist/engine/slice_executor.js +100 -0
  357. package/dist/engine/slice_executor.js.map +1 -0
  358. package/dist/engine/source_code_matcher.js +1 -1
  359. package/dist/engine/source_code_matcher.js.map +1 -1
  360. package/dist/engine/stage_gate_engine.d.ts +32 -0
  361. package/dist/engine/stage_gate_engine.d.ts.map +1 -0
  362. package/dist/engine/stage_gate_engine.js +105 -0
  363. package/dist/engine/stage_gate_engine.js.map +1 -0
  364. package/dist/engine/stale_current_task_detector.js.map +1 -1
  365. package/dist/engine/standard_asset_contract.d.ts +1 -1
  366. package/dist/engine/standard_asset_contract.d.ts.map +1 -1
  367. package/dist/engine/standard_asset_contract.js +7 -7
  368. package/dist/engine/standard_asset_contract.js.map +1 -1
  369. package/dist/engine/standard_asset_coverage.js +19 -19
  370. package/dist/engine/standard_asset_coverage.js.map +1 -1
  371. package/dist/engine/task_context.d.ts +6 -6
  372. package/dist/engine/task_context.d.ts.map +1 -1
  373. package/dist/engine/task_context.js +22 -20
  374. package/dist/engine/task_context.js.map +1 -1
  375. package/dist/engine/task_planner.d.ts +2 -2
  376. package/dist/engine/task_planner.d.ts.map +1 -1
  377. package/dist/engine/task_planner.js.map +1 -1
  378. package/dist/engine/task_stage_detector.d.ts +7 -1
  379. package/dist/engine/task_stage_detector.d.ts.map +1 -1
  380. package/dist/engine/task_stage_detector.js +82 -123
  381. package/dist/engine/task_stage_detector.js.map +1 -1
  382. package/dist/engine/team_awareness.d.ts +1 -1
  383. package/dist/engine/team_awareness.d.ts.map +1 -1
  384. package/dist/engine/team_awareness.js.map +1 -1
  385. package/dist/engine/template_asset_contract_registry.d.ts +2 -2
  386. package/dist/engine/template_asset_contract_registry.d.ts.map +1 -1
  387. package/dist/engine/template_asset_contract_registry.js +37 -10
  388. package/dist/engine/template_asset_contract_registry.js.map +1 -1
  389. package/dist/engine/template_asset_visibility.js +1 -1
  390. package/dist/engine/template_asset_visibility.js.map +1 -1
  391. package/dist/engine/template_init_sync.d.ts +29 -0
  392. package/dist/engine/template_init_sync.d.ts.map +1 -1
  393. package/dist/engine/template_init_sync.js +246 -69
  394. package/dist/engine/template_init_sync.js.map +1 -1
  395. package/dist/engine/template_manifest_io.d.ts +1 -1
  396. package/dist/engine/template_manifest_io.d.ts.map +1 -1
  397. package/dist/engine/template_manifest_io.js +13 -9
  398. package/dist/engine/template_manifest_io.js.map +1 -1
  399. package/dist/engine/template_mechanism_auditor.d.ts +1 -1
  400. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -1
  401. package/dist/engine/template_mechanism_auditor.js +10 -10
  402. package/dist/engine/template_mechanism_auditor.js.map +1 -1
  403. package/dist/engine/test_generator.d.ts +1 -1
  404. package/dist/engine/test_generator.d.ts.map +1 -1
  405. package/dist/engine/test_quality.d.ts +1 -1
  406. package/dist/engine/test_quality.d.ts.map +1 -1
  407. package/dist/engine/tool_invocation_contract_registry.js +7 -7
  408. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  409. package/dist/engine/traceability.d.ts +3 -3
  410. package/dist/engine/traceability.d.ts.map +1 -1
  411. package/dist/engine/traceability.js +1 -1
  412. package/dist/engine/traceability.js.map +1 -1
  413. package/dist/engine/user_feedback_contract.d.ts +1 -1
  414. package/dist/engine/user_feedback_contract.d.ts.map +1 -1
  415. package/dist/engine/user_feedback_contract.js +5 -5
  416. package/dist/engine/user_feedback_contract.js.map +1 -1
  417. package/dist/engine/verifier.d.ts +1 -1
  418. package/dist/engine/verifier.d.ts.map +1 -1
  419. package/dist/engine/verifier.js +1 -1
  420. package/dist/engine/verifier.js.map +1 -1
  421. package/dist/engine/workflow_contract_registry.d.ts +80 -42
  422. package/dist/engine/workflow_contract_registry.d.ts.map +1 -1
  423. package/dist/engine/workflow_contract_registry.js +341 -152
  424. package/dist/engine/workflow_contract_registry.js.map +1 -1
  425. package/dist/engine/workflow_navigation_contract.d.ts +17 -3
  426. package/dist/engine/workflow_navigation_contract.d.ts.map +1 -1
  427. package/dist/engine/workflow_navigation_contract.js +8 -16
  428. package/dist/engine/workflow_navigation_contract.js.map +1 -1
  429. package/dist/engine/workflow_rule_generator.d.ts +22 -0
  430. package/dist/engine/workflow_rule_generator.d.ts.map +1 -0
  431. package/dist/engine/workflow_rule_generator.js +83 -0
  432. package/dist/engine/workflow_rule_generator.js.map +1 -0
  433. package/dist/engine/zero_config_init.js.map +1 -1
  434. package/dist/knowledge/conflict_detector.d.ts +1 -1
  435. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  436. package/dist/knowledge/conflict_detector.js +2 -1
  437. package/dist/knowledge/conflict_detector.js.map +1 -1
  438. package/dist/knowledge/health_checker.d.ts +1 -1
  439. package/dist/knowledge/health_checker.d.ts.map +1 -1
  440. package/dist/knowledge/index_manager.d.ts +1 -1
  441. package/dist/knowledge/index_manager.d.ts.map +1 -1
  442. package/dist/knowledge/index_manager.js +7 -5
  443. package/dist/knowledge/index_manager.js.map +1 -1
  444. package/dist/knowledge/loader.d.ts +1 -1
  445. package/dist/knowledge/loader.d.ts.map +1 -1
  446. package/dist/knowledge/loader.js +7 -5
  447. package/dist/knowledge/loader.js.map +1 -1
  448. package/dist/knowledge/writer.d.ts +1 -1
  449. package/dist/knowledge/writer.d.ts.map +1 -1
  450. package/dist/types/analysis.d.ts +353 -0
  451. package/dist/types/analysis.d.ts.map +1 -0
  452. package/dist/types/analysis.js +2 -0
  453. package/dist/types/analysis.js.map +1 -0
  454. package/dist/types/base.d.ts +11 -0
  455. package/dist/types/base.d.ts.map +1 -0
  456. package/dist/{types.js → types/base.js} +1 -1
  457. package/dist/types/base.js.map +1 -0
  458. package/dist/types/config.d.ts +128 -0
  459. package/dist/types/config.d.ts.map +1 -0
  460. package/dist/types/config.js +2 -0
  461. package/dist/types/config.js.map +1 -0
  462. package/dist/types/delivery.d.ts +261 -0
  463. package/dist/types/delivery.d.ts.map +1 -0
  464. package/dist/types/delivery.js +2 -0
  465. package/dist/types/delivery.js.map +1 -0
  466. package/dist/types/dual_layer.d.ts +97 -0
  467. package/dist/types/dual_layer.d.ts.map +1 -0
  468. package/dist/types/dual_layer.js +3 -0
  469. package/dist/types/dual_layer.js.map +1 -0
  470. package/dist/types/evidence.d.ts +41 -0
  471. package/dist/types/evidence.d.ts.map +1 -0
  472. package/dist/types/evidence.js +3 -0
  473. package/dist/types/evidence.js.map +1 -0
  474. package/dist/types/execution.d.ts +31 -0
  475. package/dist/types/execution.d.ts.map +1 -0
  476. package/dist/types/execution.js +3 -0
  477. package/dist/types/execution.js.map +1 -0
  478. package/dist/types/index.d.ts +13 -0
  479. package/dist/types/index.d.ts.map +1 -0
  480. package/dist/types/index.js +13 -0
  481. package/dist/types/index.js.map +1 -0
  482. package/dist/types/knowledge.d.ts +105 -0
  483. package/dist/types/knowledge.d.ts.map +1 -0
  484. package/dist/types/knowledge.js +5 -0
  485. package/dist/types/knowledge.js.map +1 -0
  486. package/dist/types/phase.d.ts +50 -0
  487. package/dist/types/phase.d.ts.map +1 -0
  488. package/dist/types/phase.js +3 -0
  489. package/dist/types/phase.js.map +1 -0
  490. package/dist/types/pipeline.d.ts +353 -0
  491. package/dist/types/pipeline.d.ts.map +1 -0
  492. package/dist/types/pipeline.js +2 -0
  493. package/dist/types/pipeline.js.map +1 -0
  494. package/dist/types/review.d.ts +149 -0
  495. package/dist/types/review.d.ts.map +1 -0
  496. package/dist/types/review.js +2 -0
  497. package/dist/types/review.js.map +1 -0
  498. package/dist/types/task.d.ts +203 -0
  499. package/dist/types/task.d.ts.map +1 -0
  500. package/dist/types/task.js +2 -0
  501. package/dist/types/task.js.map +1 -0
  502. package/package.json +3 -6
  503. package/templates/artifacts/existing-system//344/270/200/351/224/256/345/274/200/345/205/263/351/205/215/347/275/256/346/250/241/347/211/210.json +24 -0
  504. 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 +44 -0
  505. 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 +43 -0
  506. 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 +36 -0
  507. 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 +36 -0
  508. 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 +39 -0
  509. 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 +36 -0
  510. 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 +29 -0
  511. 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 +38 -0
  512. 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 +34 -0
  513. package/templates/artifacts/shared/ADR/346/250/241/347/211/210.md +41 -0
  514. package/templates/{knowledge/acceptance_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 +25 -0
  515. 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 +33 -0
  516. package/templates/artifacts/shared//345/210/207/347/211/207/350/256/241/345/210/222/346/250/241/347/211/210.md +45 -0
  517. package/templates/{knowledge/acceptance_templates → artifacts/shared}//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +2 -0
  518. package/templates/{knowledge/acceptance_templates → artifacts/shared}//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +7 -0
  519. package/templates/gates/existing-system/gate-/347/216/260/346/234/211/347/263/273/347/273/237/345/210/206/346/236/220.yaml +13 -0
  520. package/templates/gates/existing-system/gate-/347/274/226/347/240/201/344/270/216/345/215/225/345/205/203/346/265/213/350/257/225.yaml +18 -0
  521. package/templates/gates/existing-system/gate-/350/257/225/350/277/220/350/241/214.yaml +21 -0
  522. package/templates/gates/shared/gate-/344/273/273/345/212/241/350/247/204/345/210/222.yaml +18 -0
  523. package/templates/gates/shared/gate-/347/274/226/347/240/201/344/270/216/345/215/225/345/205/203/346/265/213/350/257/225.yaml +14 -0
  524. package/templates/{knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/346/227/245/345/277/227 → 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 +42 -19
  525. package/templates/{knowledge → 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 +2 -0
  526. package/templates/{knowledge/procedures → procedures}//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +1 -1
  527. package/templates/{knowledge/procedures → procedures}//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +1 -1
  528. package/templates/{knowledge/procedures → procedures}//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +1 -1
  529. package/templates/{knowledge/procedures → procedures}//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +1 -1
  530. 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 +33 -0
  531. package/templates/rules/existing-system//350/200/246/345/220/210/346/243/200/346/265/213/350/247/204/345/210/231.md +35 -0
  532. 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 +39 -0
  533. 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 +35 -0
  534. 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 +34 -0
  535. 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 +36 -0
  536. 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 +21 -0
  537. package/templates/rules/shared//350/201/224/350/260/203/351/252/214/350/257/201/346/270/205/345/215/225.md +29 -0
  538. package/templates/rules/shared//350/246/206/347/233/226/347/216/207/346/240/207/345/207/206.md +26 -0
  539. package/dist/engine/deprecated_contract.d.ts +0 -21
  540. package/dist/engine/deprecated_contract.d.ts.map +0 -1
  541. package/dist/engine/deprecated_contract.js +0 -14
  542. package/dist/engine/deprecated_contract.js.map +0 -1
  543. package/dist/engine/historical_issue_mechanization_matrix.d.ts +0 -28
  544. package/dist/engine/historical_issue_mechanization_matrix.d.ts.map +0 -1
  545. package/dist/engine/historical_issue_mechanization_matrix.js +0 -134
  546. package/dist/engine/historical_issue_mechanization_matrix.js.map +0 -1
  547. package/dist/engine/implementation_roadmap_registry.d.ts +0 -105
  548. package/dist/engine/implementation_roadmap_registry.d.ts.map +0 -1
  549. package/dist/engine/implementation_roadmap_registry.js +0 -1340
  550. package/dist/engine/implementation_roadmap_registry.js.map +0 -1
  551. package/dist/engine/mechanism_family_registry.d.ts +0 -48
  552. package/dist/engine/mechanism_family_registry.d.ts.map +0 -1
  553. package/dist/engine/mechanism_family_registry.js +0 -197
  554. package/dist/engine/mechanism_family_registry.js.map +0 -1
  555. package/dist/engine/project_knowledge_system_regression_matrix.d.ts +0 -27
  556. package/dist/engine/project_knowledge_system_regression_matrix.d.ts.map +0 -1
  557. package/dist/engine/project_knowledge_system_regression_matrix.js +0 -295
  558. package/dist/engine/project_knowledge_system_regression_matrix.js.map +0 -1
  559. package/dist/engine/release_gate.d.ts +0 -29
  560. package/dist/engine/release_gate.d.ts.map +0 -1
  561. package/dist/engine/release_gate.js +0 -675
  562. package/dist/engine/release_gate.js.map +0 -1
  563. package/dist/types.d.ts +0 -1737
  564. package/dist/types.d.ts.map +0 -1
  565. package/dist/types.js.map +0 -1
  566. package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/350/256/276/350/256/241/346/250/241/347/211/210.md +0 -82
  567. package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/346/265/201/347/250/213.md +0 -57
  568. package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +0 -60
  569. 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 +0 -55
  570. package/templates/knowledge/procedures//351/252/214/350/257/201/350/256/241/345/210/222/346/265/201/347/250/213.md +0 -59
  571. 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 +0 -56
  572. package/templates/knowledge/rules//346/274/224/350/277/233/345/233/236/345/275/222/350/247/204/345/210/231.md +0 -51
  573. /package/templates/{knowledge/acceptance_templates → artifacts/shared}/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md" +0 -0
  574. /package/templates/{knowledge/acceptance_templates → artifacts/shared}/OOD/350/256/276/350/256/241/346/221/230/350/246/201/346/250/241/347/211/210.md" +0 -0
  575. /package/templates/{knowledge/acceptance_templates → artifacts/shared}/POC/347/273/223/350/256/272/346/250/241/347/211/210.md" +0 -0
  576. /package/templates/{knowledge/acceptance_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/346/235/277.md" +0 -0
  577. /package/templates/{knowledge/acceptance_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 -0
  578. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md" +0 -0
  579. /package/templates/{knowledge/acceptance_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 -0
  580. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md" +0 -0
  581. /package/templates/{knowledge/templates → artifacts/shared}//345/256/241/346/237/245/346/221/230/350/246/201.md" +0 -0
  582. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md" +0 -0
  583. /package/templates/{knowledge/acceptance_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 -0
  584. /package/templates/{knowledge/acceptance_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 -0
  585. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md" +0 -0
  586. /package/templates/{knowledge/acceptance_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 -0
  587. /package/templates/{knowledge/acceptance_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 -0
  588. /package/templates/{knowledge/acceptance_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 -0
  589. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md" +0 -0
  590. /package/templates/{knowledge/acceptance_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 -0
  591. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md" +0 -0
  592. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md" +0 -0
  593. /package/templates/{knowledge/acceptance_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 -0
  594. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md" +0 -0
  595. /package/templates/{knowledge/acceptance_templates → artifacts/shared}//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md" +0 -0
  596. /package/templates/{knowledge/acceptance_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 -0
  597. /package/templates/{knowledge/checklists → 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 -0
  598. /package/templates/{knowledge/checklists → checklists}//344/274/232/350/257/235/346/201/242/345/244/215.md" +0 -0
  599. /package/templates/{knowledge/checklists → checklists}//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md" +0 -0
  600. /package/templates/{knowledge/checklists → 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 -0
  601. /package/templates/{knowledge/checklists → 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 -0
  602. /package/templates/{knowledge/checklists → checklists}//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md" +0 -0
  603. /package/templates/{knowledge/checklists → checklists}//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md" +0 -0
  604. /package/templates/{knowledge/domain → domain}//345/244/232/347/247/237/346/210/267.md" +0 -0
  605. /package/templates/{knowledge/domain → domain}//345/256/241/350/256/241/346/227/245/345/277/227.md" +0 -0
  606. /package/templates/{knowledge/domain → domain}//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md" +0 -0
  607. /package/templates/{knowledge/domain → domain}//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md" +0 -0
  608. /package/templates/{knowledge/domain → domain}//346/212/245/350/241/250/347/273/237/350/256/241.md" +0 -0
  609. /package/templates/{knowledge/domain → domain}//346/224/257/344/273/230/350/247/204/345/210/231.md" +0 -0
  610. /package/templates/{knowledge/domain → domain}//346/225/260/346/215/256/346/235/203/351/231/220.md" +0 -0
  611. /package/templates/{knowledge/domain → domain}//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md" +0 -0
  612. /package/templates/{knowledge/domain → domain}//351/200/232/347/237/245/350/247/204/345/210/231.md" +0 -0
  613. /package/templates/{knowledge/patterns/core → internal/patterns}/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md" +0 -0
  614. /package/templates/{knowledge/patterns/core → internal/patterns}/Java/350/264/250/351/207/217/351/227/250/347/246/201.md" +0 -0
  615. /package/templates/{knowledge/patterns/core → internal/patterns}/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md" +0 -0
  616. /package/templates/{knowledge/patterns/core → 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 -0
  617. /package/templates/{knowledge/patterns/core → internal/patterns}//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md" +0 -0
  618. /package/templates/{knowledge/patterns/core → 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 -0
  619. /package/templates/{knowledge/patterns/core → internal/patterns}//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md" +0 -0
  620. /package/templates/{knowledge/patterns/core → internal/patterns}//345/206/262/347/252/201/351/227/250/347/246/201.md" +0 -0
  621. /package/templates/{knowledge/patterns/core → internal/patterns}//345/206/263/347/255/226/347/275/221/345/205/263.md" +0 -0
  622. /package/templates/{knowledge/patterns/core → internal/patterns}//345/217/230/345/274/202/345/256/241/350/256/241.md" +0 -0
  623. /package/templates/{knowledge/patterns/core → internal/patterns}//345/233/236/345/275/222/347/237/251/351/230/265.md" +0 -0
  624. /package/templates/{knowledge/patterns/core → internal/patterns}//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md" +0 -0
  625. /package/templates/{knowledge/patterns/core → internal/patterns}//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md" +0 -0
  626. /package/templates/{knowledge/patterns/core → internal/patterns}//345/271/266/345/217/221/351/224/201.md" +0 -0
  627. /package/templates/{knowledge/patterns/core → internal/patterns}//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md" +0 -0
  628. /package/templates/{knowledge/patterns/core → internal/patterns}//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md" +0 -0
  629. /package/templates/{knowledge/patterns/core → 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 -0
  630. /package/templates/{knowledge/patterns/core → internal/patterns}//346/265/201/345/274/217/345/277/203/350/267/263.md" +0 -0
  631. /package/templates/{knowledge/patterns/core → internal/patterns}//347/237/245/350/257/206/344/270/273/346/235/203.md" +0 -0
  632. /package/templates/{knowledge/patterns/core → internal/patterns}//350/257/255/344/271/211/350/257/201/346/215/256.md" +0 -0
  633. /package/templates/{knowledge/patterns/core → internal/patterns}//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md" +0 -0
  634. /package/templates/{knowledge/patterns/core → internal/patterns}//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md" +0 -0
  635. /package/templates/{knowledge/patterns/core → internal/patterns}//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md" +0 -0
  636. /package/templates/{knowledge → internal}/rules/OOD/344/270/216SOLID/350/256/276/350/256/241/350/247/204/345/210/231.md" +0 -0
  637. /package/templates/{knowledge → internal}/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md" +0 -0
  638. /package/templates/{knowledge → 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 -0
  639. /package/templates/{knowledge → 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 -0
  640. /package/templates/{knowledge → 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 -0
  641. /package/templates/{knowledge → internal}/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md" +0 -0
  642. /package/templates/{knowledge → 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 -0
  643. /package/templates/{knowledge → 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" +0 -0
  644. /package/templates/{knowledge → internal}/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" +0 -0
  645. /package/templates/{knowledge → internal}/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md" +0 -0
  646. /package/templates/{knowledge → internal}/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md" +0 -0
  647. /package/templates/{knowledge → 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" +0 -0
  648. /package/templates/{knowledge → 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 -0
  649. /package/templates/{knowledge → 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 -0
  650. /package/templates/{knowledge → 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 -0
  651. /package/templates/{knowledge → internal}/rules//346/227/245/345/277/227/346/262/273/347/220/206/350/247/204/345/210/231.md" +0 -0
  652. /package/templates/{knowledge → 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 -0
  653. /package/templates/{knowledge → 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 -0
  654. /package/templates/{knowledge → 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" +0 -0
  655. /package/templates/{knowledge → internal}/rules//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md" +0 -0
  656. /package/templates/{knowledge → 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 -0
  657. /package/templates/{knowledge → internal}/rules//346/250/241/346/235/277/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247/350/247/204/345/210/231.md" +0 -0
  658. /package/templates/{knowledge → 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 -0
  659. /package/templates/{knowledge → 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" +0 -0
  660. /package/templates/{knowledge → internal}/rules//347/237/245/350/257/206/346/262/273/347/220/206/350/247/204/345/210/231.md" +0 -0
  661. /package/templates/{knowledge → 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 -0
  662. /package/templates/{knowledge → 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" +0 -0
  663. /package/templates/{knowledge → 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 -0
  664. /package/templates/{knowledge → internal}/rules//347/273/206/350/212/202/347/272/252/345/276/213/350/247/204/345/210/231.md" +0 -0
  665. /package/templates/{knowledge → 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 -0
  666. /package/templates/{knowledge → 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 -0
  667. /package/templates/{knowledge → 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 -0
  668. /package/templates/{knowledge → 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 -0
  669. /package/templates/{knowledge → 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 -0
  670. /package/templates/{knowledge → 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 -0
  671. /package/templates/{knowledge → 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 -0
  672. /package/templates/{knowledge → 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 -0
  673. /package/templates/{knowledge → 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 -0
  674. /package/templates/{knowledge → 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 -0
  675. /package/templates/{knowledge → 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 -0
  676. /package/templates/{knowledge → internal}/rules//351/252/214/346/224/266/346/250/241/346/235/277/350/276/223/345/207/272/345/245/221/347/272/246/350/247/204/345/210/231.md" +0 -0
  677. /package/templates/{knowledge → internal}/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md" +0 -0
  678. /package/templates/{knowledge/procedures → procedures}/OOD/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md" +0 -0
  679. /package/templates/{knowledge/procedures → procedures}/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md" +0 -0
  680. /package/templates/{knowledge/procedures → 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 -0
  681. /package/templates/{knowledge/procedures → procedures}//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md" +0 -0
  682. /package/templates/{knowledge/procedures → procedures}//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md" +0 -0
  683. /package/templates/{knowledge/procedures → 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" +0 -0
  684. /package/templates/{knowledge/procedures → procedures}//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md" +0 -0
  685. /package/templates/{knowledge/procedures → 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 -0
  686. /package/templates/{knowledge/procedures → procedures}//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md" +0 -0
  687. /package/templates/{knowledge/procedures → procedures}//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md" +0 -0
  688. /package/templates/{knowledge/procedures → procedures}//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md" +0 -0
  689. /package/templates/{knowledge/procedures → procedures}//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md" +0 -0
  690. /package/templates/{knowledge/procedures → procedures}//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md" +0 -0
  691. /package/templates/{knowledge/procedures → procedures}//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md" +0 -0
  692. /package/templates/{knowledge/procedures → procedures}//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md" +0 -0
  693. /package/templates/{knowledge/procedures → 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 -0
  694. /package/templates/{knowledge/procedures → 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 -0
  695. /package/templates/{knowledge/procedures → procedures}//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md" +0 -0
  696. /package/templates/{knowledge/procedures → 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 -0
  697. /package/templates/{knowledge/procedures → 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" +0 -0
  698. /package/templates/{knowledge/procedures → 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 -0
  699. /package/templates/{knowledge/procedures → procedures}//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md" +0 -0
  700. /package/templates/{knowledge/procedures → procedures}//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md" +0 -0
  701. /package/templates/{knowledge/procedures → procedures}//350/207/252/344/270/273/351/200/211/345/236/213/346/265/201/347/250/213.md" +0 -0
  702. /package/templates/{knowledge/procedures → 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 -0
  703. /package/templates/{knowledge/procedures → procedures}//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md" +0 -0
  704. /package/templates/{knowledge/procedures → procedures}//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md" +0 -0
  705. /package/templates/{knowledge/procedures → procedures}//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md" +0 -0
  706. /package/templates/{knowledge/procedures → procedures}//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md" +0 -0
  707. /package/templates/{knowledge/procedures → procedures}//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md" +0 -0
  708. /package/templates/{knowledge/procedures → procedures}//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md" +0 -0
  709. /package/templates/{knowledge/product_profiles → profiles}/b2b-internal.yaml +0 -0
  710. /package/templates/{knowledge/product_profiles → profiles}/b2c.yaml +0 -0
  711. /package/templates/{knowledge/product_profiles → profiles}/saas.yaml +0 -0
  712. /package/templates/{knowledge/review_rules → rules/shared}/SOLID/344/273/243/347/240/201/345/256/241/346/237/245/350/247/204/345/210/231.md" +0 -0
  713. /package/templates/{knowledge/review_rules → 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 -0
  714. /package/templates/{knowledge/review → 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 -0
  715. /package/templates/{knowledge/review_rules → 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 -0
  716. /package/templates/{knowledge/review_rules → rules/shared}//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md" +0 -0
  717. /package/templates/{knowledge/review_rules → rules/shared}//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md" +0 -0
  718. /package/templates/{knowledge/review_rules → rules/shared}//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md" +0 -0
  719. /package/templates/{knowledge/review_rules → 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 -0
  720. /package/templates/{knowledge/review_rules → rules/shared}//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md" +0 -0
  721. /package/templates/{knowledge/review_rules → rules/shared}//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md" +0 -0
@@ -0,0 +1,314 @@
1
+ /**
2
+ * 门禁检查模块 — Phase 21: 模板卫生与用户项目知识消费验证。
3
+ *
4
+ * 检查脚手架模板是否包含未落地占位标记,
5
+ * 验证用户可见模板不泄漏内部施工语义,
6
+ * 验证项目知识可被消费、选中、冲突检测等。
7
+ */
8
+ import fs from "node:fs";
9
+ import os from "node:os";
10
+ import path from "node:path";
11
+ import { safeReadCached } from "./helpers.js";
12
+ /**
13
+ * 读取文件并按行拆分。
14
+ */
15
+ function safeReadLinesCached(filePath, cache) {
16
+ const content = safeReadCached(filePath, cache);
17
+ return content ? content.split("\n") : [];
18
+ }
19
+ export async function check(ctx, hardFail, info) {
20
+ const rootDir = ctx.rootDir;
21
+ const scaffoldDir = path.join(rootDir, "templates", "scaffolds");
22
+ const scaffoldFindings = [];
23
+ function scanScaffolds(dir) {
24
+ if (!fs.existsSync(dir))
25
+ return;
26
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
27
+ const full = path.join(dir, entry.name);
28
+ if (entry.isDirectory()) {
29
+ scanScaffolds(full);
30
+ continue;
31
+ }
32
+ if (!entry.isFile())
33
+ continue;
34
+ const rel = path.relative(rootDir, full).replace(/\\/g, "/");
35
+ const lines = safeReadLinesCached(full, ctx.readCache);
36
+ for (let i = 0; i < lines.length; i++) {
37
+ if (/\b(?:TODO|FIXME|HACK|XXX)\b/.test(lines[i])) {
38
+ scaffoldFindings.push(`${rel}:${i + 1}`);
39
+ }
40
+ }
41
+ }
42
+ }
43
+ scanScaffolds(scaffoldDir);
44
+ for (const finding of scaffoldFindings) {
45
+ hardFail("TEMPLATE_SCAFFOLD_PLACEHOLDER_LEAK", `脚手架模板仍包含未落地占位标记: ${finding}`, [finding.split(":")[0]], "template-hygiene", "历史门禁只检查模板是否注册,不检查用户生成代码是否带 TODO/FIXME", "清理脚手架占位标记并补行为测试");
46
+ }
47
+ try {
48
+ const contractMod = await import(path.join(rootDir, "dist", "engine", "template_asset_contract_registry.js"));
49
+ const contracts = contractMod.listTemplateAssetContracts?.() ?? [];
50
+ const forbidden = /\b(?:validate-batch|ReleaseFix|problem-\d+)\b/i;
51
+ for (const contract of contracts) {
52
+ if (!contract.user_visible)
53
+ continue;
54
+ if (!contract.path || !/\.(md|ya?ml|hbs|json)$/i.test(contract.path))
55
+ continue;
56
+ const abs = path.join(rootDir, contract.path);
57
+ const content = safeReadCached(abs, ctx.readCache);
58
+ if (!content || !forbidden.test(content))
59
+ continue;
60
+ hardFail("USER_VISIBLE_TEMPLATE_INTERNAL_TRACE", `用户可见模板泄漏内部施工语义: ${contract.path}`, [contract.path], "template-hygiene", "旧门禁只检查内置资产可见性,不检查用户可见模板内容是否混入内部批次/问题编号", "清理用户可见模板内部语义");
61
+ }
62
+ }
63
+ catch (e) {
64
+ hardFail("TEMPLATE_CONTRACT_AUDIT_FAILED", `无法执行用户可见模板内容审计: ${e.message}`, ["src/engine/template_asset_contract_registry.ts"], "template-hygiene", "模板内容卫生必须可运行审计", "修复模板合同注册表或编译产物");
65
+ }
66
+ try {
67
+ const obs = await import(path.join(rootDir, "dist", "engine", "code_maintainability_observability_contract.js"));
68
+ const ordinaryApiImplementationTriggers = obs.requiresCodeObservabilityContract?.("实现业务端业务办理列表接口", "code_change") === true;
69
+ if (!ordinaryApiImplementationTriggers) {
70
+ hardFail("CODE_OBSERVABILITY_BUSINESS_API_NOT_TRIGGERED", "problem-68: 普通业务接口实现未触发代码注释与日志契约,真实项目会绕过问题六十八", ["src/engine/code_maintainability_observability_contract.ts", "src/adapters/claude_code/tools.ts"], "problem-68", "旧行为只覆盖支付/安全等关键词,未覆盖普通 Controller/API/Service 编码", "扩展触发条件并在 sf_expand 聚合返回工作包");
71
+ }
72
+ }
73
+ catch (e) {
74
+ hardFail("CODE_OBSERVABILITY_TRIGGER_AUDIT_FAILED", `问题六十八触发审计执行失败: ${e.message}`, ["src/engine/code_maintainability_observability_contract.ts"], "problem-68", "触发判断必须可运行", "修复编译或导出");
75
+ }
76
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), "soloforge-project-knowledge-"));
77
+ try {
78
+ const goodDir = path.join(tmp, ".soloforge", "knowledge", "rules");
79
+ fs.mkdirSync(goodDir, { recursive: true });
80
+ fs.writeFileSync(path.join(goodDir, "API响应规则.md"), `---
81
+ id: demo-api-response-rule
82
+ asset_kind: hard_rule
83
+ routes:
84
+ - code_change
85
+ - artifact_generation
86
+ primary_triggers:
87
+ - API
88
+ - 接口
89
+ - 响应
90
+ tech_stack:
91
+ - spring
92
+ enforcement:
93
+ level: hard_rule
94
+ ---
95
+ # API 响应规则
96
+
97
+ 必须使用项目统一响应结构,错误码、字段表和 OpenAPI 保持一致。
98
+ `, "utf-8");
99
+ const projectKnowledge = await import(path.join(rootDir, "dist", "engine", "project_knowledge_contract.js"));
100
+ const lifecycleKnowledge = await import(path.join(rootDir, "dist", "engine", "lifecycle_knowledge_contract.js"));
101
+ const report = projectKnowledge.auditProjectKnowledge(tmp);
102
+ if (report.hard_fail_count !== 0 || report.injectable < 1) {
103
+ hardFail("PROJECT_KNOWLEDGE_RULE_NOT_CONSUMABLE", "用户项目 .soloforge/knowledge hard rule 未被识别为可消费规则", ["src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "旧链路只同步/索引内置模板,未证明用户项目自定义规则可被承载消费", "修复项目知识合同审计与选择逻辑");
104
+ }
105
+ const selected = projectKnowledge.selectProjectKnowledgeForTaskWithReasons(report, {
106
+ intent: "实现业务端 API 接口统一响应",
107
+ route: "code_change",
108
+ tech_stack: ["spring"],
109
+ });
110
+ if (!selected.selected.some((decision) => decision.asset.id === "demo-api-response-rule")) {
111
+ hardFail("PROJECT_KNOWLEDGE_RULE_NOT_SELECTED", "用户项目自定义 hard rule 未按意图/路由/技术栈被选中", ["src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "索引存在不等于任务会消费", "补齐 selectProjectKnowledgeForTask 行为和门禁");
112
+ }
113
+ const selection = projectKnowledge.selectProjectKnowledgeForTaskWithReasons(report, {
114
+ intent: "实现业务端 API 接口统一响应 PHASE-001 SLICE-001 DD-A001 AC-001",
115
+ route: "code_change",
116
+ tech_stack: ["spring"],
117
+ lifecycle_stage: "implementation",
118
+ changed_files: ["backend/web/src/main/java/com/example/web/tenant/TenantUserController.java"],
119
+ traceability_ids: ["PHASE-001", "SLICE-001", "DD-A001", "AC-001"],
120
+ });
121
+ const selectedDecision = selection.selected.find((decision) => decision.asset.id === "demo-api-response-rule");
122
+ if (!selectedDecision || !selectedDecision.reason_zh || !Array.isArray(selectedDecision.matched_signals)) {
123
+ hardFail("PROJECT_KNOWLEDGE_SELECTION_REASON_MISSING", "用户项目规则选择缺少 why selected / matched_signals 结构化解释", ["src/engine/project_knowledge_contract.ts", "src/engine/intent_expander.ts"], "project-knowledge-consumption", "用户不知道为什么规则被选中就无法判断必须确认和修复路径", "让项目知识选择返回 SelectionDecision 而不是裸资产");
124
+ }
125
+ const unifiedDecision = lifecycleKnowledge.evaluateLifecycleKnowledgeDecision({
126
+ projectPath: tmp,
127
+ consumer: "sf_expand",
128
+ intent: "实现业务端 API 接口统一响应 PHASE-001 SLICE-001 DD-A001 AC-001",
129
+ route: "code_change",
130
+ lifecycle_stage: "implementation",
131
+ changed_files: ["backend/web/src/main/java/com/example/web/tenant/TenantUserController.java"],
132
+ verified_files: ["backend/web/src/main/java/com/example/web/tenant/TenantUserController.java"],
133
+ traceability_ids: ["PHASE-001", "SLICE-001", "DD-A001", "AC-001"],
134
+ tech_stack: ["spring"],
135
+ generation_traces: [
136
+ { tool_name: "sf_classify", status: "passed", evidence_kind: "result" },
137
+ { tool_name: "sf_expand", status: "passed", evidence_kind: "result" },
138
+ ],
139
+ record_trace: true,
140
+ });
141
+ if (unifiedDecision.contract_id !== "lifecycle_knowledge_contract/v1" ||
142
+ !unifiedDecision.knowledge_selection.selected.some((decision) => decision.asset.id === "demo-api-response-rule") ||
143
+ !unifiedDecision.authoritative_paths.traceability_matrix ||
144
+ !Array.isArray(unifiedDecision.recovery_commands)) {
145
+ hardFail("LIFECYCLE_KNOWLEDGE_DECISION_BUNDLE_INVALID", "统一生命周期知识决策包未同时携带权威路径、SelectionDecision、恢复命令和消费 trace", ["src/engine/lifecycle_knowledge_contract.ts", "src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "next/expand/verify/deliver 如果不消费同一决策包,会再次产生局部口径", "修复 evaluateLifecycleKnowledgeDecision 返回结构和入口消费");
146
+ }
147
+ const expander = await import(path.join(rootDir, "dist", "engine", "intent_expander.js"));
148
+ const expandResult = await expander.expand({
149
+ intent: "实现业务端 API 接口统一响应",
150
+ classification: {
151
+ task_type: "feature",
152
+ risk: "low",
153
+ complexity: "low",
154
+ ambiguity: "low",
155
+ affected_repos: ["backend"],
156
+ mode: "autonomous",
157
+ strategy: "full_pipeline",
158
+ },
159
+ projectPath: tmp,
160
+ config: {
161
+ name: "release-gate-project-knowledge",
162
+ tech_stack: {
163
+ backend: { lang: "java", framework: "spring-boot", version: "3" },
164
+ frontend: { lang: "typescript", framework: "react", version: "18" },
165
+ },
166
+ product_profile: "saas",
167
+ repos: [{ name: "backend", path: "backend", lang: "java", framework: "spring-boot", scope: ["backend/src/"] }],
168
+ build_commands: {
169
+ backend: { build: "mvn compile", test: "mvn test", full: "mvn verify" },
170
+ frontend: { build: "npm run build", test: "npm test", full: "npm test" },
171
+ },
172
+ scope: { backend: ["backend/src/"], frontend: ["src/"] },
173
+ _projectPath: tmp,
174
+ },
175
+ knowledgeIndex: { query: () => [], markUsed: () => { } },
176
+ route_decision: {
177
+ route: "code_change",
178
+ execution_shape: "code_execution",
179
+ mutation_allowed: true,
180
+ input_materials: [],
181
+ missing_required_inputs: [],
182
+ scope: { read_only: false },
183
+ constraints: [],
184
+ language_policy: { primary: "zh" },
185
+ confidence: 0.9,
186
+ evidence: [],
187
+ rejected_routes: [],
188
+ conflicts: [],
189
+ decision_version: 1,
190
+ },
191
+ });
192
+ if (!expandResult.project_knowledge?.selected?.some((asset) => asset.id === "demo-api-response-rule")
193
+ || !String(expandResult.prompt).includes("## 用户项目规则")
194
+ || !String(expandResult.prompt).includes("选中原因")
195
+ || !expandResult.project_knowledge?.selection_decisions?.some((decision) => decision.id === "demo-api-response-rule" && decision.reason_zh)) {
196
+ hardFail("PROJECT_KNOWLEDGE_NOT_IN_EXPAND_MAINPATH", "用户项目规则未进入 sf_expand 真实 prompt 和结构化结果", ["src/engine/intent_expander.ts", "src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "审计/选择通过不等于 MCP 主链路会消费", "将项目规则接入 sf_expand 并补主链路测试");
197
+ }
198
+ const nextPlanner = await import(path.join(rootDir, "dist", "engine", "next_action_planner.js"));
199
+ const nextPlan = await nextPlanner.planNextAction(tmp);
200
+ if (!nextPlan.project_knowledge_context || nextPlan.project_knowledge_context.total < 1) {
201
+ hardFail("PROJECT_KNOWLEDGE_NOT_IN_NEXT", "soloforge next 未携带项目知识上下文,用户无法知道下一步会应用哪些项目规则", ["src/engine/next_action_planner.ts", "src/bin/soloforge.ts"], "project-knowledge-consumption", "旧导航只看阶段,不看项目规则", "将项目知识上下文接入 next JSON 和人类输出");
202
+ }
203
+ if (nextPlan.project_knowledge_context?.selected?.length
204
+ && !nextPlan.project_knowledge_context.selected.some((item) => item.reason_zh && item.enforcement)) {
205
+ hardFail("PROJECT_KNOWLEDGE_NEXT_REASON_MISSING", "soloforge next 项目规则上下文缺少选中原因或强制级别", ["src/engine/next_action_planner.ts", "src/bin/soloforge.ts"], "project-knowledge-consumption", "next 只列规则名不能支撑用户确认哪些必须满足", "在 next 中展示 SelectionDecision 的 reason/enforcement/verification");
206
+ }
207
+ const badTmp = fs.mkdtempSync(path.join(os.tmpdir(), "soloforge-project-knowledge-bad-"));
208
+ try {
209
+ const badDir = path.join(badTmp, ".soloforge", "knowledge", "rules");
210
+ fs.mkdirSync(badDir, { recursive: true });
211
+ fs.writeFileSync(path.join(badDir, "未路由强规则.md"), `---
212
+ id: unrouted-hard-rule
213
+ asset_kind: hard_rule
214
+ enforcement:
215
+ level: hard_rule
216
+ ---
217
+ # 未路由强规则
218
+
219
+ 必须使用统一响应。
220
+ `, "utf-8");
221
+ const badReport = projectKnowledge.auditProjectKnowledge(badTmp);
222
+ if (badReport.hard_fail_count === 0) {
223
+ hardFail("PROJECT_KNOWLEDGE_UNROUTED_RULE_FALSE_PASS", "用户项目 hard rule 缺少 routes/primary_triggers 时错误放行", ["src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "规则文件存在不等于可稳定消费", "对未路由 hard rule fail-closed");
224
+ }
225
+ }
226
+ finally {
227
+ fs.rmSync(badTmp, { recursive: true, force: true });
228
+ }
229
+ const conflictTmp = fs.mkdtempSync(path.join(os.tmpdir(), "soloforge-project-knowledge-conflict-"));
230
+ try {
231
+ const conflictDir = path.join(conflictTmp, ".soloforge", "knowledge", "rules");
232
+ fs.mkdirSync(conflictDir, { recursive: true });
233
+ fs.writeFileSync(path.join(conflictDir, "响应A.md"), `---
234
+ id: response-a
235
+ asset_kind: hard_rule
236
+ routes: [code_change]
237
+ primary_triggers: [API]
238
+ conflict_group: api_response_format
239
+ rule_value: ApiResponse
240
+ enforcement:
241
+ level: hard_rule
242
+ ---
243
+ # 响应 A
244
+
245
+ 必须使用 ApiResponse。
246
+ `, "utf-8");
247
+ fs.writeFileSync(path.join(conflictDir, "响应B.md"), `---
248
+ id: response-b
249
+ asset_kind: hard_rule
250
+ routes: [code_change]
251
+ primary_triggers: [API]
252
+ conflict_group: api_response_format
253
+ rule_value: Result
254
+ enforcement:
255
+ level: hard_rule
256
+ ---
257
+ # 响应 B
258
+
259
+ 必须使用 Result。
260
+ `, "utf-8");
261
+ const conflictReport = projectKnowledge.auditProjectKnowledge(conflictTmp);
262
+ if (!conflictReport.assets.some((asset) => asset.findings.some((finding) => finding.code === "PROJECT_KNOWLEDGE_RULE_CONFLICT"))) {
263
+ hardFail("PROJECT_KNOWLEDGE_CONFLICT_FALSE_PASS", "项目 API 响应等规则冲突未进入用户确认", ["src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "旧项目知识审计只看是否可选中,不看项目规则之间互斥", "补冲突组/显式 conflicts_with 检测");
264
+ }
265
+ }
266
+ finally {
267
+ fs.rmSync(conflictTmp, { recursive: true, force: true });
268
+ }
269
+ const semanticConflictTmp = fs.mkdtempSync(path.join(os.tmpdir(), "soloforge-project-knowledge-semantic-conflict-"));
270
+ try {
271
+ const semanticDir = path.join(semanticConflictTmp, ".soloforge", "knowledge", "rules");
272
+ fs.mkdirSync(semanticDir, { recursive: true });
273
+ fs.writeFileSync(path.join(semanticDir, "响应ApiResponse.md"), `---
274
+ id: response-api-response
275
+ asset_kind: hard_rule
276
+ routes: [code_change]
277
+ primary_triggers: [API响应]
278
+ enforcement:
279
+ level: hard_rule
280
+ ---
281
+ # API 响应
282
+
283
+ 必须使用 ApiResponse。
284
+ `, "utf-8");
285
+ fs.writeFileSync(path.join(semanticDir, "响应Result.md"), `---
286
+ id: response-result
287
+ asset_kind: hard_rule
288
+ routes: [code_change]
289
+ primary_triggers: [接口响应]
290
+ enforcement:
291
+ level: hard_rule
292
+ ---
293
+ # 接口响应
294
+
295
+ 必须使用 Result。
296
+ `, "utf-8");
297
+ const semanticConflictReport = projectKnowledge.auditProjectKnowledge(semanticConflictTmp);
298
+ if (!semanticConflictReport.assets.some((asset) => asset.findings.some((finding) => finding.code === "PROJECT_KNOWLEDGE_RULE_CONFLICT"))) {
299
+ hardFail("PROJECT_KNOWLEDGE_SEMANTIC_CONFLICT_FALSE_PASS", "API 响应格式语义冲突依赖手写 conflict_group,未自动进入用户确认", ["src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "项目规则冲突不能要求用户预先正确标注才能发现", "补 API 响应/分页/日志/DB/权限语义冲突检测");
300
+ }
301
+ }
302
+ finally {
303
+ fs.rmSync(semanticConflictTmp, { recursive: true, force: true });
304
+ }
305
+ }
306
+ catch (e) {
307
+ hardFail("PROJECT_KNOWLEDGE_AUDIT_FAILED", `用户项目知识消费行为审计执行失败: ${e.message}`, ["src/engine/project_knowledge_contract.ts"], "project-knowledge-consumption", "项目知识消费必须有可执行行为门禁", "修复项目知识合同模块和编译产物");
308
+ }
309
+ finally {
310
+ fs.rmSync(tmp, { recursive: true, force: true });
311
+ }
312
+ info?.(" 模板卫生与项目知识消费验证完成");
313
+ }
314
+ //# sourceMappingURL=checkTemplateKnowledgeHygiene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkTemplateKnowledgeHygiene.js","sourceRoot":"","sources":["../../../src/engine/gate_checks/checkTemplateKnowledgeHygiene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Phase 6: 测试污染初筛
3
+ */
4
+ import type { GateContext, HardFailCallback, InfoCallback } from "./types.js";
5
+ export declare function check(ctx: GateContext, hardFail: HardFailCallback, info?: InfoCallback): Promise<void>;
6
+ //# sourceMappingURL=checkTestPollution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkTestPollution.d.ts","sourceRoot":"","sources":["../../../src/engine/gate_checks/checkTestPollution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG9E,wBAAsB,KAAK,CACzB,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAwCf"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Phase 6: 测试污染初筛
3
+ */
4
+ import fs from "node:fs";
5
+ import path from "node:path";
6
+ import { safeRead } from "./helpers.js";
7
+ export async function check(ctx, hardFail, info) {
8
+ const rootDir = ctx.rootDir;
9
+ const categories = { product_test: [], useful_contract_test: [], batch_construction_test: [], suspicious_test_pollution: [] };
10
+ const usefulContractExemptions = new Set([]);
11
+ const testDir = path.join(rootDir, "tests");
12
+ function scanTestDir(dir) {
13
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
14
+ for (const entry of entries) {
15
+ const full = path.join(dir, entry.name);
16
+ if (entry.isDirectory()) {
17
+ scanTestDir(full);
18
+ }
19
+ else if (entry.isFile() && (entry.name.endsWith(".test.ts") || entry.name.endsWith(".test.js"))) {
20
+ const content = safeRead(full);
21
+ if (!content)
22
+ continue;
23
+ const rel = path.relative(rootDir, full);
24
+ const isScenarioMatrix = rel.includes("scenario_matrix");
25
+ const isBatchGateRelated = /batch\d/.test(content) && !rel.includes("scripts/");
26
+ const checksImplementedVerified = content.includes("implemented_verified");
27
+ const checksFileExists = /existsSync/.test(content) && /required.*file/i.test(content);
28
+ const checksScenarioSelfAttest = /fixture_status.*ready|scenario.*status.*PASS/.test(content);
29
+ const hasPlaceholderTest = /场景注册占位/.test(content) || /expect\s*\(\s*true\s*\)\s*\.\s*toBe\s*\(\s*true\s*\)/.test(content) || /registered\s+only/.test(content);
30
+ const hasTodoPlaceholder = /\bit\s*\.\s*todo\s*\(/.test(content) || /\bdescribe\s*\.\s*todo\s*\(/.test(content);
31
+ if (hasPlaceholderTest || hasTodoPlaceholder) {
32
+ categories.suspicious_test_pollution.push(rel);
33
+ }
34
+ else if (isScenarioMatrix) {
35
+ categories.batch_construction_test.push(rel);
36
+ }
37
+ else if (usefulContractExemptions.has(rel)) {
38
+ categories.useful_contract_test.push(rel);
39
+ }
40
+ else if (isBatchGateRelated && (checksImplementedVerified || checksFileExists)) {
41
+ categories.suspicious_test_pollution.push(rel);
42
+ }
43
+ else if (checksScenarioSelfAttest && !content.includes("真实") && !content.includes("real")) {
44
+ categories.suspicious_test_pollution.push(rel);
45
+ }
46
+ else if (checksFileExists && !isBatchGateRelated) {
47
+ categories.useful_contract_test.push(rel);
48
+ }
49
+ else {
50
+ categories.product_test.push(rel);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ scanTestDir(testDir);
56
+ info?.(` product_test: ${categories.product_test.length} 个`);
57
+ info?.(` useful_contract_test: ${categories.useful_contract_test.length} 个`);
58
+ info?.(` batch_construction_test: ${categories.batch_construction_test.length} 个`);
59
+ info?.(` suspicious_test_pollution: ${categories.suspicious_test_pollution.length} 个`);
60
+ for (const t of categories.suspicious_test_pollution) {
61
+ info?.(` [可疑] ${t}`);
62
+ }
63
+ if (categories.suspicious_test_pollution.length > 0) {
64
+ hardFail("SUSPICIOUS_TEST_POLLUTION", `发现 ${categories.suspicious_test_pollution.length} 个可疑测试文件: 可能只为 Batch 状态、implemented_verified、文件存在、scenario 自证而存在`, categories.suspicious_test_pollution, "测试体系", "旧 gate 把这些测试作为通过证据,但它们可能是循环自证", "删除测试污染");
65
+ }
66
+ }
67
+ //# sourceMappingURL=checkTestPollution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkTestPollution.js","sourceRoot":"","sources":["../../../src/engine/gate_checks/checkTestPollution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 门禁检查模块 — Phase 16: 工作流导航契约行为验证(问题六十五)。
3
+ */
4
+ import type { GateContext, HardFailCallback, InfoCallback } from "./types.js";
5
+ export declare function check(ctx: GateContext, hardFail: HardFailCallback, info?: InfoCallback): Promise<void>;
6
+ //# sourceMappingURL=checkWorkflowNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkWorkflowNavigation.d.ts","sourceRoot":"","sources":["../../../src/engine/gate_checks/checkWorkflowNavigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9E,wBAAsB,KAAK,CACzB,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAsOf"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * 门禁检查模块 — Phase 16: 工作流导航契约行为验证(问题六十五)。
3
+ */
4
+ import path from "node:path";
5
+ import fs from "node:fs";
6
+ export async function check(ctx, hardFail, info) {
7
+ const rootDir = ctx.rootDir;
8
+ const _info = info ?? (() => { });
9
+ // 1. 编译产物存在性
10
+ const navPath = path.join(rootDir, "dist", "engine", "next_action_planner.js");
11
+ if (!fs.existsSync(navPath)) {
12
+ hardFail("NAVIGATION_MODULE_MISSING", "problem-65: next_action_planner.js 未编译到 dist/", ["src/engine/next_action_planner.ts"], "problem-65", "发布门禁不检查问题-65 导航机制是否存在", "实现 next_action_planner 并编译");
13
+ return;
14
+ }
15
+ // 2. 核心导出存在性
16
+ let nav;
17
+ try {
18
+ nav = await import(navPath);
19
+ }
20
+ catch (e) {
21
+ hardFail("NAVIGATION_IMPORT_ERROR", `problem-65: next_action_planner 导入失败: ${e.message}`, ["src/engine/next_action_planner.ts"], "problem-65", "导航模块存在但不可导入", "修复导入错误");
22
+ return;
23
+ }
24
+ if (typeof nav.planNextAction !== "function") {
25
+ hardFail("NAVIGATION_EXPORT_MISSING", "problem-65: next_action_planner 未导出 planNextAction 函数", ["src/engine/next_action_planner.ts"], "problem-65", "导航模块缺少核心导出", "添加 planNextAction 导出");
26
+ }
27
+ if (typeof nav.computeDisallowedActions !== "function") {
28
+ hardFail("NAVIGATION_DISALLOWED_MISSING", "problem-65: next_action_planner 未导出 computeDisallowedActions 函数", ["src/engine/next_action_planner.ts"], "problem-65", "禁止动作规则计算函数缺失", "添加 computeDisallowedActions 导出");
29
+ }
30
+ const repairPath = path.join(rootDir, "dist", "engine", "config_auto_repair.js");
31
+ if (!fs.existsSync(repairPath)) {
32
+ hardFail("NAVIGATION_CONFIG_REPAIR_MODULE_MISSING", "problem-65: config_auto_repair.js 未编译到 dist/,机械配置问题无法自动修复", ["src/engine/config_auto_repair.ts"], "problem-65", "导航只提示配置待确认,不检查自动修复能力是否存在", "实现 config_auto_repair 并接入导航");
33
+ }
34
+ else {
35
+ try {
36
+ const repairMod = await import(repairPath);
37
+ if (typeof repairMod.analyzeConfigRepair !== "function" || typeof repairMod.repairProjectConfig !== "function") {
38
+ hardFail("NAVIGATION_CONFIG_REPAIR_EXPORT_MISSING", "problem-65: config_auto_repair 必须导出 analyzeConfigRepair 和 repairProjectConfig", ["src/engine/config_auto_repair.ts"], "problem-65", "自动修复模块存在但主链路不可消费", "补齐自动修复导出函数");
39
+ }
40
+ }
41
+ catch (e) {
42
+ hardFail("NAVIGATION_CONFIG_REPAIR_IMPORT_ERROR", `problem-65: config_auto_repair 导入失败: ${e.message}`, ["src/engine/config_auto_repair.ts"], "problem-65", "自动修复模块存在但不可导入", "修复 config_auto_repair 导入错误");
43
+ }
44
+ }
45
+ // 3. 行为验证: 未初始化项目应返回 uninitialized
46
+ const tmpDir = path.join(rootDir, ".soloforge-gate-nav-test-" + Date.now());
47
+ try {
48
+ fs.mkdirSync(tmpDir, { recursive: true });
49
+ const plan = await nav.planNextAction(tmpDir);
50
+ if (plan.project_stage !== "uninitialized") {
51
+ hardFail("NAVIGATION_BEHAVIOR_UNINIT", `problem-65: 未初始化项目的阶段应为 uninitialized,实际为 ${plan.project_stage}`, ["src/engine/project_stage_detector.ts"], "problem-65", "导航未正确检测未初始化项目", "修复 detectProjectStage 逻辑");
52
+ }
53
+ if (!plan.work_package || plan.work_package.action !== "初始化") {
54
+ hardFail("NAVIGATION_BEHAVIOR_INIT_WP", `problem-65: 未初始化项目的工作包应为 sf_init,实际为 ${plan.work_package?.action ?? "null"}`, ["src/engine/next_action_planner.ts"], "problem-65", "导航工作包未正确推荐初始化", "修复 computeWorkPackage 逻辑");
55
+ }
56
+ if (!plan.confirmation_decisions) {
57
+ hardFail("NAVIGATION_CONFIRMATION_TIER_MISSING", "problem-65: 导航计划缺少 confirmation_decisions 分级结构", ["src/engine/next_action_planner.ts", "src/engine/workflow_navigation_contract.ts"], "problem-65", "旧导航只输出笼统确认提示,用户不知道哪些必须确认", "补充 must_confirm/should_confirm/auto_resolvable 分级");
58
+ }
59
+ else {
60
+ const decisions = plan.confirmation_decisions;
61
+ if (!Array.isArray(decisions.must_confirm) || !Array.isArray(decisions.should_confirm) || !Array.isArray(decisions.auto_resolvable)) {
62
+ hardFail("NAVIGATION_CONFIRMATION_TIER_INVALID", "problem-65: confirmation_decisions 必须同时包含 must_confirm / should_confirm / auto_resolvable 数组", ["src/engine/workflow_navigation_contract.ts"], "problem-65", "确认项没有结构化分级", "修复 ConfirmationDecisionSummary 类型和 planNextAction 输出");
63
+ }
64
+ if ((decisions.must_confirm?.length ?? 0) !== 0) {
65
+ hardFail("NAVIGATION_GREENFIELD_FALSE_MUST_CONFIRM", "problem-65: 从 0 开发的未初始化项目不得要求确认既有项目事实", ["src/engine/next_action_planner.ts"], "problem-65", "空项目确认口径错误,把基线确认当成既有事实确认", "将新项目基线归类为 should_confirm,不阻塞初始化和只读规划");
66
+ }
67
+ const greenfieldHint = JSON.stringify(decisions.should_confirm ?? []);
68
+ if (!greenfieldHint.includes("从 0 开发时没有既有项目事实可确认")) {
69
+ hardFail("NAVIGATION_GREENFIELD_CONFIRMATION_EXPLANATION_MISSING", "problem-65: 新项目确认提示必须说明没有既有项目事实,只确认目标、边界、技术选择和默认口径", ["src/engine/next_action_planner.ts"], "problem-65", "用户不知道空项目如何确认", "补充新项目基线确认说明");
70
+ }
71
+ }
72
+ }
73
+ catch (e) {
74
+ hardFail("NAVIGATION_BEHAVIOR_ERROR", `problem-65: 行为级检查执行失败: ${e.message}`, ["src/engine/next_action_planner.ts"], "problem-65", "导航机制行为检查不可执行", "修复导航机制代码");
75
+ }
76
+ finally {
77
+ try {
78
+ fs.rmSync(tmpDir, { recursive: true });
79
+ }
80
+ catch { }
81
+ }
82
+ // 3.1 行为验证: 机械配置问题必须归类为 auto_resolvable,不得要求用户确认业务口径
83
+ const repairTmpDir = path.join(rootDir, ".soloforge-gate-config-repair-" + Date.now());
84
+ try {
85
+ const sfDir = path.join(repairTmpDir, ".soloforge");
86
+ fs.mkdirSync(sfDir, { recursive: true });
87
+ fs.writeFileSync(path.join(sfDir, "config.yaml"), [
88
+ "schema_version: 1",
89
+ "name: demo-saas",
90
+ "tech_stack:",
91
+ " backend:",
92
+ " lang: java",
93
+ " framework: spring-boot",
94
+ " version: 3",
95
+ " frontend:",
96
+ " lang: typescript",
97
+ " framework: react",
98
+ " version: 18",
99
+ "product_profile: saas",
100
+ "repos: []",
101
+ "build_commands:",
102
+ " backend:",
103
+ " build: mvn -q -DskipTests package",
104
+ " test: mvn test",
105
+ " full: mvn verify",
106
+ " frontend:",
107
+ " build: npm run build",
108
+ " test: npm test",
109
+ " full: npm run build && npm test",
110
+ "scope:",
111
+ " backend: demo-saas-backend",
112
+ " frontend: demo-saas-frontend",
113
+ ].join("\n"), "utf-8");
114
+ fs.writeFileSync(path.join(sfDir, "config.evidence.json"), JSON.stringify({
115
+ schema_version: 2,
116
+ generated_at: "2026-01-01T00:00:00.000Z",
117
+ fields: {
118
+ name: { value: "old-name", confidence: "high", confidence_source: "confirmed", evidence: ["old"] },
119
+ },
120
+ entries: [],
121
+ }, null, 2), "utf-8");
122
+ const repairPlan = await nav.planNextAction(repairTmpDir);
123
+ const decisions = repairPlan.confirmation_decisions;
124
+ const autoItems = decisions?.auto_resolvable ?? [];
125
+ const hasConfigRepair = autoItems.some((item) => item.id === "config-auto-repair" && item.command_hint === "soloforge config repair");
126
+ if (!hasConfigRepair) {
127
+ hardFail("NAVIGATION_CONFIG_REPAIR_NOT_RECOMMENDED", "problem-65: version/scope/evidence 这类机械配置问题必须推荐 soloforge config repair", ["src/engine/next_action_planner.ts", "src/engine/config_auto_repair.ts"], "problem-65", "旧导航把机械配置问题误当成业务确认", "将机械配置问题归入 auto_resolvable");
128
+ }
129
+ if ((decisions?.must_confirm?.length ?? 0) > 0) {
130
+ hardFail("NAVIGATION_CONFIG_REPAIR_FALSE_MUST_CONFIRM", "problem-65: 机械配置问题不得进入 must_confirm,不得要求用户逐字段确认", ["src/engine/next_action_planner.ts"], "problem-65", "旧导航把可自动修复项伪装成用户确认项", "保持 config repair 为 auto_resolvable");
131
+ }
132
+ const actionText = decisions?.recommended_action ?? "";
133
+ if (!actionText.includes("soloforge config repair")) {
134
+ hardFail("NAVIGATION_CONFIG_REPAIR_ACTION_MISSING", "problem-65: recommended_action 必须明确给出 soloforge config repair", ["src/engine/next_action_planner.ts"], "problem-65", "用户不知道下一步该运行哪个命令", "在 recommended_action 中输出自动修复命令");
135
+ }
136
+ }
137
+ catch (e) {
138
+ hardFail("NAVIGATION_CONFIG_REPAIR_BEHAVIOR_ERROR", `problem-65: 配置自动修复导航行为检查失败: ${e.message}`, ["src/engine/next_action_planner.ts", "src/engine/config_auto_repair.ts"], "problem-65", "配置自动修复行为未纳入发布门禁", "修复配置自动修复导航行为");
139
+ }
140
+ finally {
141
+ try {
142
+ fs.rmSync(repairTmpDir, { recursive: true });
143
+ }
144
+ catch { }
145
+ }
146
+ // 4. 知识文件存在性
147
+ const rulePath = path.join(rootDir, "templates", "internal", "rules", "工作流导航契约规则.md");
148
+ if (!fs.existsSync(rulePath)) {
149
+ hardFail("NAVIGATION_RULE_MISSING", "problem-65: 缺少知识规则文件 工作流导航契约规则.md", ["templates/internal/rules/工作流导航契约规则.md"], "problem-65", "导航知识规则缺失", "创建知识规则文件");
150
+ }
151
+ const procedurePath = path.join(rootDir, "templates", "procedures", "全生命周期工作流导航.md");
152
+ if (!fs.existsSync(procedurePath)) {
153
+ hardFail("NAVIGATION_PROCEDURE_MISSING", "problem-65: 缺少知识流程文件 全生命周期工作流导航.md", ["templates/procedures/全生命周期工作流导航.md"], "problem-65", "导航知识流程缺失", "创建知识流程文件");
154
+ }
155
+ // 5. CLI 命令存在性
156
+ const cliDist = fs.readFileSync(path.join(rootDir, "dist", "bin", "soloforge.js"), "utf-8");
157
+ if (!cliDist.includes('case "next"') && !cliDist.includes("cmdNext")) {
158
+ hardFail("NAVIGATION_CLI_MISSING", "problem-65: CLI 缺少 next 命令入口", ["src/bin/soloforge.ts"], "problem-65", "CLI 无 next 命令", "添加 case 'next' dispatch");
159
+ }
160
+ if (!cliDist.includes('case "stage"') && !cliDist.includes("cmdStage")) {
161
+ hardFail("NAVIGATION_CLI_STAGE_MISSING", "problem-65: CLI 缺少 stage 命令入口", ["src/bin/soloforge.ts"], "problem-65", "CLI 无 stage 命令", "添加 case 'stage' dispatch");
162
+ }
163
+ if (!cliDist.includes('case "repair"') || !cliDist.includes("cmdConfigRepair")) {
164
+ hardFail("NAVIGATION_CONFIG_REPAIR_CLI_MISSING", "problem-65: CLI 缺少 config repair 命令入口", ["src/bin/soloforge.ts", "src/bin/config_commands.ts"], "problem-65", "自动修复能力存在但用户无法通过 CLI 调用", "添加 soloforge config repair");
165
+ }
166
+ _info(" problem-65 工作流导航行为验证完成");
167
+ }
168
+ //# sourceMappingURL=checkWorkflowNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkWorkflowNavigation.js","sourceRoot":"","sources":["../../../src/engine/gate_checks/checkWorkflowNavigation.ts"],"names":[],"mappings":"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"}