soloforge 1.1.46 → 1.1.48

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 (451) hide show
  1. package/README.md +23 -7
  2. package/dist/cli/adapter_writers.d.ts +5 -0
  3. package/dist/cli/adapter_writers.d.ts.map +1 -1
  4. package/dist/cli/adapter_writers.js +25 -0
  5. package/dist/cli/adapter_writers.js.map +1 -1
  6. package/dist/cli/init.d.ts.map +1 -1
  7. package/dist/cli/init.js +3 -1
  8. package/dist/cli/init.js.map +1 -1
  9. package/dist/cli/scope_check.d.ts +4 -0
  10. package/dist/cli/scope_check.d.ts.map +1 -0
  11. package/dist/cli/scope_check.js +41 -0
  12. package/dist/cli/scope_check.js.map +1 -0
  13. package/dist/context/adapters/claude_code/hooks.d.ts +5 -7
  14. package/dist/context/adapters/claude_code/hooks.d.ts.map +1 -1
  15. package/dist/context/adapters/claude_code/hooks.js +11 -9
  16. package/dist/context/adapters/claude_code/hooks.js.map +1 -1
  17. package/dist/context/adapters/shared/integration_guide.js +18 -6
  18. package/dist/context/adapters/shared/integration_guide.js.map +1 -1
  19. package/dist/context/adapters/shared/workflow_template.js +1 -1
  20. package/dist/context/config/intent_schema.d.ts +793 -6
  21. package/dist/context/config/intent_schema.d.ts.map +1 -1
  22. package/dist/context/config/intent_schema.js +9 -0
  23. package/dist/context/config/intent_schema.js.map +1 -1
  24. package/dist/context/config/resolver.d.ts +9 -0
  25. package/dist/context/config/resolver.d.ts.map +1 -1
  26. package/dist/context/config/resolver.js +5 -0
  27. package/dist/context/config/resolver.js.map +1 -1
  28. package/dist/core/adversarial_review_store.d.ts +133 -0
  29. package/dist/core/adversarial_review_store.d.ts.map +1 -0
  30. package/dist/core/adversarial_review_store.js +161 -0
  31. package/dist/core/adversarial_review_store.js.map +1 -0
  32. package/dist/core/domain_transition.d.ts.map +1 -1
  33. package/dist/core/domain_transition.js +3 -0
  34. package/dist/core/domain_transition.js.map +1 -1
  35. package/dist/core/gate_record_store.d.ts +13 -7
  36. package/dist/core/gate_record_store.d.ts.map +1 -1
  37. package/dist/core/gate_record_store.js +39 -17
  38. package/dist/core/gate_record_store.js.map +1 -1
  39. package/dist/core/git_utils.d.ts +1 -1
  40. package/dist/core/git_utils.js +1 -1
  41. package/dist/core/observer.d.ts.map +1 -1
  42. package/dist/core/observer.js +33 -6
  43. package/dist/core/observer.js.map +1 -1
  44. package/dist/core/task_context/constants.js +1 -1
  45. package/dist/core/task_context/constants.js.map +1 -1
  46. package/dist/core/task_context/manager.d.ts +4 -0
  47. package/dist/core/task_context/manager.d.ts.map +1 -1
  48. package/dist/core/task_context/manager.js +48 -30
  49. package/dist/core/task_context/manager.js.map +1 -1
  50. package/dist/core/task_context/manager_setters.d.ts +2 -0
  51. package/dist/core/task_context/manager_setters.d.ts.map +1 -1
  52. package/dist/core/task_context/manager_setters.js +10 -0
  53. package/dist/core/task_context/manager_setters.js.map +1 -1
  54. package/dist/core/types.d.ts +19 -0
  55. package/dist/core/types.d.ts.map +1 -1
  56. package/dist/domain/asset_registry/derived_registry.d.ts.map +1 -1
  57. package/dist/domain/asset_registry/derived_registry.js +20 -5
  58. package/dist/domain/asset_registry/derived_registry.js.map +1 -1
  59. package/dist/domain/asset_registry/derived_types.d.ts +22 -1
  60. package/dist/domain/asset_registry/derived_types.d.ts.map +1 -1
  61. package/dist/domain/build/contract.d.ts.map +1 -1
  62. package/dist/domain/build/contract.js +3 -8
  63. package/dist/domain/build/contract.js.map +1 -1
  64. package/dist/domain/build/engine.d.ts +4 -2
  65. package/dist/domain/build/engine.d.ts.map +1 -1
  66. package/dist/domain/build/engine.js +38 -5
  67. package/dist/domain/build/engine.js.map +1 -1
  68. package/dist/domain/contracts/design_lifecycle_contract.d.ts.map +1 -1
  69. package/dist/domain/contracts/design_lifecycle_contract.js +11 -4
  70. package/dist/domain/contracts/design_lifecycle_contract.js.map +1 -1
  71. package/dist/domain/design/contract.d.ts.map +1 -1
  72. package/dist/domain/design/contract.js +13 -31
  73. package/dist/domain/design/contract.js.map +1 -1
  74. package/dist/domain/design/engine.d.ts +4 -2
  75. package/dist/domain/design/engine.d.ts.map +1 -1
  76. package/dist/domain/design/engine.js +39 -4
  77. package/dist/domain/design/engine.js.map +1 -1
  78. package/dist/domain/engine_helpers.d.ts +55 -2
  79. package/dist/domain/engine_helpers.d.ts.map +1 -1
  80. package/dist/domain/engine_helpers.js +173 -8
  81. package/dist/domain/engine_helpers.js.map +1 -1
  82. package/dist/domain/operate/contract.js +1 -1
  83. package/dist/domain/operate/contract.js.map +1 -1
  84. package/dist/domain/operate/engine.d.ts +4 -2
  85. package/dist/domain/operate/engine.d.ts.map +1 -1
  86. package/dist/domain/operate/engine.js +23 -3
  87. package/dist/domain/operate/engine.js.map +1 -1
  88. package/dist/domain/types.d.ts +6 -0
  89. package/dist/domain/types.d.ts.map +1 -1
  90. package/dist/domain/types.js.map +1 -1
  91. package/dist/domain/verify/engine.d.ts +4 -2
  92. package/dist/domain/verify/engine.d.ts.map +1 -1
  93. package/dist/domain/verify/engine.js +22 -2
  94. package/dist/domain/verify/engine.js.map +1 -1
  95. package/dist/gate/contracts/tool_actions.d.ts +2 -2
  96. package/dist/gate/contracts/tool_actions.d.ts.map +1 -1
  97. package/dist/gate/contracts/tool_actions.js +2 -2
  98. package/dist/gate/contracts/tool_actions.js.map +1 -1
  99. package/dist/gate/contracts/tool_invocation_contract_registry.js +1 -1
  100. package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
  101. package/dist/gate/executors/executors_artifact.d.ts +19 -0
  102. package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
  103. package/dist/gate/executors/executors_artifact.js +108 -8
  104. package/dist/gate/executors/executors_artifact.js.map +1 -1
  105. package/dist/gate/executors/executors_build.d.ts.map +1 -1
  106. package/dist/gate/executors/executors_build.js +17 -15
  107. package/dist/gate/executors/executors_build.js.map +1 -1
  108. package/dist/gate/executors/executors_external_command.d.ts.map +1 -1
  109. package/dist/gate/executors/executors_external_command.js +32 -0
  110. package/dist/gate/executors/executors_external_command.js.map +1 -1
  111. package/dist/gate/executors/executors_field_mapping.d.ts +7 -0
  112. package/dist/gate/executors/executors_field_mapping.d.ts.map +1 -0
  113. package/dist/gate/executors/executors_field_mapping.js +179 -0
  114. package/dist/gate/executors/executors_field_mapping.js.map +1 -0
  115. package/dist/gate/executors/executors_prerequisite.d.ts.map +1 -1
  116. package/dist/gate/executors/executors_prerequisite.js +27 -7
  117. package/dist/gate/executors/executors_prerequisite.js.map +1 -1
  118. package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
  119. package/dist/gate/executors/executors_regex_scan.js +36 -15
  120. package/dist/gate/executors/executors_regex_scan.js.map +1 -1
  121. package/dist/gate/executors/executors_scope.js +4 -4
  122. package/dist/gate/executors/executors_scope.js.map +1 -1
  123. package/dist/gate/executors/executors_trace.d.ts +5 -0
  124. package/dist/gate/executors/executors_trace.d.ts.map +1 -1
  125. package/dist/gate/executors/executors_trace.js +186 -3
  126. package/dist/gate/executors/executors_trace.js.map +1 -1
  127. package/dist/gate/executors/index.d.ts.map +1 -1
  128. package/dist/gate/executors/index.js +2 -0
  129. package/dist/gate/executors/index.js.map +1 -1
  130. package/dist/gate/gate_engine.d.ts +9 -0
  131. package/dist/gate/gate_engine.d.ts.map +1 -1
  132. package/dist/gate/gate_engine.js +15 -0
  133. package/dist/gate/gate_engine.js.map +1 -1
  134. package/dist/gate/gate_registry_bridge.d.ts +9 -8
  135. package/dist/gate/gate_registry_bridge.d.ts.map +1 -1
  136. package/dist/gate/gate_registry_bridge.js +57 -16
  137. package/dist/gate/gate_registry_bridge.js.map +1 -1
  138. package/dist/gate/middleware_gates.js +1 -1
  139. package/dist/gate/middleware_gates.js.map +1 -1
  140. package/dist/gate/scope_resolver.d.ts +7 -0
  141. package/dist/gate/scope_resolver.d.ts.map +1 -1
  142. package/dist/gate/scope_resolver.js +1 -1
  143. package/dist/gate/scope_resolver.js.map +1 -1
  144. package/dist/index.js +5 -0
  145. package/dist/index.js.map +1 -1
  146. package/dist/server/tools/sf_doctor.d.ts +2 -0
  147. package/dist/server/tools/sf_doctor.d.ts.map +1 -1
  148. package/dist/server/tools/sf_doctor.js +35 -1
  149. package/dist/server/tools/sf_doctor.js.map +1 -1
  150. package/dist/server/tools/sf_gate.d.ts +1 -1
  151. package/dist/server/tools/sf_gate.js +2 -2
  152. package/dist/server/tools/sf_gate.js.map +1 -1
  153. package/dist/server/tools/sf_task.d.ts +83 -0
  154. package/dist/server/tools/sf_task.d.ts.map +1 -1
  155. package/dist/server/tools/sf_task.js +121 -4
  156. package/dist/server/tools/sf_task.js.map +1 -1
  157. package/dist/server/tools/sf_work.d.ts +203 -0
  158. package/dist/server/tools/sf_work.d.ts.map +1 -1
  159. package/dist/server/tools/sf_work.js +549 -46
  160. package/dist/server/tools/sf_work.js.map +1 -1
  161. package/dist/shared/traceability_id_utils.js +3 -3
  162. package/dist/shared/traceability_id_utils.js.map +1 -1
  163. package/dist/verify/contracts/decision_workshop.d.ts.map +1 -1
  164. package/dist/verify/contracts/decision_workshop.js +4 -3
  165. package/dist/verify/contracts/decision_workshop.js.map +1 -1
  166. package/package.json +2 -1
  167. package/templates/build/enforced.md +299 -39
  168. package/templates/build//344/270/223/351/241/271/345/256/236/347/216/260.md +75 -0
  169. package/templates/build//345/256/211/345/205/250/345/212/240/345/233/272.md +75 -0
  170. package/templates/build//346/263/250/351/207/212/347/272/252/345/276/213.md +48 -0
  171. package/templates/build//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201.md +50 -79
  172. package/templates/build//346/265/213/350/257/225/350/256/241/345/210/222.md +31 -24
  173. package/templates/build//347/274/226/347/240/201/347/272/252/345/276/213.md +101 -0
  174. package/templates/build//350/260/203/350/257/225/346/216/222/346/237/245.md +44 -75
  175. package/templates/build//351/207/215/346/236/204/346/226/271/346/263/225.md +68 -0
  176. package/templates/design/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243.md +38 -28
  177. package/templates/design/enforced.md +234 -74
  178. package/templates/design//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 +5 -2
  179. package/templates/design//345/205/274/345/256/271/346/200/247/344/270/216/350/277/201/347/247/273/350/257/204/344/274/260.md +71 -0
  180. package/templates/design//345/206/263/347/255/226/344/270/216/351/200/211/345/236/213.md +70 -0
  181. package/templates/design//345/210/207/347/211/207/350/247/204/345/210/222.md +51 -55
  182. package/templates/design//345/274/200/345/217/221/345/210/207/347/211/207/350/256/241/345/210/222.md +75 -0
  183. package/templates/design//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243.md +35 -47
  184. package/templates/design//346/236/266/346/236/204/350/256/276/350/256/241.md +63 -81
  185. package/templates/design//350/256/276/350/256/241/345/206/263/347/255/226/347/272/252/345/276/213.md +58 -0
  186. package/templates/design//350/256/276/350/256/241/350/264/250/351/207/217/350/246/201/347/202/271.md +58 -0
  187. package/templates/design//351/234/200/346/261/202/345/210/206/346/236/220.md +49 -53
  188. package/templates/operate/UI/350/247/206/350/247/211/351/252/214/346/224/266/347/272/252/345/276/213.md +74 -0
  189. package/templates/operate/enforced.md +52 -5
  190. package/templates/operate//344/270/212/347/272/277/350/247/202/345/257/237.md +53 -32
  191. package/templates/operate//345/217/221/345/270/203/350/257/264/346/230/216.md +22 -1
  192. package/templates/operate//351/203/250/347/275/262/351/205/215/347/275/256.md +93 -0
  193. package/templates/shared/enforced.md +83 -5
  194. package/templates/shared//345/217/215/351/246/210/344/277/256/345/244/215/351/227/255/347/216/257.md +86 -0
  195. package/templates/shared//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246.md +1 -1
  196. package/templates/shared//345/267/245/347/250/213/346/211/247/350/241/214/346/200/273/347/272/262.md +148 -0
  197. package/templates/shared//345/267/245/347/250/213/347/272/252/345/276/213.md +71 -0
  198. package/templates/shared//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +48 -43
  199. package/templates/shared//346/234/272/345/210/266/350/257/264/346/230/216.md +67 -0
  200. package/templates/shared//347/240/224/350/256/250/350/256/260/345/275/225.md +54 -0
  201. package/templates/shared//350/257/201/346/215/256/351/251/261/345/212/250/344/270/216/345/217/215/345/271/273/350/247/211.md +27 -17
  202. package/templates/shared//350/264/241/347/214/256/350/247/204/350/214/203.md +78 -0
  203. package/templates/verify/enforced.md +87 -263
  204. package/templates/verify//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245.md +46 -87
  205. package/templates/verify//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +17 -0
  206. package/templates/verify//345/256/241/346/237/245/346/270/205/345/215/225.md +79 -0
  207. package/templates/verify//346/236/266/346/236/204/350/257/255/344/271/211/347/272/242/347/272/277.md +60 -0
  208. package/templates/verify//351/252/214/350/257/201/346/226/271/346/263/225.md +72 -0
  209. package/dist/core/scope_checker.d.ts +0 -29
  210. package/dist/core/scope_checker.d.ts.map +0 -1
  211. package/dist/core/scope_checker.js +0 -53
  212. package/dist/core/scope_checker.js.map +0 -1
  213. package/templates/build/Bug/345/210/206/346/236/220.md +0 -59
  214. package/templates/build/Git/346/223/215/344/275/234.md +0 -48
  215. package/templates/build/OOD/350/256/276/350/256/241/346/221/230/350/246/201.md +0 -46
  216. package/templates/build/React/346/216/245/345/217/243/351/233/206/346/210/220.md +0 -42
  217. package/templates/build/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +0 -52
  218. package/templates/build/TS/350/264/250/351/207/217/345/256/241/346/237/245.md +0 -78
  219. package/templates/build//344/270/212/346/270/270/344/272/244/345/217/211/351/252/214/350/257/201.md +0 -68
  220. package/templates/build//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/350/257/201.md +0 -56
  221. package/templates/build//344/273/243/347/240/201/351/227/250/347/246/201.md +0 -58
  222. package/templates/build//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +0 -48
  223. package/templates/build//345/210/207/347/211/207/346/211/247/350/241/214/347/272/252/345/276/213.md +0 -108
  224. package/templates/build//345/210/207/347/211/207/347/253/257/345/210/260/347/253/257/351/252/214/350/257/201.md +0 -221
  225. package/templates/build//345/212/237/350/203/275/345/274/200/345/217/221.md +0 -66
  226. package/templates/build//345/220/216/347/253/257/345/256/236/347/216/260.md +0 -39
  227. package/templates/build//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213.md +0 -33
  228. package/templates/build//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/256/241/346/237/245.md +0 -70
  229. package/templates/build//345/220/216/347/253/257/346/216/245/345/217/243/345/256/236/347/216/260.md +0 -43
  230. package/templates/build//345/233/275/351/231/205/345/214/226.md +0 -45
  231. package/templates/build//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +0 -68
  232. package/templates/build//345/256/211/345/205/250/345/256/241/346/237/245.md +0 -154
  233. package/templates/build//345/256/211/345/205/250/345/256/241/350/256/241.md +0 -47
  234. package/templates/build//345/267/245/347/250/213/347/272/252/345/276/213.md +0 -56
  235. package/templates/build//346/200/247/350/203/275/345/210/206/346/236/220.md +0 -59
  236. package/templates/build//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +0 -53
  237. package/templates/build//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +0 -76
  238. package/templates/build//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273.md +0 -63
  239. package/templates/build//346/226/260/350/200/201/351/200/273/350/276/221/346/257/224/345/257/271/346/227/245/345/277/227.md +0 -39
  240. package/templates/build//346/235/203/351/231/220/350/256/244/350/257/201.md +0 -49
  241. package/templates/build//346/265/213/350/257/225/350/264/250/351/207/217.md +0 -45
  242. package/templates/build//347/206/224/346/226/255/351/231/215/347/272/247.md +0 -49
  243. package/templates/build//347/212/266/346/200/201/346/265/201/350/275/254.md +0 -43
  244. package/templates/build//347/213/254/347/253/213/345/256/241/346/237/245.md +0 -45
  245. package/templates/build//347/272/246/346/235/237/345/256/236/347/216/260.md +0 -47
  246. package/templates/build//347/274/226/347/240/201/345/260/261/347/273/252/345/256/241/346/237/245.md +0 -60
  247. package/templates/build//347/274/226/347/240/201/350/201/232/345/220/210/346/243/200/346/237/245.md +0 -22
  248. package/templates/build//347/274/226/347/240/201/350/264/250/351/207/217.md +0 -46
  249. package/templates/build//347/274/226/347/240/201/351/230/266/346/256/265/346/211/247/350/241/214.md +0 -105
  250. package/templates/build//347/274/272/351/231/267/347/256/241/347/220/206.md +0 -47
  251. package/templates/build//350/200/246/345/220/210/346/243/200/346/265/213.md +0 -86
  252. package/templates/build//350/246/206/347/233/226/347/216/207/346/240/207/345/207/206.md +0 -40
  253. package/templates/build//350/264/250/351/207/217/345/256/241/346/237/245.md +0 -111
  254. package/templates/build//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +0 -52
  255. package/templates/build//351/200/232/347/224/250/350/264/250/351/207/217.md +0 -176
  256. package/templates/build//351/207/215/346/236/204/346/226/271/346/241/210.md +0 -61
  257. package/templates/build//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +0 -53
  258. package/templates/build//351/230/262/345/276/241/346/200/247/347/274/226/347/240/201.md +0 -94
  259. package/templates/build//351/233/206/346/210/220/351/252/214/350/257/201.md +0 -67
  260. package/templates/build//351/233/267/345/214/272/345/217/215/346/250/241/345/274/217.md +0 -135
  261. package/templates/build//351/252/214/346/224/266/346/240/207/345/207/206/345/256/241/346/237/245.md +0 -64
  262. package/templates/build//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +0 -75
  263. package/templates/design/API/350/256/276/350/256/241.md +0 -47
  264. package/templates/design/N/345/212/2401/346/237/245/350/257/242.md +0 -48
  265. package/templates/design/OOD/350/256/276/350/256/241.md +0 -72
  266. package/templates/design//344/270/200/350/207/264/346/200/247/346/240/241/351/252/214.md +0 -109
  267. package/templates/design//344/270/215/347/241/256/345/256/232/346/227/266/345/244/264/350/204/221/351/243/216/346/232/264.md +0 -105
  268. package/templates/design//344/273/273/345/212/241/346/213/206/350/247/243.md +0 -61
  269. package/templates/design//344/273/273/345/212/241/350/247/204/345/210/222.md +0 -84
  270. package/templates/design//344/274/232/350/257/235/346/201/242/345/244/215-procedures.md +0 -78
  271. package/templates/design//345/205/274/345/256/271/346/200/247/346/243/200/346/237/245.md +0 -89
  272. package/templates/design//345/210/207/347/211/207/350/256/241/345/210/222.md +0 -149
  273. package/templates/design//345/211/215/347/253/257/346/200/247/350/203/275.md +0 -49
  274. package/templates/design//345/216/206/345/217/262/351/201/227/347/225/231/351/233/267/345/214/272/346/270/205/345/215/225.md +0 -50
  275. package/templates/design//345/216/237/345/236/213/346/272/220/347/240/201/346/217/220/345/217/226.md +0 -78
  276. package/templates/design//345/216/237/345/236/213/350/257/264/346/230/216.md +0 -200
  277. package/templates/design//345/216/237/345/236/213/350/257/264/346/230/216/345/256/241/346/237/245.md +0 -81
  278. package/templates/design//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.md +0 -52
  279. package/templates/design//345/221/275/344/273/244/346/211/247/350/241/214-procedures.md +0 -45
  280. package/templates/design//345/221/275/344/273/244/350/267/257/347/224/261-procedures.md +0 -46
  281. package/templates/design//345/221/275/345/220/215.md +0 -49
  282. package/templates/design//345/242/236/351/207/217/350/276/271/347/225/214/347/225/214/345/256/232/346/226/207/346/241/243.md +0 -48
  283. package/templates/design//345/267/245/345/205/267/350/260/203/347/224/250-procedures.md +0 -41
  284. package/templates/design//345/271/266/345/217/221/346/216/247/345/210/266.md +0 -50
  285. package/templates/design//346/212/200/346/234/257/351/200/211/345/236/213.md +0 -33
  286. package/templates/design//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210.md +0 -97
  287. package/templates/design//346/224/271/351/200/240/345/275/261/345/223/215/350/214/203/345/233/264/350/257/204/344/274/260.md +0 -56
  288. package/templates/design//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210.md +0 -75
  289. package/templates/design//346/225/260/346/215/256/350/241/200/347/274/230/345/233/276.md +0 -49
  290. package/templates/design//346/227/240/351/232/234/347/242/215.md +0 -49
  291. package/templates/design//346/236/266/346/236/204/345/206/263/347/255/226/350/256/260/345/275/225.md +0 -53
  292. package/templates/design//346/236/266/346/236/204/345/256/241/346/237/245.md +0 -256
  293. package/templates/design//346/236/266/346/236/204/350/256/276/350/256/241-constraints.md +0 -177
  294. package/templates/design//346/236/266/346/236/204/350/256/276/350/256/241-procedures.md +0 -130
  295. package/templates/design//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +0 -47
  296. package/templates/design//346/272/220/347/240/201/345/216/237/345/236/213/344/272/244/344/273/230.md +0 -58
  297. package/templates/design//347/216/260/346/234/211/347/263/273/347/273/237/345/267/256/350/267/235/345/210/206/346/236/220.md +0 -114
  298. package/templates/design//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +0 -64
  299. package/templates/design//347/254/254/344/270/200/346/200/247/345/216/237/347/220/206/346/216/250/347/220/206.md +0 -182
  300. package/templates/design//347/264/247/346/200/245/345/233/236/346/273/232/346/211/213/345/206/214.md +0 -77
  301. package/templates/design//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205.md +0 -85
  302. package/templates/design//350/200/201/347/263/273/347/273/237/345/210/207/347/211/207/350/247/204/345/210/222.md +0 -48
  303. package/templates/design//350/207/252/344/270/273/351/200/211/345/236/213.md +0 -57
  304. package/templates/design//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.md +0 -34
  305. package/templates/design//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.md +0 -60
  306. package/templates/design//350/256/276/350/256/241/350/201/232/345/220/210/346/243/200/346/237/245.md +0 -21
  307. package/templates/design//350/257/246/347/273/206/350/256/276/350/256/241-procedures.md +0 -123
  308. package/templates/design//350/257/246/347/273/206/350/256/276/350/256/241.md +0 -109
  309. package/templates/design//350/257/246/347/273/206/350/256/276/350/256/241/345/256/241/346/237/245.md +0 -88
  310. package/templates/design//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +0 -43
  311. package/templates/design//350/277/201/347/247/273/350/257/204/344/274/260.md +0 -67
  312. package/templates/design//351/232/224/347/246/273/351/200/202/351/205/215/345/231/250/346/226/271/346/241/210.md +0 -44
  313. package/templates/design//351/234/200/346/261/202/346/276/204/346/270/205.md +0 -65
  314. package/templates/design//351/234/200/346/261/202/350/264/250/351/207/217/345/256/241/346/237/245.md +0 -88
  315. package/templates/design//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241.md +0 -43
  316. package/templates/operate//345/217/221/345/270/203/350/257/264/346/230/216/345/256/241/346/237/245.md +0 -60
  317. package/templates/operate//350/277/220/347/273/264/350/201/232/345/220/210/346/243/200/346/237/245.md +0 -22
  318. package/templates/operate//351/203/250/347/275/262/351/205/215/347/275/256/345/256/241/346/237/245.md +0 -59
  319. package/templates/shared/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +0 -55
  320. package/templates/shared/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +0 -54
  321. package/templates/shared/OOD/344/270/216SOLID/350/256/276/350/256/241.md +0 -48
  322. package/templates/shared//344/272/247/347/211/251Schema/346/263/250/345/206/214/344/270/255/345/277/203.md +0 -57
  323. package/templates/shared//344/272/247/347/211/251/345/245/221/347/272/246.md +0 -44
  324. package/templates/shared//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.md +0 -116
  325. package/templates/shared//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 -45
  326. package/templates/shared//344/273/273/345/212/241/347/212/266/346/200/201/346/234/272.md +0 -55
  327. package/templates/shared//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +0 -55
  328. package/templates/shared//344/274/230/351/233/205/345/201/234/346/234/272.md +0 -43
  329. package/templates/shared//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 -54
  330. package/templates/shared//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +0 -55
  331. package/templates/shared//345/206/262/347/252/201/351/227/250/347/246/201.md +0 -55
  332. package/templates/shared//345/206/263/347/255/226/347/275/221/345/205/263.md +0 -47
  333. package/templates/shared//345/210/207/347/211/207/350/201/232/345/220/210/346/243/200/346/237/245.md +0 -72
  334. package/templates/shared//345/217/230/345/274/202/345/256/241/350/256/241.md +0 -58
  335. package/templates/shared//345/220/216/347/253/257/345/256/236/347/216/260/345/267/245/347/250/213/345/245/221/347/272/246.md +0 -40
  336. package/templates/shared//345/221/275/344/273/244/346/211/247/350/241/214.md +0 -48
  337. package/templates/shared//345/221/275/344/273/244/350/267/257/347/224/261.md +0 -45
  338. package/templates/shared//345/233/236/345/275/222/347/237/251/351/230/265.md +0 -54
  339. package/templates/shared//345/244/232/347/247/237/346/210/267.md +0 -49
  340. package/templates/shared//345/256/241/350/256/241/346/227/245/345/277/227.md +0 -46
  341. package/templates/shared//345/257/274/345/205/245/345/257/274/345/207/272.md +0 -51
  342. package/templates/shared//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +0 -52
  343. package/templates/shared//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +0 -54
  344. package/templates/shared//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246.md +0 -42
  345. package/templates/shared//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +0 -50
  346. package/templates/shared//345/267/245/344/275/234/346/265/201/346/250/241/347/211/210/345/214/205.md +0 -34
  347. package/templates/shared//345/267/245/345/205/267/350/260/203/347/224/250.md +0 -48
  348. package/templates/shared//345/271/266/345/217/221/351/224/201.md +0 -57
  349. package/templates/shared//346/211/247/350/241/214/345/256/210/345/215/253/350/257/204/344/274/260.md +0 -47
  350. package/templates/shared//346/211/251/345/261/225/347/224/237/345/221/275/345/221/250/346/234/237.md +0 -34
  351. package/templates/shared//346/212/200/346/234/257/345/206/263/347/255/226/344/270/273/346/235/203.md +0 -50
  352. package/templates/shared//346/212/245/350/241/250/347/273/237/350/256/241.md +0 -50
  353. package/templates/shared//346/224/257/344/273/230.md +0 -51
  354. package/templates/shared//346/225/217/346/204/237/344/277/241/346/201/257/345/244/204/347/220/206.md +0 -77
  355. package/templates/shared//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +0 -53
  356. package/templates/shared//346/225/260/346/215/256/346/235/203/351/231/220.md +0 -47
  357. package/templates/shared//346/226/275/345/267/245/346/214/207/344/273/244/345/245/221/347/272/246.md +0 -69
  358. package/templates/shared//346/227/245/345/277/227/346/262/273/347/220/206.md +0 -31
  359. package/templates/shared//346/234/272/345/210/266/350/207/252/346/262/273/347/220/206.md +0 -31
  360. package/templates/shared//346/240/207/345/207/206/350/265/204/344/272/247/350/246/206/347/233/226.md +0 -50
  361. package/templates/shared//346/240/270/345/277/203/344/275/223/351/252/214/345/216/237/345/210/231.md +0 -38
  362. package/templates/shared//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 -154
  363. package/templates/shared//346/250/241/347/211/210Frontmatter.md +0 -125
  364. package/templates/shared//346/250/241/347/211/210/350/264/241/347/214/256/346/214/207/345/215/227.md +0 -282
  365. package/templates/shared//346/250/241/347/211/210/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247.md +0 -48
  366. package/templates/shared//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +0 -56
  367. package/templates/shared//346/263/250/345/206/214/350/241/250/345/237/272/347/241/200/350/256/276/346/226/275.md +0 -49
  368. package/templates/shared//346/274/224/350/277/233/345/233/236/345/275/222/351/227/250/346/216/247.md +0 -50
  369. package/templates/shared//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246.md +0 -86
  370. package/templates/shared//347/237/245/350/257/206/344/270/273/346/235/203.md +0 -66
  371. package/templates/shared//347/237/245/350/257/206/346/262/273/347/220/206.md +0 -31
  372. package/templates/shared//347/237/245/350/257/206/346/263/250/345/205/245/350/276/271/347/225/214.md +0 -47
  373. package/templates/shared//347/273/206/350/212/202/347/272/252/345/276/213.md +0 -54
  374. package/templates/shared//350/204/221/346/232/264/344/270/216/346/226/271/346/241/210/346/216/242/347/264/242.md +0 -51
  375. package/templates/shared//350/256/241/345/210/222/345/211/215/347/275/256/351/227/250.md +0 -47
  376. package/templates/shared//350/256/276/350/256/241/344/272/247/347/211/251/345/214/205.md +0 -58
  377. package/templates/shared//350/257/255/344/271/211/350/257/201/346/215/256.md +0 -55
  378. package/templates/shared//350/267/250/345/271/263/345/217/260/350/267/257/345/276/204/345/256/211/345/205/250.md +0 -41
  379. package/templates/shared//350/276/223/345/205/245/346/235/220/346/226/231/345/245/221/347/272/246.md +0 -50
  380. package/templates/shared//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +0 -58
  381. package/templates/shared//351/200/232/347/224/250/345/206/263/347/255/226/347/240/224/350/256/250.md +0 -62
  382. package/templates/shared//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +0 -47
  383. package/templates/shared//351/200/232/347/237/245.md +0 -50
  384. package/templates/shared//351/203/250/347/275/262/351/205/215/347/275/256.md +0 -14
  385. package/templates/shared//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247.md +0 -67
  386. package/templates/shared//351/205/215/347/275/256/350/220/275/347/233/230/350/276/271/347/225/214.md +0 -32
  387. package/templates/shared//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260.md +0 -51
  388. package/templates/shared//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +0 -57
  389. package/templates/shared//351/252/214/346/224/266/346/250/241/347/211/210/350/276/223/345/207/272/345/245/221/347/272/246.md +0 -71
  390. package/templates/shared//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +0 -55
  391. package/templates/shared//351/252/214/350/257/201/345/245/221/347/272/246.md +0 -48
  392. package/templates/verify/Docker/351/203/250/347/275/262.md +0 -46
  393. package/templates/verify/POC/347/273/223/350/256/272.md +0 -53
  394. package/templates/verify/React/345/210/227/350/241/250/350/241/250/346/240/274.md +0 -43
  395. package/templates/verify/React/347/212/266/346/200/201/347/256/241/347/220/206.md +0 -42
  396. package/templates/verify/React/347/273/204/344/273/266.md +0 -42
  397. package/templates/verify/React/350/241/250/345/215/225.md +0 -43
  398. package/templates/verify/React/350/267/257/347/224/261.md +0 -43
  399. package/templates/verify/SOLID/344/273/243/347/240/201/345/256/241/346/237/245.md +0 -74
  400. package/templates/verify/SOLID/350/256/276/350/256/241.md +0 -31
  401. package/templates/verify/Schema/345/205/274/345/256/271.md +0 -42
  402. package/templates/verify/Vue/347/212/266/346/200/201/347/256/241/347/220/206.md +0 -42
  403. package/templates/verify/Vue/347/273/204/344/273/266.md +0 -42
  404. package/templates/verify/Vue/350/267/257/347/224/261.md +0 -43
  405. package/templates/verify//344/270/212/346/270/270/350/256/276/350/256/241/344/272/244/345/217/211/351/252/214/350/257/201/345/256/241/346/237/245.md +0 -76
  406. package/templates/verify//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245.md +0 -38
  407. package/templates/verify//344/272/213/344/273/266/351/251/261/345/212/250.md +0 -46
  408. package/templates/verify//344/272/213/345/212/241/346/250/241/345/274/217.md +0 -42
  409. package/templates/verify//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 -92
  410. package/templates/verify//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.md +0 -64
  411. package/templates/verify//344/274/232/350/257/235/346/201/242/345/244/215.md +0 -46
  412. package/templates/verify//345/206/263/347/255/226/345/256/214/346/225/264/346/200/247/345/256/241/346/237/245.md +0 -71
  413. package/templates/verify//345/210/206/351/241/265/346/237/245/350/257/242.md +0 -41
  414. package/templates/verify//345/211/215/347/253/257/351/241/265/351/235/242.md +0 -40
  415. package/templates/verify//345/216/206/345/217/262/346/225/260/346/215/256/346/270/205/346/264/227/350/204/232/346/234/254.md +0 -55
  416. package/templates/verify//345/217/221/345/270/203/345/220/216/345/256/241/346/237/245.md +0 -73
  417. package/templates/verify//345/220/216/347/253/257API.md +0 -39
  418. package/templates/verify//345/242/236/345/210/240/346/224/271/346/237/245.md +0 -45
  419. package/templates/verify//345/244/226/351/203/250/344/276/235/350/265/226.md +0 -43
  420. package/templates/verify//345/245/221/347/272/246/345/205/274/345/256/271.md +0 -42
  421. package/templates/verify//345/256/232/346/227/266/344/273/273/345/212/241.md +0 -39
  422. package/templates/verify//345/256/236/346/227/266/346/216/250/351/200/201.md +0 -48
  423. package/templates/verify//345/256/241/346/237/245/346/221/230/350/246/201.md +0 -58
  424. package/templates/verify//345/267/245/344/275/234/346/265/201.md +0 -38
  425. package/templates/verify//345/271/266/345/217/221/345/256/241/346/237/245.md +0 -132
  426. package/templates/verify//345/274/202/346/255/245/345/257/274/345/207/272.md +0 -41
  427. package/templates/verify//346/200/247/350/203/275/345/256/241/346/237/245.md +0 -110
  428. package/templates/verify//346/216/245/345/217/243/345/245/221/347/272/246.md +0 -44
  429. package/templates/verify//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245.md +0 -131
  430. package/templates/verify//346/220/234/347/264/242/346/250/241/345/274/217.md +0 -47
  431. package/templates/verify//346/225/205/351/232/234/345/244/215/347/233/230.md +0 -67
  432. package/templates/verify//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264.md +0 -37
  433. package/templates/verify//346/225/260/346/215/256/351/232/220/347/247/201.md +0 -46
  434. package/templates/verify//346/226/207/344/273/266/344/270/212/344/274/240.md +0 -45
  435. package/templates/verify//346/227/245/345/277/227.md +0 -45
  436. package/templates/verify//346/234/254/345/234/260/346/265/217/350/247/210/345/231/250/351/252/214/346/224/266.md +0 -94
  437. package/templates/verify//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214.md +0 -65
  438. package/templates/verify//347/237/245/350/257/206/346/263/250/345/205/245.md +0 -38
  439. package/templates/verify//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +0 -76
  440. package/templates/verify//347/274/223/345/255/230/347/255/226/347/225/245.md +0 -45
  441. package/templates/verify//350/201/224/350/260/203/350/256/276/350/256/241/347/274/272/351/231/267/345/210/244/345/256/232.md +0 -67
  442. package/templates/verify//350/201/224/350/260/203/351/252/214/350/257/201.md +0 -87
  443. package/templates/verify//350/256/276/350/256/241/345/256/241/350/256/241.md +0 -184
  444. package/templates/verify//350/257/225/350/277/220/350/241/214/347/206/224/346/226/255.md +0 -74
  445. package/templates/verify//350/276/223/345/205/245/346/240/241/351/252/214.md +0 -44
  446. package/templates/verify//351/203/250/347/275/262/345/217/221/345/270/203.md +0 -101
  447. package/templates/verify//351/224/231/350/257/257/345/244/204/347/220/206.md +0 -46
  448. package/templates/verify//351/224/231/350/257/257/350/276/271/347/225/214.md +0 -38
  449. package/templates/verify//351/232/220/347/247/201/345/256/241/346/237/245.md +0 -37
  450. package/templates/verify//351/252/214/350/257/201.md +0 -38
  451. package/templates/verify//351/252/214/350/257/201/350/201/232/345/220/210/346/243/200/346/237/245.md +0 -22
@@ -5,6 +5,8 @@ gate: build-gate
5
5
  title: build阶段强制检查清单
6
6
  sync_policy: engine_only
7
7
  status: active
8
+ extra:
9
+ owner_mechanism: mc-stage-gate-engine
8
10
  checks:
9
11
  - id: TS-Q01
10
12
  executor: regex_pattern_scan
@@ -109,7 +111,7 @@ checks:
109
111
  - id: SEC-07
110
112
  executor: regex_pattern_scan
111
113
  rule: "禁止 ../ 路径遍历风险"
112
- severity: error
114
+ severity: warning
113
115
  check_type: deterministic
114
116
  pattern: '/\.\.[\\\/]/'
115
117
  languages: [通用]
@@ -161,11 +163,235 @@ checks:
161
163
  rule: "JWT 必须校验签名算法,禁止未校验直接 decode"
162
164
  severity: error
163
165
  check_type: deterministic
164
- pattern: '/\bjwt\.decode\s*\(/'
166
+ pattern: '/\bjwt\.decode\s*\(/i'
165
167
  languages: [通用]
166
168
  evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未校验 JWT 命中)"]
167
169
  gate: build-gate
168
170
  target: "self"
171
+ # —— 日志契约(LOG-ZH,regex 验证中文日志;原 BLD-G03 中文日志部分硬化)——
172
+ - id: LOG-ZH
173
+ executor: regex_pattern_scan
174
+ rule: "业务日志须含中文事件名(方便调试观察);命中=日志字符串无中文字符(纯英文/符号)"
175
+ severity: warning
176
+ check_type: deterministic
177
+ pattern: '/(console\.(log|info|warn|error)|logger?\.\w+)\s*\(\s*["''][^"''一-龥]*["'']/'
178
+ languages: [通用]
179
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无纯英文日志命中)"]
180
+ gate: build-gate
181
+ target: "self"
182
+ # —— 代码架构检查(从 design-gate 迁入,代码实现阶段归属)——
183
+ - id: ARC-02
184
+ executor: regex_pattern_scan
185
+ rule: "禁止 Entity 直接暴露给外部接口,必须用 DTO"
186
+ severity: error
187
+ check_type: deterministic
188
+ pattern: '/\bpublic\s+\w*Entity\b\s+\w+\s*\(/'
189
+ languages: [java]
190
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Entity 直接暴露命中)"]
191
+ gate: build-gate
192
+ target: "self"
193
+ - id: ARC-03
194
+ executor: regex_pattern_scan
195
+ rule: "写操作(save/create/update/delete)必须有 @Transactional"
196
+ severity: warning
197
+ check_type: deterministic
198
+ pattern: '/\.(save|insert|update|delete|remove|create)\s*\(/'
199
+ languages: [java]
200
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无写操作缺事务命中)"]
201
+ gate: build-gate
202
+ target: "self"
203
+ - id: ARC-04
204
+ executor: regex_pattern_scan
205
+ rule: "禁止直接 new Service/Repository/Mapper/Manager,必须依赖注入"
206
+ severity: error
207
+ check_type: deterministic
208
+ pattern: '/\bnew\s+\w*(Service|Repository|Repo|Dao|Mapper|Manager)\s*\(/'
209
+ languages: [java]
210
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无直接 new 服务对象命中)"]
211
+ gate: build-gate
212
+ target: "self"
213
+ - id: ARC-06
214
+ executor: regex_pattern_scan
215
+ rule: "前端 API 调用必须封装到 service 层,禁止组件内直接 fetch/axios"
216
+ severity: warning
217
+ check_type: deterministic
218
+ pattern: '/\b(fetch|axios)\s*\(/'
219
+ languages: [ts]
220
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无组件直接 API 调用命中)"]
221
+ gate: build-gate
222
+ target: "self"
223
+ - id: ARC-08
224
+ executor: regex_pattern_scan
225
+ rule: "Service 层禁止直接操作 HttpServletRequest/Response"
226
+ severity: error
227
+ check_type: deterministic
228
+ pattern: '/\bHttpServletRequest\b|\bHttpServletResponse\b/'
229
+ languages: [java]
230
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Service 操作 HttpServlet 命中)"]
231
+ gate: build-gate
232
+ target: "self"
233
+ # —— 并发安全(CON-*,从 verify/enforced.md 物理归位;gate 本就是 build-gate)——
234
+ - id: CON-01
235
+ executor: regex_pattern_scan
236
+ rule: "共享可变状态必须有并发保护"
237
+ severity: error
238
+ check_type: deterministic
239
+ pattern: '/\b(public|private|protected)\s+static\s+[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\b/'
240
+ languages: [java]
241
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未保护共享状态命中)"]
242
+ gate: build-gate
243
+ target: "self"
244
+ - id: CON-02
245
+ executor: regex_pattern_scan
246
+ rule: "分布式环境禁止使用 JVM 级锁"
247
+ severity: warning
248
+ check_type: deterministic
249
+ pattern: '/\bsynchronized\s*\(/'
250
+ languages: [java]
251
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 JVM 级锁误用命中)"]
252
+ gate: build-gate
253
+ target: "self"
254
+ - id: CON-03
255
+ executor: regex_pattern_scan
256
+ rule: "先查后改(如库存/计数)必须用原子操作"
257
+ severity: warning
258
+ check_type: deterministic
259
+ pattern: '/\.(findById|getById|getOne|selectById)\s*\([^)]*\)/'
260
+ languages: [java]
261
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非原子先查后改命中)"]
262
+ gate: build-gate
263
+ target: "self"
264
+ - id: CON-04
265
+ executor: regex_pattern_scan
266
+ rule: "禁止 @Transactional 同类内部调用导致事务失效"
267
+ severity: warning
268
+ check_type: deterministic
269
+ pattern: '/\bthis\.\w+\s*\(/'
270
+ languages: [java]
271
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务自调用命中)"]
272
+ gate: build-gate
273
+ target: "self"
274
+ - id: CON-05
275
+ executor: regex_pattern_scan
276
+ rule: "事务内禁止执行外部调用(HTTP/RPC)"
277
+ severity: warning
278
+ check_type: deterministic
279
+ pattern: '/\.(getForObject|postForObject|exchange|execute)\s*\(/'
280
+ languages: [java]
281
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务内外部调用命中)"]
282
+ gate: build-gate
283
+ target: "self"
284
+ - id: CON-06
285
+ executor: regex_pattern_scan
286
+ rule: "SimpleDateFormat 非线程安全,禁止作为共享成员"
287
+ severity: error
288
+ check_type: deterministic
289
+ pattern: '/\bstatic\s+[\w<>,\s]*SimpleDateFormat\b/'
290
+ languages: [java]
291
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 SimpleDateFormat 共享命中)"]
292
+ gate: build-gate
293
+ target: "self"
294
+ - id: CON-07
295
+ executor: regex_pattern_scan
296
+ rule: "ThreadLocal 必须清理避免内存泄漏"
297
+ severity: error
298
+ check_type: deterministic
299
+ pattern: '/\bnew\s+ThreadLocal\b/'
300
+ languages: [java]
301
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 ThreadLocal 未清理命中)"]
302
+ gate: build-gate
303
+ target: "self"
304
+ - id: CON-08
305
+ executor: regex_pattern_scan
306
+ rule: "HashMap/ArrayList 等禁止作为共享可变类成员"
307
+ severity: error
308
+ check_type: deterministic
309
+ pattern: '/\b(private|protected|public)\s+(?!static)[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\s*[=;]/'
310
+ languages: [java]
311
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非线程安全集合成员命中)"]
312
+ gate: build-gate
313
+ target: "self"
314
+ - id: CON-09
315
+ executor: regex_pattern_scan
316
+ rule: "CompletableFuture 链必须处理异常"
317
+ severity: error
318
+ check_type: deterministic
319
+ pattern: '/\.(runAsync|supplyAsync)\s*\(/'
320
+ languages: [java]
321
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未处理异常命中)"]
322
+ gate: build-gate
323
+ target: "self"
324
+ - id: CON-10
325
+ executor: regex_pattern_scan
326
+ rule: "线程池必须正确配置拒绝策略"
327
+ severity: error
328
+ check_type: deterministic
329
+ pattern: '/\bnew\s+ThreadPoolExecutor\s*\(/'
330
+ languages: [java]
331
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未配置拒绝策略命中)"]
332
+ gate: build-gate
333
+ target: "self"
334
+ # —— API 规范(API-03~10,从 verify/enforced.md 归位;API-01/02 与 ARC-02/03 重复已删)——
335
+ - id: API-03
336
+ executor: regex_pattern_scan
337
+ rule: "接口必须有权限注解"
338
+ severity: error
339
+ check_type: deterministic
340
+ pattern: '/@(Get|Post|Put|Delete|Request)Mapping\s*\(/'
341
+ languages: [java]
342
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无接口缺权限注解命中)"]
343
+ gate: build-gate
344
+ target: "self"
345
+ - id: API-04
346
+ executor: regex_pattern_scan
347
+ rule: "禁止硬编码分页参数,必须参数化"
348
+ severity: error
349
+ check_type: deterministic
350
+ pattern: '/\b(pageNum|pageSize)\s*=\s*\d/'
351
+ languages: [java]
352
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无硬编码分页命中)"]
353
+ gate: build-gate
354
+ target: "self"
355
+ - id: API-06
356
+ executor: regex_pattern_scan
357
+ rule: "接口路径须符合 RESTful 规范"
358
+ severity: warning
359
+ check_type: deterministic
360
+ pattern: '/@(Get|Post|Put|Delete)Mapping\s*\(\s*[^\)]*(get|list|create|delete|update)/i'
361
+ languages: [java]
362
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无路径违规命中)"]
363
+ gate: build-gate
364
+ target: "self"
365
+ - id: API-07
366
+ executor: regex_pattern_scan
367
+ rule: "接口必须使用统一响应包装(ApiResult/Result/R)"
368
+ severity: error
369
+ check_type: deterministic
370
+ pattern: '/\bResponseEntity\s*<\s*\w*Entity\b/'
371
+ languages: [java]
372
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无裸返回命中)"]
373
+ gate: build-gate
374
+ target: "self"
375
+ - id: API-08
376
+ executor: regex_pattern_scan
377
+ rule: "分页接口必须返回标准分页结构"
378
+ severity: error
379
+ check_type: deterministic
380
+ pattern: '/\.(findAll|listAll)\s*\(\s*\d/'
381
+ languages: [java]
382
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非标准分页命中)"]
383
+ gate: build-gate
384
+ target: "self"
385
+ - id: API-09
386
+ executor: regex_pattern_scan
387
+ rule: "接口路径须含版本号"
388
+ severity: error
389
+ check_type: deterministic
390
+ pattern: '/@(Get|Post|Put|Delete|Request)Mapping\s*\(\s*"\/(?!api\/v\d)/i'
391
+ languages: [java]
392
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无缺版本号命中)"]
393
+ gate: build-gate
394
+ target: "self"
169
395
  - id: BLD-G01
170
396
  executor: upstream_gate_check
171
397
  rule: "design-gate 已通过,所有前置设计产物完备"
@@ -182,14 +408,6 @@ checks:
182
408
  evidence_required: ["lazy_pattern_detector 输出(hard_fail=0)","空函数体扫描结果(0 匹配)","空 catch 扫描结果(0 匹配)"]
183
409
  gate: build-gate
184
410
  target: "self"
185
- - id: BLD-G03
186
- executor: lazy_pattern_check
187
- rule: "变更代码必须满足中文注释与日志契约:后端类/方法有中文 Javadoc,关键业务行有中文行注释,业务日志使用中文事件名"
188
- severity: error
189
- check_type: deterministic
190
- evidence_required: ["non_chinese_comment 检测结果(须为 0)","non_chinese_log 检测结果(须为 0)"]
191
- gate: build-gate
192
- target: "self"
193
411
  - id: BLD-G04
194
412
  executor: tsc_compile
195
413
  rule: "tsc --noEmit 零错误,项目构建成功"
@@ -200,46 +418,88 @@ checks:
200
418
  target: "self"
201
419
  - id: BLD-G05
202
420
  executor: vitest_run
203
- rule: "全量测试通过,无失败用例;增量代码行覆盖率>=80%"
421
+ rule: "全量测试通过,无失败用例(vitest_run 验测试通过;覆盖率阈值非本 check 确定性覆盖,归人工/CI 把关——coverage_threshold executor 注册但未接入 build-gate)"
204
422
  severity: error
205
423
  check_type: deterministic
206
- evidence_required: ["测试报告(passed/failed/total)","覆盖率报告(增量行覆盖率数值)"]
424
+ evidence_required: ["测试报告(passed/failed/total)"]
207
425
  gate: build-gate
208
426
  target: "self"
209
- - id: BLD-G06
210
- executor: lazy_pattern_check
211
- rule: "无硬编码密钥、无未鉴权写接口、无 SQL 注入风险、依赖无高危漏洞"
427
+ # —— 超大系统 build 前研讨兜底(BLD-DELIB:开发切片计划 SLC 切片数>=5 时须有 build 研讨记录,补下限防 AI 跳过研讨;切片计划不存在或<5 跳过)——
428
+ - id: BLD-DELIB
429
+ executor: slice_deliberation_gate
430
+ rule: "超大系统(开发切片计划 SLC 切片数>=5)build 写代码前须 deliberate 研讨实现策略(研讨记录 docs/研讨记录/构建/产物-研讨记录.md 存在);切片计划不存在或切片<5 则跳过"
431
+ severity: error
432
+ check_type: deterministic
433
+ evidence_required: ["docs/architecture/02-开发切片计划.md"]
434
+ gate: build-gate
435
+ target: "self"
436
+ # —— db/api 适用性兜底(③ build 兜底:design_doc 声明「适用」须产出,防 design 漏产致 build 缺地基)——
437
+ - id: BLD-DBAPI
438
+ executor: applicability_check
439
+ rule: "build 前置兜底(通用 check,所有 build verify 跑):design_doc「产物适用性声明」声明「适用」的 database_design/api_specification 须已产出(design_doc 不存在则跳过,兼容小改跳 design)"
212
440
  severity: error
213
441
  check_type: deterministic
214
- evidence_required: ["硬编码密钥扫描结果(须为 0)","未鉴权写接口扫描结果(须为 0)","注入防护方案确认","依赖漏洞扫描报告(高危/严重须为 0)"]
442
+ evidence_required: ["数据库设计文档模版", "API接口规格文档模版"]
443
+ gate: build-gate
444
+ target: "self"
445
+ # —— 多工程结构兜底(MULTI-ENGINE-STRUCT:intent projects 每端须有 src/ + 独立 .gitignore)——
446
+ - id: MULTI-ENGINE-STRUCT
447
+ executor: multi_engine_structure_check
448
+ rule: "多工程项目(intent projects 声明)每端工程须有 src/ + 独立 .gitignore(首个切片建工程骨架);单工程跳过"
449
+ severity: error
450
+ check_type: deterministic
451
+ evidence_required: ["intent.yaml projects"]
452
+ gate: build-gate
453
+ target: "self"
454
+ # —— 测试计划结构(TESTPLAN-STRUCT,test_plan 产物结构完整性)——
455
+ - id: TESTPLAN-STRUCT
456
+ executor: document_structure
457
+ rule: "测试计划须含「测试范围」「测试条目」「环境与数据」「执行顺序」「验收标准」「完成判定」章节"
458
+ severity: warning
459
+ check_type: deterministic
460
+ required_artifact: 测试计划模版
461
+ evidence_required: ["docs/build/测试计划.md"]
462
+ gate: build-gate
463
+ target: self
464
+ # —— 产物间一致性(cross_validation:测试覆盖需求)——
465
+ - id: XVAL-TEST-REQ
466
+ executor: cross_validation
467
+ rule: "REQ-* 一致性+覆盖率"
468
+ severity: warning
469
+ check_type: deterministic
470
+ required_artifact: 测试计划模版
471
+ evidence_required: ["需求分析模版"]
472
+ gate: build-gate
473
+ target: "self"
474
+ - id: TESTPLAN-BLOCK
475
+ executor: document_structure
476
+ check_type: deterministic
477
+ severity: error
215
478
  gate: build-gate
479
+ required_artifact: 测试计划模版
480
+ rule: "测试条目章节须有表格行(反退化:禁只列前几行后省略/一句话概括代替)"
481
+ block_check:
482
+ item_pattern: '^##\s+2\.'
483
+ require_table: true
484
+ min_table_rows: 2
485
+ evidence_required: ["测试计划模版"]
216
486
  target: "self"
217
487
  ---
218
488
 
219
489
  # build-gate 强制检查清单
220
490
 
221
- 22 条确定性检查。bridge 从此文件聚合。
491
+ 48 条确定性检查(3 agent 交叉验证修复:8 过宽 regex error→warning / 删 4 形同虚设 / 加 TESTPLAN-STRUCT / SEC-12 加 Java JWT / 加 BLD-DELIB 超大系统研讨兜底 / 加 MULTI-ENGINE-STRUCT 多工程骨架兜底)。注:verify 域 ARCH-DEP(external_command 缺 command → dependency-cruiser 从未真跑、永远 fail-closed)与 ARC-05(幽灵 check:注释/guidance 引用但 enforced checks 不存在)为假覆盖,待 verify 域修(详见 verify/enforced.md)。
222
492
 
223
493
  对应工程经验:
224
- - TS-Q01
225
- - TS-Q02
226
- - TS-Q03
227
- - TS-Q04
228
- - SEC-01
229
- - SEC-02
230
- - SEC-03
231
- - SEC-04
232
- - SEC-05
233
- - SEC-06
234
- - SEC-07
235
- - SEC-08
236
- - SEC-09
237
- - SEC-10
238
- - SEC-11
239
- - SEC-12
240
- - BLD-G01
241
- - BLD-G02
242
- - BLD-G03
243
- - BLD-G04
244
- - BLD-G05
245
- - BLD-G06
494
+ - TS-Q01~04(TS 类型/相等/var)
495
+ - SEC-01~12(安全:注入/密钥/日志/重定向/路径/反序列化/SSRF/CORS/Cookie/JWT)
496
+ - ARC-01~08(架构:Controller/Entity/事务/DI/前端fetch/循环依赖/HttpServlet)
497
+ - CON-01~10(并发:共享状态/JVM锁/原子/事务自调用/ThreadLocal/线程池)—— 归位自 verify
498
+ - API-03~10(API:权限/分页/校验/RESTful/响应包装/版本号/Swagger)—— 归位自 verify
499
+ - BLD-G01/02/04/05(前置门禁/偷懒模式/tsc/vitest)
500
+ - BLD-DELIB(超大系统 build 前强制研讨实现策略:SLC≥5 须有 build 研讨记录)
501
+ - MULTI-ENGINE-STRUCT(多工程骨架兜底:intent projects 每端须有 src/ + 独立 .gitignore)
502
+ - LOG-ZH(中文日志 regex 验证;原 BLD-G03 中文日志部分硬化)
503
+ - 中文注释纪律 → guidance《注释纪律》(软,原 BLD-G03 non_chinese_comment 拆出)
504
+ - 原 BLD-G06(密钥/鉴权/注入/漏洞)已删:密钥由 SEC-04、注入由 SEC-01、漏洞由依赖扫描覆盖(重复+假声明)
505
+ - XVAL-TEST-REQ(测试↔需求覆盖)
@@ -0,0 +1,75 @@
1
+ ---
2
+ id: ka-guidance-专项实现
3
+ kind: guidance
4
+ title: 专项实现
5
+ sync_policy: copy_to_project
6
+ status: active
7
+ triggers:
8
+ - 数据库迁移
9
+ - 接口集成
10
+ - 性能优化
11
+ - 性能分析
12
+ - 异步
13
+ - 缓存
14
+ - 定时任务
15
+ - 文件上传
16
+ extra:
17
+ name: specialized-implementation
18
+ scope:
19
+ - '*'
20
+ products:
21
+ - '*'
22
+ type: procedure
23
+ lifecycle_status: active
24
+ version: 1.0.0
25
+ last_reviewed: '2026-06-17'
26
+ verification_layer: L2
27
+ stage: build
28
+ domain: build
29
+ owner_mechanism: mc-backend-pattern
30
+ ---
31
+
32
+ # 专项实现:特定场景怎么做
33
+
34
+ > 吸收旧的「数据库迁移」「接口集成流水线」「性能分析」「性能流水线」「缓存策略」「异步导出」等。
35
+ > 按需注入,不强制全套。
36
+
37
+ ## 数据库迁移
38
+
39
+ - migration 脚本成对(up + down),可回滚
40
+ - 大表变更评估锁表影响,分批/在线 DDL
41
+ - 数据迁移新老比对,回滚后一致性验证
42
+ - 详见 [[兼容性与迁移评估]]
43
+
44
+ ## 接口集成
45
+
46
+ - 接口契约先行(OpenAPI),契约评审后再实现
47
+ - 字段映射精确到 表.字段
48
+ - 对接外部系统考虑超时/重试/幂等/签名
49
+ - 异常路径明确(对方不可用怎么办)
50
+
51
+ ## 性能优化
52
+
53
+ - 先测量后优化(性能分析数据为证据,不靠猜)
54
+ - 优化目标量化(如 P99 < 200ms)
55
+ - 关注 N+1 查询、大循环、不必要序列化
56
+ - 缓存考虑一致性/失效/穿透/雪崩
57
+
58
+ ## 异步与定时
59
+
60
+ - 异步任务幂等(可重试不重复执行)
61
+ - 定时任务考虑并发执行/分布式锁
62
+ - 长任务可中断、可观测进度
63
+
64
+ ## 文件上传/导出
65
+
66
+ - 限制类型/大小,校验内容(防恶意文件)
67
+ - 大文件流式处理/分片,不一次性进内存
68
+ - 导出异步化,提供进度查询
69
+
70
+ ## 禁止
71
+
72
+ - 迁移脚本无回滚(违规)
73
+ - 接口集成不定义契约(违规)
74
+ - 性能优化无测量证据(违规,[[证据驱动与反幻觉]])
75
+ - 异步任务不幂等(违规)
@@ -0,0 +1,75 @@
1
+ ---
2
+ id: ka-guidance-安全加固
3
+ kind: guidance
4
+ title: 安全加固
5
+ sync_policy: copy_to_project
6
+ status: active
7
+ triggers:
8
+ - 安全
9
+ - 权限
10
+ - 认证
11
+ - 授权
12
+ - 加固
13
+ - 鉴权
14
+ - 熔断
15
+ - 限流
16
+ extra:
17
+ name: security-hardening
18
+ scope:
19
+ - '*'
20
+ products:
21
+ - '*'
22
+ type: procedure
23
+ lifecycle_status: active
24
+ version: 1.0.0
25
+ last_reviewed: '2026-06-17'
26
+ verification_layer: L2
27
+ stage: build
28
+ domain: build
29
+ owner_mechanism: mc-privacy-boundary
30
+ ---
31
+
32
+ # 安全加固:编码时怎么堵漏洞
33
+
34
+ > 吸收旧的「安全加固」「安全审查」「安全审计」「权限认证」「熔断降级」。
35
+ > build-gate 的 SEC-01~12 是硬门禁(确定性正则),本 guidance 是方法指导。
36
+
37
+ ## 输入校验(第一道防线)
38
+
39
+ - 所有外部输入校验:类型、范围、格式、长度
40
+ - SQL 用参数化查询,禁字符串拼接(SEC-01)
41
+ - 禁 innerHTML 直接赋值,用安全 DOM API/转义(SEC-02,防 XSS)
42
+ - 禁 eval/Function 动态执行(SEC-03)
43
+
44
+ ## 认证与授权
45
+
46
+ - 每个接口明确权限要求
47
+ - 写操作必须鉴权
48
+ - JWT 校验签名算法,禁未校验 decode(SEC-12)
49
+ - Cookie 设 secure/httpOnly(SEC-11)
50
+
51
+ ## 敏感信息
52
+
53
+ - 密钥走环境变量/密钥管理,禁硬编码(SEC-04,shared-gate SEC-02)
54
+ - 日志禁打印密码/token/身份证(SEC-05)
55
+ - 路径参数防遍历(SEC-07)
56
+
57
+ ## 外部交互
58
+
59
+ - 重定向校验目标(SEC-06,防开放重定向)
60
+ - 外部请求校验目标(SEC-09,防 SSRF)
61
+ - 反序列化白名单(SEC-08)
62
+ - CORS 收紧 allowedOrigins,禁 `*`(SEC-10)
63
+
64
+ ## 稳定性(熔断降级)
65
+
66
+ - 跨系统调用设超时/重试/熔断
67
+ - 限流保护核心接口
68
+ - 降级策略:依赖不可用时系统的行为
69
+
70
+ ## 禁止
71
+
72
+ - 信任客户端输入不校验(违规)
73
+ - 拼接 SQL(违规)
74
+ - 打印敏感信息到日志(违规)
75
+ - 写接口不鉴权(违规)
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: ka-guidance-注释纪律
3
+ kind: guidance
4
+ title: 注释纪律
5
+ sync_policy: engine_only
6
+ status: active
7
+ triggers:
8
+ - 写代码
9
+ - 实现
10
+ - 编码
11
+ - 加类
12
+ - 加方法
13
+ - 注释
14
+ - Javadoc
15
+ - 文档注释
16
+ extra:
17
+ name: comment-discipline
18
+ scope:
19
+ - '*'
20
+ products:
21
+ - '*'
22
+ type: procedure
23
+ lifecycle_status: active
24
+ version: 1.0.0
25
+ domain: build
26
+ owner_mechanism: mc-backend-pattern
27
+ ---
28
+
29
+ # 注释纪律
30
+
31
+ > 代码注释中文契约(原 BLD-G03 的 `non_chinese_comment` 部分)。
32
+ > 为何软:判"类有无 doc""doc 是否含职责边界"需 AST + 语义,regex_pattern_scan(行扫)做不到精确。硬标会假覆盖(=原 BLD-G03 的坑)。靠 guidance 注入 + AI 自觉 + 对抗审查复核。中文**日志**由硬规则 LOG-ZH 验证(regex 可判)。
33
+
34
+ ## 类必须有中文 doc
35
+ - 说明**职责 + 边界**:这个类管什么、不管什么、与谁协作
36
+
37
+ ## 方法必须有中文 doc
38
+ - **职责**(做什么)+ **边界**(不做什么)+ **入参**(含义/约束)+ **出参**(含义)+ **异常**(何时抛)
39
+
40
+ ## 重要业务行须中文行注释
41
+ - 判断 / 折中 / 绕过 / 业务规则 / 性能取舍 —— 这些"为什么这么写"的行须注释
42
+ - 显而易见的代码不需注释(避免噪音)
43
+
44
+ ## 所有注释中文
45
+ - 与代码日志中文一致
46
+
47
+ ## 关联
48
+ - [[编码纪律]] / [[证据驱动与反幻觉]]