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
@@ -11,10 +11,15 @@
11
11
  * 数据流:GateCheck + EvaluationContext → 读取引用方/定义方两个产物 → ID 交叉比对 → CheckResult
12
12
  * 持久化:读取本地文件(docs/)
13
13
  */
14
- import { existsSync, readFileSync } from "node:fs";
15
- import { join } from "node:path";
14
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
15
+ import { join, relative } from "node:path";
16
16
  import { gateExecutors } from "../gate_executors.js";
17
+ import { GateRecordStore } from "../../core/gate_record_store.js";
18
+ import { getFileGitHash } from "../../core/git_utils.js";
17
19
  import { containsGlob, resolveArtifactsByGlob } from "../../shared/glob_path.js";
20
+ import { deliberationRecordPath } from "../../domain/engine_helpers.js";
21
+ import { DESIGN_LIFECYCLE_SLICE_PLAN_PATH } from "../../domain/contracts/design_lifecycle_contract.js";
22
+ import { resolveConfig } from "../../context/config/resolver.js";
18
23
  // ── 交叉校验相关常量和辅助函数 ──
19
24
  /** 产物模版名 → docs/ 真实路径候选(统一 docs/ 子目录体系,无向后兼容兜底)。
20
25
  * 归属:architecture/(决策/架构/切片) · design/(DB/API/详细设计) · audits/(审查) · context/(需求) · analyze/*(原型多端) · api/(openapi)
@@ -37,7 +42,7 @@ export const CROSS_VALIDATION_ARTIFACT_PATHS = {
37
42
  "测试报告模版": ["docs/audits/03-测试报告.md"],
38
43
  "发布说明模版": ["docs/audits/04-发布说明.md"],
39
44
  // 测试计划:canonical 路径见 artifact_aliases.ts:212
40
- "测试计划模版": ["docs/architecture/07-测试计划.md"],
45
+ "测试计划模版": ["docs/build/测试计划.md", "docs/architecture/07-测试计划.md"],
41
46
  "架构决策记录": ["docs/architecture/00-架构决策记录.md"],
42
47
  "迁移评估": ["docs/existing-system/现有系统分析.md"],
43
48
  };
@@ -45,7 +50,7 @@ export const CROSS_VALIDATION_ARTIFACT_PATHS = {
45
50
  * 解析产物名/路径到真实文件路径。
46
51
  * 候选 1:模版名映射;候选 2:直接作为 docs/ 下路径;候选 3:作为项目根相对路径。
47
52
  */
48
- function resolveCrossValidationArtifact(artifact, projectRoot) {
53
+ export function resolveCrossValidationArtifact(artifact, projectRoot) {
49
54
  if (!artifact)
50
55
  return [];
51
56
  const resolved = [];
@@ -124,6 +129,47 @@ function extractIdsByPrefixes(content, prefixes) {
124
129
  }
125
130
  return ids;
126
131
  }
132
+ /** 扫描项目测试文件(跨语言),排除依赖/构建产物/非源码目录。
133
+ * 供 acceptance_coverage 提取 @covers 标注。
134
+ * @covers 标注用各语言行注释(// @covers REQ-xxx 或 # @covers REQ-xxx),executor 正则只看 @covers 部分,跨语言通用。 */
135
+ function resolveTestFiles(projectRoot) {
136
+ const results = [];
137
+ // 排除依赖/构建产物/IDE 目录(target=Maven, bin/out=编译产物, .gradle/.idea=IDE/构建缓存)
138
+ const SKIP = new Set(["node_modules", "dist", ".soloforge", "docs", ".git", "build", "target", "bin", "out", ".gradle", ".idea"]);
139
+ const isTestFile = (name) => /\.(test|spec)\.[tj]sx?$/.test(name) // TS/JS: *.test.ts / *.spec.tsx
140
+ || /^.+[Tt]est(s|Case)?\.java$/.test(name) // Java JUnit: *Test.java / *Tests.java / *TestCase.java
141
+ || /^.+[Tt]ests?\.kt$/.test(name) // Kotlin
142
+ || /^test_.+\.py$/.test(name) || /^.+_test\.py$/.test(name) // Python pytest
143
+ || /^.+_test\.go$/.test(name); // Go
144
+ const walk = (dir) => {
145
+ let entries;
146
+ try {
147
+ entries = readdirSync(dir);
148
+ }
149
+ catch {
150
+ return;
151
+ }
152
+ for (const e of entries) {
153
+ const full = join(dir, e);
154
+ let st;
155
+ try {
156
+ st = statSync(full);
157
+ }
158
+ catch {
159
+ continue;
160
+ }
161
+ if (st.isDirectory()) {
162
+ if (!SKIP.has(e))
163
+ walk(full);
164
+ }
165
+ else if (isTestFile(e)) {
166
+ results.push(full);
167
+ }
168
+ }
169
+ };
170
+ walk(projectRoot);
171
+ return results;
172
+ }
127
173
  /** 注册交叉校验执行器 */
128
174
  export function registerTraceExecutors() {
129
175
  // ═══════════════════════════════════════════
@@ -151,6 +197,27 @@ export function registerTraceExecutors() {
151
197
  const defArtifact = check.evidence_required[0];
152
198
  const defPaths = resolveCrossValidationArtifact(defArtifact, ctx.projectRoot);
153
199
  if (defPaths.length === 0) {
200
+ // ② 按需产出:读引用方产物(如 design_doc)的「产物适用性声明」→ 声明「不适用」则放行。
201
+ // 前端/无后端项目 database_design/api_specification 按需不产,XVAL 不应误报「定义方产物不存在」。
202
+ // 正则 declArtifact[::]\s*不适用 精确匹配 AI 明确选「不适用」(模板默认「适用 / 不适用」不会被误匹配)。
203
+ const declArtifact = defArtifact?.replace(/模版$/, "");
204
+ if (declArtifact && refPaths[0] && existsSync(refPaths[0])) {
205
+ try {
206
+ const refContent = readFileSync(refPaths[0], "utf-8");
207
+ const declRe = new RegExp(`${declArtifact.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}[::]\\s*不适用`);
208
+ if (declRe.test(refContent)) {
209
+ return {
210
+ check_id: check.id,
211
+ executed_by: "code",
212
+ passed: true,
213
+ evidence: `${declArtifact} 声明「不适用」,按需不产(产物适用性声明放行)`,
214
+ };
215
+ }
216
+ }
217
+ catch {
218
+ // 读引用方产物失败 → 维持下方 fail-closed
219
+ }
220
+ }
154
221
  return {
155
222
  check_id: check.id,
156
223
  executed_by: "code",
@@ -220,5 +287,229 @@ export function registerTraceExecutors() {
220
287
  evidence: `交叉校验通过(${mode}): 引用方 ${refIds.size} 个 ID,定义方 ${defIds.size} 个 ID [${prefixes.join("/")}]`,
221
288
  };
222
289
  });
290
+ // ═══════════════════════════════════════════
291
+ // 8.6 产物适用性校验 — design_doc「产物适用性声明」声明的 db/api 须产出对应产物
292
+ // 治本「按需产出」:声明「适用」必产(强制)、声明「不适用」放行(前端/无后端)、未声明强制表态。
293
+ // 复用 cross_validation 的产物解析:required_artifact=声明方(design_doc),evidence_required=待校验产物模版名。
294
+ // 用于 design-gate(②强制)与 build-gate(③兜底)——同逻辑两阶段双保险。
295
+ // ═══════════════════════════════════════════
296
+ gateExecutors.register("applicability_check", async (check, ctx) => {
297
+ const declArtifactName = check.required_artifact ?? "架构设计模版";
298
+ const declPaths = resolveCrossValidationArtifact(declArtifactName, ctx.projectRoot);
299
+ if (declPaths.length === 0) {
300
+ // 声明方产物(design_doc)不存在 → 跳过:design_doc 存在性由 ARCH-STRUCT/document_structure 管;
301
+ // build 阶段跳 design 的小改无 design_doc,不强制 db/api(避免误伤)。
302
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: `声明方产物 ${declArtifactName} 不存在,跳过适用性校验` };
303
+ }
304
+ const esc = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
305
+ const readSafe = (p) => { try {
306
+ return readFileSync(p, "utf-8");
307
+ }
308
+ catch {
309
+ return "";
310
+ } };
311
+ const declContent = declPaths.map(readSafe).join("\n");
312
+ const store = new GateRecordStore(ctx.projectRoot);
313
+ const problems = [];
314
+ for (const art of check.evidence_required ?? []) {
315
+ const name = art.replace(/模版$/, "");
316
+ // 声明「不适用」→ 放行(前端/无后端项目按需不产)
317
+ if (new RegExp(`${esc(name)}[::]\\s*不适用`).test(declContent))
318
+ continue;
319
+ const declared = new RegExp(`${esc(name)}[::]\\s*适用`).test(declContent);
320
+ // 第一性原理:声明方域(design)只校验「表态」——design_doc §8 须明确适用/不适用。
321
+ // 「产物存在/verified」的前提「产物已产出并过门禁」只在下游域入口(build-gate BLD-DBAPI)才成立;
322
+ // 在声明方域校验下游产物(不论"不存在"还是"存在未 verify")都与下游产物的产出/验证时序冲突 → 死循环。
323
+ // 故 design 阶段完全不碰下游产物,只强制表态。
324
+ if (ctx.stage === "design") {
325
+ if (!declared) {
326
+ problems.push(`${name}:未声明适用性,须在 design_doc「产物适用性声明」明确「适用」或「不适用」`);
327
+ }
328
+ continue; // 已表态(适用/不适用)→ design 阶段职责完成,不碰下游产物存在/verified
329
+ }
330
+ // 下游域(build 兜底):校验声明适用→产物存在 + verified
331
+ const prodPaths = resolveCrossValidationArtifact(art, ctx.projectRoot);
332
+ if (prodPaths.length === 0) {
333
+ problems.push(declared
334
+ ? `${name}:声明「适用」但产物不存在,须产出`
335
+ : `${name}:未声明适用性且产物不存在,须在 design_doc「产物适用性声明」明确「适用/不适用」并按需产出`);
336
+ continue;
337
+ }
338
+ // #2: 校验 verified(不只存在)— 兜底漏验(产物存在但未过门禁,如 design 漏 verify 直接 build)
339
+ // verified = passed && !stale(与 observe 同款:record passed 且 git hash 匹配当前文件,防 stale 退化放过)
340
+ const verified = await Promise.all(prodPaths.map(async (p) => {
341
+ const records = await store.listByArtifact(relative(ctx.projectRoot, p));
342
+ const currentHash = await getFileGitHash(p, ctx.projectRoot);
343
+ return records.some((r) => r.passed && !store.isStale(r, currentHash));
344
+ }));
345
+ if (!verified.some(Boolean)) {
346
+ problems.push(`${name}:产物存在但未通过门禁验证(或已退化 stale),须 verify`);
347
+ }
348
+ }
349
+ if (problems.length > 0) {
350
+ return { check_id: check.id, executed_by: "code", passed: false, error: problems.join(";") };
351
+ }
352
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: `适用性校验通过: ${(check.evidence_required ?? []).join("、")}` };
353
+ });
354
+ // 超大系统 build 前研讨兜底(补下限):开发切片计划 SLC-* ≥ THRESHOLD 时,须有 build 域研讨记录(deliberate 留痕)。
355
+ // 触发条件:切片计划存在且切片数达标(小任务/无规划跳过)。研讨记录路径与 deliberate 写入/act 读取三处一致(复用 deliberationRecordPath)。
356
+ gateExecutors.register("slice_deliberation_gate", async (check, ctx) => {
357
+ const THRESHOLD = 5;
358
+ const slicePlanPath = join(ctx.projectRoot, DESIGN_LIFECYCLE_SLICE_PLAN_PATH);
359
+ let content;
360
+ try {
361
+ content = readFileSync(slicePlanPath, "utf-8");
362
+ }
363
+ catch {
364
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: "开发切片计划不存在,非大任务,跳过" };
365
+ }
366
+ // 精确数 ### SLC-NN 切片块;PHASE 表格里的 SLC-01~03 范围引用不以 ### 开头,不会误数
367
+ const sliceCount = (content.match(/^###\s+SLC-\d/gm) || []).length;
368
+ if (sliceCount < THRESHOLD) {
369
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: `切片数 ${sliceCount} < ${THRESHOLD},非超大系统,跳过` };
370
+ }
371
+ const deliberationPath = deliberationRecordPath("build", { path_pattern: "src/" });
372
+ if (!existsSync(join(ctx.projectRoot, deliberationPath))) {
373
+ return {
374
+ check_id: check.id,
375
+ executed_by: "code",
376
+ passed: false,
377
+ error: `超大系统(${sliceCount} 个 SLC 切片 ≥ ${THRESHOLD})build 写代码前须先调 sf_work action="deliberate" target="code" 研讨实现策略并留痕研讨记录(${deliberationPath}),再 act`,
378
+ };
379
+ }
380
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: `超大系统(${sliceCount} 切片)已有实现策略研讨记录(${deliberationPath})` };
381
+ });
382
+ // 系统形态研讨兜底(补下限):需求 §9 声明涉及前端(前后端分离/多端/纯前端 或 端清单有 FE-*)时,
383
+ // 须有需求域研讨记录(deliberate 留痕)。纯后端 API 项目跳过(不需研讨前端形态)。
384
+ // 研讨记录路径与 deliberate 写入/act 读取三处一致(复用 deliberationRecordPath)。
385
+ gateExecutors.register("requirement_deliberation_gate", async (check, ctx) => {
386
+ const requirementPath = join(ctx.projectRoot, "docs/context/需求分析.md"); // design contract requirement_analysis.path_pattern
387
+ let content;
388
+ try {
389
+ content = readFileSync(requirementPath, "utf-8");
390
+ }
391
+ catch {
392
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: "需求分析不存在,跳过" };
393
+ }
394
+ // 纯后端优先判定(§9 形态填「纯后端」即跳过,即使端清单留有模板示例行);否则有前端信号=涉及前端
395
+ if (/纯后端/.test(content)) {
396
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: "系统形态为纯后端 API(无前端),跳过系统形态研讨" };
397
+ }
398
+ const involvesFrontend = /前后端分离|多端|纯前端|FE-[a-z]/i.test(content);
399
+ if (!involvesFrontend) {
400
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: "需求未声明涉及前端,跳过系统形态研讨" };
401
+ }
402
+ const deliberationPath = deliberationRecordPath("design", { path_pattern: "docs/context/需求分析.md" });
403
+ if (!existsSync(join(ctx.projectRoot, deliberationPath))) {
404
+ return {
405
+ check_id: check.id,
406
+ executed_by: "code",
407
+ passed: false,
408
+ error: `需求 §9 声明涉及前端,须先调 sf_work action="deliberate" domain="design" target="requirement_analysis" 与用户研讨系统形态(是否前后端/几个端/各端技术栈)并留痕研讨记录(${deliberationPath}),再产出需求分析`,
409
+ };
410
+ }
411
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: `系统形态已研讨(${deliberationPath} 存在)` };
412
+ });
413
+ // 多工程结构兜底(补下限):intent projects 声明的每个端工程须有 src/ + 独立 .gitignore。
414
+ // 触发:config.projects 非空(多工程)。单工程(无 projects)跳过。逼 build 首切片建工程骨架。
415
+ gateExecutors.register("multi_engine_structure_check", async (check, ctx) => {
416
+ let projects = [];
417
+ try {
418
+ const config = await resolveConfig(ctx.projectRoot);
419
+ projects = config.projects ?? [];
420
+ }
421
+ catch {
422
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: "config 解析失败,跳过多工程结构校验" };
423
+ }
424
+ if (projects.length === 0) {
425
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: "单工程项目(无 projects 声明),跳过" };
426
+ }
427
+ const problems = [];
428
+ for (const p of projects) {
429
+ const dir = p.dir.replace(/\/+$/, "");
430
+ if (!existsSync(join(ctx.projectRoot, dir, "src")))
431
+ problems.push(`${dir}/:缺 src/`);
432
+ if (!existsSync(join(ctx.projectRoot, dir, ".gitignore")))
433
+ problems.push(`${dir}/:缺独立 .gitignore`);
434
+ }
435
+ if (problems.length > 0) {
436
+ return {
437
+ check_id: check.id,
438
+ executed_by: "code",
439
+ passed: false,
440
+ error: `多工程结构不完整(架构 §6.3 + intent projects):${problems.join(";")}。build 首个切片须按端清单建工程骨架(每工程 src/ + 独立 .gitignore + 构建配置)`,
441
+ };
442
+ }
443
+ return { check_id: check.id, executed_by: "code", passed: true, evidence: `多工程结构完整(${projects.length} 工程,各有 src/ + .gitignore)` };
444
+ });
445
+ // ═══════════════════════════════════════════
446
+ // 8.7 验收点↔测试覆盖校验 — design 阶段定义的 REQ-* 验收点须有测试 @covers 标注覆盖
447
+ // 治本"测试凑数":覆盖率%是 LLM 可糊弄的数字门禁(coverage theater);改确定性锚定——
448
+ // 每个 REQ 验收点须被某测试文件 @covers REQ-xxx 显式标注覆盖。
449
+ // 确定性边界:只校验"标注覆盖"(机器可判),不判"断言是否真验证语义"(LLM/人工范畴)。
450
+ // 配置:evidence_required[0]=定义方产物(默认"需求分析模版",提取 REQ-*);rule 声明前缀(REQ-*)。
451
+ // ═══════════════════════════════════════════
452
+ gateExecutors.register("acceptance_coverage", async (check, ctx) => {
453
+ // 定义方产物(提取验收点 ID)= evidence_required[0],默认需求分析
454
+ const defArtifact = check.evidence_required?.[0] ?? "需求分析模版";
455
+ const defPaths = resolveCrossValidationArtifact(defArtifact, ctx.projectRoot);
456
+ if (defPaths.length === 0) {
457
+ // 无需求分析产物(如引擎本身/纯 bug 修复小改,非功能开发)→ 跳过,不强制 REQ 覆盖
458
+ return {
459
+ check_id: check.id,
460
+ executed_by: "code",
461
+ passed: true,
462
+ evidence: `验收点定义方产物「${defArtifact}」不存在,非功能开发任务(无需求分析),跳过验收覆盖校验`,
463
+ };
464
+ }
465
+ // ID 前缀(默认 REQ-)
466
+ let prefixes = extractIdPrefixesFromRule(check.rule);
467
+ if (prefixes.length === 0)
468
+ prefixes = ["REQ-"];
469
+ const readSafe = (p) => { try {
470
+ return readFileSync(p, "utf-8");
471
+ }
472
+ catch {
473
+ return "";
474
+ } };
475
+ const defContent = defPaths.map(readSafe).join("\n");
476
+ const defIds = extractIdsByPrefixes(defContent, prefixes);
477
+ // 空集防御:定义方无 REQ → 需求未声明验收点,fail-closed(防偷懒)
478
+ if (defIds.size === 0) {
479
+ return {
480
+ check_id: check.id,
481
+ executed_by: "code",
482
+ passed: false,
483
+ error: `定义方产物「${defArtifact}」未包含 ${prefixes.join("/")} 验收点编号(须填真实编号如 REQ-001,而非占位符)`,
484
+ };
485
+ }
486
+ // 引用方 = 测试文件 @covers 标注(扫项目测试文件,排除 node_modules/dist/.soloforge/docs)
487
+ const testPaths = resolveTestFiles(ctx.projectRoot);
488
+ const coversRe = /@covers\s+([A-Z]+-\d{1,4})/g;
489
+ const coveredIds = new Set();
490
+ for (const tp of testPaths) {
491
+ const content = readSafe(tp);
492
+ for (const m of content.matchAll(coversRe)) {
493
+ if (prefixes.some((p) => m[1].startsWith(p)))
494
+ coveredIds.add(m[1]);
495
+ }
496
+ }
497
+ // 覆盖率:定义方 REQ 须被 @covers 覆盖
498
+ const missing = [...defIds].filter((id) => !coveredIds.has(id));
499
+ if (missing.length > 0) {
500
+ return {
501
+ check_id: check.id,
502
+ executed_by: "code",
503
+ passed: false,
504
+ error: `验收点未测试覆盖 ${missing.length} 个: ${missing.slice(0, 8).join(", ")}(须在对应测试文件标注 @covers REQ-xxx)`,
505
+ };
506
+ }
507
+ return {
508
+ check_id: check.id,
509
+ executed_by: "code",
510
+ passed: true,
511
+ evidence: `验收点测试覆盖通过: ${defIds.size} 个 ${prefixes.join("/")} 验收点全部被 @covers 标注覆盖`,
512
+ };
513
+ });
223
514
  }
224
515
  //# sourceMappingURL=executors_trace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executors_trace.js","sourceRoot":"","sources":["../../../src/gate/executors/executors_trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executors_trace.js","sourceRoot":"","sources":["../../../src/gate/executors/executors_trace.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gate/executors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,gBAAgB;AAChB,wBAAgB,oBAAoB,IAAI,IAAI,CAc3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gate/executors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgBH,gBAAgB;AAChB,wBAAgB,oBAAoB,IAAI,IAAI,CAe3C"}
@@ -19,9 +19,10 @@ import { registerScopeExecutors } from "./executors_scope.js";
19
19
  import { registerPrerequisiteExecutors } from "./executors_prerequisite.js";
20
20
  import { registerProbeExecutor } from "./executors_probe.js";
21
21
  import { registerExternalCommandExecutor } from "./executors_external_command.js";
22
+ import { registerFieldMappingExecutor } from "./executors_field_mapping.js";
22
23
  import { executeRegexPatternScan } from "./executors_regex_scan.js";
23
- import { executeOpenApiSyncCheck } from "./executors_openapi_sync.js";
24
24
  import { executeAnnotationCheck } from "./executors_annotation.js";
25
+ import { registerJacocoExecutor } from "./executors_jacoco.js";
25
26
  import { gateExecutors } from "../gate_executors.js";
26
27
  /** 注册所有内置执行器 */
27
28
  export function registerAllExecutors() {
@@ -33,9 +34,10 @@ export function registerAllExecutors() {
33
34
  registerPrerequisiteExecutors();
34
35
  registerProbeExecutor();
35
36
  registerExternalCommandExecutor();
37
+ registerFieldMappingExecutor();
38
+ registerJacocoExecutor();
36
39
  // 新增:代码强制执行 executor
37
40
  gateExecutors.register("regex_pattern_scan", executeRegexPatternScan);
38
- gateExecutors.register("openapi_sync_check", executeOpenApiSyncCheck);
39
41
  gateExecutors.register("ast_annotation_check", executeAnnotationCheck);
40
42
  }
41
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gate/executors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,gBAAgB;AAChB,MAAM,UAAU,oBAAoB;IAClC,uBAAuB,EAAE,CAAC;IAC1B,yBAAyB,EAAE,CAAC;IAC5B,sBAAsB,EAAE,CAAC;IACzB,sBAAsB,EAAE,CAAC;IACzB,sBAAsB,EAAE,CAAC;IACzB,6BAA6B,EAAE,CAAC;IAChC,qBAAqB,EAAE,CAAC;IACxB,+BAA+B,EAAE,CAAC;IAElC,qBAAqB;IACrB,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IACtE,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IACtE,aAAa,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gate/executors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,gBAAgB;AAChB,MAAM,UAAU,oBAAoB;IAClC,uBAAuB,EAAE,CAAC;IAC1B,yBAAyB,EAAE,CAAC;IAC5B,sBAAsB,EAAE,CAAC;IACzB,sBAAsB,EAAE,CAAC;IACzB,sBAAsB,EAAE,CAAC;IACzB,6BAA6B,EAAE,CAAC;IAChC,qBAAqB,EAAE,CAAC;IACxB,+BAA+B,EAAE,CAAC;IAClC,4BAA4B,EAAE,CAAC;IAC/B,sBAAsB,EAAE,CAAC;IAEzB,qBAAqB;IACrB,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IACtE,aAAa,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;AACzE,CAAC"}
@@ -15,6 +15,13 @@ import type { SystemType } from "../shared/types.js";
15
15
  import type { TaskContext } from "../types/index.js";
16
16
  import type { ResolvedConfig } from "../context/config/resolver.js";
17
17
  import type { ProbeRule } from "../verify/audit/probe_rule.js";
18
+ import type { BlockCheckConfig } from "../domain/asset_registry/derived_types.js";
19
+ /**
20
+ * 计算域门禁规则集指纹(该域全部 enforced check 的 id+executor+severity+rule+block_check 的 hash)。
21
+ * 规则变(加 check/改 rule/改 block_check)→ hash 变 → doctor 标 rules_stale 需重验。
22
+ * verify 写 GateRecord 时记录;doctor 比对当前 hash 判定旧 verified 产物是否需重验。
23
+ */
24
+ export declare function computeRulesetHash(domain: string, projectRoot?: string): string;
18
25
  /** 获取并清空自上次调用以来的门禁加载警告 */
19
26
  export declare function drainGateLoadWarnings(): string[];
20
27
  /** 门禁 YAML 解析后的结构化定义 */
@@ -62,6 +69,8 @@ export interface GateCheck {
62
69
  command?: string;
63
70
  /** 外部命令参数(仅 executor="external_command" 携带) */
64
71
  args?: string[];
72
+ /** 条目块完整性校验(仅 executor="document_structure" 携带,反退化硬兜底) */
73
+ block_check?: BlockCheckConfig;
65
74
  }
66
75
  /** 决策模型 */
67
76
  export interface DecisionModel {
@@ -100,6 +109,14 @@ export interface GateResult {
100
109
  blocking_details: BlockingDetail[];
101
110
  /** warning 级未通过的详细信息(含恢复指引,AI 可见) */
102
111
  warning_details: BlockingDetail[];
112
+ /** 被豁免(waiver)的失败项详情:不阻断推进,但仍记录供审计/sf_doctor 展示(保留 passed=false 真相) */
113
+ waived_details: BlockingDetail[];
114
+ /** 本次评估应用的豁免(check_id → waiver_id + reason,供 sf_work 填 record.waiver_ids/findings 标记) */
115
+ applied_waivers: Array<{
116
+ check_id: string;
117
+ waiver_id: string;
118
+ reason: string;
119
+ }>;
103
120
  /** 整体恢复摘要(一段大白话总览) */
104
121
  recovery_summary: string;
105
122
  }
@@ -126,6 +143,9 @@ export interface EvaluationContext {
126
143
  projectRoot: string;
127
144
  /** 当前阶段 */
128
145
  stage: string;
146
+ /** 当前验证的产物路径(sf_work verify 按 per-artifact 注入;ODA 探针路径可能为 undefined)。
147
+ * waiver 的 scope=exact 匹配依赖此字段;undefined 时只匹配 scope=check_id 的豁免。 */
148
+ artifactPath?: string;
129
149
  /** 当前切片 ID(如有) */
130
150
  sliceId?: string;
131
151
  /** 系统类型 */
@@ -1 +1 @@
1
- {"version":3,"file":"gate_engine.d.ts","sourceRoot":"","sources":["../../src/gate/gate_engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate_engine.d.ts","sourceRoot":"","sources":["../../src/gate/gate_engine.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,23 @@ import { gateExecutors } from "./gate_executors.js";
19
19
  import { debug } from "../shared/logger.js";
20
20
  import { loadProjectProbeRules } from "../verify/audit/probe_rule.js";
21
21
  import { buildGateFromRegistry } from "./gate_registry_bridge.js";
22
+ import crypto from "node:crypto";
23
+ import { WaiverStore, matchWaiver } from "../core/waiver_store.js";
24
+ import { ALL_DOMAINS } from "../core/types.js";
25
+ /**
26
+ * 计算域门禁规则集指纹(该域全部 enforced check 的 id+executor+severity+rule+block_check 的 hash)。
27
+ * 规则变(加 check/改 rule/改 block_check)→ hash 变 → doctor 标 rules_stale 需重验。
28
+ * verify 写 GateRecord 时记录;doctor 比对当前 hash 判定旧 verified 产物是否需重验。
29
+ */
30
+ export function computeRulesetHash(domain, projectRoot) {
31
+ const gates = buildGateFromRegistry(domain, projectRoot);
32
+ const fingerprint = gates
33
+ .flatMap((g) => g.checks)
34
+ .map((c) => [c.id, c.executor ?? "", c.severity, c.rule, c.block_check ? JSON.stringify(c.block_check) : ""].join("|"))
35
+ .sort()
36
+ .join("||");
37
+ return crypto.createHash("sha256").update(fingerprint).digest("hex").slice(0, 16);
38
+ }
22
39
  // ═══════════════════════════════════════════
23
40
  // 门禁加载警告收集(gate YAML 解析/目录读取失败时使用,避免静默跳过)
24
41
  // ═══════════════════════════════════════════
@@ -215,26 +232,54 @@ export async function evaluateGate(gate, ctx) {
215
232
  const result = await evaluateCheck(check, ctx);
216
233
  checkResults.push(result);
217
234
  }
218
- // 收集 error 级 + warning 级未通过的 check + 构建恢复信息
235
+ // 收集 error 级 + warning 级未通过的 check + 被豁免(waiver)的失败项 + 构建恢复信息
219
236
  const blockingErrors = [];
220
237
  const blockingDetails = [];
221
238
  const warningDetails = [];
239
+ const waivedDetails = [];
240
+ const appliedWaivers = [];
222
241
  const resultsWithSeverity = [];
242
+ // 懒加载豁免:只在有 failed check 时查(性能);豁免加载失败 → 空列表(gate 仍按原逻辑跑,不阻断)
243
+ const failedIds = new Set(checkResults.filter((r) => !r.passed).map((r) => r.check_id));
244
+ let activeWaivers = [];
245
+ if (failedIds.size > 0) {
246
+ const domain = ALL_DOMAINS.includes(ctx.stage) ? ctx.stage : undefined;
247
+ if (domain) {
248
+ try {
249
+ activeWaivers = await new WaiverStore(ctx.projectRoot).listActive(domain);
250
+ }
251
+ catch {
252
+ activeWaivers = [];
253
+ }
254
+ }
255
+ }
223
256
  for (let i = 0; i < checkResults.length; i++) {
224
257
  const severity = gate.checks[i]?.severity ?? "error";
225
- resultsWithSeverity.push({ ...checkResults[i], severity });
258
+ const cid = checkResults[i].check_id;
259
+ // 失败项才查豁免(matchWaiver:exact 优先,其次 check_id-wide)
260
+ const waiver = !checkResults[i].passed ? matchWaiver(cid, ctx.artifactPath, activeWaivers) : undefined;
261
+ const isWaived = !!waiver;
262
+ // 给 decision model 的视图:waived 视为 passed=true(不进 failedErrors,不 rollback)。
263
+ // 原始 checkResults 里 waived 的 passed 仍为 false(保留真相供 Reflexion 反馈闭环)。
264
+ const effectivePassed = isWaived ? true : checkResults[i].passed;
265
+ resultsWithSeverity.push({ ...checkResults[i], passed: effectivePassed, severity });
226
266
  if (!checkResults[i].passed) {
227
267
  const check = gate.checks[i];
228
268
  const detail = {
229
- check_id: checkResults[i].check_id,
230
- name: check?.name || checkResults[i].check_id,
269
+ check_id: cid,
270
+ name: check?.name || cid,
231
271
  rule: check?.rule ?? "",
232
272
  evidence_required: check?.evidence_required ?? [],
233
273
  error: checkResults[i].error ?? "",
234
274
  recovery_guide: buildRecoveryGuide(checkResults[i], check, gate, ctx),
235
275
  };
236
- if (severity === "error") {
237
- blockingErrors.push(checkResults[i].check_id);
276
+ if (isWaived && waiver) {
277
+ // 豁免:不阻断,收审计详情;applyDecisionModelWithSeverity 因 effectivePassed 已不计为 failed
278
+ waivedDetails.push(detail);
279
+ appliedWaivers.push({ check_id: cid, waiver_id: waiver.waiver_id, reason: waiver.reason });
280
+ }
281
+ else if (severity === "error") {
282
+ blockingErrors.push(cid);
238
283
  blockingDetails.push(detail);
239
284
  }
240
285
  else {
@@ -274,6 +319,11 @@ export async function evaluateGate(gate, ctx) {
274
319
  const warningNote = `\n⚠️ 门禁加载警告:\n${loadWarnings.map(w => `- ${w}`).join("\n")}`;
275
320
  recoverySummary = recoverySummary ? recoverySummary + warningNote : warningNote.trim();
276
321
  }
322
+ // 豁免提示:让用户/AI 知道有 N 项被豁免(不阻断但需定期复核,sf_doctor 可查 active waivers)
323
+ if (waivedDetails.length > 0) {
324
+ const waivedNote = `\n提示:${waivedDetails.length} 项检查已被豁免(waiver),不阻断推进,但请定期复核(sf_doctor 可查 active waivers / sf_waiver list 可列详情)。`;
325
+ recoverySummary = recoverySummary ? recoverySummary + waivedNote : waivedNote.trim();
326
+ }
277
327
  return {
278
328
  gate_id: gate.source_file ?? gate.stage,
279
329
  passed: decision === "promote",
@@ -282,6 +332,8 @@ export async function evaluateGate(gate, ctx) {
282
332
  blocking_errors: blockingErrors,
283
333
  blocking_details: blockingDetails,
284
334
  warning_details: warningDetails,
335
+ waived_details: waivedDetails,
336
+ applied_waivers: appliedWaivers,
285
337
  recovery_summary: recoverySummary,
286
338
  };
287
339
  }