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
@@ -1,154 +0,0 @@
1
- ---
2
- id: ka-review-rule-安全审查规则
3
- kind: guidance
4
- title: 安全审查
5
- triggers:
6
- - 安全
7
- - 注入
8
- - XSS
9
- - 越权
10
- - 敏感信息
11
- sync_policy: copy_to_project
12
- status: active
13
- extra:
14
- name: security-rules
15
- type: constraint
16
- scope:
17
- - backend
18
- - frontend
19
- products:
20
- - '*'
21
- lifecycle_status: active
22
- version: 1.2.0
23
- last_reviewed: '2026-06-04'
24
- domain: build
25
- verification_layer: L2
26
- stage: build
27
- owner_mechanism: mc-generic-review
28
- ---
29
-
30
- ## SEC-01: SQL 字符串拼接导致注入风险
31
- languages: [通用]
32
- pattern: /(SELECT|INSERT|UPDATE|DELETE)\b.*[\+${]/
33
- severity: error
34
- check_type: deterministic
35
- scope: backend
36
- description: 禁止使用字符串拼接构造 SQL,必须使用参数化查询(PreparedStatement / MyBatis #{})
37
- evidence_required:
38
- - "扫描结果:含 SQL 拼接的文件路径+行号"
39
- - "修复确认:参数化查询替换证据"
40
-
41
- ## SEC-02: innerHTML 赋值存在 XSS 风险
42
- languages: [通用]
43
- pattern: /\.innerHTML\s*=/
44
- severity: error
45
- check_type: deterministic
46
- scope: frontend
47
- description: 禁止使用 innerHTML 直接插入用户内容,必须使用 textContent 或 DOMPurify 净化
48
- evidence_required:
49
- - "扫描结果:含 innerHTML 赋值的文件路径+行号"
50
- - "修复确认:使用安全替代方案证据"
51
-
52
- ## SEC-03: eval 或 Function 构造器执行动态代码
53
- languages: [通用]
54
- pattern: /\beval\s*\(|new\s+Function\s*\(/
55
- severity: error
56
- check_type: deterministic
57
- scope: [backend, frontend]
58
- description: 禁止使用 eval() 和 new Function(),存在任意代码执行风险
59
- evidence_required:
60
- - "扫描结果:含 eval/Function 的文件路径+行号"
61
-
62
- ## SEC-04: 硬编码的密码/密钥/token
63
- languages: [通用]
64
- pattern: /password\s*=\s*["'][^"']+["']|secret[_-]?key\s*=\s*["'][^"']+["']|api[_-]?key\s*=\s*["'][^"']+["']/i
65
- severity: error
66
- check_type: deterministic
67
- scope: [backend, frontend]
68
- description: 敏感凭证禁止硬编码在源码中,必须使用环境变量或密钥管理服务
69
- evidence_required:
70
- - "扫描结果:含硬编码凭证的文件路径+行号"
71
- - "修复确认:迁移到环境变量/密钥管理服务证据"
72
-
73
- ## SEC-05: 日志中打印敏感信息
74
- languages: [通用]
75
- pattern: /log\.\w+\(.*(?:password|token|secret|身份证|idcard)/i
76
- severity: error
77
- check_type: deterministic
78
- scope: backend
79
- description: 禁止在日志中输出密码、token、身份证号等敏感字段,必须脱敏处理
80
- evidence_required:
81
- - "扫描结果:含敏感信息日志的文件路径+行号"
82
- - "修复确认:脱敏处理证据"
83
-
84
- ## SEC-06: 未验证的外部重定向
85
- languages: [通用]
86
- pattern: /redirect\s*\(\s*(?:req|request|ctx)\.\w+/
87
- severity: warning
88
- check_type: deterministic
89
- scope: backend
90
- description: 重定向目标必须校验白名单域名,防止开放重定向攻击
91
- evidence_required:
92
- - "扫描结果:含未验证重定向的文件路径+行号"
93
-
94
- ## SEC-07: 路径遍历风险
95
- languages: [通用]
96
- pattern: /\.\.\/|\.\.\\/
97
- severity: warning
98
- check_type: deterministic
99
- scope: [backend, frontend]
100
- description: 文件路径操作必须校验和规范化,防止通过 ../ 遍历到非授权目录
101
- evidence_required:
102
- - "扫描结果:含路径遍历风险的文件路径+行号"
103
-
104
- ## SEC-08: 不安全的反序列化
105
- languages: [通用]
106
- pattern: /ObjectInputStream|unserialize|pickle\.load/
107
- severity: error
108
- check_type: deterministic
109
- scope: backend
110
- description: 禁止直接反序列化不可信数据,必须使用白名单校验或 JSON 替代方案
111
- evidence_required:
112
- - "扫描结果:含不安全反序列化的文件路径+行号"
113
-
114
- ## SEC-09: SSRF 服务端请求伪造
115
- languages: [java]
116
- pattern: /(?:HttpClient|RestTemplate|WebClient|OkHttp|URLConnection)\s*\(\s*(?:req|request|ctx|param)\./
117
- severity: error
118
- check_type: deterministic
119
- scope: backend
120
- description: 外部 URL 请求禁止直接使用用户输入,必须校验 IP/域名白名单,防止 SSRF 攻击
121
- evidence_required:
122
- - "扫描结果:含 SSRF 风险的文件路径+行号"
123
- - "修复确认:白名单校验证据"
124
-
125
- ## SEC-10: CORS 配置过于宽松
126
- languages: [通用]
127
- pattern: /allowedOrigins\s*\(\s*"\*"\s*\)|Access-Control-Allow-Origin.*\*/
128
- severity: warning
129
- check_type: deterministic
130
- scope: backend
131
- description: CORS 配置禁止使用通配符 *,必须指定具体域名白名单
132
- evidence_required:
133
- - "扫描结果:含宽松 CORS 配置的文件路径+行号"
134
-
135
- ## SEC-11: 未启用 HTTPS 的 Cookie
136
- languages: [通用]
137
- pattern: /cookie.*(?:secure\s*:\s*false|httpOnly\s*:\s*false)/i
138
- severity: warning
139
- check_type: deterministic
140
- scope: [backend, frontend]
141
- description: 敏感 Cookie 必须设置 Secure 和 HttpOnly 标志
142
- evidence_required:
143
- - "扫描结果:含不安全 Cookie 配置的文件路径+行号"
144
-
145
- ## SEC-12: JWT 未校验签名算法
146
- languages: [通用]
147
- pattern: /JWT|jwt.*verify|jwt.*decode/
148
- severity: error
149
- check_type: deterministic
150
- scope: backend
151
- description: JWT 必须显式指定签名算法(如 HS256/RS256),禁止接受 none 算法
152
- evidence_required:
153
- - "扫描结果:含 JWT 操作的文件路径+行号"
154
- - "修复确认:显式指定签名算法证据"
@@ -1,47 +0,0 @@
1
- ---
2
- id: ka-artifact_template-安全审计模版
3
- kind: artifact
4
- title: 安全审计
5
- sync_policy: copy_to_project
6
- status: active
7
- extra:
8
- name: security-audit
9
- scope:
10
- - backend
11
- - frontend
12
- products:
13
- - '*'
14
- lifecycle_status: active
15
- version: 1.1.0
16
- last_reviewed: '2026-06-01'
17
- type: artifact
18
- domain: build
19
- stage: build
20
- owner_mechanism: mc-generic-artifact
21
- ---
22
-
23
- # 安全审计报告
24
-
25
- > **安全检查清单**:按 `build-gate.yaml` 执行 17 项安全门禁检查。
26
-
27
- ## 1. 审计范围
28
- - 审计对象:
29
- - 审计时间:
30
- - 审计方法(静态扫描/动态测试/人工审查):
31
-
32
- ## 2. 漏洞清单
33
- | 编号 | 漏洞类型(OWASP) | 风险等级 | 影响范围 | 所在文件/接口 | 描述 |
34
- |------|----------------|---------|---------|-------------|------|
35
-
36
- ## 3. 认证授权检查
37
- > 检查项详见 `build-gate.yaml` 认证授权类(7 项)
38
-
39
- ## 4. 数据安全检查
40
- > 检查项详见 `build-gate.yaml` 数据安全类(8 项)
41
-
42
- ## 5. 依赖安全检查
43
- > 检查项详见 `build-gate.yaml` 依赖安全类(2 项)
44
-
45
- ## 6. 修复计划
46
- | 编号 | 修复方案 | 计划完成时间 | 责任人 |
47
- |------|---------|------------|--------|
@@ -1,56 +0,0 @@
1
- ---
2
- id: ka-pattern-engineering-discipline
3
- kind: knowledge
4
- title: 工程纪律
5
- sync_policy: copy_to_project
6
- status: active
7
- extra:
8
- name: engineering-discipline
9
- scope:
10
- - backend
11
- - frontend
12
- products:
13
- - '*'
14
- lifecycle_status: active
15
- version: 1.1.0
16
- last_reviewed: '2026-06-01'
17
- type: knowledge
18
- domain:
19
- - build
20
- - verify
21
- verification_layer: L2
22
- stage: build
23
- owner_mechanism: mc-general-pattern
24
- ---
25
-
26
- ## 决策规则
27
- - 每行代码变更必须可追溯到任务卡片、设计决策或缺陷根因,禁止无来源的孤立变更
28
- - 解释不替代证据,"理论上修好了"不可接受,必须有执行证据
29
- - 推论不得冒充事实,必须显式区分已确认事实、推论和未知项
30
- - 未知项必须显式记录并跟进,禁止静默跳过
31
- - 规则只从真实缺陷中提取,禁止凭空捏造预防性规则
32
- - 复发缺陷必须产出至少一条规则或检查项(防复发闭环)
33
- - 设计必须提供可实施锚点(数据结构、接口定义、状态机),禁止只给抽象原则
34
- - 先验证后判断,禁止先下结论再找理由
35
- - 一级证据(运行时、真实部署、真实浏览器)优先于二级文档,禁止用 dry-run/静态分析/AI 摘要冒充运行时证据
36
- - 根因定位先于代码修改,禁止试错式补丁叠补丁
37
- - 自动修复循环上限 3 轮,同一错误 >=2 次触发回填,>=4 次记录为复发缺陷
38
- - 超出范围边界时立即上报,禁止自行决定扩范围
39
- - 编译告警必须全部处理,禁止忽略(设置 -Werror 或 CI 编译告警数阈值)
40
- - 代码提交前必须本地通过编译和单元测试,禁止把明显错误提交到远端
41
- - 依赖升级必须逐个进行并验证,禁止批量升级多个依赖
42
- - 线上配置变更必须通过配置中心(Nacos/Apollo),禁止直接修改配置文件重启
43
- - 每次发布必须有回滚方案和验证清单,不能"改了就上线"
44
-
45
- ## 验收项
46
- - [AC-01] 代码变更可追溯到任务或缺陷
47
- - [AC-02] 推论与事实有显式区分标记
48
- - [AC-03] 缺陷修复有执行证据
49
- - [AC-04] 复发缺陷有防复发规则
50
- - [AC-05] 运行时证据替代 dry-run/AI 摘要
51
- - [AC-06] 自动修复循环未超过 3 轮
52
- - [AC-07] 超范围变更有上报记录
53
- - [AC-08] 编译告警全部处理
54
- - [AC-09] 提交前本地验证
55
- - [AC-10] 依赖逐个升级
56
- - [AC-11] 发布有回滚方案
@@ -1,59 +0,0 @@
1
- ---
2
- id: ka-artifact_template-性能分析模版
3
- kind: artifact
4
- title: 性能分析
5
- sync_policy: copy_to_project
6
- status: active
7
- extra:
8
- name: performance-analysis
9
- scope:
10
- - backend
11
- - frontend
12
- products:
13
- - '*'
14
- lifecycle_status: active
15
- version: 1.1.0
16
- last_reviewed: '2026-06-01'
17
- type: artifact
18
- domain: build
19
- stage: build
20
- owner_mechanism: mc-generic-artifact
21
- ---
22
-
23
- # 性能分析报告
24
-
25
- ## 1. 性能概况
26
- | 指标 | 当前值 | 目标值 | 差距 |
27
- |------|--------|--------|------|
28
- | 接口响应时间(P99) | | | |
29
- | 页面首屏时间(FCP) | | | |
30
- | 数据库慢查询数 | | | |
31
- | 内存使用峰值 | | | |
32
- | CPU 使用峰值 | | | |
33
-
34
- ## 2. 瓶颈定位
35
- ### 2.1 数据库瓶颈
36
- - 慢查询 TOP 5(SQL、执行时间、扫描行数)
37
- - 缺失索引分析
38
- - 锁等待情况
39
-
40
- ### 2.2 应用瓶颈
41
- - 热点方法(耗时 TOP 10)
42
- - 内存泄漏嫌疑
43
- - 线程池使用率
44
-
45
- ### 2.3 前端瓶颈
46
- - 关键资源加载瀑布图
47
- - JavaScript 执行耗时
48
- - 渲染阻塞资源
49
-
50
- ## 3. 优化方案
51
- | 优先级 | 瓶颈点 | 优化方案 | 预期收益 | 实施风险 |
52
- |--------|--------|---------|---------|---------|
53
- | P0 | | | | |
54
- | P1 | | | | |
55
-
56
- ## 4. 测量方式
57
- - 基准测试方法:
58
- - 对比指标:
59
- - 验证环境:
@@ -1,53 +0,0 @@
1
- ---
2
- id: ka-procedure-性能流水线
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: performance-pipeline
18
- type: procedure
19
- scope:
20
- - backend
21
- - frontend
22
- products:
23
- - '*'
24
- lifecycle_status: active
25
- version: 1.1.0
26
- last_reviewed: '2026-06-01'
27
- domain:
28
- - build
29
- - verify
30
- verification_layer: L2
31
- stage: build
32
- owner_mechanism: mc-metric-governance
33
- ---
34
-
35
- # 性能优化管线
36
-
37
- ## 第1步:性能定位
38
- 量化性能指标(当前值/目标值)。定位瓶颈(慢查询/内存/CPU/网络/前端渲染)。收集证据(APM/慢查询日志/浏览器 DevTools/压测数据)。确定优化优先级(收益/成本排序)。
39
- 模版:性能分析.md
40
- 产出保存到:docs/analyze/*/01-性能分析.md
41
- 工具:sf_analyze
42
-
43
- ## 第2步:方案设计
44
- 针对瓶颈设计优化方案(索引优化/SQL 重写/缓存/连接池/异步/分页/懒加载)。评估方案影响范围和风险。确定可衡量的优化目标。
45
- 产出保存到:docs/architecture/01-架构设计文档.md
46
-
47
- ## 第3步:优化实施
48
- 按优先级逐步实施,每步优化后重新测量性能指标。禁止一次改多处再测量。保持优化前后功能行为一致。
49
- 工具:sf_work action=act
50
-
51
- ## 第4步:效果验证
52
- 对比优化前后的性能指标。全量测试确认无功能回归。代码审查关注:优化是否引入新问题、缓存一致性、并发安全。
53
- 工具:sf_work action=verify, sf_gate
@@ -1,76 +0,0 @@
1
- ---
2
- id: ka-procedure-接口集成流水线
3
- kind: guidance
4
- title: 接口集成流水线
5
- sync_policy: copy_to_project
6
- status: active
7
- triggers:
8
- - 第三方接口对接
9
- - 外部服务集成
10
- - API集成
11
- - 接口联调
12
- - 服务对接
13
- - 第三方API
14
- extra:
15
- name: api-integration-pipeline
16
- type: procedure
17
- scope:
18
- - backend
19
- - frontend
20
- products:
21
- - '*'
22
- lifecycle_status: active
23
- version: 1.2.0
24
- last_reviewed: '2026-06-04'
25
- domain:
26
- - build
27
- - verify
28
- verification_layer: L2
29
- stage: build
30
- owner_mechanism: mc-artifact-contract
31
- ---
32
-
33
- # 接口对接管线
34
-
35
- ## 第1步:契约分析
36
- 梳理第三方 API 能力清单(认证方式、请求/响应格式、错误码、限流配额、沙箱环境)。识别核心交互场景和数据映射关系。
37
- 模版:接口对接方案.md
38
- 产出保存到:docs/architecture/06-接口对接方案.md
39
- 工具:(本步骤为任务入口,由 sf_task 统一路由)
40
-
41
- ## 第2步:适配层实现
42
- 实现统一的 API 客户端封装(超时、重试、熔断、日志)。定义请求/响应 DTO 映射。配置 Mock 方案(沙箱/本地 Mock)支持独立开发。错误码映射为业务异常。
43
- 工具:sf_work action=act, sf_scaffold
44
-
45
- ## 第3步:联调测试
46
- 使用 Mock 环境验证基本流程。切换到沙箱环境验证真实交互。覆盖:正常流程、网络超时、服务端错误、限流响应、数据格式异常。
47
- 模版:测试计划.md
48
- 工具:sf_gate
49
-
50
- ## 第3a步:沙箱→生产差异记录
51
-
52
- | 差异项 | 沙箱行为 | 生产预期 | 风险评估 | 验证计划 |
53
- |--------|---------|---------|---------|---------|
54
- | | | | | |
55
-
56
- ## 第4步:验收上线
57
- 代码审查重点:超时配置、错误处理、敏感信息、日志脱敏。生产配置确认(URL、密钥、限流参数)。监控告警配置(调用成功率、响应时间)。
58
- 工具:sf_work action=verify, sf_gate
59
-
60
- ## 第5步:契约管理与监控增强
61
- 定义接口契约(OpenAPI/Swagger),明确请求/响应格式、错误码、版本号。编写接口 Mock 服务,前后端并行开发。接口变更必须更新文档并通知消费方,给予充足迁移时间。集成测试覆盖正常流 + 异常流(超时、错误响应、边界值)。接口上线后配置监控告警(响应时间 P99、错误率、调用量)。
62
-
63
- ## 检查点
64
- - [ ] 第三方 API 能力清单已梳理
65
- - [ ] 适配层超时/重试/熔断已配置
66
- - [ ] 沙箱联调通过
67
- - [ ] 接口文档与实现一致
68
- - [ ] Mock 服务可用
69
- - [ ] 集成测试覆盖异常场景
70
- - [ ] 接口监控告警已配置
71
-
72
- ## 注意事项
73
- - 第三方接口必须有降级方案(Mock/缓存/默认值),避免外部故障拖垮主流程
74
- - 外部接口调用必须设置超时(连接超时 + 读超时),禁止无限等待
75
- - 接口重试必须有退避策略和最大重试次数限制
76
- - 敏感数据传输必须加密(HTTPS + 敏感字段加密)
@@ -1,63 +0,0 @@
1
- ---
2
- id: ka-procedure-数据库迁移流程
3
- kind: guidance
4
- title: 数据库迁移
5
- sync_policy: copy_to_project
6
- status: active
7
- triggers:
8
- - 数据库变更
9
- - 表结构修改
10
- - migration
11
- - DDL
12
- - 加字段
13
- - 建表
14
- - 索引
15
- - 数据迁移
16
- - 表结构变更
17
- extra:
18
- name: database-migration
19
- type: procedure
20
- scope:
21
- - backend
22
- products:
23
- - '*'
24
- lifecycle_status: active
25
- version: 1.1.0
26
- last_reviewed: '2026-06-01'
27
- domain:
28
- - build
29
- - verify
30
- verification_layer: L2
31
- stage: build
32
- ---
33
-
34
- ## 适用场景
35
- 数据库表结构变更(新增表、加字段、改字段、加索引、数据迁移等)。所有 DDL 变更必须通过 migration 脚本管理,禁止手动执行。
36
-
37
- ## 步骤
38
- 1. 评估变更类型:加列、改列、删列、加索引、数据迁移、新建表
39
- 2. 确认向前兼容性:新列必须有默认值或允许 NULL,不删除正在使用的列
40
- 3. 编写 migration 脚本(Flyway/MyBatis Migrations),DDL 脚本放 resources/db,文件名 V{version}__{description}.sql(正向)和 U{version}__{description}.sql(回滚)
41
- 4. 确保 migration 脚本幂等(重复执行不出错)
42
- 5. 编写回滚脚本(每个 migration 必须有对应的 rollback)
43
- 6. 禁止在 migration 脚本中写业务逻辑(业务变更走应用代码)
44
- 7. 大表加列必须指定默认值或使用分批更新
45
- 8. 在开发环境执行 migration,验证表结构变更正确
46
- 9. 检查数据迁移逻辑:大数据量迁移需分批执行(每批 1000 条)
47
- 10. 在测试环境验证:运行应用 + 执行全量测试
48
- 11. 评估执行时间:大表加索引按锁表风险处理,需在低峰期执行并准备回滚窗口
49
- 12. 生产执行前备份数据库(全量或变更表)
50
-
51
- ## 检查点
52
- - [ ] migration 脚本有对应回滚脚本
53
- - [ ] migration 脚本幂等(可重复执行)
54
- - [ ] 新增列有默认值或允许 NULL(向前兼容)
55
- - [ ] migration 脚本无业务逻辑
56
- - [ ] 大数据量迁移使用分批策略
57
- - [ ] 生产执行前已完成数据库备份
58
-
59
- ## 注意事项
60
- - 禁止使用 DROP COLUMN(应标记为 deprecated 后续清理)
61
- - 加索引在 >100 万行表上使用 ONLINE DDL 或 pt-online-schema-change
62
- - migration 脚本一旦执行到生产不可修改(只能新增补偿脚本)
63
- - 字段兼容策略必须同时覆盖四层:数据库、接口契约、前端展示、导出逻辑
@@ -1,39 +0,0 @@
1
- ---
2
- id: 新老逻辑比对日志
3
- kind: artifact
4
- title: 新老逻辑比对日志
5
- sync_policy: copy_to_project
6
- status: active
7
- extra:
8
- name: new-old-logic-comparison-log
9
- type: artifact
10
- scope:
11
- - '*'
12
- domain: build
13
- lifecycle_status: active
14
- stage: build
15
- owner_mechanism: mc-existing-system-artifact
16
- ---
17
-
18
- # 新老逻辑比对日志
19
-
20
- ## 1. 比对说明
21
- <!-- 记录关键节点的数据一致性校验结果 -->
22
-
23
- ## 2. 比对记录
24
-
25
- | 时间 | 接口 | 输入 | 老逻辑输出 | 新逻辑输出 | 一致 | 差异说明 |
26
- |---|---|---|---|---|---|---|
27
- | <!-- 时间 --> | <!-- 接口 --> | <!-- 输入 --> | <!-- 输出 --> | <!-- 输出 --> | 是/否 | <!-- 差异 --> |
28
-
29
- ## 3. 一致性统计
30
- - 总比对次数:<!-- 数量 -->
31
- - 一致次数:<!-- 数量 -->
32
- - 不一致次数:<!-- 数量 -->
33
- - 一致率:<!-- 百分比 -->
34
-
35
- ## 4. 自动化比对要求
36
- - 比对方式:Feature Toggle on/off,相同输入调用同一接口,对比新老逻辑输出
37
- - 一致率要求:100%(对应 COMP-BEH-01)
38
- - 不一致项处理:标记为阻断,须修复后重新比对,不得放行
39
- - 比对范围:每个切片涉及的所有接口端点均须执行新老逻辑比对
@@ -1,49 +0,0 @@
1
- ---
2
- id: ka-pattern-auth-permission
3
- kind: knowledge
4
- title: 权限认证
5
- sync_policy: copy_to_project
6
- status: active
7
- extra:
8
- name: auth-permission
9
- scope:
10
- - backend
11
- products:
12
- - '*'
13
- lifecycle_status: active
14
- version: 1.1.0
15
- last_reviewed: '2026-06-01'
16
- type: knowledge
17
- domain: build
18
- verification_layer: L2
19
- stage: build
20
- owner_mechanism: mc-backend-pattern
21
- ---
22
-
23
- ## 决策规则
24
- - 所有写接口必须有权限注解或 URL 级别鉴权
25
- - 禁止在 Controller 中硬编码角色判断(if role == "ADMIN")
26
- - JWT Token 必须设置过期时间(建议 2-8 小时)
27
- - 密码必须使用 BCrypt 哈希存储,禁止明文或可逆加密
28
- - 前端隐藏按钮不能替代后端权限校验
29
- - 任何新增或修改菜单必须同步声明角色、权限标识、默认可见性和数据范围
30
- - 页面可见不等于可操作,按钮权限、接口权限和数据权限必须分别定义
31
- - 接口鉴权要求必须能回链到角色与权限模型,不能只写 auth=token
32
- - 禁止菜单可见性与接口可调用性解耦(菜单隐藏但接口暴露)
33
- - 登录失败不得提示具体原因(不区分"用户名不存在"和"密码错误")
34
- - 登录接口必须有暴力破解防护(连续失败 N 次锁定或验证码)
35
- - Session ID 必须在登录成功后重新生成,防止会话固定攻击
36
- - 前端敏感操作(修改密码、删除)必须重新验证身份(re-authentication)
37
- - API 接口必须实现限流(Rate Limiting),防止暴力枚举和 CC 攻击
38
-
39
- ## 验收项
40
- - [AC-01] 写接口有权限注解或鉴权
41
- - [AC-02] Token 有过期时间
42
- - [AC-03] 密码 BCrypt 哈希存储
43
- - [AC-04] 无硬编码角色判断
44
- - [AC-05] 菜单/按钮/接口/数据范围三层权限同步定义
45
- - [AC-06] 接口鉴权可回链到角色权限模型
46
- - [AC-07] 登录失败不暴露具体原因
47
- - [AC-08] 有暴力破解防护机制
48
- - [AC-09] 敏感操作重新验证身份
49
- - [AC-10] API 接口有限流策略
@@ -1,45 +0,0 @@
1
- ---
2
- id: ka-pattern-testing-quality
3
- kind: knowledge
4
- title: 测试质量
5
- sync_policy: copy_to_project
6
- status: active
7
- extra:
8
- name: testing-quality
9
- scope:
10
- - backend
11
- - frontend
12
- products:
13
- - '*'
14
- lifecycle_status: active
15
- version: 1.1.0
16
- last_reviewed: '2026-06-01'
17
- type: knowledge
18
- domain: build
19
- verification_layer: L2
20
- stage: build
21
- owner_mechanism: mc-general-pattern
22
- ---
23
-
24
- ## 决策规则
25
- - 每个接口至少覆盖:正常流程、参数缺失、权限不足、业务异常、边界值
26
- - 端到端业务测试必须从浏览器页面模拟真实用户操作,直接 API 调用只能补充不能替代
27
- - 测试失败必须在源逻辑修复,禁止修改测试来适配 Bug
28
- - 测试数据准备必须走业务 API 或页面操作,禁止直接 SQL INSERT 业务数据
29
- - 禁止在测试脚本中硬编码凭据,必须从环境变量或配置文件读取
30
- - Docker 部署必须从全新镜像构建,禁止 docker commit 和热补丁
31
- - 单元测试覆盖率核心逻辑必须 ≥ 80%,关键路径(支付/权限)必须 100%
32
- - 测试方法命名必须清晰表达测试场景(如 shouldReturn401WhenTokenExpired)
33
- - 测试数据必须使用工厂方法或 Builder 构建,禁止硬编码 magic values
34
- - 集成测试必须使用测试容器(Testcontainers)或内存数据库,禁止依赖外部环境
35
- - 每个修复的 bug 必须有对应的回归测试,防止问题复现
36
-
37
- ## 验收项
38
- - [AC-01] 接口测试覆盖正常+异常+边界
39
- - [AC-02] E2E 测试从浏览器模拟用户操作
40
- - [AC-03] 测试失败修复源逻辑而非改测试
41
- - [AC-04] 测试数据走业务 API 非 SQL 直写
42
- - [AC-05] 核心逻辑覆盖率 ≥ 80%
43
- - [AC-06] 测试方法名清晰表达场景
44
- - [AC-07] 测试数据工厂构建
45
- - [AC-08] Bug 修复有回归测试