soloforge 1.1.44 → 1.1.46

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 (289) hide show
  1. package/README.md +3 -3
  2. package/dist/context/contracts/lifecycle_knowledge_contract.d.ts.map +1 -1
  3. package/dist/context/contracts/lifecycle_knowledge_contract.js +2 -2
  4. package/dist/context/contracts/lifecycle_knowledge_contract.js.map +1 -1
  5. package/dist/core/task_context/manager.d.ts +0 -8
  6. package/dist/core/task_context/manager.d.ts.map +1 -1
  7. package/dist/core/task_context/manager.js +1 -19
  8. package/dist/core/task_context/manager.js.map +1 -1
  9. package/dist/core/task_context/state_fact_classifier.d.ts +0 -8
  10. package/dist/core/task_context/state_fact_classifier.d.ts.map +1 -1
  11. package/dist/core/task_context/state_fact_classifier.js +0 -36
  12. package/dist/core/task_context/state_fact_classifier.js.map +1 -1
  13. package/dist/domain/contracts/design_artifact_pack.d.ts +0 -1
  14. package/dist/domain/contracts/design_artifact_pack.d.ts.map +1 -1
  15. package/dist/domain/contracts/design_artifact_pack.js +1 -4
  16. package/dist/domain/contracts/design_artifact_pack.js.map +1 -1
  17. package/dist/domain/index.d.ts +1 -1
  18. package/dist/domain/index.d.ts.map +1 -1
  19. package/dist/domain/registry.d.ts +2 -2
  20. package/dist/domain/registry.d.ts.map +1 -1
  21. package/dist/domain/types.d.ts +1 -12
  22. package/dist/domain/types.d.ts.map +1 -1
  23. package/dist/domain/types.js +3 -0
  24. package/dist/domain/types.js.map +1 -1
  25. package/dist/gate/contracts/capability_registry.d.ts.map +1 -1
  26. package/dist/gate/contracts/capability_registry.js +0 -26
  27. package/dist/gate/contracts/capability_registry.js.map +1 -1
  28. package/dist/gate/contracts/control_plane_contract.d.ts +1 -1
  29. package/dist/gate/contracts/control_plane_contract.d.ts.map +1 -1
  30. package/dist/gate/contracts/control_plane_contract.js +1 -10
  31. package/dist/gate/contracts/control_plane_contract.js.map +1 -1
  32. package/dist/gate/contracts/tool_invocation_contract_registry.d.ts +1 -0
  33. package/dist/gate/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
  34. package/dist/gate/contracts/tool_invocation_contract_registry.js +1 -1
  35. package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
  36. package/dist/gate/executors/executors_annotation.d.ts.map +1 -1
  37. package/dist/gate/executors/executors_annotation.js +8 -1
  38. package/dist/gate/executors/executors_annotation.js.map +1 -1
  39. package/dist/gate/executors/executors_artifact.d.ts +1 -1
  40. package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
  41. package/dist/gate/executors/executors_artifact.js +18 -7
  42. package/dist/gate/executors/executors_artifact.js.map +1 -1
  43. package/dist/gate/executors/executors_deploy.d.ts.map +1 -1
  44. package/dist/gate/executors/executors_deploy.js +3 -2
  45. package/dist/gate/executors/executors_deploy.js.map +1 -1
  46. package/dist/gate/executors/executors_openapi_sync.d.ts.map +1 -1
  47. package/dist/gate/executors/executors_openapi_sync.js +15 -2
  48. package/dist/gate/executors/executors_openapi_sync.js.map +1 -1
  49. package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
  50. package/dist/gate/executors/executors_regex_scan.js +9 -0
  51. package/dist/gate/executors/executors_regex_scan.js.map +1 -1
  52. package/dist/gate/executors/executors_trace.d.ts.map +1 -1
  53. package/dist/gate/executors/executors_trace.js +12 -2
  54. package/dist/gate/executors/executors_trace.js.map +1 -1
  55. package/dist/gate/index.d.ts +0 -2
  56. package/dist/gate/index.d.ts.map +1 -1
  57. package/dist/gate/index.js +0 -1
  58. package/dist/gate/index.js.map +1 -1
  59. package/dist/server/tools/index.d.ts.map +1 -1
  60. package/dist/server/tools/index.js +1 -3
  61. package/dist/server/tools/index.js.map +1 -1
  62. package/dist/server/tools/lazy_loaders.d.ts +0 -23
  63. package/dist/server/tools/lazy_loaders.d.ts.map +1 -1
  64. package/dist/server/tools/lazy_loaders.js +2 -33
  65. package/dist/server/tools/lazy_loaders.js.map +1 -1
  66. package/dist/server/tools/middleware.d.ts +2 -5
  67. package/dist/server/tools/middleware.d.ts.map +1 -1
  68. package/dist/server/tools/middleware.js +3 -33
  69. package/dist/server/tools/middleware.js.map +1 -1
  70. package/dist/server/tools/sf_task.d.ts.map +1 -1
  71. package/dist/server/tools/sf_task.js +9 -8
  72. package/dist/server/tools/sf_task.js.map +1 -1
  73. package/dist/server/tools/types.d.ts +0 -2
  74. package/dist/server/tools/types.d.ts.map +1 -1
  75. package/dist/types/pipeline_types.d.ts +1 -9
  76. package/dist/types/pipeline_types.d.ts.map +1 -1
  77. package/dist/verify/audit/verifier.d.ts.map +1 -1
  78. package/dist/verify/audit/verifier.js +0 -33
  79. package/dist/verify/audit/verifier.js.map +1 -1
  80. package/dist/verify/index.d.ts +1 -4
  81. package/dist/verify/index.d.ts.map +1 -1
  82. package/dist/verify/index.js +0 -3
  83. package/dist/verify/index.js.map +1 -1
  84. package/dist/verify/types.d.ts +0 -21
  85. package/dist/verify/types.d.ts.map +1 -1
  86. package/package.json +1 -1
  87. package/templates/shared//345/206/263/347/255/226/347/275/221/345/205/263.md +7 -21
  88. package/dist/context/engine/dependency_scanner.d.ts +0 -23
  89. package/dist/context/engine/dependency_scanner.d.ts.map +0 -1
  90. package/dist/context/engine/dependency_scanner.js +0 -309
  91. package/dist/context/engine/dependency_scanner.js.map +0 -1
  92. package/dist/context/engine/exploration.d.ts +0 -194
  93. package/dist/context/engine/exploration.d.ts.map +0 -1
  94. package/dist/context/engine/exploration.js +0 -712
  95. package/dist/context/engine/exploration.js.map +0 -1
  96. package/dist/context/knowledge/knowledge_acceptance_registry.d.ts +0 -42
  97. package/dist/context/knowledge/knowledge_acceptance_registry.d.ts.map +0 -1
  98. package/dist/context/knowledge/knowledge_acceptance_registry.js +0 -249
  99. package/dist/context/knowledge/knowledge_acceptance_registry.js.map +0 -1
  100. package/dist/context/knowledge/knowledge_scenario_registry.d.ts +0 -26
  101. package/dist/context/knowledge/knowledge_scenario_registry.d.ts.map +0 -1
  102. package/dist/context/knowledge/knowledge_scenario_registry.js +0 -267
  103. package/dist/context/knowledge/knowledge_scenario_registry.js.map +0 -1
  104. package/dist/context/knowledge/knowledge_sovereignty.d.ts +0 -65
  105. package/dist/context/knowledge/knowledge_sovereignty.d.ts.map +0 -1
  106. package/dist/context/knowledge/knowledge_sovereignty.js +0 -199
  107. package/dist/context/knowledge/knowledge_sovereignty.js.map +0 -1
  108. package/dist/context/team_awareness.d.ts +0 -42
  109. package/dist/context/team_awareness.d.ts.map +0 -1
  110. package/dist/context/team_awareness.js +0 -154
  111. package/dist/context/team_awareness.js.map +0 -1
  112. package/dist/context/templates/template_asset_visibility.d.ts +0 -116
  113. package/dist/context/templates/template_asset_visibility.d.ts.map +0 -1
  114. package/dist/context/templates/template_asset_visibility.js +0 -310
  115. package/dist/context/templates/template_asset_visibility.js.map +0 -1
  116. package/dist/gate/conflict_gate.d.ts +0 -53
  117. package/dist/gate/conflict_gate.d.ts.map +0 -1
  118. package/dist/gate/conflict_gate.js +0 -96
  119. package/dist/gate/conflict_gate.js.map +0 -1
  120. package/dist/gate/contracts/capability_action_advisor.d.ts +0 -34
  121. package/dist/gate/contracts/capability_action_advisor.d.ts.map +0 -1
  122. package/dist/gate/contracts/capability_action_advisor.js +0 -165
  123. package/dist/gate/contracts/capability_action_advisor.js.map +0 -1
  124. package/dist/gate/contracts/capability_state_store.d.ts +0 -121
  125. package/dist/gate/contracts/capability_state_store.d.ts.map +0 -1
  126. package/dist/gate/contracts/capability_state_store.js +0 -188
  127. package/dist/gate/contracts/capability_state_store.js.map +0 -1
  128. package/dist/gate/contracts/contract_guard.d.ts +0 -50
  129. package/dist/gate/contracts/contract_guard.d.ts.map +0 -1
  130. package/dist/gate/contracts/contract_guard.js +0 -611
  131. package/dist/gate/contracts/contract_guard.js.map +0 -1
  132. package/dist/gate/contracts/escape_report.d.ts +0 -103
  133. package/dist/gate/contracts/escape_report.d.ts.map +0 -1
  134. package/dist/gate/contracts/escape_report.js +0 -145
  135. package/dist/gate/contracts/escape_report.js.map +0 -1
  136. package/dist/gate/feasibility_checker.d.ts +0 -27
  137. package/dist/gate/feasibility_checker.d.ts.map +0 -1
  138. package/dist/gate/feasibility_checker.js +0 -114
  139. package/dist/gate/feasibility_checker.js.map +0 -1
  140. package/dist/gate/migration_guard.d.ts +0 -22
  141. package/dist/gate/migration_guard.d.ts.map +0 -1
  142. package/dist/gate/migration_guard.js +0 -277
  143. package/dist/gate/migration_guard.js.map +0 -1
  144. package/dist/gate/scope_lease.d.ts +0 -94
  145. package/dist/gate/scope_lease.d.ts.map +0 -1
  146. package/dist/gate/scope_lease.js +0 -180
  147. package/dist/gate/scope_lease.js.map +0 -1
  148. package/dist/git/git_deps.d.ts +0 -85
  149. package/dist/git/git_deps.d.ts.map +0 -1
  150. package/dist/git/git_deps.js +0 -22
  151. package/dist/git/git_deps.js.map +0 -1
  152. package/dist/git/operations.d.ts +0 -173
  153. package/dist/git/operations.d.ts.map +0 -1
  154. package/dist/git/operations.js +0 -350
  155. package/dist/git/operations.js.map +0 -1
  156. package/dist/server/tools/gate_engine.d.ts +0 -17
  157. package/dist/server/tools/gate_engine.d.ts.map +0 -1
  158. package/dist/server/tools/gate_engine.js +0 -17
  159. package/dist/server/tools/gate_engine.js.map +0 -1
  160. package/dist/server/tools/middleware/budget_check.d.ts +0 -35
  161. package/dist/server/tools/middleware/budget_check.d.ts.map +0 -1
  162. package/dist/server/tools/middleware/budget_check.js +0 -69
  163. package/dist/server/tools/middleware/budget_check.js.map +0 -1
  164. package/dist/shared/contracts/contract_registry/builtin_contracts_core.d.ts +0 -16
  165. package/dist/shared/contracts/contract_registry/builtin_contracts_core.d.ts.map +0 -1
  166. package/dist/shared/contracts/contract_registry/builtin_contracts_core.js +0 -306
  167. package/dist/shared/contracts/contract_registry/builtin_contracts_core.js.map +0 -1
  168. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.d.ts +0 -16
  169. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.d.ts.map +0 -1
  170. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.js +0 -304
  171. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.js.map +0 -1
  172. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.d.ts +0 -16
  173. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.d.ts.map +0 -1
  174. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.js +0 -434
  175. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.js.map +0 -1
  176. package/dist/shared/contracts/contract_registry/index.d.ts +0 -8
  177. package/dist/shared/contracts/contract_registry/index.d.ts.map +0 -1
  178. package/dist/shared/contracts/contract_registry/index.js +0 -7
  179. package/dist/shared/contracts/contract_registry/index.js.map +0 -1
  180. package/dist/shared/contracts/contract_registry/registry.d.ts +0 -62
  181. package/dist/shared/contracts/contract_registry/registry.d.ts.map +0 -1
  182. package/dist/shared/contracts/contract_registry/registry.js +0 -191
  183. package/dist/shared/contracts/contract_registry/registry.js.map +0 -1
  184. package/dist/shared/contracts/contract_registry/registry_internal.d.ts +0 -19
  185. package/dist/shared/contracts/contract_registry/registry_internal.d.ts.map +0 -1
  186. package/dist/shared/contracts/contract_registry/registry_internal.js +0 -54
  187. package/dist/shared/contracts/contract_registry/registry_internal.js.map +0 -1
  188. package/dist/shared/contracts/contract_registry/types.d.ts +0 -47
  189. package/dist/shared/contracts/contract_registry/types.d.ts.map +0 -1
  190. package/dist/shared/contracts/contract_registry/types.js +0 -5
  191. package/dist/shared/contracts/contract_registry/types.js.map +0 -1
  192. package/dist/shared/contracts/contract_registry/validation.d.ts +0 -25
  193. package/dist/shared/contracts/contract_registry/validation.d.ts.map +0 -1
  194. package/dist/shared/contracts/contract_registry/validation.js +0 -363
  195. package/dist/shared/contracts/contract_registry/validation.js.map +0 -1
  196. package/dist/shared/llm_gateway.d.ts +0 -186
  197. package/dist/shared/llm_gateway.d.ts.map +0 -1
  198. package/dist/shared/llm_gateway.js +0 -393
  199. package/dist/shared/llm_gateway.js.map +0 -1
  200. package/dist/verify/audit/audit_sampler.d.ts +0 -29
  201. package/dist/verify/audit/audit_sampler.d.ts.map +0 -1
  202. package/dist/verify/audit/audit_sampler.js +0 -42
  203. package/dist/verify/audit/audit_sampler.js.map +0 -1
  204. package/dist/verify/audit/debt_reporter.d.ts +0 -22
  205. package/dist/verify/audit/debt_reporter.d.ts.map +0 -1
  206. package/dist/verify/audit/debt_reporter.js +0 -107
  207. package/dist/verify/audit/debt_reporter.js.map +0 -1
  208. package/dist/verify/audit/debugger.d.ts +0 -25
  209. package/dist/verify/audit/debugger.d.ts.map +0 -1
  210. package/dist/verify/audit/debugger.js +0 -429
  211. package/dist/verify/audit/debugger.js.map +0 -1
  212. package/dist/verify/audit/degradation.d.ts +0 -62
  213. package/dist/verify/audit/degradation.d.ts.map +0 -1
  214. package/dist/verify/audit/degradation.js +0 -78
  215. package/dist/verify/audit/degradation.js.map +0 -1
  216. package/dist/verify/audit/developer_sovereignty.d.ts +0 -29
  217. package/dist/verify/audit/developer_sovereignty.d.ts.map +0 -1
  218. package/dist/verify/audit/developer_sovereignty.js +0 -137
  219. package/dist/verify/audit/developer_sovereignty.js.map +0 -1
  220. package/dist/verify/audit/failure_report.d.ts +0 -76
  221. package/dist/verify/audit/failure_report.d.ts.map +0 -1
  222. package/dist/verify/audit/failure_report.js +0 -145
  223. package/dist/verify/audit/failure_report.js.map +0 -1
  224. package/dist/verify/audit/governance_report.d.ts +0 -110
  225. package/dist/verify/audit/governance_report.d.ts.map +0 -1
  226. package/dist/verify/audit/governance_report.js +0 -194
  227. package/dist/verify/audit/governance_report.js.map +0 -1
  228. package/dist/verify/audit/mutation_audit.d.ts +0 -40
  229. package/dist/verify/audit/mutation_audit.d.ts.map +0 -1
  230. package/dist/verify/audit/mutation_audit.js +0 -154
  231. package/dist/verify/audit/mutation_audit.js.map +0 -1
  232. package/dist/verify/audit/risk_sampler.d.ts +0 -44
  233. package/dist/verify/audit/risk_sampler.d.ts.map +0 -1
  234. package/dist/verify/audit/risk_sampler.js +0 -80
  235. package/dist/verify/audit/risk_sampler.js.map +0 -1
  236. package/dist/verify/audit/runtime_safety.d.ts +0 -89
  237. package/dist/verify/audit/runtime_safety.d.ts.map +0 -1
  238. package/dist/verify/audit/runtime_safety.js +0 -209
  239. package/dist/verify/audit/runtime_safety.js.map +0 -1
  240. package/dist/verify/audit/semantic_evidence.d.ts +0 -36
  241. package/dist/verify/audit/semantic_evidence.d.ts.map +0 -1
  242. package/dist/verify/audit/semantic_evidence.js +0 -90
  243. package/dist/verify/audit/semantic_evidence.js.map +0 -1
  244. package/dist/verify/audit/test_generator.d.ts +0 -23
  245. package/dist/verify/audit/test_generator.d.ts.map +0 -1
  246. package/dist/verify/audit/test_generator.js +0 -278
  247. package/dist/verify/audit/test_generator.js.map +0 -1
  248. package/dist/verify/audit/test_quality.d.ts +0 -49
  249. package/dist/verify/audit/test_quality.d.ts.map +0 -1
  250. package/dist/verify/audit/test_quality.js +0 -684
  251. package/dist/verify/audit/test_quality.js.map +0 -1
  252. package/dist/verify/change_coordinator.d.ts +0 -45
  253. package/dist/verify/change_coordinator.d.ts.map +0 -1
  254. package/dist/verify/change_coordinator.js +0 -168
  255. package/dist/verify/change_coordinator.js.map +0 -1
  256. package/dist/verify/contracts/decision_contract.d.ts +0 -51
  257. package/dist/verify/contracts/decision_contract.d.ts.map +0 -1
  258. package/dist/verify/contracts/decision_contract.js +0 -70
  259. package/dist/verify/contracts/decision_contract.js.map +0 -1
  260. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.d.ts +0 -17
  261. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.d.ts.map +0 -1
  262. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.js +0 -428
  263. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.js.map +0 -1
  264. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.d.ts +0 -17
  265. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.d.ts.map +0 -1
  266. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.js +0 -429
  267. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.js.map +0 -1
  268. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.d.ts +0 -17
  269. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.d.ts.map +0 -1
  270. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.js +0 -194
  271. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.js.map +0 -1
  272. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.d.ts +0 -17
  273. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.d.ts.map +0 -1
  274. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.js +0 -365
  275. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.js.map +0 -1
  276. package/dist/verify/contracts/mechanism_contract_registry/index.d.ts +0 -19
  277. package/dist/verify/contracts/mechanism_contract_registry/index.d.ts.map +0 -1
  278. package/dist/verify/contracts/mechanism_contract_registry/index.js +0 -21
  279. package/dist/verify/contracts/mechanism_contract_registry/index.js.map +0 -1
  280. package/dist/verify/contracts/mechanism_contract_registry/types.d.ts +0 -33
  281. package/dist/verify/contracts/mechanism_contract_registry/types.d.ts.map +0 -1
  282. package/dist/verify/contracts/mechanism_contract_registry/types.js +0 -5
  283. package/dist/verify/contracts/mechanism_contract_registry/types.js.map +0 -1
  284. package/dist/verify/contracts/mechanism_contract_registry/validation.d.ts +0 -38
  285. package/dist/verify/contracts/mechanism_contract_registry/validation.d.ts.map +0 -1
  286. package/dist/verify/contracts/mechanism_contract_registry/validation.js +0 -136
  287. package/dist/verify/contracts/mechanism_contract_registry/validation.js.map +0 -1
  288. package/templates/shared/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +0 -54
  289. package/templates/shared//346/265/201/345/274/217/345/277/203/350/267/263.md +0 -64
@@ -1,194 +0,0 @@
1
- /**
2
- * Governance Report — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:PolicySummary 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:audit_pool、escape_report、capability_action_advisor、risk_sampler、index、artifact_contract_registry
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import { validateArtifactContracts } from "../../domain/contracts/artifact_contract_registry.js";
15
- import { debug } from "../../shared/logger.js";
16
- function deepCopyRule(rule) {
17
- return { ...rule };
18
- }
19
- function deepCopyDecision(decision) {
20
- return {
21
- ...decision,
22
- evidence_ids: [...decision.evidence_ids],
23
- triggered_rules: decision.triggered_rules.map(deepCopyRule),
24
- };
25
- }
26
- function deepCopySummary(summary) {
27
- return {
28
- ...summary,
29
- action: deepCopyDecision(summary.action),
30
- };
31
- }
32
- /**
33
- * 生成治理健康报告。
34
- * 汇总审计池、逃逸报告、能力决策和抽样决策的统计数据,识别危险策略和降级候选。
35
- * 支持双层机制、制品契约、配置优先级契约和核心原则的治理检查。
36
- * @param auditStats - 审计池统计数据
37
- * @param auditItems - 审计条目列表
38
- * @param escapeReports - 逃逸报告列表
39
- * @param escapeStats - 逃逸报告统计数据
40
- * @param decisions - 能力动作决策列表
41
- * @param now - 报告生成时间(可选,默认当前时间)
42
- * @param sampleDecisions - 抽样决策列表(可选)
43
- * @param dualLayerFindings - 双层机制发现列表(可选)
44
- * @param dualLayerMechanismCount - 双层机制总数(可选)
45
- * @param artifacts - 输出制品列表(可选,用于制品契约检查)
46
- * @param configConflicts - 配置冲突列表(可选,来自 detectConflicts)
47
- * @param configRedundancies - 配置冗余列表(可选,来自 detectRedundancies)
48
- * @param corePrinciples - 核心原则遵循性报告列表(可选)
49
- * @returns 完整的治理健康报告
50
- */
51
- /**
52
- * 生成治理健康报告。
53
- * @param options - 报告选项,包含审计池和能力状态存储
54
- * @returns 治理报告,包含任务统计、逃逸分析和降级建议
55
- */
56
- export function generateReport(auditStats, _auditItems, escapeReports, escapeStats, decisions, now, sampleDecisions, dualLayerFindings, dualLayerMechanismCount, artifacts, configConflicts, configRedundancies, corePrinciples, contractFindings, totalRegistryContracts) {
57
- debug("治理报告", "生成治理健康报告");
58
- const nonFPReports = escapeReports.filter((r) => r.failure_type !== "false_positive");
59
- const fpReports = escapeReports.filter((r) => r.failure_type === "false_positive");
60
- const sampledCount = sampleDecisions
61
- ? sampleDecisions.filter((d) => d.should_sample).length
62
- : null;
63
- // 从决策构建每个策略的汇总
64
- const policyMap = new Map();
65
- for (const decision of decisions) {
66
- const pid = decision.policy_id;
67
- const policyEscapes = nonFPReports.filter((r) => r.policy_id === pid);
68
- const policyFP = fpReports.filter((r) => r.policy_id === pid);
69
- policyMap.set(pid, {
70
- policy_id: pid,
71
- escape_count: policyEscapes.length,
72
- false_positive_count: policyFP.length,
73
- action: deepCopyDecision(decision),
74
- });
75
- }
76
- // 危险策略: 有逃逸且非 keep 动作的策略
77
- debug("治理报告", "识别危险策略,总决策数=" + decisions.length);
78
- const dangerPolicies = [...policyMap.values()]
79
- .filter((p) => p.escape_count > 0 && p.action.recommended_action !== "keep")
80
- .sort((a, b) => b.escape_count - a.escape_count)
81
- .map(deepCopySummary);
82
- // 降级候选: 动作为 downgrade 或 disable
83
- debug("治理报告", "识别降级候选策略");
84
- const downgradeCandidates = [...policyMap.values()]
85
- .filter((p) => p.action.recommended_action === "downgrade" || p.action.recommended_action === "disable")
86
- .sort((a, b) => {
87
- const priority = (d) => (d.recommended_action === "disable" ? 0 : 1);
88
- return priority(a.action) - priority(b.action);
89
- })
90
- .map(deepCopySummary);
91
- // Top fixes: 非 FP 逃逸报告按 due_date 排序,最多 5 条
92
- debug("治理报告", "整理 top fixes,非误报逃逸数=" + nonFPReports.length);
93
- const topFixes = nonFPReports
94
- .slice()
95
- .sort((a, b) => a.due_date.localeCompare(b.due_date))
96
- .slice(0, 5)
97
- .map((r) => ({
98
- escape_id: r.escape_id,
99
- policy_id: r.policy_id,
100
- failure_type: r.failure_type,
101
- fix_required: r.fix_required,
102
- owner: r.owner,
103
- due_date: r.due_date,
104
- }));
105
- // 双层机制汇总
106
- if (dualLayerFindings)
107
- debug("治理报告", "双层机制发现数=" + dualLayerFindings.length);
108
- const dlHardFails = (dualLayerFindings ?? []).filter((f) => f.severity === "hard_fail");
109
- const dlAdvisory = (dualLayerFindings ?? []).filter((f) => f.severity === "advisory");
110
- const dlSummary = dualLayerFindings
111
- ? {
112
- total_mechanisms: dualLayerMechanismCount ?? 0,
113
- dual_layer_enforced_count: (dualLayerMechanismCount ?? 0) - dlHardFails.length,
114
- hard_fail_count: dlHardFails.length,
115
- advisory_count: dlAdvisory.length,
116
- findings: [...dualLayerFindings],
117
- }
118
- : undefined;
119
- // 制品治理
120
- if (artifacts && artifacts.length > 0)
121
- debug("治理报告", "检查制品契约,制品数=" + artifacts.length);
122
- let artifactGovernance;
123
- if (artifacts && artifacts.length > 0) {
124
- const findings = validateArtifactContracts(artifacts);
125
- artifactGovernance = {
126
- artifact_count: artifacts.length,
127
- hard_fail_count: findings.filter(f => f.severity === "hard_fail").length,
128
- advisory_count: findings.filter(f => f.severity === "advisory").length,
129
- findings,
130
- };
131
- }
132
- // 配置治理(三层配置冲突/冗余检测,替代旧 config_precedence_governance)
133
- const allConflicts = configConflicts ?? [];
134
- const allRedundancies = configRedundancies ?? [];
135
- if (allConflicts.length > 0 || allRedundancies.length > 0) {
136
- debug("治理报告", `配置治理: ${allConflicts.length} 冲突, ${allRedundancies.length} 冗余`);
137
- }
138
- const configGovernance = allConflicts.length > 0 || allRedundancies.length > 0
139
- ? {
140
- conflict_count: allConflicts.length,
141
- redundancy_count: allRedundancies.length,
142
- conflicts: [...allConflicts],
143
- redundancies: [...allRedundancies],
144
- }
145
- : undefined;
146
- // 核心原则治理
147
- if (corePrinciples && corePrinciples.length > 0)
148
- debug("治理报告", "检查核心原则遵循性,报告数=" + corePrinciples.length);
149
- let corePrinciplesGovernance;
150
- if (corePrinciples && corePrinciples.length > 0) {
151
- // 合并所有报告为汇总
152
- const latestReport = corePrinciples[corePrinciples.length - 1];
153
- corePrinciplesGovernance = {
154
- task_level: latestReport.task_level,
155
- overall_passed: corePrinciples.every(r => r.overall_passed),
156
- principles: latestReport.principles.map(p => ({
157
- principle_id: p.principle_id,
158
- status: p.status,
159
- findings: p.findings,
160
- })),
161
- };
162
- }
163
- // 契约治理汇总
164
- if (contractFindings && contractFindings.length > 0)
165
- debug("治理报告", "检查契约治理,发现数=" + contractFindings.length);
166
- let contractGovernance;
167
- if (contractFindings) {
168
- contractGovernance = {
169
- total_contracts: totalRegistryContracts ?? new Set(contractFindings.map((f) => f.contract_id)).size,
170
- hard_fail_count: contractFindings.filter((f) => f.severity === "hard_fail").length,
171
- warning_count: contractFindings.filter((f) => f.severity === "warning").length,
172
- advisory_count: contractFindings.filter((f) => f.severity === "advisory").length,
173
- findings: [...contractFindings],
174
- };
175
- }
176
- return {
177
- generated_at: (now ?? new Date()).toISOString(),
178
- total_tasks: auditStats.total,
179
- audit_by_risk: { ...auditStats.by_risk },
180
- sampled_count: sampledCount,
181
- total_escapes: nonFPReports.length,
182
- total_false_positives: fpReports.length,
183
- escape_by_type: { ...escapeStats.by_type },
184
- danger_policies: dangerPolicies,
185
- downgrade_candidates: downgradeCandidates,
186
- top_fixes: topFixes,
187
- dual_layer_summary: dlSummary,
188
- artifact_governance: artifactGovernance,
189
- config_governance: configGovernance,
190
- core_principles_governance: corePrinciplesGovernance,
191
- contract_governance: contractGovernance,
192
- };
193
- }
194
- //# sourceMappingURL=governance_report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"governance_report.js","sourceRoot":"","sources":["../../../src/verify/audit/governance_report.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Mutation Audit — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:extractMutationPoints 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:pipeline、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import type { RequirementPoint } from "../../types/pipeline_types.js";
15
- import type { MutationPoint, MutationAuditEvidence } from "../../types/pipeline_types.js";
16
- /** 向后兼容 re-export */
17
- export type { MutationPoint, MutationAuditEntry, MutationAuditEvidence } from "../../types/pipeline_types.js";
18
- /**
19
- * 从源码中提取变异候选点,并尝试关联到需求点。
20
- * 关联策略: 文件路径与需求点描述关键词匹配。
21
- *
22
- * @param sourceFiles - 源文件列表,包含文件路径和内容
23
- * @param requirementPoints - 需求点列表
24
- * @returns 变异候选点数组
25
- */
26
- export declare function extractMutationPoints(sourceFiles: Array<{
27
- file_path: string;
28
- content: string;
29
- }>, requirementPoints: RequirementPoint[]): MutationPoint[];
30
- /**
31
- * 计算变异审计证据 — 每个需求点的变异覆盖状态。
32
- *
33
- * @param mutationPoints - 变异候选点数组
34
- * @param requirementPoints - 需求点列表
35
- * @param killedCount - 已 killed 的变异数
36
- * @param totalCount - 变异总数
37
- * @returns 变异审计证据
38
- */
39
- export declare function computeMutationAudit(mutationPoints: MutationPoint[], requirementPoints: RequirementPoint[], killedCount: number, totalCount: number): MutationAuditEvidence;
40
- //# sourceMappingURL=mutation_audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutation_audit.d.ts","sourceRoot":"","sources":["../../../src/verify/audit/mutation_audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAsB,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG9G,qBAAqB;AACrB,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AA6B9G;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,aAAa,EAAE,CAyBjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,aAAa,EAAE,EAC/B,iBAAiB,EAAE,gBAAgB,EAAE,EACrC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,qBAAqB,CAwFvB"}
@@ -1,154 +0,0 @@
1
- /**
2
- * Mutation Audit — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:extractMutationPoints 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:pipeline、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import { debug } from "../../shared/logger.js";
15
- const CANDIDATE_PATTERNS = [
16
- /\b(if|else|switch|case)\b/.source,
17
- /(===|!==|==|!=|>=|<=|>|<)/.source,
18
- /(&&|\|\|)/.source,
19
- /\breturn\b/.source,
20
- ];
21
- const CANDIDATE_RE = new RegExp(CANDIDATE_PATTERNS.join("|"));
22
- const EXCLUDE_PATTERNS = [
23
- /^\s*\/\//,
24
- /^\s*\*/,
25
- /^\s*\/\*/,
26
- /^\s*import /,
27
- /^\s*export /,
28
- /^\s*console\./,
29
- /^\s*(interface|type|enum|declare) /,
30
- /^\s*debugger/,
31
- ];
32
- function isCandidateLine(line) {
33
- const trimmed = line.trim();
34
- if (!trimmed)
35
- return false;
36
- if (EXCLUDE_PATTERNS.some((p) => p.test(trimmed)))
37
- return false;
38
- return CANDIDATE_RE.test(trimmed);
39
- }
40
- /**
41
- * 从源码中提取变异候选点,并尝试关联到需求点。
42
- * 关联策略: 文件路径与需求点描述关键词匹配。
43
- *
44
- * @param sourceFiles - 源文件列表,包含文件路径和内容
45
- * @param requirementPoints - 需求点列表
46
- * @returns 变异候选点数组
47
- */
48
- export function extractMutationPoints(sourceFiles, requirementPoints) {
49
- const points = [];
50
- debug("变异审计", "extractMutationPoints() 开始执行,源文件数:", sourceFiles.length, ",需求点数:", requirementPoints.length);
51
- for (const file of sourceFiles) {
52
- const lines = file.content.split("\n");
53
- for (let i = 0; i < lines.length; i++) {
54
- if (!isCandidateLine(lines[i]))
55
- continue;
56
- const matchedRp = requirementPoints.find((rp) => {
57
- const keywords = rp.description.toLowerCase().split(/\s+/);
58
- return keywords.some((kw) => kw.length > 2 && file.file_path.toLowerCase().includes(kw));
59
- });
60
- points.push({
61
- file_path: file.file_path,
62
- line_number: i + 1,
63
- original_line: lines[i].trim(),
64
- requirement_point_id: matchedRp?.id,
65
- });
66
- }
67
- }
68
- debug("变异审计", "提取到变异候选点", points.length, "个");
69
- return points;
70
- }
71
- /**
72
- * 计算变异审计证据 — 每个需求点的变异覆盖状态。
73
- *
74
- * @param mutationPoints - 变异候选点数组
75
- * @param requirementPoints - 需求点列表
76
- * @param killedCount - 已 killed 的变异数
77
- * @param totalCount - 变异总数
78
- * @returns 变异审计证据
79
- */
80
- export function computeMutationAudit(mutationPoints, requirementPoints, killedCount, totalCount) {
81
- const perRequirement = [];
82
- const coveredRpIds = new Set();
83
- debug("变异审计", "computeMutationAudit() 开始执行,需求点数:", requirementPoints.length, "变异点数:", mutationPoints.length, "killed:", killedCount, "/", totalCount);
84
- for (const rp of requirementPoints) {
85
- const rpPoints = mutationPoints.filter((mp) => mp.requirement_point_id === rp.id);
86
- const rpTotal = rpPoints.length;
87
- if (rpTotal > 0) {
88
- coveredRpIds.add(rp.id);
89
- // 按比例分配 killed 计数
90
- const rpKilled = Math.min(Math.round((rpTotal / Math.max(totalCount, 1)) * killedCount), rpTotal);
91
- perRequirement.push({
92
- requirement_point_id: rp.id,
93
- mutation_points: rpTotal,
94
- mutants_killed: rpKilled,
95
- mutants_total: rpTotal,
96
- advisory: rpKilled === rpTotal
97
- ? "all mutants killed"
98
- : `advisory: ${rpTotal - rpKilled}/${rpTotal} mutants not killed for ${rp.id}`,
99
- // 门禁硬化:P0/P1 需求点变异覆盖 = 0 → hard_fail
100
- severity: rpKilled === 0 ? "hard_fail" : undefined,
101
- });
102
- }
103
- else {
104
- perRequirement.push({
105
- requirement_point_id: rp.id,
106
- mutation_points: 0,
107
- mutants_killed: 0,
108
- mutants_total: 0,
109
- advisory: `advisory: no mutation points found for requirement ${rp.id}`,
110
- // 无变异点 → 暂不标记严重性(可能该需求不涉及代码变更)
111
- });
112
- }
113
- }
114
- // 同时包含未绑定到任何需求点的变异点
115
- const unboundPoints = mutationPoints.filter((mp) => !mp.requirement_point_id);
116
- const unboundRatio = totalCount > 0 ? unboundPoints.length / totalCount : 0;
117
- if (unboundPoints.length > 0) {
118
- perRequirement.push({
119
- requirement_point_id: "_unbound",
120
- mutation_points: unboundPoints.length,
121
- mutants_killed: 0,
122
- mutants_total: unboundPoints.length,
123
- advisory: `advisory: ${unboundPoints.length} mutation points not bound to any requirement`,
124
- // 门禁硬化:未绑定 > 30% → warning
125
- severity: unboundRatio > 0.3 ? "warning" : undefined,
126
- });
127
- }
128
- const uncoveredRequirements = requirementPoints
129
- .filter((rp) => !coveredRpIds.has(rp.id))
130
- .map((rp) => rp.id);
131
- if (uncoveredRequirements.length > 0) {
132
- debug("变异审计", "发现未覆盖的需求点:", uncoveredRequirements.join(", "));
133
- }
134
- const killRatio = totalCount > 0 ? killedCount / totalCount : 1;
135
- debug("变异审计", "计算完成 — kill_ratio:", (killRatio * 100).toFixed(0) + "%", ",未覆盖需求:", uncoveredRequirements.length);
136
- // ── 门禁硬化汇总 ──
137
- const hardFailCount = perRequirement.filter((e) => e.severity === "hard_fail").length;
138
- const warningCount = perRequirement.filter((e) => e.severity === "warning").length;
139
- // 整体变异覆盖率 < 50% → 额外 warning
140
- const lowCoverage = totalCount > 0 && killRatio < 0.5;
141
- return {
142
- mutant_killed_count: killedCount,
143
- mutant_total_count: totalCount,
144
- kill_ratio: killRatio,
145
- per_requirement: perRequirement,
146
- uncovered_requirements: uncoveredRequirements,
147
- summary: uncoveredRequirements.length > 0
148
- ? `advisory: ${uncoveredRequirements.length} requirement(s) have no killed mutants: ${uncoveredRequirements.join(", ")}`
149
- : `mutation audit: ${killedCount}/${totalCount} killed (ratio: ${(killRatio * 100).toFixed(0)}%)`,
150
- hard_fail_count: hardFailCount,
151
- warning_count: warningCount + (lowCoverage ? 1 : 0),
152
- };
153
- }
154
- //# sourceMappingURL=mutation_audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutation_audit.js","sourceRoot":"","sources":["../../../src/verify/audit/mutation_audit.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Risk Sampler — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:SamplingDecision 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:node:crypto、audit_pool、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:读写本地文件(详见代码内路径)
13
- */
14
- import type { RiskLevel } from "./audit_pool.js";
15
- export interface SamplingDecision {
16
- item_task_id: string;
17
- item_risk: RiskLevel;
18
- should_sample: boolean;
19
- seed: number;
20
- threshold_pct: number;
21
- hash_value: number;
22
- risk_factors: RiskFactor[];
23
- reason: string;
24
- }
25
- export interface RiskFactor {
26
- factor: string;
27
- detail: string;
28
- impact: "increases" | "decreases" | "neutral";
29
- }
30
- export interface SampleableItem {
31
- task_id: string;
32
- risk: RiskLevel;
33
- changed_files: string[];
34
- capability_refs: string[];
35
- }
36
- /**
37
- * 执行 shouldSample 操作
38
- */
39
- export declare function shouldSample(item: SampleableItem, seed?: number): SamplingDecision;
40
- /**
41
- * 执行 getThreshold 操作
42
- */
43
- export declare function getThreshold(risk: RiskLevel): number;
44
- //# sourceMappingURL=risk_sampler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"risk_sampler.d.ts","sourceRoot":"","sources":["../../../src/verify/audit/risk_sampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;CAC/C;AA8CD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,MAAU,GACf,gBAAgB,CA2BlB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAGpD"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Risk Sampler — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:SamplingDecision 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:node:crypto、audit_pool、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:读写本地文件(详见代码内路径)
13
- */
14
- import { createHash } from "node:crypto";
15
- import { debug } from "../../shared/logger.js";
16
- const RISK_THRESHOLDS = {
17
- low: 20,
18
- medium: 50,
19
- high: 80,
20
- critical: 100,
21
- };
22
- function computeHash(taskId, seed) {
23
- const h = createHash("sha256").update(`${taskId}:${seed}`).digest();
24
- return h.readUInt32BE(0) % 100;
25
- }
26
- function collectRiskFactors(risk, changedFileCount, hasCapabilityRefs) {
27
- const factors = [];
28
- factors.push({
29
- factor: "risk_level",
30
- detail: `task risk is ${risk}, threshold ${RISK_THRESHOLDS[risk]}%`,
31
- impact: risk === "low" ? "decreases" : risk === "critical" ? "increases" : "neutral",
32
- });
33
- if (changedFileCount > 10) {
34
- factors.push({
35
- factor: "large_change_set",
36
- detail: `${changedFileCount} files changed (>10)`,
37
- impact: "increases",
38
- });
39
- }
40
- if (hasCapabilityRefs) {
41
- factors.push({
42
- factor: "capability_coverage",
43
- detail: "task touches registered capabilities",
44
- impact: "increases",
45
- });
46
- }
47
- return factors;
48
- }
49
- /**
50
- * 执行 shouldSample 操作
51
- */
52
- export function shouldSample(item, seed = 0) {
53
- debug("风险采样", "shouldSample() 开始, task_id=${item.task_id}, risk=${item.risk}");
54
- const threshold = RISK_THRESHOLDS[item.risk];
55
- const hashValue = computeHash(item.task_id, seed);
56
- const shouldSample = hashValue < threshold;
57
- const riskFactors = collectRiskFactors(item.risk, item.changed_files.length, item.capability_refs.length > 0);
58
- debug("风险采样", "hash=${hashValue}, threshold=${threshold}, should_sample=${shouldSample}");
59
- const reason = shouldSample
60
- ? `sampled: hash ${hashValue} < threshold ${threshold} (risk=${item.risk})`
61
- : `skipped: hash ${hashValue} >= threshold ${threshold} (risk=${item.risk})`;
62
- return {
63
- item_task_id: item.task_id,
64
- item_risk: item.risk,
65
- should_sample: shouldSample,
66
- seed,
67
- threshold_pct: threshold,
68
- hash_value: hashValue,
69
- risk_factors: riskFactors,
70
- reason,
71
- };
72
- }
73
- /**
74
- * 执行 getThreshold 操作
75
- */
76
- export function getThreshold(risk) {
77
- debug("风险采样", "getThreshold() risk=${risk}, threshold=${RISK_THRESHOLDS[risk]}");
78
- return RISK_THRESHOLDS[risk];
79
- }
80
- //# sourceMappingURL=risk_sampler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"risk_sampler.js","sourceRoot":"","sources":["../../../src/verify/audit/risk_sampler.ts"],"names":[],"mappings":"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"}
@@ -1,89 +0,0 @@
1
- /**
2
- * Runtime Safety — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:EvidenceBlock 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:node:crypto、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- export interface EvidenceBlock {
15
- step: string;
16
- timestamp: string;
17
- data_hash: string;
18
- prev_hash: string | null;
19
- chain_hash: string;
20
- payload: string;
21
- }
22
- /**
23
- * 构建证据链 — 每个步骤产出带 hash 的证据块,与前一个块链式连接。
24
- */
25
- export declare function buildEvidenceChain(steps: Array<{
26
- step: string;
27
- payload: string;
28
- timestamp?: string;
29
- }>): EvidenceBlock[];
30
- /**
31
- * 验证证据链完整性 — 检查每个块的 chain_hash 是否与重算结果一致。
32
- */
33
- export declare function verifyEvidenceChain(chain: EvidenceBlock[]): {
34
- valid: boolean;
35
- broken_at: number | null;
36
- advisory: string;
37
- };
38
- export type CommandRisk = "read_only" | "mutating" | "destructive";
39
- export interface ClassifiedCommand {
40
- command: string;
41
- risk: CommandRisk;
42
- advisory: string;
43
- requires_human_confirm: boolean;
44
- }
45
- /**
46
- * 分类命令的副作用级别。
47
- */
48
- export declare function classifyCommand(command: string): ClassifiedCommand;
49
- export interface MigrationContract {
50
- migration_id: string;
51
- description: string;
52
- forward_command: string;
53
- rollback_command: string;
54
- risk: CommandRisk;
55
- created_at: string;
56
- }
57
- export interface MigrationCheckResult {
58
- migration_id: string;
59
- has_rollback: boolean;
60
- rollback_valid: boolean;
61
- advisory: string;
62
- }
63
- /**
64
- * 检查迁移契约 — 确保 schema 变更有回滚路径。
65
- */
66
- export declare function checkMigrationContract(migration: MigrationContract): MigrationCheckResult;
67
- export interface DependencyCheck {
68
- package_name: string;
69
- version: string;
70
- has_lockfile: boolean;
71
- has_integrity_hash: boolean;
72
- advisory: string;
73
- }
74
- export interface SupplyChainReport {
75
- total_dependencies: number;
76
- locked_dependencies: number;
77
- unlocked_dependencies: number;
78
- checks: DependencyCheck[];
79
- advisory: string;
80
- }
81
- /**
82
- * 检查供应链安全 — 验证依赖有 lockfile 和完整性 hash。
83
- * 此为轻量级检查,不读取实际文件内容。
84
- */
85
- export declare function checkSupplyChain(rootDirFiles: string[], dependencies: Array<{
86
- name: string;
87
- version: string;
88
- }>): SupplyChainReport;
89
- //# sourceMappingURL=runtime_safety.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime_safety.d.ts","sourceRoot":"","sources":["../../../src/verify/audit/runtime_safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAClE,aAAa,EAAE,CAiCjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAoDA;AAID,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAuBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CA8BlE;AAID,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,iBAAiB,GAC3B,oBAAoB,CAsBtB;AAID,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,iBAAiB,CA2BnB"}