soloforge 1.1.47 → 1.1.49

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 (266) hide show
  1. package/README.md +11 -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 +51 -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.d.ts +3 -3
  18. package/dist/context/adapters/shared/integration_guide.js +18 -8
  19. package/dist/context/adapters/shared/integration_guide.js.map +1 -1
  20. package/dist/context/adapters/shared/workflow_template.js +1 -1
  21. package/dist/context/config/intent_schema.d.ts +793 -6
  22. package/dist/context/config/intent_schema.d.ts.map +1 -1
  23. package/dist/context/config/intent_schema.js +9 -0
  24. package/dist/context/config/intent_schema.js.map +1 -1
  25. package/dist/context/config/resolver.d.ts +9 -0
  26. package/dist/context/config/resolver.d.ts.map +1 -1
  27. package/dist/context/config/resolver.js +5 -0
  28. package/dist/context/config/resolver.js.map +1 -1
  29. package/dist/core/adversarial_review_store.d.ts +133 -0
  30. package/dist/core/adversarial_review_store.d.ts.map +1 -0
  31. package/dist/core/adversarial_review_store.js +161 -0
  32. package/dist/core/adversarial_review_store.js.map +1 -0
  33. package/dist/core/domain_transition.d.ts.map +1 -1
  34. package/dist/core/domain_transition.js +3 -0
  35. package/dist/core/domain_transition.js.map +1 -1
  36. package/dist/core/gate_record_store.d.ts +2 -0
  37. package/dist/core/gate_record_store.d.ts.map +1 -1
  38. package/dist/core/gate_record_store.js +17 -4
  39. package/dist/core/gate_record_store.js.map +1 -1
  40. package/dist/core/git_utils.d.ts +1 -1
  41. package/dist/core/git_utils.d.ts.map +1 -1
  42. package/dist/core/git_utils.js +8 -4
  43. package/dist/core/git_utils.js.map +1 -1
  44. package/dist/core/observer.d.ts.map +1 -1
  45. package/dist/core/observer.js +26 -2
  46. package/dist/core/observer.js.map +1 -1
  47. package/dist/core/task_context/constants.d.ts.map +1 -1
  48. package/dist/core/task_context/constants.js +4 -2
  49. package/dist/core/task_context/constants.js.map +1 -1
  50. package/dist/core/task_context/manager.d.ts +4 -4
  51. package/dist/core/task_context/manager.d.ts.map +1 -1
  52. package/dist/core/task_context/manager.js +69 -62
  53. package/dist/core/task_context/manager.js.map +1 -1
  54. package/dist/core/task_context/manager_setters.d.ts +2 -0
  55. package/dist/core/task_context/manager_setters.d.ts.map +1 -1
  56. package/dist/core/task_context/manager_setters.js +10 -0
  57. package/dist/core/task_context/manager_setters.js.map +1 -1
  58. package/dist/core/task_context/stage_fact_ownership.js +1 -1
  59. package/dist/core/task_context/stage_fact_ownership.js.map +1 -1
  60. package/dist/core/task_context/status_transitions.js +5 -5
  61. package/dist/core/task_context/status_transitions.js.map +1 -1
  62. package/dist/core/types.d.ts +29 -0
  63. package/dist/core/types.d.ts.map +1 -1
  64. package/dist/core/waiver_store.d.ts +100 -0
  65. package/dist/core/waiver_store.d.ts.map +1 -0
  66. package/dist/core/waiver_store.js +185 -0
  67. package/dist/core/waiver_store.js.map +1 -0
  68. package/dist/domain/asset_registry/derived_registry.d.ts +10 -0
  69. package/dist/domain/asset_registry/derived_registry.d.ts.map +1 -1
  70. package/dist/domain/asset_registry/derived_registry.js +10 -0
  71. package/dist/domain/asset_registry/derived_registry.js.map +1 -1
  72. package/dist/domain/asset_registry/derived_types.d.ts +27 -0
  73. package/dist/domain/asset_registry/derived_types.d.ts.map +1 -1
  74. package/dist/domain/asset_registry/derived_types.js +10 -0
  75. package/dist/domain/asset_registry/derived_types.js.map +1 -1
  76. package/dist/domain/build/engine.d.ts +1 -0
  77. package/dist/domain/build/engine.d.ts.map +1 -1
  78. package/dist/domain/build/engine.js +34 -4
  79. package/dist/domain/build/engine.js.map +1 -1
  80. package/dist/domain/contracts/design_lifecycle_contract.d.ts.map +1 -1
  81. package/dist/domain/contracts/design_lifecycle_contract.js +11 -4
  82. package/dist/domain/contracts/design_lifecycle_contract.js.map +1 -1
  83. package/dist/domain/design/contract.d.ts.map +1 -1
  84. package/dist/domain/design/contract.js +11 -0
  85. package/dist/domain/design/contract.js.map +1 -1
  86. package/dist/domain/design/engine.d.ts +1 -0
  87. package/dist/domain/design/engine.d.ts.map +1 -1
  88. package/dist/domain/design/engine.js +35 -3
  89. package/dist/domain/design/engine.js.map +1 -1
  90. package/dist/domain/engine_helpers.d.ts +37 -0
  91. package/dist/domain/engine_helpers.d.ts.map +1 -1
  92. package/dist/domain/engine_helpers.js +86 -0
  93. package/dist/domain/engine_helpers.js.map +1 -1
  94. package/dist/domain/operate/engine.d.ts +1 -0
  95. package/dist/domain/operate/engine.d.ts.map +1 -1
  96. package/dist/domain/operate/engine.js +19 -2
  97. package/dist/domain/operate/engine.js.map +1 -1
  98. package/dist/domain/types.d.ts +6 -0
  99. package/dist/domain/types.d.ts.map +1 -1
  100. package/dist/domain/types.js.map +1 -1
  101. package/dist/domain/verify/engine.d.ts +1 -0
  102. package/dist/domain/verify/engine.d.ts.map +1 -1
  103. package/dist/domain/verify/engine.js +18 -1
  104. package/dist/domain/verify/engine.js.map +1 -1
  105. package/dist/gate/certainty_gate.d.ts +10 -0
  106. package/dist/gate/certainty_gate.d.ts.map +1 -1
  107. package/dist/gate/certainty_gate.js.map +1 -1
  108. package/dist/gate/contracts/tool_actions.d.ts +11 -2
  109. package/dist/gate/contracts/tool_actions.d.ts.map +1 -1
  110. package/dist/gate/contracts/tool_actions.js +12 -2
  111. package/dist/gate/contracts/tool_actions.js.map +1 -1
  112. package/dist/gate/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
  113. package/dist/gate/contracts/tool_invocation_contract_registry.js +11 -1
  114. package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
  115. package/dist/gate/executors/executors_annotation.d.ts +33 -10
  116. package/dist/gate/executors/executors_annotation.d.ts.map +1 -1
  117. package/dist/gate/executors/executors_annotation.js +119 -64
  118. package/dist/gate/executors/executors_annotation.js.map +1 -1
  119. package/dist/gate/executors/executors_artifact.d.ts +20 -1
  120. package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
  121. package/dist/gate/executors/executors_artifact.js +83 -123
  122. package/dist/gate/executors/executors_artifact.js.map +1 -1
  123. package/dist/gate/executors/executors_build.d.ts +2 -2
  124. package/dist/gate/executors/executors_build.d.ts.map +1 -1
  125. package/dist/gate/executors/executors_build.js +28 -126
  126. package/dist/gate/executors/executors_build.js.map +1 -1
  127. package/dist/gate/executors/executors_deploy.d.ts.map +1 -1
  128. package/dist/gate/executors/executors_deploy.js +35 -7
  129. package/dist/gate/executors/executors_deploy.js.map +1 -1
  130. package/dist/gate/executors/executors_external_command.d.ts.map +1 -1
  131. package/dist/gate/executors/executors_external_command.js +54 -2
  132. package/dist/gate/executors/executors_external_command.js.map +1 -1
  133. package/dist/gate/executors/executors_field_mapping.d.ts +7 -0
  134. package/dist/gate/executors/executors_field_mapping.d.ts.map +1 -0
  135. package/dist/gate/executors/executors_field_mapping.js +191 -0
  136. package/dist/gate/executors/executors_field_mapping.js.map +1 -0
  137. package/dist/gate/executors/executors_jacoco.d.ts +3 -0
  138. package/dist/gate/executors/executors_jacoco.d.ts.map +1 -0
  139. package/dist/gate/executors/executors_jacoco.js +70 -0
  140. package/dist/gate/executors/executors_jacoco.js.map +1 -0
  141. package/dist/gate/executors/executors_prerequisite.d.ts +1 -1
  142. package/dist/gate/executors/executors_prerequisite.d.ts.map +1 -1
  143. package/dist/gate/executors/executors_prerequisite.js +2 -62
  144. package/dist/gate/executors/executors_prerequisite.js.map +1 -1
  145. package/dist/gate/executors/executors_probe.d.ts +1 -0
  146. package/dist/gate/executors/executors_probe.d.ts.map +1 -1
  147. package/dist/gate/executors/executors_probe.js +1 -0
  148. package/dist/gate/executors/executors_probe.js.map +1 -1
  149. package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
  150. package/dist/gate/executors/executors_regex_scan.js +34 -13
  151. package/dist/gate/executors/executors_regex_scan.js.map +1 -1
  152. package/dist/gate/executors/executors_scope.d.ts +7 -3
  153. package/dist/gate/executors/executors_scope.d.ts.map +1 -1
  154. package/dist/gate/executors/executors_scope.js +20 -173
  155. package/dist/gate/executors/executors_scope.js.map +1 -1
  156. package/dist/gate/executors/executors_trace.d.ts +5 -0
  157. package/dist/gate/executors/executors_trace.d.ts.map +1 -1
  158. package/dist/gate/executors/executors_trace.js +295 -4
  159. package/dist/gate/executors/executors_trace.js.map +1 -1
  160. package/dist/gate/executors/index.d.ts.map +1 -1
  161. package/dist/gate/executors/index.js +4 -2
  162. package/dist/gate/executors/index.js.map +1 -1
  163. package/dist/gate/gate_engine.d.ts +20 -0
  164. package/dist/gate/gate_engine.d.ts.map +1 -1
  165. package/dist/gate/gate_engine.js +58 -6
  166. package/dist/gate/gate_engine.js.map +1 -1
  167. package/dist/gate/gate_registry_bridge.d.ts +12 -2
  168. package/dist/gate/gate_registry_bridge.d.ts.map +1 -1
  169. package/dist/gate/gate_registry_bridge.js +7 -5
  170. package/dist/gate/gate_registry_bridge.js.map +1 -1
  171. package/dist/gate/middleware_gates.js +1 -1
  172. package/dist/gate/middleware_gates.js.map +1 -1
  173. package/dist/gate/release/gate_checks/checkAssetAntiBloat.d.ts.map +1 -1
  174. package/dist/gate/release/gate_checks/checkAssetAntiBloat.js +3 -0
  175. package/dist/gate/release/gate_checks/checkAssetAntiBloat.js.map +1 -1
  176. package/dist/gate/scope_resolver.d.ts +7 -0
  177. package/dist/gate/scope_resolver.d.ts.map +1 -1
  178. package/dist/gate/scope_resolver.js +1 -1
  179. package/dist/gate/scope_resolver.js.map +1 -1
  180. package/dist/index.js +5 -0
  181. package/dist/index.js.map +1 -1
  182. package/dist/server/tools/index.d.ts.map +1 -1
  183. package/dist/server/tools/index.js +4 -2
  184. package/dist/server/tools/index.js.map +1 -1
  185. package/dist/server/tools/middleware.d.ts.map +1 -1
  186. package/dist/server/tools/middleware.js +1 -0
  187. package/dist/server/tools/middleware.js.map +1 -1
  188. package/dist/server/tools/schemas.d.ts +10 -0
  189. package/dist/server/tools/schemas.d.ts.map +1 -1
  190. package/dist/server/tools/schemas.js +10 -0
  191. package/dist/server/tools/schemas.js.map +1 -1
  192. package/dist/server/tools/sf_doctor.d.ts +8 -0
  193. package/dist/server/tools/sf_doctor.d.ts.map +1 -1
  194. package/dist/server/tools/sf_doctor.js +58 -2
  195. package/dist/server/tools/sf_doctor.js.map +1 -1
  196. package/dist/server/tools/sf_task.d.ts +83 -0
  197. package/dist/server/tools/sf_task.d.ts.map +1 -1
  198. package/dist/server/tools/sf_task.js +121 -4
  199. package/dist/server/tools/sf_task.js.map +1 -1
  200. package/dist/server/tools/sf_waiver.d.ts +31 -0
  201. package/dist/server/tools/sf_waiver.d.ts.map +1 -0
  202. package/dist/server/tools/sf_waiver.js +139 -0
  203. package/dist/server/tools/sf_waiver.js.map +1 -0
  204. package/dist/server/tools/sf_work.d.ts +194 -0
  205. package/dist/server/tools/sf_work.d.ts.map +1 -1
  206. package/dist/server/tools/sf_work.js +603 -40
  207. package/dist/server/tools/sf_work.js.map +1 -1
  208. package/dist/shared/paths.d.ts +4 -0
  209. package/dist/shared/paths.d.ts.map +1 -1
  210. package/dist/shared/paths.js +6 -0
  211. package/dist/shared/paths.js.map +1 -1
  212. package/dist/shared/traceability_id_utils.js +3 -3
  213. package/dist/shared/traceability_id_utils.js.map +1 -1
  214. package/dist/types/pipeline_types.d.ts +4 -1
  215. package/dist/types/pipeline_types.d.ts.map +1 -1
  216. package/dist/verify/audit/probe_executor.d.ts +4 -1
  217. package/dist/verify/audit/probe_executor.d.ts.map +1 -1
  218. package/dist/verify/audit/probe_executor.js +4 -1
  219. package/dist/verify/audit/probe_executor.js.map +1 -1
  220. package/dist/verify/audit/probe_rule.d.ts +3 -0
  221. package/dist/verify/audit/probe_rule.d.ts.map +1 -1
  222. package/dist/verify/audit/probe_rule.js +3 -0
  223. package/dist/verify/audit/probe_rule.js.map +1 -1
  224. package/dist/verify/contracts/decision_workshop.d.ts.map +1 -1
  225. package/dist/verify/contracts/decision_workshop.js +4 -3
  226. package/dist/verify/contracts/decision_workshop.js.map +1 -1
  227. package/dist/verify/contracts/runtime_state_recovery_registry.d.ts.map +1 -1
  228. package/dist/verify/contracts/runtime_state_recovery_registry.js +0 -1
  229. package/dist/verify/contracts/runtime_state_recovery_registry.js.map +1 -1
  230. package/package.json +1 -1
  231. package/templates/build/enforced.md +263 -68
  232. package/templates/build//346/263/250/351/207/212/347/272/252/345/276/213.md +48 -0
  233. package/templates/build//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201.md +1 -0
  234. package/templates/build//346/265/213/350/257/225/350/256/241/345/210/222.md +9 -4
  235. package/templates/build//347/274/226/347/240/201/347/272/252/345/276/213.md +28 -1
  236. package/templates/design/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243.md +7 -0
  237. package/templates/design/enforced.md +204 -14
  238. 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 +9 -7
  239. package/templates/design//345/210/207/347/211/207/350/247/204/345/210/222.md +4 -0
  240. package/templates/design//345/274/200/345/217/221/345/210/207/347/211/207/350/256/241/345/210/222.md +76 -0
  241. 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 +2 -0
  242. package/templates/design//346/236/266/346/236/204/350/256/276/350/256/241.md +24 -0
  243. package/templates/design//350/256/276/350/256/241/345/206/263/347/255/226/347/272/252/345/276/213.md +58 -0
  244. package/templates/design//350/256/276/350/256/241/350/264/250/351/207/217/350/246/201/347/202/271.md +58 -0
  245. package/templates/design//351/234/200/346/261/202/345/210/206/346/236/220.md +24 -0
  246. package/templates/operate/UI/350/247/206/350/247/211/351/252/214/346/224/266/347/272/252/345/276/213.md +85 -0
  247. package/templates/operate/enforced.md +42 -6
  248. package/templates/operate//345/217/221/345/270/203/350/257/264/346/230/216.md +19 -1
  249. package/templates/operate//351/203/250/347/275/262/351/205/215/347/275/256.md +10 -0
  250. package/templates/shared/enforced.md +37 -0
  251. 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
  252. package/templates/shared//345/267/245/344/275/234/346/265/201/347/241/254/350/247/204/345/210/231/345/245/221/347/272/246.md +2 -2
  253. package/templates/shared//347/240/224/350/256/250/350/256/260/345/275/225.md +54 -0
  254. package/templates/verify/enforced.md +92 -262
  255. 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 +1 -0
  256. package/templates/verify//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +12 -2
  257. package/templates/verify//345/256/241/346/237/245/346/270/205/345/215/225.md +3 -1
  258. package/templates/verify//346/236/266/346/236/204/350/257/255/344/271/211/347/272/242/347/272/277.md +60 -0
  259. package/dist/core/scope_checker.d.ts +0 -29
  260. package/dist/core/scope_checker.d.ts.map +0 -1
  261. package/dist/core/scope_checker.js +0 -53
  262. package/dist/core/scope_checker.js.map +0 -1
  263. package/dist/gate/executors/executors_openapi_sync.d.ts +0 -23
  264. package/dist/gate/executors/executors_openapi_sync.d.ts.map +0 -1
  265. package/dist/gate/executors/executors_openapi_sync.js +0 -145
  266. package/dist/gate/executors/executors_openapi_sync.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"runtime_state_recovery_registry.js","sourceRoot":"","sources":["../../../src/verify/contracts/runtime_state_recovery_registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime_state_recovery_registry.js","sourceRoot":"","sources":["../../../src/verify/contracts/runtime_state_recovery_registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "soloforge",
3
- "version": "1.1.47",
3
+ "version": "1.1.49",
4
4
  "description": "AI-driven development workflow system - one person does the work of a five-person team",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -80,12 +80,15 @@ checks:
80
80
  target: "self"
81
81
  - id: SEC-04
82
82
  executor: regex_pattern_scan
83
- rule: "禁止硬编码密码/密钥/token"
83
+ rule: "禁止硬编码密码/密钥/token(引号包裹的≥12字符高熵字面量)"
84
84
  severity: error
85
85
  check_type: deterministic
86
- pattern: '/\b(password|passwd|secret|api[_-]?key|access[_-]?token|private[_-]?key)\b\s*[:=]\s*\S/i'
86
+ # 收窄:原 `\S` 把 `password=request.getParameter()`、`password: true`、`password="${ENV}"` 也当硬编码(语义判断塞进正则)。
87
+ # 改为:① 必须引号包裹+≥12字符(只抓高熵字面量)② 负前瞻排除 "${...}" 环境变量占位符(${ENV} 化的真误报根因)
88
+ # ③ 关键词补 access[_-]?key / auth[_-]?token(对齐 shared-gate SEC-02)。severity 保持 error:收窄后只命中确定的硬编码长串。
89
+ pattern: "/(password|passwd|secret|api[_-]?key|access[_-]?key|private[_-]?key|auth[_-]?token)\\s*[:=]\\s*[\"'](?![$][{])[^\"'\\s]{12,}/i"
87
90
  languages: [通用]
88
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无硬编码密钥命中)"]
91
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无硬编码密钥命中;环境变量占位符 ${...} 已排除)"]
89
92
  gate: build-gate
90
93
  target: "self"
91
94
  - id: SEC-05
@@ -111,7 +114,7 @@ checks:
111
114
  - id: SEC-07
112
115
  executor: regex_pattern_scan
113
116
  rule: "禁止 ../ 路径遍历风险"
114
- severity: error
117
+ severity: warning
115
118
  check_type: deterministic
116
119
  pattern: '/\.\.[\\\/]/'
117
120
  languages: [通用]
@@ -163,22 +166,23 @@ checks:
163
166
  rule: "JWT 必须校验签名算法,禁止未校验直接 decode"
164
167
  severity: error
165
168
  check_type: deterministic
166
- pattern: '/\bjwt\.decode\s*\(/'
169
+ pattern: '/\bjwt\.decode\s*\(/i'
167
170
  languages: [通用]
168
171
  evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未校验 JWT 命中)"]
169
172
  gate: build-gate
170
173
  target: "self"
171
- # —— 代码架构检查(从 design-gate 迁入,代码实现阶段归属)——
172
- - id: ARC-01
174
+ # —— 日志契约(LOG-ZH,regex 验证中文日志;原 BLD-G03 中文日志部分硬化)——
175
+ - id: LOG-ZH
173
176
  executor: regex_pattern_scan
174
- rule: "Controller 禁止包含业务逻辑(计算/校验等应下沉 Service)"
175
- severity: error
177
+ rule: "业务日志须含中文事件名(方便调试观察);命中=日志字符串无中文字符(纯英文/符号)"
178
+ severity: warning
176
179
  check_type: deterministic
177
- pattern: '/\bclass\s+\w*Controller\b[\s\S]{0,500}\b(if|for|while|calculate|compute)\s*\(/'
178
- languages: [java]
179
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Controller 含业务逻辑命中)"]
180
+ pattern: '/(console\.(log|info|warn|error)|logger?\.\w+)\s*\(\s*["''][^"''一-龥]*["'']/'
181
+ languages: [通用]
182
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无纯英文日志命中)"]
180
183
  gate: build-gate
181
184
  target: "self"
185
+ # —— 代码架构检查(从 design-gate 迁入,代码实现阶段归属)——
182
186
  - id: ARC-02
183
187
  executor: regex_pattern_scan
184
188
  rule: "禁止 Entity 直接暴露给外部接口,必须用 DTO"
@@ -189,16 +193,6 @@ checks:
189
193
  evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Entity 直接暴露命中)"]
190
194
  gate: build-gate
191
195
  target: "self"
192
- - id: ARC-03
193
- executor: regex_pattern_scan
194
- rule: "写操作(save/create/update/delete)必须有 @Transactional"
195
- severity: error
196
- check_type: deterministic
197
- pattern: '/\.(save|insert|update|delete|remove|create)\s*\(/'
198
- languages: [java]
199
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无写操作缺事务命中)"]
200
- gate: build-gate
201
- target: "self"
202
196
  - id: ARC-04
203
197
  executor: regex_pattern_scan
204
198
  rule: "禁止直接 new Service/Repository/Mapper/Manager,必须依赖注入"
@@ -212,31 +206,182 @@ checks:
212
206
  - id: ARC-06
213
207
  executor: regex_pattern_scan
214
208
  rule: "前端 API 调用必须封装到 service 层,禁止组件内直接 fetch/axios"
215
- severity: error
209
+ severity: warning
216
210
  check_type: deterministic
217
211
  pattern: '/\b(fetch|axios)\s*\(/'
218
212
  languages: [ts]
219
213
  evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无组件直接 API 调用命中)"]
220
214
  gate: build-gate
221
215
  target: "self"
222
- - id: ARC-07
216
+ - id: ARC-08
223
217
  executor: regex_pattern_scan
224
- rule: "禁止 @Autowired + @Lazy 循环依赖"
218
+ rule: "Service 层禁止直接操作 HttpServletRequest/Response"
225
219
  severity: error
226
220
  check_type: deterministic
227
- pattern: '/@Autowired[\s\S]{0,50}@Lazy|@Lazy[\s\S]{0,50}@Autowired/'
221
+ pattern: '/\bHttpServletRequest\b|\bHttpServletResponse\b/'
228
222
  languages: [java]
229
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无循环依赖命中)"]
223
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Service 操作 HttpServlet 命中)"]
230
224
  gate: build-gate
231
225
  target: "self"
232
- - id: ARC-08
226
+ # —— 并发安全(CON-*,从 verify/enforced.md 物理归位;gate 本就是 build-gate)——
227
+ - id: CON-01
233
228
  executor: regex_pattern_scan
234
- rule: "Service 层禁止直接操作 HttpServletRequest/Response"
229
+ rule: "共享可变状态必须有并发保护"
235
230
  severity: error
236
231
  check_type: deterministic
237
- pattern: '/\bHttpServletRequest\b|\bHttpServletResponse\b/'
232
+ pattern: '/\b(public|private|protected)\s+static\s+[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\b/'
238
233
  languages: [java]
239
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Service 操作 HttpServlet 命中)"]
234
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未保护共享状态命中)"]
235
+ gate: build-gate
236
+ target: "self"
237
+ - id: CON-02
238
+ executor: regex_pattern_scan
239
+ rule: "分布式环境禁止使用 JVM 级锁"
240
+ severity: warning
241
+ check_type: deterministic
242
+ pattern: '/\bsynchronized\s*\(/'
243
+ languages: [java]
244
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 JVM 级锁误用命中)"]
245
+ gate: build-gate
246
+ target: "self"
247
+ - id: CON-03
248
+ executor: regex_pattern_scan
249
+ rule: "先查后改(如库存/计数)必须用原子操作"
250
+ severity: warning
251
+ check_type: deterministic
252
+ pattern: '/\.(findById|getById|getOne|selectById)\s*\([^)]*\)/'
253
+ languages: [java]
254
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非原子先查后改命中)"]
255
+ gate: build-gate
256
+ target: "self"
257
+ - id: CON-04
258
+ executor: regex_pattern_scan
259
+ rule: "禁止 @Transactional 同类内部调用导致事务失效"
260
+ severity: warning
261
+ check_type: deterministic
262
+ pattern: '/\bthis\.\w+\s*\(/'
263
+ languages: [java]
264
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务自调用命中)"]
265
+ gate: build-gate
266
+ target: "self"
267
+ - id: CON-05
268
+ executor: regex_pattern_scan
269
+ rule: "事务内禁止执行外部调用(HTTP/RPC)"
270
+ severity: warning
271
+ check_type: deterministic
272
+ pattern: '/\.(getForObject|postForObject|exchange|execute)\s*\(/'
273
+ languages: [java]
274
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务内外部调用命中)"]
275
+ gate: build-gate
276
+ target: "self"
277
+ - id: CON-06
278
+ executor: regex_pattern_scan
279
+ rule: "SimpleDateFormat 非线程安全,禁止作为共享成员"
280
+ severity: error
281
+ check_type: deterministic
282
+ pattern: '/\bstatic\s+[\w<>,\s]*SimpleDateFormat\b/'
283
+ languages: [java]
284
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 SimpleDateFormat 共享命中)"]
285
+ gate: build-gate
286
+ target: "self"
287
+ - id: CON-07
288
+ executor: regex_pattern_scan
289
+ rule: "ThreadLocal 必须清理避免内存泄漏"
290
+ severity: error
291
+ check_type: deterministic
292
+ pattern: '/\bnew\s+ThreadLocal\b/'
293
+ languages: [java]
294
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 ThreadLocal 未清理命中)"]
295
+ gate: build-gate
296
+ target: "self"
297
+ - id: CON-08
298
+ executor: regex_pattern_scan
299
+ rule: "HashMap/ArrayList 等禁止作为共享可变类成员"
300
+ severity: error
301
+ check_type: deterministic
302
+ pattern: '/\b(private|protected|public)\s+(?!static)[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\s*[=;]/'
303
+ languages: [java]
304
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非线程安全集合成员命中)"]
305
+ gate: build-gate
306
+ target: "self"
307
+ - id: CON-09
308
+ executor: regex_pattern_scan
309
+ rule: "CompletableFuture 链必须处理异常"
310
+ severity: error
311
+ check_type: deterministic
312
+ pattern: '/\.(runAsync|supplyAsync)\s*\(/'
313
+ languages: [java]
314
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未处理异常命中)"]
315
+ gate: build-gate
316
+ target: "self"
317
+ - id: CON-10
318
+ executor: regex_pattern_scan
319
+ rule: "线程池必须正确配置拒绝策略"
320
+ severity: error
321
+ check_type: deterministic
322
+ pattern: '/\bnew\s+ThreadPoolExecutor\s*\(/'
323
+ languages: [java]
324
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未配置拒绝策略命中)"]
325
+ gate: build-gate
326
+ target: "self"
327
+ # —— API 规范(API-03/04/06/07/08/09,从 verify/enforced.md 归位;API-01/02 与 ARC-02 重复已删;ARC-03 已降级编码纪律 guidance)——
328
+ - id: API-03
329
+ executor: ast_annotation_check
330
+ rule: "写接口(POST/PUT/DELETE/PATCH)必须有权限注解(@PreAuthorize/@Secured/@RolesAllowed);类级(作用于所有方法)或方法级皆可;hasAnyRole/or/hasAuthority 多角色表达式同样识别(引擎只认 @PreAuthorize 存在,表达式语义由 Spring 运行时保障)"
331
+ severity: error
332
+ check_type: deterministic
333
+ languages: [java]
334
+ evidence_required: ["ast_annotation_check 扫描结果(git diff 写接口缺权限注解命中)"]
335
+ gate: build-gate
336
+ target: "self"
337
+ - id: API-04
338
+ executor: regex_pattern_scan
339
+ rule: "禁止硬编码分页参数,必须参数化"
340
+ severity: error
341
+ check_type: deterministic
342
+ pattern: '/\b(pageNum|pageSize)\s*=\s*\d/'
343
+ languages: [java]
344
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无硬编码分页命中)"]
345
+ gate: build-gate
346
+ target: "self"
347
+ - id: API-06
348
+ executor: regex_pattern_scan
349
+ rule: "接口路径须符合 RESTful 规范"
350
+ severity: warning
351
+ check_type: deterministic
352
+ pattern: '/@(Get|Post|Put|Delete)Mapping\s*\(\s*[^\)]*(get|list|create|delete|update)/i'
353
+ languages: [java]
354
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无路径违规命中)"]
355
+ gate: build-gate
356
+ target: "self"
357
+ - id: API-07
358
+ executor: regex_pattern_scan
359
+ rule: "接口必须使用统一响应包装(ApiResult/Result/R)"
360
+ severity: error
361
+ check_type: deterministic
362
+ pattern: '/\bResponseEntity\s*<\s*\w*Entity\b/'
363
+ languages: [java]
364
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无裸返回命中)"]
365
+ gate: build-gate
366
+ target: "self"
367
+ - id: API-08
368
+ executor: regex_pattern_scan
369
+ rule: "分页接口必须返回标准分页结构"
370
+ severity: error
371
+ check_type: deterministic
372
+ pattern: '/\.(findAll|listAll)\s*\(\s*\d/'
373
+ languages: [java]
374
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非标准分页命中)"]
375
+ gate: build-gate
376
+ target: "self"
377
+ - id: API-09
378
+ executor: regex_pattern_scan
379
+ rule: "接口路径须含版本号"
380
+ severity: error
381
+ check_type: deterministic
382
+ pattern: '/@(Get|Post|Put|Delete|Request)Mapping\s*\(\s*"\/(?!api\/v\d)/i'
383
+ languages: [java]
384
+ evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无缺版本号命中)"]
240
385
  gate: build-gate
241
386
  target: "self"
242
387
  - id: BLD-G01
@@ -255,14 +400,6 @@ checks:
255
400
  evidence_required: ["lazy_pattern_detector 输出(hard_fail=0)","空函数体扫描结果(0 匹配)","空 catch 扫描结果(0 匹配)"]
256
401
  gate: build-gate
257
402
  target: "self"
258
- - id: BLD-G03
259
- executor: lazy_pattern_check
260
- rule: "变更代码必须满足中文注释与日志契约:后端类/方法有中文 Javadoc,关键业务行有中文行注释,业务日志使用中文事件名"
261
- severity: error
262
- check_type: deterministic
263
- evidence_required: ["non_chinese_comment 检测结果(须为 0)","non_chinese_log 检测结果(须为 0)"]
264
- gate: build-gate
265
- target: "self"
266
403
  - id: BLD-G04
267
404
  executor: tsc_compile
268
405
  rule: "tsc --noEmit 零错误,项目构建成功"
@@ -273,46 +410,104 @@ checks:
273
410
  target: "self"
274
411
  - id: BLD-G05
275
412
  executor: vitest_run
276
- rule: "全量测试通过,无失败用例;增量代码行覆盖率>=80%"
413
+ rule: "全量测试通过,无失败用例(vitest_run 验测试通过;覆盖率阈值由 BLD-G07 coverage_threshold 独立 check 覆盖)"
277
414
  severity: error
278
415
  check_type: deterministic
279
- evidence_required: ["测试报告(passed/failed/total)","覆盖率报告(增量行覆盖率数值)"]
416
+ evidence_required: ["测试报告(passed/failed/total)"]
280
417
  gate: build-gate
281
418
  target: "self"
282
- - id: BLD-G06
283
- executor: lazy_pattern_check
284
- rule: "无硬编码密钥、无未鉴权写接口、无 SQL 注入风险、依赖无高危漏洞"
419
+ - id: BLD-G07
420
+ executor: coverage_threshold
421
+ rule: "行覆盖率≥70%(vitest --coverage json-summary;激活原死代码 coverage_threshold。TS 项目生效:装 vitest 但未配 coverage/无 summary/覆盖率<70% → fail-closed;非 TS/无 vitest 跳过)"
422
+ severity: error
423
+ check_type: deterministic
424
+ evidence_required: ["coverage-summary.json 行覆盖率≥70%(仅 TS/vitest 项目)"]
425
+ gate: build-gate
426
+ target: "self"
427
+ - id: BLD-G08
428
+ executor: jacoco_threshold
429
+ rule: "Java 行覆盖率≥70%(解析 target/site/jacoco/jacoco.xml;Maven 项目生效:须配 jacoco-maven-plugin + mvn test 生成报告,<70% → fail-closed;非 Maven 跳过)"
430
+ severity: error
431
+ check_type: deterministic
432
+ evidence_required: ["jacoco.xml 行覆盖率≥70%(仅 Maven/Java 项目)"]
433
+ gate: build-gate
434
+ target: "self"
435
+ # —— 超大系统 build 前研讨兜底(BLD-DELIB:开发切片计划 SLC 切片数>=5 时须有 build 研讨记录,补下限防 AI 跳过研讨;切片计划不存在或<5 跳过)——
436
+ - id: BLD-DELIB
437
+ executor: slice_deliberation_gate
438
+ rule: "超大系统(开发切片计划 SLC 切片数>=5)build 写代码前须 deliberate 研讨实现策略(研讨记录 docs/研讨记录/构建/产物-研讨记录.md 存在);切片计划不存在或切片<5 则跳过"
439
+ severity: error
440
+ check_type: deterministic
441
+ evidence_required: ["docs/architecture/02-开发切片计划.md"]
442
+ gate: build-gate
443
+ target: "self"
444
+ # —— db/api 适用性兜底(③ build 兜底:design_doc 声明「适用」须产出,防 design 漏产致 build 缺地基)——
445
+ - id: BLD-DBAPI
446
+ executor: applicability_check
447
+ rule: "build 前置兜底(通用 check,所有 build verify 跑):design_doc「产物适用性声明」声明「适用」的 database_design/api_specification 须已产出(design_doc 不存在则跳过,兼容小改跳 design)"
285
448
  severity: error
286
449
  check_type: deterministic
287
- evidence_required: ["硬编码密钥扫描结果(须为 0)","未鉴权写接口扫描结果(须为 0)","注入防护方案确认","依赖漏洞扫描报告(高危/严重须为 0)"]
450
+ evidence_required: ["数据库设计文档模版", "API接口规格文档模版"]
451
+ gate: build-gate
452
+ target: "self"
453
+ # —— 多工程结构兜底(MULTI-ENGINE-STRUCT:intent projects 每端须有 src/ + 独立 .gitignore)——
454
+ - id: MULTI-ENGINE-STRUCT
455
+ executor: multi_engine_structure_check
456
+ rule: "多工程项目(intent projects 声明)每端工程须有 src/ + 独立 .gitignore(首个切片建工程骨架);单工程跳过"
457
+ severity: error
458
+ check_type: deterministic
459
+ evidence_required: ["intent.yaml projects"]
460
+ gate: build-gate
461
+ target: "self"
462
+ # —— 测试计划结构(TESTPLAN-STRUCT,test_plan 产物结构完整性)——
463
+ - id: TESTPLAN-STRUCT
464
+ executor: document_structure
465
+ rule: "测试计划须含「测试范围」「测试条目」「环境与数据」「执行顺序」「验收标准」「完成判定」章节"
466
+ severity: warning
467
+ check_type: deterministic
468
+ required_artifact: 测试计划模版
469
+ evidence_required: ["docs/build/测试计划.md"]
470
+ gate: build-gate
471
+ target: self
472
+ # —— 产物间一致性(cross_validation:测试覆盖需求)——
473
+ - id: XVAL-TEST-REQ
474
+ executor: cross_validation
475
+ rule: "REQ-* 一致性+覆盖率"
476
+ severity: warning
477
+ check_type: deterministic
478
+ required_artifact: 测试计划模版
479
+ evidence_required: ["需求分析模版"]
480
+ gate: build-gate
481
+ target: "self"
482
+ - id: TESTPLAN-BLOCK
483
+ executor: document_structure
484
+ check_type: deterministic
485
+ severity: error
288
486
  gate: build-gate
487
+ required_artifact: 测试计划模版
488
+ rule: "测试条目章节须有表格行(反退化:禁只列前几行后省略/一句话概括代替)"
489
+ block_check:
490
+ item_pattern: '^##\s+2\.'
491
+ require_table: true
492
+ min_table_rows: 2
493
+ evidence_required: ["测试计划模版"]
289
494
  target: "self"
290
495
  ---
291
496
 
292
497
  # build-gate 强制检查清单
293
498
 
294
- 22 条确定性检查。bridge 从此文件聚合。
499
+ 47 条确定性检查(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)。
295
500
 
296
501
  对应工程经验:
297
- - TS-Q01
298
- - TS-Q02
299
- - TS-Q03
300
- - TS-Q04
301
- - SEC-01
302
- - SEC-02
303
- - SEC-03
304
- - SEC-04
305
- - SEC-05
306
- - SEC-06
307
- - SEC-07
308
- - SEC-08
309
- - SEC-09
310
- - SEC-10
311
- - SEC-11
312
- - SEC-12
313
- - BLD-G01
314
- - BLD-G02
315
- - BLD-G03
316
- - BLD-G04
317
- - BLD-G05
318
- - BLD-G06
502
+ - TS-Q01~04(TS 类型/相等/var)
503
+ - SEC-01~12(安全:注入/密钥/日志/重定向/路径/反序列化/SSRF/CORS/Cookie/JWT)
504
+ - ARC-02/04/06/08(架构:Controller/Entity/DI/前端fetch/循环依赖/HttpServlet;事务约定移 guidance 编码纪律,regex 判不了事务覆盖)
505
+ - CON-01~10(并发:共享状态/JVM锁/原子/事务自调用/ThreadLocal/线程池)—— 归位自 verify
506
+ - API-03/04/06/07/08/09(API:权限/分页/RESTful/响应包装/版本号)—— 归位自 verify
507
+ - BLD-G01/02/04/05(前置门禁/偷懒模式/tsc/vitest)
508
+ - BLD-DELIB(超大系统 build 前强制研讨实现策略:SLC≥5 须有 build 研讨记录)
509
+ - MULTI-ENGINE-STRUCT(多工程骨架兜底:intent projects 每端须有 src/ + 独立 .gitignore)
510
+ - LOG-ZH(中文日志 regex 验证;原 BLD-G03 中文日志部分硬化)
511
+ - 中文注释纪律 → guidance《注释纪律》(软,原 BLD-G03 non_chinese_comment 拆出)
512
+ - 原 BLD-G06(密钥/鉴权/注入/漏洞)已删:密钥由 SEC-04、注入由 SEC-01、漏洞由依赖扫描覆盖(重复+假声明)
513
+ - XVAL-TEST-REQ(测试↔需求覆盖)
@@ -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
+ - [[编码纪律]] / [[证据驱动与反幻觉]]
@@ -52,6 +52,7 @@ red(失败测试)→ green(最小实现通过)→ refactor(重构保
52
52
  - 增量代码行覆盖率 ≥ 80%(build-gate BLD-G05 守护)
53
53
  - 覆盖率是下限不是目标——覆盖关键路径比追数字重要
54
54
  - 重点覆盖:正常路径 / 错误路径 / 边界 / 权限 / 并发
55
+ - 验收点锚定:每个 REQ-* 验收点须在测试标注 `@covers REQ-xxx`(verify-gate AC-COVERAGE 校验——覆盖率数字可糊弄,验收点锚定不可;Java `// @covers`、Python `# @covers`、Go `// @covers`)
55
56
 
56
57
  ## 测试质量(禁止伪满足)
57
58
 
@@ -24,6 +24,7 @@ extra:
24
24
 
25
25
  > **产物定位**:build 阶段必出。定义"测什么、怎么测、什么证据算通过"。
26
26
  > **核心纪律**:禁止假验证——E0(无运行时证据)不可接受([[证据驱动与反幻觉]] 第 5/10 条)。覆盖正常/异常/边界/权限/并发,不只 happy path。
27
+ > **反退化纪律**:每个测试条目(T-*)必须在「测试条目」表中逐行填写真实编号(REQ-*/SLC-*),禁止只列前几行后用「…」省略、禁止用一句话概括代替表格行。
27
28
 
28
29
  ## 1. 测试范围
29
30
  - 关联任务/需求:
@@ -31,12 +32,15 @@ extra:
31
32
  - 不在范围内的事项:
32
33
 
33
34
  ## 2. 测试条目
35
+
36
+ > 填**真实编号**:REQ-001(需求分析的真实 REQ)、SLC-用户-01(切片规划的真实切片)。build-gate cross_validation 校验测试↔需求的 REQ-* 一致性+覆盖率,占位符 REQ-NNN 会 fail-closed 阻断。
37
+
34
38
  | 编号 | 功能点 | 测试类型 | 覆盖策略 | 关联需求 | 关联切片 | test_phase | 优先级 | Evidence 级别 |
35
39
  |------|--------|---------|---------|---------|-----------|-----------|--------|--------------|
36
- | T-01 | 正常流程 | 集成测试 | 正常路径 | REQ-NNN | SLC-x | red→green | P0 | E1 |
37
- | T-02 | 参数缺失 | 单元测试 | 错误路径 | REQ-NNN | SLC-x | red→green | P0 | E1 |
38
- | T-03 | 权限不足 | 集成测试 | 错误路径 | REQ-NNN | SLC-x | red→green | P0 | E2 |
39
- | T-04 | 边界值 | 单元测试 | 边界场景 | REQ-NNN | SLC-x | combined | P1 | E1 |
40
+ | T-01 | 正常流程 | 集成测试 | 正常路径 | REQ-001 | SLC-用户-01 | red→green | P0 | E1 |
41
+ | T-02 | 参数缺失 | 单元测试 | 错误路径 | REQ-001 | SLC-用户-01 | red→green | P0 | E1 |
42
+ | T-03 | 权限不足 | 集成测试 | 错误路径 | REQ-002 | SLC-用户-01 | red→green | P0 | E2 |
43
+ | T-04 | 边界值 | 单元测试 | 边界场景 | REQ-001 | SLC-用户-01 | combined | P1 | E1 |
40
44
 
41
45
  > 覆盖策略必含:正常路径 / 错误路径 / 边界 / 权限 / 并发(适用时)。缺一类须说明理由。
42
46
 
@@ -69,3 +73,4 @@ extra:
69
73
  - [ ] 每条标注 Evidence 级别,无 E0
70
74
  - [ ] P0 项有验收标准且执行通过
71
75
  - [ ] 失败用例有修复或明确说明
76
+ - [ ] 测试条目表逐行填真实编号,无「…」省略、无一句话概括代替
@@ -34,6 +34,32 @@ extra:
34
34
  > 吸收旧的「编码阶段执行」「编码就绪审查」「编码质量」「切片执行纪律」「防御性编码」。
35
35
  > 基本功(命名/注释/单一职责/错误处理)见 [[工程纪律]],不重复。
36
36
 
37
+ ## 超大系统:先研讨实现策略再动手
38
+
39
+ 开发切片计划 SLC 切片数 ≥ 5(超大系统)时,build 写代码前**必须**先 `sf_work action=deliberate target=code` 与用户研讨实现策略(头脑风暴 + 第一性原理),收敛后把结论总结留痕到 `docs/研讨记录/构建/产物-研讨记录.md`,再 act 写代码。
40
+
41
+ - 此规则由 build-gate `BLD-DELIB` 确定性门禁兜底——未研讨则 build 阻断,不是软建议
42
+ - 小任务(切片 < 5 或无切片计划)不强制,正常列改动清单即可
43
+ - 研讨重点:切片实现顺序、跨切片共享代码先沉淀、风险切片先行验证
44
+
45
+ ## 工程骨架:首个切片建多工程目录(涉及多端时)
46
+
47
+ build 域第一个切片(首次 `act target=code`)时,按架构 §6.3 端清单 + intent.yaml `projects` 创建工程目录骨架——每个端一个独立工程目录(`backend/` `client-portal/` `admin-web/` `miniapp/` `shared/`),每个工程目录内建标准 `src/` + 独立 `.gitignore`(按技术栈)+ 各自构建配置(package.json/pom.xml 等)。
48
+
49
+ - 工程目录结构 = 架构 §6.3 端清单 + intent.yaml `projects`(build scope `allowed_paths` 据此放行)
50
+ - **每个工程独立 `.gitignore`**(不要只在根目录一个):前端 `node_modules/` `dist/`、Java `target/` `build/`、小程序 `miniprogram_npm/` 等
51
+ - 各工程独立构建配置(package.json/pom.xml/build.gradle),独立依赖、独立构建
52
+ - 单工程项目(纯后端 API)保持根 `src/`,不强制多工程
53
+
54
+ ## 前端骨架先行(涉及 FE-* 端时)
55
+
56
+ 涉及前端端(架构 §6.3 声明 FE-*)的项目,前端骨架切片先于业务页面:每个 FE-* 端先落地路由 / 状态管理 / API service 壳 / 认证拦截器 / 脱敏工具,再填充业务页面。
57
+
58
+ - 骨架切片须覆盖架构 §6.3 所有 FE-* 端(XVAL-SLC 校验 ARCH-*/FE-* 覆盖)
59
+ - 共享层(shared:类型/API client/工具)先于各端业务沉淀,避免散落
60
+ - 前端 API 调用封装到 service 层,禁止组件内直接 fetch/axios(build-gate ARC-06)
61
+ - Vue3/uni-app 等无内置脚手架的技术栈,配自定义模板合同(`config.scaffold.contracts`)
62
+
37
63
  ## 实现前:先列改动清单(精准修改)
38
64
 
39
65
  动手前明确([[工程执行总纲]] 精准修改):
@@ -45,8 +71,9 @@ extra:
45
71
  ## 实现中:不写半成品
46
72
 
47
73
  - 不留空函数体、空 catch、TODO 占位(build-gate BLD-G02 守护)
48
- - 关键业务行有中文注释,业务日志用中文事件名(BLD-G03)
74
+ - 关键业务行有中文注释,业务日志用中文事件名(LOG-ZH + 注释纪律)
49
75
  - 错误处理:禁止静默吞异常,错误信息说清哪步失败+原因+下一步
76
+ - 事务:写操作(save/create/update/delete)方法须在 Service 层加 @Transactional(regex 判不了事务覆盖,靠编码纪律约定+人工确认;原 ARC-03 硬 check 已降级此软纪律)
50
77
  - 边界:空数据、null、超长、并发、重复提交都要处理
51
78
 
52
79
  ## 类型安全(TS)
@@ -24,6 +24,12 @@ extra:
24
24
 
25
25
  > **产物定位**:涉及前后端接口对接时产出(按需)。把接口契约先于实现定清楚,避免前端等后端。
26
26
  > **核心纪律**:契约先行([[编码纪律]]);每个 endpoint 有验收场景 + 验证证据([[证据驱动与反幻觉]])。
27
+ > **反退化纪律**:每个 endpoint 必须完整重复其全部必填结构块,禁止退化——
28
+ > - 禁止「前详后废」(前几个 endpoint 完整、后面的退化成一行文字)
29
+ > - 禁止用一行文字 `**xxx**:…` 代替表格,或省略标 `[Always]` 的必填块(基本信息/响应体字段/错误与副作用/验收场景)
30
+ > - 章节标题必须用 `###`,禁止降级为 `**粗体**`
31
+ > - 禁止「同上格式」「见上文」「…」等偷懒占位
32
+ > 任一 endpoint 缺任一必填块 = 未完成,须补齐后再推进。
27
33
  > **完成判定**:见文末,每个 endpoint 须满足。
28
34
 
29
35
  OpenAPI 权威路径: `docs/api/openapi.yaml`
@@ -96,3 +102,4 @@ OpenAPI 权威路径: `docs/api/openapi.yaml`
96
102
  - [ ] 每个验收场景有验证证据(不得为空)
97
103
  - [ ] 枚举值定义覆盖所有枚举字段
98
104
  - [ ] 涉及前端调用的接口有页面交互映射
105
+ - [ ] 每个 endpoint 都含全部必填表格块(基本信息/响应体字段/错误与副作用/验收场景),无一行文字替代、无偷懒占位