soloforge 1.1.47 → 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 (182) 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 +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 +15 -5
  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 +2 -0
  36. package/dist/core/gate_record_store.d.ts.map +1 -1
  37. package/dist/core/gate_record_store.js +8 -0
  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 +26 -2
  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_types.d.ts +17 -0
  57. package/dist/domain/asset_registry/derived_types.d.ts.map +1 -1
  58. package/dist/domain/build/engine.d.ts +1 -0
  59. package/dist/domain/build/engine.d.ts.map +1 -1
  60. package/dist/domain/build/engine.js +34 -4
  61. package/dist/domain/build/engine.js.map +1 -1
  62. package/dist/domain/contracts/design_lifecycle_contract.d.ts.map +1 -1
  63. package/dist/domain/contracts/design_lifecycle_contract.js +11 -4
  64. package/dist/domain/contracts/design_lifecycle_contract.js.map +1 -1
  65. package/dist/domain/design/contract.d.ts.map +1 -1
  66. package/dist/domain/design/contract.js +11 -0
  67. package/dist/domain/design/contract.js.map +1 -1
  68. package/dist/domain/design/engine.d.ts +1 -0
  69. package/dist/domain/design/engine.d.ts.map +1 -1
  70. package/dist/domain/design/engine.js +35 -3
  71. package/dist/domain/design/engine.js.map +1 -1
  72. package/dist/domain/engine_helpers.d.ts +37 -0
  73. package/dist/domain/engine_helpers.d.ts.map +1 -1
  74. package/dist/domain/engine_helpers.js +86 -0
  75. package/dist/domain/engine_helpers.js.map +1 -1
  76. package/dist/domain/operate/engine.d.ts +1 -0
  77. package/dist/domain/operate/engine.d.ts.map +1 -1
  78. package/dist/domain/operate/engine.js +19 -2
  79. package/dist/domain/operate/engine.js.map +1 -1
  80. package/dist/domain/types.d.ts +6 -0
  81. package/dist/domain/types.d.ts.map +1 -1
  82. package/dist/domain/types.js.map +1 -1
  83. package/dist/domain/verify/engine.d.ts +1 -0
  84. package/dist/domain/verify/engine.d.ts.map +1 -1
  85. package/dist/domain/verify/engine.js +18 -1
  86. package/dist/domain/verify/engine.js.map +1 -1
  87. package/dist/gate/contracts/tool_actions.d.ts +2 -2
  88. package/dist/gate/contracts/tool_actions.d.ts.map +1 -1
  89. package/dist/gate/contracts/tool_actions.js +2 -2
  90. package/dist/gate/contracts/tool_actions.js.map +1 -1
  91. package/dist/gate/contracts/tool_invocation_contract_registry.js +1 -1
  92. package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
  93. package/dist/gate/executors/executors_artifact.d.ts +19 -0
  94. package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
  95. package/dist/gate/executors/executors_artifact.js +100 -3
  96. package/dist/gate/executors/executors_artifact.js.map +1 -1
  97. package/dist/gate/executors/executors_build.d.ts.map +1 -1
  98. package/dist/gate/executors/executors_build.js +17 -15
  99. package/dist/gate/executors/executors_build.js.map +1 -1
  100. package/dist/gate/executors/executors_external_command.d.ts.map +1 -1
  101. package/dist/gate/executors/executors_external_command.js +32 -0
  102. package/dist/gate/executors/executors_external_command.js.map +1 -1
  103. package/dist/gate/executors/executors_field_mapping.d.ts +7 -0
  104. package/dist/gate/executors/executors_field_mapping.d.ts.map +1 -0
  105. package/dist/gate/executors/executors_field_mapping.js +179 -0
  106. package/dist/gate/executors/executors_field_mapping.js.map +1 -0
  107. package/dist/gate/executors/executors_prerequisite.js +1 -1
  108. package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
  109. package/dist/gate/executors/executors_regex_scan.js +34 -13
  110. package/dist/gate/executors/executors_regex_scan.js.map +1 -1
  111. package/dist/gate/executors/executors_scope.js +4 -4
  112. package/dist/gate/executors/executors_scope.js.map +1 -1
  113. package/dist/gate/executors/executors_trace.d.ts +5 -0
  114. package/dist/gate/executors/executors_trace.d.ts.map +1 -1
  115. package/dist/gate/executors/executors_trace.js +184 -3
  116. package/dist/gate/executors/executors_trace.js.map +1 -1
  117. package/dist/gate/executors/index.d.ts.map +1 -1
  118. package/dist/gate/executors/index.js +2 -0
  119. package/dist/gate/executors/index.js.map +1 -1
  120. package/dist/gate/gate_engine.d.ts +9 -0
  121. package/dist/gate/gate_engine.d.ts.map +1 -1
  122. package/dist/gate/gate_engine.js +15 -0
  123. package/dist/gate/gate_engine.js.map +1 -1
  124. package/dist/gate/gate_registry_bridge.d.ts +2 -2
  125. package/dist/gate/gate_registry_bridge.d.ts.map +1 -1
  126. package/dist/gate/gate_registry_bridge.js +6 -3
  127. package/dist/gate/gate_registry_bridge.js.map +1 -1
  128. package/dist/gate/middleware_gates.js +1 -1
  129. package/dist/gate/middleware_gates.js.map +1 -1
  130. package/dist/gate/scope_resolver.d.ts +7 -0
  131. package/dist/gate/scope_resolver.d.ts.map +1 -1
  132. package/dist/gate/scope_resolver.js +1 -1
  133. package/dist/gate/scope_resolver.js.map +1 -1
  134. package/dist/index.js +5 -0
  135. package/dist/index.js.map +1 -1
  136. package/dist/server/tools/sf_doctor.d.ts +1 -0
  137. package/dist/server/tools/sf_doctor.d.ts.map +1 -1
  138. package/dist/server/tools/sf_doctor.js +20 -0
  139. package/dist/server/tools/sf_doctor.js.map +1 -1
  140. package/dist/server/tools/sf_task.d.ts +83 -0
  141. package/dist/server/tools/sf_task.d.ts.map +1 -1
  142. package/dist/server/tools/sf_task.js +121 -4
  143. package/dist/server/tools/sf_task.js.map +1 -1
  144. package/dist/server/tools/sf_work.d.ts +203 -0
  145. package/dist/server/tools/sf_work.d.ts.map +1 -1
  146. package/dist/server/tools/sf_work.js +531 -40
  147. package/dist/server/tools/sf_work.js.map +1 -1
  148. package/dist/shared/traceability_id_utils.js +3 -3
  149. package/dist/shared/traceability_id_utils.js.map +1 -1
  150. package/dist/verify/contracts/decision_workshop.d.ts.map +1 -1
  151. package/dist/verify/contracts/decision_workshop.js +4 -3
  152. package/dist/verify/contracts/decision_workshop.js.map +1 -1
  153. package/package.json +1 -1
  154. package/templates/build/enforced.md +243 -56
  155. package/templates/build//346/263/250/351/207/212/347/272/252/345/276/213.md +48 -0
  156. package/templates/build//346/265/213/350/257/225/350/256/241/345/210/222.md +9 -4
  157. package/templates/build//347/274/226/347/240/201/347/272/252/345/276/213.md +26 -0
  158. 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
  159. package/templates/design/enforced.md +204 -14
  160. 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 +4 -2
  161. package/templates/design//345/210/207/347/211/207/350/247/204/345/210/222.md +2 -0
  162. package/templates/design//345/274/200/345/217/221/345/210/207/347/211/207/350/256/241/345/210/222.md +75 -0
  163. 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
  164. package/templates/design//346/236/266/346/236/204/350/256/276/350/256/241.md +24 -0
  165. package/templates/design//350/256/276/350/256/241/345/206/263/347/255/226/347/272/252/345/276/213.md +58 -0
  166. package/templates/design//350/256/276/350/256/241/350/264/250/351/207/217/350/246/201/347/202/271.md +58 -0
  167. package/templates/design//351/234/200/346/261/202/345/210/206/346/236/220.md +24 -0
  168. 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
  169. package/templates/operate/enforced.md +42 -6
  170. package/templates/operate//345/217/221/345/270/203/350/257/264/346/230/216.md +19 -1
  171. package/templates/operate//351/203/250/347/275/262/351/205/215/347/275/256.md +10 -0
  172. package/templates/shared/enforced.md +37 -0
  173. 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
  174. package/templates/shared//347/240/224/350/256/250/350/256/260/345/275/225.md +54 -0
  175. package/templates/verify/enforced.md +84 -263
  176. 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
  177. package/templates/verify//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +10 -0
  178. package/templates/verify//346/236/266/346/236/204/350/257/255/344/271/211/347/272/242/347/272/277.md +60 -0
  179. package/dist/core/scope_checker.d.ts +0 -29
  180. package/dist/core/scope_checker.d.ts.map +0 -1
  181. package/dist/core/scope_checker.js +0 -53
  182. package/dist/core/scope_checker.js.map +0 -1
@@ -10,114 +10,14 @@ extra:
10
10
  checks:
11
11
  - id: SOLID-DIP
12
12
  executor: regex_pattern_scan
13
- rule: "禁止直接构造依赖(new Service/Repository/Dao),必须依赖注入"
13
+ rule: "禁止直接构造依赖(new Service/Repository/Dao),必须依赖注入(Java/Spring;TS 无 DI 容器不适用)"
14
14
  severity: error
15
15
  check_type: deterministic
16
16
  pattern: '/\bnew\s+\w*(Service|Repository|Repo|Dao|Mapper|Manager)\s*\(/'
17
- languages: [通用]
17
+ languages: [java]
18
18
  evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无直接构造依赖命中)"]
19
19
  gate: verify-gate
20
20
  target: "self"
21
- - id: CON-01
22
- executor: regex_pattern_scan
23
- rule: "共享可变状态必须有并发保护"
24
- severity: error
25
- check_type: deterministic
26
- pattern: '/\b(public|private|protected)\s+static\s+[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\b/'
27
- languages: [java]
28
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未保护共享状态命中)"]
29
- gate: build-gate
30
- target: "self"
31
- - id: CON-02
32
- executor: regex_pattern_scan
33
- rule: "分布式环境禁止使用 JVM 级锁"
34
- severity: error
35
- check_type: deterministic
36
- pattern: '/\bsynchronized\s*\(/'
37
- languages: [java]
38
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 JVM 级锁误用命中)"]
39
- gate: build-gate
40
- target: "self"
41
- - id: CON-03
42
- executor: regex_pattern_scan
43
- rule: "先查后改(如库存/计数)必须用原子操作"
44
- severity: error
45
- check_type: deterministic
46
- pattern: '/\.(findById|getById|getOne|selectById)\s*\([^)]*\)/'
47
- languages: [java]
48
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非原子先查后改命中)"]
49
- gate: build-gate
50
- target: "self"
51
- - id: CON-04
52
- executor: regex_pattern_scan
53
- rule: "禁止 @Transactional 同类内部调用导致事务失效"
54
- severity: error
55
- check_type: deterministic
56
- pattern: '/\bthis\.\w+\s*\(/'
57
- languages: [java]
58
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务自调用命中)"]
59
- gate: build-gate
60
- target: "self"
61
- - id: CON-05
62
- executor: regex_pattern_scan
63
- rule: "事务内禁止执行外部调用(HTTP/RPC)"
64
- severity: error
65
- check_type: deterministic
66
- pattern: '/\.(getForObject|postForObject|exchange|execute)\s*\(/'
67
- languages: [java]
68
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务内外部调用命中)"]
69
- gate: build-gate
70
- target: "self"
71
- - id: CON-06
72
- executor: regex_pattern_scan
73
- rule: "SimpleDateFormat 非线程安全,禁止作为共享成员"
74
- severity: error
75
- check_type: deterministic
76
- pattern: '/\bstatic\s+[\w<>,\s]*SimpleDateFormat\b/'
77
- languages: [java]
78
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 SimpleDateFormat 共享命中)"]
79
- gate: build-gate
80
- target: "self"
81
- - id: CON-07
82
- executor: regex_pattern_scan
83
- rule: "ThreadLocal 必须清理避免内存泄漏"
84
- severity: error
85
- check_type: deterministic
86
- pattern: '/\bnew\s+ThreadLocal\b/'
87
- languages: [java]
88
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 ThreadLocal 未清理命中)"]
89
- gate: build-gate
90
- target: "self"
91
- - id: CON-08
92
- executor: regex_pattern_scan
93
- rule: "HashMap/ArrayList 等禁止作为共享可变类成员"
94
- severity: error
95
- check_type: deterministic
96
- pattern: '/\b(private|protected|public)\s+(?!static)[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\s*[=;]/'
97
- languages: [java]
98
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非线程安全集合成员命中)"]
99
- gate: build-gate
100
- target: "self"
101
- - id: CON-09
102
- executor: regex_pattern_scan
103
- rule: "CompletableFuture 链必须处理异常"
104
- severity: error
105
- check_type: deterministic
106
- pattern: '/\.(runAsync|supplyAsync)\s*\(/'
107
- languages: [java]
108
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未处理异常命中)"]
109
- gate: build-gate
110
- target: "self"
111
- - id: CON-10
112
- executor: regex_pattern_scan
113
- rule: "线程池必须正确配置拒绝策略"
114
- severity: error
115
- check_type: deterministic
116
- pattern: '/\bnew\s+ThreadPoolExecutor\s*\(/'
117
- languages: [java]
118
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未配置拒绝策略命中)"]
119
- gate: build-gate
120
- target: "self"
121
21
  - id: PER-01
122
22
  executor: regex_pattern_scan
123
23
  rule: "禁止循环内逐条数据库调用(N+1 问题)"
@@ -208,114 +108,15 @@ checks:
208
108
  evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未优化图片命中)"]
209
109
  gate: verify-gate
210
110
  target: "self"
211
- - id: API-01
212
- executor: regex_pattern_scan
213
- rule: "Controller 禁止返回 Entity,必须返回 DTO"
214
- severity: error
215
- check_type: deterministic
216
- pattern: '/\bpublic\s+\w*Entity\b\s+\w+\s*\(/'
217
- languages: [java]
218
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Entity 直接返回命中)"]
219
- gate: build-gate
220
- target: "self"
221
- - id: API-02
222
- executor: regex_pattern_scan
223
- rule: "写操作(POST/PUT/DELETE)必须有 @Transactional"
224
- severity: error
225
- check_type: deterministic
226
- pattern: '/\.(save|insert|update|delete|remove)\s*\(/'
227
- languages: [java]
228
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无写操作缺事务命中)"]
229
- gate: build-gate
230
- target: "self"
231
- - id: API-03
232
- executor: regex_pattern_scan
233
- rule: "接口必须有权限注解"
111
+ - id: REVIEW-STRUCT
112
+ executor: document_structure
113
+ rule: "代码审查报告须含「审查信息」「维度覆盖矩阵」「发现项」「审查清单校验」「完成判定」章节"
234
114
  severity: error
235
115
  check_type: deterministic
236
- pattern: '/@(Get|Post|Put|Delete|Request)Mapping\s*\(/'
237
- languages: [java]
238
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无接口缺权限注解命中)"]
239
- gate: build-gate
240
- target: "self"
241
- - id: API-04
242
- executor: regex_pattern_scan
243
- rule: "禁止硬编码分页参数,必须参数化"
244
- severity: error
245
- check_type: deterministic
246
- pattern: '/\b(pageNum|pageSize)\s*=\s*\d/'
247
- languages: [java]
248
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无硬编码分页命中)"]
249
- gate: build-gate
250
- target: "self"
251
- - id: API-05
252
- executor: regex_pattern_scan
253
- rule: "请求参数必须有 @Valid/@RequestBody 等校验注解"
254
- severity: error
255
- check_type: deterministic
256
- pattern: '/@RequestBody\b/'
257
- languages: [java]
258
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无缺参数校验命中)"]
259
- gate: build-gate
260
- target: "self"
261
- - id: API-06
262
- executor: regex_pattern_scan
263
- rule: "接口路径须符合 RESTful 规范"
264
- severity: error
265
- check_type: deterministic
266
- pattern: '/@(Get|Post|Put|Delete)Mapping\s*\(\s*[^\)]*(get|list|create|delete|update)/i'
267
- languages: [java]
268
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无路径违规命中)"]
269
- gate: build-gate
270
- target: "self"
271
- - id: API-07
272
- executor: regex_pattern_scan
273
- rule: "接口必须使用统一响应包装(ApiResult/Result/R)"
274
- severity: error
275
- check_type: deterministic
276
- pattern: '/\bResponseEntity\s*<\s*\w*Entity\b/'
277
- languages: [java]
278
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无裸返回命中)"]
279
- gate: build-gate
280
- target: "self"
281
- - id: API-08
282
- executor: regex_pattern_scan
283
- rule: "分页接口必须返回标准分页结构"
284
- severity: error
285
- check_type: deterministic
286
- pattern: '/\.(findAll|listAll)\s*\(\s*\d/'
287
- languages: [java]
288
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非标准分页命中)"]
289
- gate: build-gate
290
- target: "self"
291
- - id: API-09
292
- executor: regex_pattern_scan
293
- rule: "接口路径须含版本号"
294
- severity: error
295
- check_type: deterministic
296
- pattern: '/@(Get|Post|Put|Delete|Request)Mapping\s*\(\s*"\/(?!api\/v\d)/i'
297
- languages: [java]
298
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无缺版本号命中)"]
299
- gate: build-gate
300
- target: "self"
301
- - id: API-10
302
- executor: regex_pattern_scan
303
- rule: "接口必须有 Swagger/OpenAPI 文档注解"
304
- severity: error
305
- check_type: deterministic
306
- pattern: '/@(Get|Post|Put|Delete)Mapping\s*\([^)]*\)[\s\S]{0,200}(?!.*@ApiOperation)/'
307
- languages: [java]
308
- evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无缺文档注解命中)"]
309
- gate: build-gate
310
- target: "self"
311
- - id: VRF-G02
312
- executor: semantic
313
- rule: "所有信任分级为黑盒的审查项必须有人类签署确认(人工签署判断,不可代码确定性判定)"
314
- severity: info
315
- check_type: semantic
316
- evidence_required: ["LLM/人工语义评估结论(pending 标记,advisory 不阻断,随 Reflexion 反馈供客户端 AI 评判)"]
116
+ required_artifact: 代码审查报告模版
117
+ evidence_required: ["docs/audits/02-代码审查报告.md"]
317
118
  gate: verify-gate
318
- target: "self"
119
+ target: self
319
120
  - id: VRF-G03
320
121
  executor: vitest_run
321
122
  rule: "端到端核心业务流程验证必须全部通过,证据级别至少 E1(运行时证据)"
@@ -334,15 +135,15 @@ checks:
334
135
  target: "self"
335
136
  - id: VRF-G05
336
137
  executor: file_evidence
337
- rule: "验收场景覆盖正常路径、边界条件和异常路径,证据含截图或日志,三类均有 >=1 条证据"
338
- severity: error
138
+ rule: "产出验收证据文件(file_evidence 验证存在+非空);正常/边界/异常三类覆盖须人工确认(每类≥1条)"
139
+ severity: warning
339
140
  check_type: deterministic
340
141
  evidence_required: ["正常路径验收证据","边界条件验收证据","异常路径验收证据","场景覆盖统计(3 类均有 >=1 条证据)"]
341
142
  gate: verify-gate
342
143
  target: "self"
343
144
  - id: VRF-G06
344
145
  executor: report_structure
345
- rule: "主链路集成检查:所有模块为 integrated 状态,无孤岛模块;部署决策必须经人类审批"
146
+ rule: "代码审查报告结构完整非空壳(report_structure 验证≥200字+≥2章节);integrated 无孤岛 + 部署审批须人工确认"
346
147
  severity: error
347
148
  check_type: deterministic
348
149
  required_artifact: 代码审查报告模版
@@ -351,79 +152,99 @@ checks:
351
152
  target: "self"
352
153
  - id: ARC-09
353
154
  executor: external_command
155
+ command: grep
156
+ args: ["-rl", "--include=*.java", "@RestControllerAdvice", "src/"]
354
157
  rule: "项目须配置全局异常处理器;grep 项目级存在性,找到(@RestControllerAdvice/@ControllerAdvice)=exitCode 0 通过,缺失=exitCode 1 失败"
355
158
  severity: warning
356
159
  check_type: deterministic
357
160
  evidence_required: ["external_command 结果(项目存在全局异常处理器 = exitCode 0 通过)"]
358
161
  gate: verify-gate
359
162
  target: "self"
360
- - id: ARC-05
361
- executor: external_command
362
- rule: "单个前端组件文件超过 300 行应拆分;eslint max-lines 检测,超长=exitCode 非0。引用 rules/架构审查.md ARC-05"
163
+ # —— ARCH-DEP 已删(假覆盖:external_command 缺 command → dependency-cruiser 从未真跑、永远 fail-closed)。
164
+ # 分层依赖 / 组件行数非确定性(需 AST / 项目特定规则 / 跨语言工具 dependency-cruiser·ArchUnit),
165
+ # 降级软下限《架构语义红线》+ AI/人工审查。ARC-05(组件<300行)幽灵 check 引用同步清除 ——
166
+ - id: XVAL-REVIEW-REQ
167
+ executor: cross_validation
168
+ rule: "REQ-* 一致性"
363
169
  severity: warning
364
170
  check_type: deterministic
365
- evidence_required: ["external_command 结果(eslint max-lines 报告,超 300 行组件 = exitCode 非0)"]
171
+ required_artifact: 代码审查报告模版
172
+ evidence_required: ["需求分析模版"]
173
+ gate: verify-gate
174
+ target: "self"
175
+ - id: XVAL-REVIEW-API
176
+ executor: cross_validation
177
+ rule: "DD-A* 一致性"
178
+ severity: warning
179
+ check_type: deterministic
180
+ required_artifact: 代码审查报告模版
181
+ evidence_required: ["API接口规格文档模版"]
366
182
  gate: verify-gate
367
183
  target: "self"
368
- - id: ARCH-DEP
184
+ - id: XVAL-REVIEW-DB
185
+ executor: cross_validation
186
+ rule: "DD-T* 一致性"
187
+ severity: warning
188
+ check_type: deterministic
189
+ required_artifact: 代码审查报告模版
190
+ evidence_required: ["数据库设计文档模版"]
191
+ gate: verify-gate
192
+ target: "self"
193
+ # —— 前端承接一致性(XVAL-REVIEW-FE:审查报告引用的 FE-* 须与架构 §6.3 一致;纯后端双方无 FE-* warning 可忽略)——
194
+ - id: XVAL-REVIEW-FE
195
+ executor: cross_validation
196
+ rule: "FE-* 一致性"
197
+ severity: warning
198
+ check_type: deterministic
199
+ required_artifact: 代码审查报告模版
200
+ evidence_required: ["架构设计模版"]
201
+ gate: verify-gate
202
+ target: "self"
203
+ # —— 附件校验(openapi.yaml,redocly lint)——
204
+ - id: OPENAPI-LINT
369
205
  executor: external_command
370
- rule: "模块依赖须遵循分层方向、无循环依赖、表现层不得直接访问数据层;dependency-cruiser 检测,违规=exitCode 非0。覆盖 rules/架构设计.md ARCH-DEP-01/02/03"
206
+ command: npx
207
+ args: ["@redocly/cli", "lint", "--config", "redocly.yaml", "docs/api/openapi.yaml"]
208
+ rule: "openapi.yaml 须通过 redocly lint --config redocly.yaml(SoloForge 锁定规则;YAML 语法+OpenAPI 规范)"
371
209
  severity: warning
372
210
  check_type: deterministic
373
- evidence_required: ["external_command 结果(dependency-cruiser 报告,依赖违规 = exitCode 0"]
211
+ evidence_required: ["redocly lint 输出(exitCode 0 通过)"]
374
212
  gate: verify-gate
375
213
  target: "self"
376
- - id: ARCH-C-REVIEW
377
- executor: semantic
378
- rule: "客户端 AI 评判架构语义红线(不可代码确定性判定,需结合业务上下文人工/AI 评估):① 禁止 Patch JAR/docker commit/运行时文件替换交付代码 ② 禁止前端/Controller/定时任务跨服务边界直接访问持久化实现 ③ 禁止绕过统一认证与数据范围控制暴露业务接口 ④ 新增写操作须有可追溯审计记录 ⑤ 异步消息/定时任务/补偿逻辑须幂等 ⑥ 模块边界单一职责无过度耦合(ARCH-R04)⑦ NFR 目标值可测量(ARCH-R07)⑧ 部署方案环境规划/CI-CD 完整(ARCH-R09)⑨ 风险登记覆盖度充分(ARCH-R10)"
379
- severity: info
380
- check_type: semantic
381
- evidence_required: ["LLM 语义评估结论(pending 标记,advisory 不阻断,随 Reflexion 反馈供客户端 AI 评判/重试)"]
214
+ # —— 字段映射复审(数据库 §3/§7 ↔ schema.sql,verify 域复审一致)——
215
+ - id: FMAP-REVIEW
216
+ executor: field_mapping_validation
217
+ rule: "表.字段 一致性+覆盖率"
218
+ severity: warning
219
+ check_type: deterministic
220
+ required_artifact: 数据库设计文档模版
221
+ evidence_required: ["docs/design/schema.sql"]
382
222
  gate: verify-gate
383
223
  target: "self"
224
+ - id: CODEREVIEW-BLOCK
225
+ executor: document_structure
226
+ check_type: deterministic
227
+ severity: error
228
+ gate: verify-gate
229
+ required_artifact: 代码审查报告模版
230
+ rule: "审查维度矩阵/发现项章节须有表格行(反退化:禁只列前几条后省略/其余见附件)"
231
+ block_check:
232
+ item_pattern: '^##\s+(2|3)\.'
233
+ require_table: true
234
+ min_table_rows: 1
235
+ evidence_required: ["代码审查报告模版"]
236
+ target: "self"
384
237
  ---
385
238
 
386
239
  # verify-gate 强制检查清单
387
240
 
388
- 39 条确定性检查。bridge 从此文件聚合。
241
+ 23 条确定性检查(ARCH-DEP 已删:external_command 缺 command → dependency-cruiser 从未真跑,降级软下限;ARC-05 幽灵引用已清)。bridge 按 check.gate 聚合(CON-*/API-* 并发与 API 规范已归位 build/enforced.md——gate 本就是 build-gate;API-01/02 与 build ARC-02/03 重复已删;VRF-G02/ARCH-C-REVIEW semantic advisory 移至 guidance《架构语义红线》)。
389
242
 
390
243
  对应工程经验:
391
- - SOLID-DIP
392
- - CON-01
393
- - CON-02
394
- - CON-03
395
- - CON-04
396
- - CON-05
397
- - CON-06
398
- - CON-07
399
- - CON-08
400
- - CON-09
401
- - CON-10
402
- - PER-01
403
- - PER-02
404
- - PER-03
405
- - PER-04
406
- - PER-05
407
- - PER-06
408
- - PER-07
409
- - PER-08
410
- - PER-09
411
- - API-01
412
- - API-02
413
- - API-03
414
- - API-04
415
- - API-05
416
- - API-06
417
- - API-07
418
- - API-08
419
- - API-09
420
- - API-10
421
- - VRF-G02
422
- - VRF-G03
423
- - VRF-G04
424
- - VRF-G05
425
- - VRF-G06
426
- - ARC-09
427
- - ARC-05
428
- - ARCH-DEP
429
- - ARCH-C-REVIEW
244
+ - SOLID-DIP(依赖注入,Java/Spring;TS 无 DI 容器不适用)
245
+ - PER-01~09(性能:N+1/SELECT */分页/循环/重渲染/useMemo/连接池/大事务/图片)
246
+ - VRF-G03(vitest E1+)/ VRF-G04(tsc)/ VRF-G05(验收三类覆盖)/ VRF-G06(主链路无孤岛+部署审批)
247
+ - ARC-09(全局异常处理器,grep 项目级存在性)
248
+ - XVAL-REVIEW-REQ/API/DB/FE(审查报告↔需求/API/DB/前端 一致性)
249
+ - OPENAPI-LINT / FMAP-REVIEW
250
+ - 分层依赖 / 组件行数:非确定性(需 AST/项目规则/跨语言工具),归软下限《架构语义红线》+ AI/人工审查
@@ -42,6 +42,7 @@ extra:
42
42
  - [ ] 每条需求 REQ 有对应实现,且实现行为符合需求
43
43
  - [ ] 交付内容不超出需求范围(无多余功能,[[工程执行总纲]] 精准修改)
44
44
  - [ ] 根本目标(fundamental_need)已达成,非只完成表面功能
45
+ - [ ] **前端**(涉及 FE-* 时):交付的端覆盖需求 §9 声明的所有端,每个 FE-* 端骨架完整(路由/状态/API service 壳/认证拦截器),无前端孤岛
45
46
 
46
47
  ## 二、证据充分(逼证据)
47
48
 
@@ -21,6 +21,7 @@ extra:
21
21
 
22
22
  > **产物定位**:verify 阶段必出。代码审查的最终裁决——发现项按严重度分级,黑盒项须人类签署。
23
23
  > **核心纪律**:审查 Agent 与编码 Agent 须独立([[证据驱动与反幻觉]]);黑盒项未经 `[Human-Audit: APPROVED]` 不得判通过([[开发者宪法]])。
24
+ > **反退化纪律**:发现项表须逐条填写(维度/严重度/信任分级/文件/描述/建议/来源),禁止只列前几条后省略、禁止用「其余发现见附件」代替;维度覆盖矩阵每个维度都要标注覆盖状态。
24
25
 
25
26
  # 代码审查报告
26
27
 
@@ -48,6 +49,7 @@ extra:
48
49
  | 交付完备 | DEL-01~DEL-05, SEL-01~SEL-02, TRA-01~TRA-02 | ✅/❌ | <!-- 数量 --> | |
49
50
  | 决策完整性 | DEC-01~DEC-04 | ✅/❌ | <!-- 数量 --> | **AI 盲区** |
50
51
  | 上游交叉验证 | UCV-REV-01~UCV-REV-04 | ✅/❌ | <!-- 数量 --> | |
52
+ | 前端工程 | FE-SKELETON/FE-CONTRACT/FE-AUTH | ✅/❌ | <!-- 数量 --> | 涉及 FE-* 时:骨架完整/前后端契约一致/前端权限承接(XVAL-REVIEW-FE + 交付完备性审查前端维度) |
51
53
 
52
54
  > **AI 盲区维度标注**:design(设计意图)/ maintainability(可维护性深层)/ documentation(文档完备)——这些维度 AI 审查置信度较低,建议人类重点复核。
53
55
 
@@ -67,3 +69,11 @@ extra:
67
69
  | 检查项 | 通过 |
68
70
  |---|---|
69
71
  | <!-- 检查项 --> | 是/否 |
72
+
73
+ ## 完成判定
74
+
75
+ - [ ] 审查覆盖所有变更文件
76
+ - [ ] 发现项按严重度分级(error/warning/info)
77
+ - [ ] 审查清单全部校验通过
78
+ - [ ] 无未处理的 error 级发现
79
+ - [ ] 发现项表逐条完整填写,维度覆盖矩阵无遗漏维度
@@ -0,0 +1,60 @@
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
+ - 部署方案
15
+ - 风险登记
16
+ - 黑盒审查
17
+ - 人工确认
18
+ - 人工签署
19
+ extra:
20
+ name: architecture-semantic-redline
21
+ scope:
22
+ - '*'
23
+ products:
24
+ - '*'
25
+ type: constraint
26
+ lifecycle_status: active
27
+ version: 1.0.0
28
+ domain: verify
29
+ owner_mechanism: mc-stage-gate-engine
30
+ ---
31
+
32
+ # 架构语义红线
33
+
34
+ > **来源**:从 verify/enforced.md 的 `ARCH-C-REVIEW`(架构语义红线 9 条)+ `VRF-G02`(黑盒审查须人工确认)拆出。
35
+ > 这些规则**不可代码确定性判定**(需业务上下文 / 人工判断),故归软下限(triggers 注入 + AI/人工评判),不进 gate。确定性架构检查仅 ARC-09(全局异常处理器,grep 项目级存在性);**分层依赖 / 组件行数同样不可代码确定性判定**(需 AST / 项目特定规则 / 跨语言工具 dependency-cruiser·ArchUnit),归本软下限 + AI/人工审查(原 ARCH-DEP enforced 假覆盖已删,ARC-05 幽灵引用已清)。
36
+
37
+ ## 架构语义红线(原 ARCH-C-REVIEW 9 条)
38
+
39
+ 客户端 AI 结合业务上下文评判:
40
+
41
+ 1. **禁止 Patch JAR / docker commit / 运行时文件替换交付代码** —— 交付物须可重建、可追溯
42
+ 2. **禁止跨服务边界直访持久化** —— 前端 / Controller / 定时任务不得绕过服务层直接访问数据库实现
43
+ 3. **禁止绕过统一认证与数据范围控制暴露业务接口** —— 所有业务接口须经认证 + 数据权限
44
+ 4. **新增写操作须有可追溯审计记录** —— 谁 / 何时 / 改了什么
45
+ 5. **异步消息 / 定时任务 / 补偿逻辑须幂等** —— 重复执行不产生副作用
46
+ 6. **模块边界单一职责无过度耦合**(ARCH-R04)
47
+ 7. **NFR 目标值可测量**(ARCH-R07)—— 性能 / 容量指标有具体数值可验证
48
+ 8. **部署方案环境规划 / CI-CD 完整**(ARCH-R09)
49
+ 9. **风险登记覆盖度充分**(ARCH-R10)
50
+ 10. **模块依赖遵循分层方向、无循环依赖**(原 ARCH-DEP 降级)—— 表现层不得直接访问数据层、service 不得跨层直访;分层违规 / 循环依赖须 AI/人工审查(dependency-cruiser/ArchUnit 项目特定,不进确定性 gate)
51
+
52
+ ## 黑盒审查须人工确认(原 VRF-G02)
53
+
54
+ 所有信任分级为**黑盒**的审查项,必须有人类签署确认(人工签署判断,不可代码确定性判定)。
55
+
56
+ > 为何软:机器无法判定"黑盒审查是否经人工签署"。靠本纪律提醒 AI 主动要求人工确认,并在审查报告记录签署人/时间。
57
+
58
+ ## 关联
59
+ - 确定性架构检查:仅 ARC-09(全局异常处理器)。分层依赖 / 组件行数 → 本软下限 + AI/人工(非确定性,原 ARCH-DEP enforced 假覆盖已删)
60
+ - [[证据驱动与反幻觉]] / [[开发者宪法]]
@@ -1,29 +0,0 @@
1
- /**
2
- * Scope 检查器 — 写路径 scope 硬检查(工具层拦截)。
3
- *
4
- * 职责边界:
5
- * - 负责:判断文件路径是否在任务允许的写范围内
6
- * - 不负责:门禁检查、业务逻辑、状态派生
7
- *
8
- * 被谁调用:sf_work(act 动作,写入前拦截)
9
- * 调用谁:无(纯计算)
10
- *
11
- * 数据流:文件路径 + allowed_paths → boolean
12
- * 持久化:无
13
- */
14
- /** Scope 检查结果 */
15
- export interface ScopeCheckResult {
16
- /** 是否在范围内 */
17
- allowed: boolean;
18
- /** 拒绝原因(allowed=false 时有值) */
19
- reason?: string;
20
- }
21
- /**
22
- * 检查文件路径是否在允许范围内。
23
- * 规则:
24
- * 1. 不能匹配全局禁止模式
25
- * 2. 必须匹配 allowed_paths 中的至少一个前缀/glob
26
- * 3. read_only_paths 只允许读,不允许写
27
- */
28
- export declare function checkScope(filePath: string, allowedPaths: string[], readOnlyPaths?: string[]): ScopeCheckResult;
29
- //# sourceMappingURL=scope_checker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope_checker.d.ts","sourceRoot":"","sources":["../../src/core/scope_checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,iBAAiB;AACjB,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,aAAa,GAAE,MAAM,EAAO,GAC3B,gBAAgB,CA2BlB"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Scope 检查器 — 写路径 scope 硬检查(工具层拦截)。
3
- *
4
- * 职责边界:
5
- * - 负责:判断文件路径是否在任务允许的写范围内
6
- * - 不负责:门禁检查、业务逻辑、状态派生
7
- *
8
- * 被谁调用:sf_work(act 动作,写入前拦截)
9
- * 调用谁:无(纯计算)
10
- *
11
- * 数据流:文件路径 + allowed_paths → boolean
12
- * 持久化:无
13
- */
14
- /** 全局禁止写入的路径模式 */
15
- const DENIED_PATTERNS = [
16
- /\.soloforge\/tasks\//, // 任务文件由 TaskStore 管理
17
- /\.soloforge\/gates\//, // 门禁记录由 GateRecordStore 管理
18
- /\.env/, // 环境变量文件
19
- /\.git\//, // git 内部文件
20
- /node_modules\//, // 依赖目录
21
- ];
22
- /**
23
- * 检查文件路径是否在允许范围内。
24
- * 规则:
25
- * 1. 不能匹配全局禁止模式
26
- * 2. 必须匹配 allowed_paths 中的至少一个前缀/glob
27
- * 3. read_only_paths 只允许读,不允许写
28
- */
29
- export function checkScope(filePath, allowedPaths, readOnlyPaths = []) {
30
- // 规则 1:全局禁止
31
- for (const pattern of DENIED_PATTERNS) {
32
- if (pattern.test(filePath)) {
33
- return { allowed: false, reason: `路径匹配全局禁止模式:${pattern.source}` };
34
- }
35
- }
36
- // 规则 2:只读路径
37
- for (const roPath of readOnlyPaths) {
38
- if (filePath.startsWith(roPath) || filePath.includes(roPath)) {
39
- return { allowed: false, reason: `路径为只读:${roPath}` };
40
- }
41
- }
42
- // 规则 3:必须在允许范围内
43
- if (allowedPaths.length === 0) {
44
- return { allowed: true }; // 未设限制 = 允许全部(除全局禁止外)
45
- }
46
- for (const allowed of allowedPaths) {
47
- if (filePath.startsWith(allowed) || filePath.includes(allowed)) {
48
- return { allowed: true };
49
- }
50
- }
51
- return { allowed: false, reason: `路径不在允许范围内:${filePath}` };
52
- }
53
- //# sourceMappingURL=scope_checker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope_checker.js","sourceRoot":"","sources":["../../src/core/scope_checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,kBAAkB;AAClB,MAAM,eAAe,GAAG;IACtB,sBAAsB,EAAY,qBAAqB;IACvD,sBAAsB,EAAY,2BAA2B;IAC7D,OAAO,EAA4B,SAAS;IAC5C,SAAS,EAA0B,WAAW;IAC9C,gBAAgB,EAAmB,OAAO;CAC3C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,QAAgB,EAChB,YAAsB,EACtB,gBAA0B,EAAE;IAE5B,YAAY;IACZ,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;IAED,YAAY;IACZ,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,sBAAsB;IAClD,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,QAAQ,EAAE,EAAE,CAAC;AAC7D,CAAC"}