@wowok/agent-mcp 3.1.3 → 3.1.5

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 (384) hide show
  1. package/dist/config/config-audit.spec.d.ts +1 -0
  2. package/dist/config/config-audit.spec.js +1 -0
  3. package/dist/config/exposure.d.ts +108 -0
  4. package/dist/config/exposure.js +1 -0
  5. package/dist/config/index.d.ts +2 -0
  6. package/dist/config/index.js +1 -1
  7. package/dist/config/judgment.d.ts +1228 -0
  8. package/dist/config/judgment.js +1 -0
  9. package/dist/config/judgment.spec.d.ts +1 -0
  10. package/dist/config/judgment.spec.js +1 -0
  11. package/dist/config/rule-engine.d.ts +299 -0
  12. package/dist/config/rule-engine.js +1 -0
  13. package/dist/config/rule-engine.spec.d.ts +1 -0
  14. package/dist/config/rule-engine.spec.js +1 -0
  15. package/dist/config/severity.d.ts +7 -0
  16. package/dist/config/severity.js +1 -0
  17. package/dist/customer/order-monitor.d.ts +3 -1
  18. package/dist/customer/order-monitor.js +1 -1
  19. package/dist/evaluation/acceptance.d.ts +1 -0
  20. package/dist/evaluation/acceptance.js +1 -1
  21. package/dist/evaluation/arbitration-game.js +1 -1
  22. package/dist/evaluation/builtins/demand-match.js +1 -1
  23. package/dist/evaluation/builtins/graph-service.js +1 -1
  24. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  25. package/dist/evaluation/engine.js +1 -1
  26. package/dist/evaluation/game-strategy.d.ts +2 -2
  27. package/dist/evaluation/game-strategy.js +1 -1
  28. package/dist/evaluation/match-operation.d.ts +2 -2
  29. package/dist/evaluation/match-operation.js +1 -1
  30. package/dist/evaluation/standards.d.ts +3 -25
  31. package/dist/evaluation/standards.js +1 -1
  32. package/dist/evaluation/types.d.ts +2 -1
  33. package/dist/experience/realtime-feedback.js +1 -1
  34. package/dist/extensions/business-modules.js +1 -1
  35. package/dist/extensions/custom-registry-file.js +1 -1
  36. package/dist/extensions/industry-audit.spec.d.ts +1 -0
  37. package/dist/extensions/industry-audit.spec.js +1 -0
  38. package/dist/extensions/industry-layers.d.ts +8 -0
  39. package/dist/extensions/industry-layers.js +1 -1
  40. package/dist/extensions/industry-pack.d.ts +2 -0
  41. package/dist/extensions/industry-pack.js +1 -1
  42. package/dist/extensions/mode-evaluator.js +1 -1
  43. package/dist/extensions/modes.js +1 -1
  44. package/dist/graph/onchain/analyze.d.ts +3 -1
  45. package/dist/graph/onchain/analyze.js +1 -1
  46. package/dist/graph/onchain/analyze.spec.js +1 -1
  47. package/dist/graph/onchain/edge-schema.d.ts +1 -0
  48. package/dist/graph/onchain/edge-schema.js +1 -1
  49. package/dist/graph/onchain/expand.js +1 -1
  50. package/dist/graph/onchain/exploration.d.ts +28 -0
  51. package/dist/graph/onchain/exploration.js +1 -0
  52. package/dist/graph/onchain/exploration.spec.d.ts +1 -0
  53. package/dist/graph/onchain/exploration.spec.js +1 -0
  54. package/dist/graph/onchain/exposure.d.ts +18 -0
  55. package/dist/graph/onchain/exposure.js +1 -0
  56. package/dist/graph/onchain/exposure.spec.d.ts +1 -0
  57. package/dist/graph/onchain/exposure.spec.js +1 -0
  58. package/dist/graph/onchain/graph-policy.spec.d.ts +1 -0
  59. package/dist/graph/onchain/graph-policy.spec.js +1 -0
  60. package/dist/graph/onchain/index.d.ts +6 -0
  61. package/dist/graph/onchain/index.js +1 -1
  62. package/dist/graph/onchain/interest.js +1 -1
  63. package/dist/graph/onchain/interest.spec.js +1 -1
  64. package/dist/graph/onchain/names.js +1 -1
  65. package/dist/graph/onchain/names.spec.js +1 -1
  66. package/dist/graph/onchain/policy.d.ts +8 -0
  67. package/dist/graph/onchain/policy.js +1 -0
  68. package/dist/graph/onchain/proposal-graph.js +1 -1
  69. package/dist/graph/onchain/proposal-graph.spec.js +1 -1
  70. package/dist/graph/onchain/synthesis.d.ts +20 -0
  71. package/dist/graph/onchain/synthesis.js +1 -0
  72. package/dist/graph/onchain/synthesis.spec.d.ts +1 -0
  73. package/dist/graph/onchain/synthesis.spec.js +1 -0
  74. package/dist/graph/onchain/types.d.ts +11 -1
  75. package/dist/keeper/keeper.spec.js +1 -1
  76. package/dist/knowledge/alloc-audit-policy.spec.d.ts +1 -0
  77. package/dist/knowledge/alloc-audit-policy.spec.js +1 -0
  78. package/dist/knowledge/allocation-ledger.js +1 -1
  79. package/dist/knowledge/allocation-puzzle.d.ts +1 -1
  80. package/dist/knowledge/allocation-puzzle.js +1 -1
  81. package/dist/knowledge/allocation-risk.d.ts +4 -1
  82. package/dist/knowledge/allocation-risk.js +1 -1
  83. package/dist/knowledge/allocation-templates.js +1 -1
  84. package/dist/knowledge/arb-risk.d.ts +6 -5
  85. package/dist/knowledge/arb-risk.js +1 -1
  86. package/dist/knowledge/arbitration-ledger.d.ts +4 -4
  87. package/dist/knowledge/arbitration-ledger.js +1 -1
  88. package/dist/knowledge/arbitration-puzzle.d.ts +1 -1
  89. package/dist/knowledge/arbitration-puzzle.js +1 -1
  90. package/dist/knowledge/arbitration-risk.d.ts +4 -1
  91. package/dist/knowledge/arbitration-risk.js +1 -1
  92. package/dist/knowledge/arbitration-templates.js +1 -1
  93. package/dist/knowledge/baselines/judgment-baselines.json +289 -0
  94. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
  95. package/dist/knowledge/baselines/rules/alloc_audit.json +290 -0
  96. package/dist/knowledge/baselines/rules/allocation.json +492 -0
  97. package/dist/knowledge/baselines/rules/arb.json +155 -0
  98. package/dist/knowledge/baselines/rules/arbitration.json +366 -0
  99. package/dist/knowledge/baselines/rules/bridge.json +197 -0
  100. package/dist/knowledge/baselines/rules/contact.json +152 -0
  101. package/dist/knowledge/baselines/rules/demand.json +158 -0
  102. package/dist/knowledge/baselines/rules/graph.json +453 -0
  103. package/dist/knowledge/baselines/rules/guard.json +981 -0
  104. package/dist/knowledge/baselines/rules/machine.json +706 -0
  105. package/dist/knowledge/baselines/rules/order.json +549 -0
  106. package/dist/knowledge/baselines/rules/payment.json +205 -0
  107. package/dist/knowledge/baselines/rules/permission.json +330 -0
  108. package/dist/knowledge/baselines/rules/personal.json +139 -0
  109. package/dist/knowledge/baselines/rules/progress.json +346 -0
  110. package/dist/knowledge/baselines/rules/proof.json +158 -0
  111. package/dist/knowledge/baselines/rules/registrar.json +159 -0
  112. package/dist/knowledge/baselines/rules/repository.json +244 -0
  113. package/dist/knowledge/baselines/rules/resource.json +117 -0
  114. package/dist/knowledge/baselines/rules/reward.json +471 -0
  115. package/dist/knowledge/baselines/rules/service.json +595 -0
  116. package/dist/knowledge/baselines/rules/treasury.json +440 -0
  117. package/dist/knowledge/baselines/rules/util.json +101 -0
  118. package/dist/knowledge/bridge-risk.d.ts +6 -5
  119. package/dist/knowledge/bridge-risk.js +1 -1
  120. package/dist/knowledge/builtin-templates.d.ts +26 -0
  121. package/dist/knowledge/builtin-templates.js +1 -0
  122. package/dist/knowledge/contact-risk.d.ts +6 -5
  123. package/dist/knowledge/contact-risk.js +1 -1
  124. package/dist/knowledge/demand-risk.d.ts +6 -5
  125. package/dist/knowledge/demand-risk.js +1 -1
  126. package/dist/knowledge/event-semantics.js +1 -1
  127. package/dist/knowledge/facts-sync.spec.d.ts +1 -0
  128. package/dist/knowledge/facts-sync.spec.js +1 -0
  129. package/dist/knowledge/getting-started.js +1 -1
  130. package/dist/knowledge/guard-design-patterns.js +1 -1
  131. package/dist/knowledge/guard-field-cognition.d.ts +1 -1
  132. package/dist/knowledge/guard-field-cognition.js +1 -1
  133. package/dist/knowledge/guard-ledger.js +1 -1
  134. package/dist/knowledge/guard-risk.d.ts +4 -1
  135. package/dist/knowledge/guard-risk.js +1 -1
  136. package/dist/knowledge/guard-templates.js +1 -1
  137. package/dist/knowledge/guard-translation.js +1 -1
  138. package/dist/knowledge/index.d.ts +10 -2
  139. package/dist/knowledge/index.js +1 -1
  140. package/dist/knowledge/industry-registry.js +1 -1
  141. package/dist/knowledge/industry-strategy.js +1 -1
  142. package/dist/knowledge/jsonrpc-enum.js +1 -1
  143. package/dist/knowledge/machine-ledger.js +1 -1
  144. package/dist/knowledge/machine-risk.d.ts +4 -1
  145. package/dist/knowledge/machine-risk.js +1 -1
  146. package/dist/knowledge/machine-templates.js +1 -1
  147. package/dist/knowledge/machine-translation.js +1 -1
  148. package/dist/knowledge/migration-preflight.js +1 -1
  149. package/dist/knowledge/operation-dictionary.js +1 -1
  150. package/dist/knowledge/order-ledger.js +1 -1
  151. package/dist/knowledge/order-puzzle.d.ts +3 -3
  152. package/dist/knowledge/order-puzzle.js +1 -1
  153. package/dist/knowledge/order-risk.d.ts +6 -3
  154. package/dist/knowledge/order-risk.js +1 -1
  155. package/dist/knowledge/order-templates.js +1 -1
  156. package/dist/knowledge/passport-ledger.js +1 -1
  157. package/dist/knowledge/passport-templates.js +1 -1
  158. package/dist/knowledge/payment-risk.d.ts +8 -6
  159. package/dist/knowledge/payment-risk.js +1 -1
  160. package/dist/knowledge/payment-tracker.js +1 -1
  161. package/dist/knowledge/permission-ledger.js +1 -1
  162. package/dist/knowledge/permission-puzzle.d.ts +12 -12
  163. package/dist/knowledge/permission-puzzle.js +1 -1
  164. package/dist/knowledge/permission-risk.d.ts +4 -7
  165. package/dist/knowledge/permission-risk.js +1 -1
  166. package/dist/knowledge/permission-templates.js +1 -1
  167. package/dist/knowledge/personal-risk.d.ts +6 -5
  168. package/dist/knowledge/personal-risk.js +1 -1
  169. package/dist/knowledge/progress-ledger.js +1 -1
  170. package/dist/knowledge/progress-puzzle.d.ts +2 -2
  171. package/dist/knowledge/progress-puzzle.js +1 -1
  172. package/dist/knowledge/progress-risk.d.ts +4 -1
  173. package/dist/knowledge/progress-risk.js +1 -1
  174. package/dist/knowledge/progress-templates.js +1 -1
  175. package/dist/knowledge/proof-risk.d.ts +6 -5
  176. package/dist/knowledge/proof-risk.js +1 -1
  177. package/dist/knowledge/puzzle-projections.js +1 -1
  178. package/dist/knowledge/recipient-constraint.d.ts +20 -1
  179. package/dist/knowledge/recipient-constraint.js +1 -1
  180. package/dist/knowledge/registrar-risk.d.ts +6 -5
  181. package/dist/knowledge/registrar-risk.js +1 -1
  182. package/dist/knowledge/repository-risk.d.ts +7 -6
  183. package/dist/knowledge/repository-risk.js +1 -1
  184. package/dist/knowledge/resource-risk.d.ts +6 -5
  185. package/dist/knowledge/resource-risk.js +1 -1
  186. package/dist/knowledge/reward-ledger.d.ts +1 -1
  187. package/dist/knowledge/reward-ledger.js +1 -1
  188. package/dist/knowledge/reward-puzzle.d.ts +2 -2
  189. package/dist/knowledge/reward-puzzle.js +1 -1
  190. package/dist/knowledge/reward-risk.d.ts +4 -1
  191. package/dist/knowledge/reward-risk.js +1 -1
  192. package/dist/knowledge/rule-node-analyzers.spec.js +1 -1
  193. package/dist/knowledge/rule-outcome.js +1 -1
  194. package/dist/knowledge/scenario-modes.d.ts +2 -2
  195. package/dist/knowledge/scenario-modes.js +1 -1
  196. package/dist/knowledge/scenario-topology.js +1 -1
  197. package/dist/knowledge/service-allocator-audit-node.js +1 -1
  198. package/dist/knowledge/service-ledger.js +1 -1
  199. package/dist/knowledge/service-puzzle.d.ts +2 -2
  200. package/dist/knowledge/service-puzzle.js +1 -1
  201. package/dist/knowledge/service-risk-node.js +1 -1
  202. package/dist/knowledge/service-risk.d.ts +4 -1
  203. package/dist/knowledge/service-risk.js +1 -1
  204. package/dist/knowledge/service-templates.js +1 -1
  205. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  206. package/dist/knowledge/strategy-manuals.js +1 -1
  207. package/dist/knowledge/template-loader.d.ts +84 -0
  208. package/dist/knowledge/template-loader.js +1 -0
  209. package/dist/knowledge/template-loader.spec.d.ts +1 -0
  210. package/dist/knowledge/template-loader.spec.js +1 -0
  211. package/dist/knowledge/template-registry.js +1 -1
  212. package/dist/knowledge/template-scanner.d.ts +17 -0
  213. package/dist/knowledge/template-scanner.js +1 -0
  214. package/dist/knowledge/template-scanner.spec.d.ts +1 -0
  215. package/dist/knowledge/template-scanner.spec.js +1 -0
  216. package/dist/knowledge/tools-reference.js +1 -1
  217. package/dist/knowledge/treasury-ledger.d.ts +1 -1
  218. package/dist/knowledge/treasury-ledger.js +1 -1
  219. package/dist/knowledge/treasury-puzzle.d.ts +3 -3
  220. package/dist/knowledge/treasury-puzzle.js +1 -1
  221. package/dist/knowledge/treasury-risk.d.ts +4 -1
  222. package/dist/knowledge/treasury-risk.js +1 -1
  223. package/dist/knowledge/treasury-templates.js +1 -1
  224. package/dist/knowledge/util-risk.d.ts +6 -5
  225. package/dist/knowledge/util-risk.js +1 -1
  226. package/dist/knowledge/workflow-guidance.d.ts +4 -0
  227. package/dist/knowledge/workflow-guidance.js +1 -1
  228. package/dist/knowledge/workspace-lists.js +1 -1
  229. package/dist/monitor/MonitorLoop.js +1 -1
  230. package/dist/participation/arbitrator-interest.js +1 -1
  231. package/dist/participation/radar-core.js +1 -1
  232. package/dist/persona/analyzer.js +1 -1
  233. package/dist/persona/index.js +1 -1
  234. package/dist/persona/model.js +1 -1
  235. package/dist/persona/persona-audit.spec.d.ts +1 -0
  236. package/dist/persona/persona-audit.spec.js +1 -0
  237. package/dist/persona/types.d.ts +2 -0
  238. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  239. package/dist/playbooks/service-build/facet-money.d.ts +11 -0
  240. package/dist/playbooks/service-build/facet-money.js +1 -1
  241. package/dist/playbooks/service-build/machine-panorama.d.ts +17 -0
  242. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  243. package/dist/playbooks/service-build/merchant-guide.d.ts +2 -2
  244. package/dist/playbooks/service-build/migration-planner.d.ts +43 -0
  245. package/dist/playbooks/service-build/migration-planner.js +1 -0
  246. package/dist/playbooks/service-build/object-panorama.d.ts +42 -1
  247. package/dist/playbooks/service-build/object-panorama.js +1 -1
  248. package/dist/playbooks/service-build/participation-radar.js +1 -1
  249. package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
  250. package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
  251. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  252. package/dist/playbooks/service-build/risk-aggregator.d.ts +2 -1
  253. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  254. package/dist/playbooks/service-build/semantic-graph.js +1 -1
  255. package/dist/playbooks/service-build/service-panorama.d.ts +53 -1
  256. package/dist/playbooks/service-build/service-panorama.js +1 -1
  257. package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -1
  258. package/dist/playbooks/service-build/topology-query.js +1 -1
  259. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
  260. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  261. package/dist/relationship/registry.js +1 -1
  262. package/dist/review/machine.js +1 -1
  263. package/dist/review/order.js +1 -1
  264. package/dist/review/service.js +1 -1
  265. package/dist/review/types.d.ts +7 -0
  266. package/dist/safety/confirm-gate.js +1 -1
  267. package/dist/schema/benchmark-migration/index.d.ts +207 -0
  268. package/dist/schema/benchmark-migration/index.js +1 -0
  269. package/dist/schema/call/allocation.d.ts +1 -1
  270. package/dist/schema/call/allocation.js +1 -1
  271. package/dist/schema/call/arbitration.d.ts +1 -1
  272. package/dist/schema/call/arbitration.js +1 -1
  273. package/dist/schema/call/base.d.ts +5 -5
  274. package/dist/schema/call/base.js +1 -1
  275. package/dist/schema/call/contact.d.ts +1 -1
  276. package/dist/schema/call/demand.d.ts +1 -1
  277. package/dist/schema/call/guard.d.ts +3 -3
  278. package/dist/schema/call/machine.d.ts +5 -5
  279. package/dist/schema/call/order.d.ts +3 -3
  280. package/dist/schema/call/payment.js +1 -1
  281. package/dist/schema/call/permission-handler.d.ts +1 -1
  282. package/dist/schema/call/permission-handler.js +1 -1
  283. package/dist/schema/call/permission.d.ts +16 -16
  284. package/dist/schema/call/permission.js +1 -1
  285. package/dist/schema/call/personal.d.ts +8 -8
  286. package/dist/schema/call/personal.js +1 -1
  287. package/dist/schema/call/progress.d.ts +3 -3
  288. package/dist/schema/call/repository.d.ts +11 -11
  289. package/dist/schema/call/repository.js +1 -1
  290. package/dist/schema/call/reward.d.ts +1 -1
  291. package/dist/schema/call/semantic.js +1 -1
  292. package/dist/schema/call/service.d.ts +7 -7
  293. package/dist/schema/call/service.js +1 -1
  294. package/dist/schema/call/treasury.d.ts +1 -1
  295. package/dist/schema/common/index.d.ts +6 -6
  296. package/dist/schema/common/index.js +1 -1
  297. package/dist/schema/config/index.d.ts +50 -1
  298. package/dist/schema/config/index.js +1 -1
  299. package/dist/schema/evaluation/index.d.ts +27 -11
  300. package/dist/schema/evaluation/index.js +1 -1
  301. package/dist/schema/goal/index.d.ts +5 -5
  302. package/dist/schema/goal/planning.d.ts +15 -15
  303. package/dist/schema/goal/planning.js +1 -1
  304. package/dist/schema/index.d.ts +1 -0
  305. package/dist/schema/index.js +1 -1
  306. package/dist/schema/interaction/index.d.ts +1 -1
  307. package/dist/schema/local/index.js +1 -1
  308. package/dist/schema/messenger/index.d.ts +26 -26
  309. package/dist/schema/operations.d.ts +33 -33
  310. package/dist/schema/operations.js +1 -1
  311. package/dist/schema/persona/index.d.ts +4708 -0
  312. package/dist/schema/persona/index.js +1 -1
  313. package/dist/schema/query/bi.d.ts +232 -25
  314. package/dist/schema/query/bi.js +1 -1
  315. package/dist/schema/query/index.d.ts +35 -35
  316. package/dist/schema/query/index.js +1 -1
  317. package/dist/schema/schema-version.js +1 -1
  318. package/dist/schema/workflow/index.d.ts +1 -1
  319. package/dist/schema/workspace/index.d.ts +53 -0
  320. package/dist/schema/workspace/index.js +1 -1
  321. package/dist/schema-query-impl/index.d.ts +9 -0
  322. package/dist/schema-query-impl/index.js +1 -1
  323. package/dist/schemas/benchmark_migration_operation.output.json +793 -0
  324. package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
  325. package/dist/schemas/bridge_operation.schema.json +5 -5
  326. package/dist/schemas/config_operation.output.json +252 -0
  327. package/dist/schemas/config_operation.schema.json +21 -1
  328. package/dist/schemas/evaluation_operation.output.json +22 -10
  329. package/dist/schemas/goal_operation.schema.json +8 -8
  330. package/dist/schemas/guard2file.schema.json +1 -1
  331. package/dist/schemas/index.json +7 -1
  332. package/dist/schemas/machineNode2file.schema.json +1 -1
  333. package/dist/schemas/messenger_operation.schema.json +24 -12
  334. package/dist/schemas/onchain_events.output.json +1 -1
  335. package/dist/schemas/onchain_operations.output.json +4 -2
  336. package/dist/schemas/onchain_operations.schema.json +189 -139
  337. package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
  338. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
  339. package/dist/schemas/onchain_operations_contact.schema.json +7 -5
  340. package/dist/schemas/onchain_operations_demand.schema.json +7 -5
  341. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
  342. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  343. package/dist/schemas/onchain_operations_guard.schema.json +5 -3
  344. package/dist/schemas/onchain_operations_machine.schema.json +22 -18
  345. package/dist/schemas/onchain_operations_order.schema.json +11 -7
  346. package/dist/schemas/onchain_operations_payment.schema.json +3 -3
  347. package/dist/schemas/onchain_operations_permission.schema.json +19 -11
  348. package/dist/schemas/onchain_operations_personal.schema.json +16 -10
  349. package/dist/schemas/onchain_operations_progress.schema.json +11 -7
  350. package/dist/schemas/onchain_operations_proof.schema.json +5 -3
  351. package/dist/schemas/onchain_operations_repository.schema.json +12 -8
  352. package/dist/schemas/onchain_operations_reward.schema.json +11 -9
  353. package/dist/schemas/onchain_operations_service.schema.json +28 -22
  354. package/dist/schemas/onchain_operations_treasury.schema.json +11 -9
  355. package/dist/schemas/onchain_table_data.output.json +27 -17
  356. package/dist/schemas/persona_operation.output.json +15875 -1
  357. package/dist/schemas/persona_operation.schema.json +3056 -478
  358. package/dist/schemas/query_toolkit.output.json +343 -63
  359. package/dist/schemas/query_toolkit.schema.json +1 -1
  360. package/dist/schemas/workflow_operation.schema.json +4 -2
  361. package/dist/schemas/workspace_operation.output.json +181 -1
  362. package/dist/schemas/workspace_operation.schema.json +61 -2
  363. package/dist/strategy/scorecard.js +1 -1
  364. package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
  365. package/dist/tools/handlers/benchmark-migration.js +1 -0
  366. package/dist/tools/handlers/config.js +1 -1
  367. package/dist/tools/handlers/industry-pack.js +1 -1
  368. package/dist/tools/handlers/onchain.js +1 -1
  369. package/dist/tools/handlers/query.js +1 -1
  370. package/dist/tools/handlers/schema-query.js +1 -1
  371. package/dist/tools/handlers/workspace.js +1 -1
  372. package/dist/tools/index.js +1 -1
  373. package/dist/tools/move-fn-index.gen.d.ts +3 -0
  374. package/dist/tools/move-fn-index.gen.js +1 -0
  375. package/dist/tools/registry/business.js +1 -1
  376. package/dist/tools/registry/config.js +1 -1
  377. package/dist/tools/registry/evaluation.js +1 -1
  378. package/dist/tools/registry/onchain.js +1 -1
  379. package/dist/tools/sanitize-output.d.ts +3 -0
  380. package/dist/tools/sanitize-output.js +1 -0
  381. package/dist/tools/sanitize-output.spec.d.ts +1 -0
  382. package/dist/tools/sanitize-output.spec.js +1 -0
  383. package/package.json +9 -4
  384. package/dist/knowledge/baselines/evaluation-baselines.json +0 -79
@@ -1 +1 @@
1
- import{PackageAddress,WOW_SINGLETON_IDS}from'@wowok/wowok';const EOA='EOA',ANY='ANY',F_EDGES=[{'id':'service.permission','family':'F','source':'Service','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b06','b09'],'label':'Permission\x20group\x20governing\x20who\x20may\x20operate\x20the\x20service\x20(must\x20differ\x20from\x20the\x20arbitration\x20permission,\x20E33\x20recusal\x20rule)'},{'id':'service.machine','family':'F','source':'Service','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'after\x20publish','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'service.move\x20machine_set_imp\x20/\x20machine_none_imp\x20(assert!(!bPublished))'},'label':'Workflow\x20template\x20the\x20shop\x20fulfills\x20orders\x20through\x20(chosen\x20at\x20publish,\x20permanently\x20frozen)'},{'id':'service.buy_guard','family':'F','source':'Service','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'buy_guard'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b01','b10'],'contract':{'field':'buy_guard','frozenWhen':null,'forbiddenActions':[],'allowedActions':['set','remove'],'unfreeze':null,'moveAnchor':'service.move\x20buy_guard_set_imp\x20/\x20buy_guard_none_imp\x20(no\x20assert!(!bPublished))'},'label':'Gate\x20every\x20buyer\x20must\x20pass\x20before\x20an\x20order\x20can\x20be\x20created'},{'id':'service.arbitration','family':'F','source':'Service','target':'Arbitration','cardinality':'N','read':{'kind':'fields','path':'arbitrations'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b06'],'contract':{'field':'arbitrations','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20arbitration_remove_imp\x20/\x20arbitration_clear_imp\x20(assert_not_published)'},'label':'Dispute\x20venues\x20the\x20shop\x20designates\x20for\x20order\x20arbitration\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.reward','family':'F','source':'Service','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b07'],'contract':{'field':'rewards','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20reward_remove_imp\x20/\x20reward_clear_imp\x20(assert_not_published)'},'label':'Reward\x20pools\x20funding\x20the\x20shop\x27s\x20promotions\x20and\x20rebates\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.repository','family':'F','source':'Service','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'repositories'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤100)','bridgeIds':['b02'],'contract':{'field':'repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'service.move\x20repository_remove_imp\x20/\x20repository_clear_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20the\x20shop\x20stores\x20fulfillment\x20proofs\x20in\x20(up\x20to\x20100;\x20freely\x20editable\x20after\x20publish)'},{'id':'service.um','family':'F','source':'Service','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b11'],'label':'Shop\x20membership\x20book\x20—\x20the\x20roster\x20deciding\x20who\x20counts\x20as\x20a\x20shop\x20member\x20(messaging\x20and\x20member-gate\x20flows)'},{'id':'service.order_allocator_guard','family':'F','source':'Service','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['order_allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'service.move\x20L175-194;\x20allocation.move\x20L194-200','bridgeIds':['b05'],'label':'Guards\x20gating\x20how\x20incoming\x20orders\x20split\x20across\x20allocation\x20pools\x20(order-allocator\x20triggers)'},{'id':'order.builder','family':'F','source':'Order','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'builder'},'retention':'complete','evidence':'order.move\x20L60-75\x20(owner;\x20SDK\x20builder)','bridgeIds':['b01'],'label':'Buyer\x20who\x20owns\x20the\x20order\x20(payer-side\x20principal;\x20SDK\x20names\x20the\x20field\x20builder)'},{'id':'order.agent','family':'F','source':'Order','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'agent'},'retention':'complete','evidence':'order.move\x20L60-75,L179\x20(≤10)','label':'Merchant\x20agents\x20authorized\x20by\x20the\x20buyer\x20(<=10,\x20buyer\x20calls\x20agent_set)'},{'id':'order.service','family':'F','source':'Order','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Shop\x20fulfilling\x20this\x20order\x20(frozen\x20purchase\x20snapshot\x20of\x20what\x20was\x20bought\x20and\x20from\x20whom)'},{'id':'order.machine','family':'F','source':'Order','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'order.move\x20L130\x20(machine⇒progress)','bridgeIds':['b01','b04'],'label':'Workflow\x20the\x20order\x20advances\x20through\x20(snapshot\x20of\x20the\x20shop\x27s\x20template\x20at\x20purchase\x20time)'},{'id':'order.progress','family':'F','source':'Order','target':'Progress','cardinality':'0..1','read':{'kind':'field','path':'progress'},'retention':'complete','evidence':'order.move\x20L130','bridgeIds':['b04'],'label':'Live\x20fulfillment\x20state\x20of\x20the\x20order\x20(which\x20workflow\x20node\x20it\x20currently\x20sits\x20at)'},{'id':'order.allocation','family':'F','source':'Order','target':'Allocation','cardinality':'0..1','read':{'kind':'field','path':'allocation'},'retention':'complete','evidence':'order.move\x20L130\x20(amount>0⇒allocation)','bridgeIds':['b05'],'label':'Allocation\x20pool\x20routing\x20this\x20order\x27s\x20payouts\x20(present\x20when\x20the\x20order\x20amount\x20>\x200)'},{'id':'order.discount','family':'F','source':'Order','target':'Discount','cardinality':'0..1','read':{'kind':'field','path':'discount'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Discount\x20the\x20shop\x20granted\x20on\x20this\x20order\x20(price\x20concession\x20of\x20record)'},{'id':'order.dispute','family':'F','source':'Order','target':'Arb','cardinality':'N','read':{'kind':'fields','path':'dispute'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b06'],'label':'Dispute\x20cases\x20raised\x20over\x20this\x20order\x20(each\x20case\x20may\x20claw\x20back\x20compensation)'},{'id':'order.claimed_by','family':'F','source':'Order','target':EOA,'cardinality':'0..1','read':{'kind':'field','path':'claimed_by'},'retention':'complete','evidence':'order.move\x20L86-96\x20(single-use)','bridgeIds':['b06'],'label':'Compensation\x20claimant\x20on\x20this\x20order\x20(single-use\x20slot;\x20marks\x20the\x20payout\x20as\x20consumed)'},{'id':'order.required_info','family':'F','source':'Order','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'required_info'},'retention':'complete','evidence':'order.move\x20L73,L77-80\x20(Option<address>:\x20IM\x20book\x20or\x20WTS\x20proof)','bridgeIds':['b11','b12'],'label':'Information\x20credential\x20the\x20shop\x20requires\x20after\x20the\x20order\x20(IM\x20book\x20or\x20WTS\x20proof)'},{'id':'discount.service','family':'F','source':'Discount','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'service.move\x20L109-119\x20(service\x20L117)','bridgeIds':['b01'],'label':'Shop\x20that\x20issued\x20the\x20discount\x20(the\x20party\x20honoring\x20the\x20concession)'},{'id':'progress.machine','family':'F','source':'Progress','target':'Machine','cardinality':0x1,'read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'bound\x20at\x20creation','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20new_imp\x20(machine\x20bound\x20at\x20creation;\x20no\x20mutation\x20entry)'},'label':'Workflow\x20the\x20progress\x20executes\x20(fixed\x20at\x20creation;\x20determines\x20the\x20node\x20graph)'},{'id':'progress.task','family':'F','source':'Progress','target':'Order','cardinality':'0..1','read':{'kind':'field','path':'task'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'task','frozenWhen':'after\x20task_set','forbiddenActions':['set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20task_set_imp\x20(assert!\x20option::is_none\x20→\x20E_TASK_ALREADY_SET)'},'label':'Order\x20this\x20progress\x20fulfills\x20(set\x20once;\x20a\x20progress\x20serves\x20at\x20most\x20one\x20order)'},{'id':'progress.named_operator','family':'F','source':'Progress','target':EOA,'cardinality':'N','read':{'kind':'deep','segments':['namedOperator','operators'],'field':''},'retention':'complete','evidence':'progress.move\x20L76-86\x20(≤80)','bridgeIds':['b04'],'label':'Named\x20operators\x20allowed\x20to\x20advance\x20this\x20progress\x20(up\x20to\x2080;\x20runtime-delegated)'},{'id':'progress.context_repository','family':'F','source':'Progress','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'context_repositories'},'retention':'complete','evidence':'progress.move\x20L79,L199-208\x20(MAX_CONTEXT_REPOSITORY_COUNT)','bridgeIds':['b02','b04'],'label':'Runtime\x20evidence\x20repositories\x20consulted\x20while\x20fulfilling\x20the\x20order'},{'id':'machine.permission','family':'F','source':'Machine','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20run\x20and\x20advance\x20the\x20workflow'},{'id':'machine.consensus_repository','family':'F','source':'Machine','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'consensus_repositories'},'retention':'complete','evidence':'machine.move\x20L299-308','contract':{'field':'consensus_repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'machine.move\x20consensus_repositories_remove_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20nodes\x20consult\x20to\x20reach\x20execution\x20consensus'},{'id':'machine.um','family':'F','source':'Machine','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b11'],'label':'Workflow\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20participates\x20in\x20running\x20the\x20workflow'},{'id':'allocation.guard','family':'F','source':'Allocation','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'allocation.move\x20L194-200','bridgeIds':['b05'],'contract':{'field':'allocators','frozenWhen':'after\x20create\x20(share)','forbiddenActions':['add','remove','clear','set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'allocation.move\x20create\x20(bound\x20via\x20new_with_balance;\x20no\x20mutation\x20entry)'},'label':'Guards\x20gating\x20each\x20payout\x20segment\x20of\x20the\x20pool\x20(release\x20conditions\x20per\x20allocator)'},{'id':'allocation.payment','family':'F','source':'Allocation','target':'Payment','cardinality':'N','read':{'kind':'fields','path':'payment'},'retention':'complete','evidence':'allocation.move\x20L196-202,L307-316','bridgeIds':['b05','b08'],'label':'Payment\x20receipts\x20emitted\x20by\x20this\x20allocation\x20pool'},{'id':'arbitration.permission','family':'F','source':'Arbitration','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b09'],'label':'Arbitration\x20service\x20permission\x20group\x20(must\x20differ\x20from\x20the\x20shop\x20permission,\x20E33)'},{'id':'arbitration.voting_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'voting_guard','field':'guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Arbitration\x20voting\x20Guards\x20(empty\x20=\x20open\x20to\x20all\x20members)'},{'id':'arbitration.usage_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'usage_guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Gate\x20a\x20party\x20must\x20pass\x20before\x20opening\x20a\x20case\x20at\x20this\x20arbitration\x20service'},{'id':'arbitration.um','family':'F','source':'Arbitration','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b11'],'label':'Arbitration\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20vote\x20on\x20dispute\x20cases\x20(open\x20voting)'},{'id':'arb.order','family':'F','source':'Arb','target':'Order','cardinality':0x1,'read':{'kind':'field','path':'order'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Order\x20the\x20arbitration\x20case\x20is\x20about'},{'id':'arb.arbitration_service','family':'F','source':'Arb','target':'Arbitration','cardinality':'0..1','read':{'kind':'field','path':'arbitration'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Arbitration\x20service\x20applied\x20to\x20the\x20case'},{'id':'arb.voter','family':'S','source':'Arb','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'voted','field':'voter'},'retention':'complete','evidence':'arb.move\x20L96-111\x20(voted≤520)','bridgeIds':['b06'],'label':'Actual\x20case\x20voters\x20and\x20weights\x20(<=520)'},{'id':'demand.permission','family':'F','source':'Demand','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b09'],'label':'Demand\x20permission\x20group\x20(the\x20demanding\x20side)'},{'id':'demand.guard','family':'F','source':'Demand','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b03','b10'],'label':'Demand\x20acceptance\x20Guards\x20(must\x20be\x20empty\x20for\x20a\x20bare\x20present)'},{'id':'demand.reward','family':'F','source':'Demand','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b07'],'label':'Escrowed\x20reward\x20pools\x20of\x20the\x20demand'},{'id':'demand.um','family':'F','source':'Demand','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b11'],'label':'Demand\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20act\x20on\x20the\x20demanding\x20side'},{'id':'reward.permission','family':'F','source':'Reward','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20configure\x20the\x20reward\x20pool'},{'id':'reward.guard','family':'F','source':'Reward','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b07'],'label':'Guards\x20a\x20claimant\x20must\x20pass\x20before\x20drawing\x20from\x20the\x20pool'},{'id':'reward.um','family':'F','source':'Reward','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b11'],'label':'Reward\x20membership\x20book\x20—\x20roster\x20of\x20members\x20eligible\x20under\x20member-gated\x20claim\x20rules'},{'id':'repository.permission','family':'F','source':'Repository','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b02','b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20manage\x20the\x20repository'},{'id':'repository.reward','family':'F','source':'Repository','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b07'],'label':'Reward\x20pools\x20held\x20by\x20the\x20repository'},{'id':'repository.um','family':'F','source':'Repository','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'repository.move\x20L461-468,L471-480','bridgeIds':['b11'],'label':'Repository\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20read\x20or\x20write\x20under\x20member\x20policies'},{'id':'repository.policy_guard','family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies','write_guard'],'field':'guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.write_guard),L516-570','bridgeIds':['b02','b10'],'label':'Write-policy\x20Guards\x20gating\x20evidence\x20writes\x20under\x20each\x20repository\x20policy'},{'id':'repository.quote_guard','family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies'],'field':'quote_guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.quote_guard),L421-428','bridgeIds':['b02','b10'],'label':'Quote/read-policy\x20Guards\x20gating\x20evidence\x20reads\x20under\x20each\x20repository\x20policy'},{'id':'contact.permission','family':'F','source':'Contact','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'contact.move\x20L25-31','bridgeIds':['b09','b11'],'label':'Permission\x20group\x20governing\x20the\x20contact\x20book'},{'id':'contact.im','family':'F','source':'Contact','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'ims','field':'at'},'retention':'membership','evidence':'contact.move\x20L15,L18-29,L85-105\x20(MAX_IM_COUNT=200)','bridgeIds':['b11'],'contract':{'field':'ims','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear','update'],'unfreeze':null,'moveAnchor':'contact.move\x20im_add_imp\x20/\x20im_remove_imp\x20(roster\x20membership;\x20status/description\x20updatable)'},'label':'IM\x20member\x20entities\x20of\x20the\x20contact\x20book\x20(<=200;\x20membership\x20roster\x20carrying\x20status\x20and\x20join\x20time)'},{'id':'permission.admin','family':'F','source':'Permission','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'admin'},'retention':'complete','evidence':'permission.move\x20L34-42\x20(admin\x20vector)','bridgeIds':['b09'],'label':'Admin\x20EOAs\x20who\x20can\x20mutate\x20the\x20permission\x20group\x27s\x20roles\x20(below\x20the\x20owner)'},{'id':'permission.owner','family':'F','source':'Permission','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'owner'},'retention':'complete','evidence':'permission.move\x20L34-42,L537-543','bridgeIds':['b09'],'contract':{'field':'owner','frozenWhen':null,'forbiddenActions':['add','remove','clear'],'allowedActions':['update'],'unfreeze':null,'moveAnchor':'permission.move\x20transfer\x20(assert_owner;\x20ownership\x20role\x20moves\x20with\x20it)'},'label':'Ultimate\x20owner\x20EOA\x20of\x20the\x20permission\x20group\x20(control-chain\x20root;\x20can\x20transfer\x20the\x20group)'},{'id':'permission.um','family':'F','source':'Permission','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'permission.move\x20L41,L562-571','bridgeIds':['b11'],'label':'Permission\x20group\x27s\x20membership\x20book\x20(who\x20receives\x20the\x20group\x27s\x20messages\x20and\x20notifications)'},{'id':'guard.relies','family':'F','source':'Guard','target':'Guard','cardinality':'N','read':{'kind':'fields','path':'relies'},'retention':'complete','evidence':'guard.move\x20L85-95\x20(≤4,\x20one\x20level)','bridgeIds':['b10'],'maxHops':0x1,'label':'Sub-Guards\x20the\x20Guard\x20relies\x20on\x20(<=4,\x20one\x20level;\x20relied\x20guards\x27\x20own\x20relies\x20are\x20not\x20consulted)'},{'id':'passport.signer','family':'F','source':'Passport','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'passport.move\x20L41-49,L94-98','bridgeIds':['b12'],'label':'Identity\x20that\x20verified\x20this\x20passport\x20(credential\x20consumed\x20per\x20transaction)'},{'id':'passport.guard','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guard','field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-47','bridgeIds':['b10','b12'],'label':'Verification\x20tickets\x20the\x20passport\x20carries\x20(each\x20proving\x20a\x20Guard\x20passed)'},{'id':'passport.ticket_relies','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['guard','relies'],'field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-38,L114-151','bridgeIds':['b10','b12'],'label':'Sub-Guards\x20a\x20verification\x20ticket\x20actually\x20evaluated\x20(ticket-level\x20dependency\x20fanout)'},{'id':'passport.impack','family':'F','source':'Passport','target':ANY,'cardinality':'N','read':{'kind':'fields','path':'impack'},'retention':'complete','evidence':'passport.move\x20L29,L46,L227-242','bridgeIds':['b12'],'label':'Business\x20objects\x20packed\x20into\x20the\x20passport\x20verification\x20context'},{'id':'proof.signer','family':'F','source':'Proof','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'Party\x20who\x20signed\x20the\x20WTS\x20evidence\x20(accountability\x20for\x20the\x20claim)'},{'id':'proof.about','family':'F','source':'Proof','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'about'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'Object\x20the\x20evidence\x20attests\x20to\x20(the\x20subject\x20of\x20the\x20WTS\x20claim)'},{'id':'treasury.permission','family':'F','source':'Treasury','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'treasury.move\x20L73-83','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20move\x20treasury\x20funds'},{'id':'treasury.um','family':'F','source':'Treasury','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'treasury.move\x20L82,L86-95,L504-510','bridgeIds':['b11'],'label':'Treasury\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20operate\x20treasury\x20flows\x20under\x20member\x20roles'},{'id':'treasury.deposit_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_deposit_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L61-65,L78,L138-194','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20release\x20external\x20deposits\x20into\x20the\x20treasury\x20(carries\x20identifier/store_from_id\x20slots)'},{'id':'treasury.withdraw_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_withdraw_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L67-71,L79,L197-250','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20pay\x20external\x20withdrawals\x20out\x20of\x20the\x20treasury\x20(pays\x20the\x20tx\x20sender\x20only;\x20carries\x20identifier/store_from_id\x20slots)'},{'id':'payment.signer','family':'F','source':'Payment','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'payment.move\x20L93-101,L111','bridgeIds':['b08'],'contract':{'field':'signer','frozenWhen':'after\x20create','forbiddenActions':['set','update','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'payment.move\x20new\x20(signer\x20=\x20tx_context::sender\x20at\x20creation)'},'label':'EOA\x20that\x20submitted\x20the\x20payment\x20(payer\x20of\x20record)'}],R_EDGES=[{'id':'eoa.permission','family':'R','source':EOA,'target':'Permission','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityPermission']},'retention':'membership','evidence':'entity_permission.move\x20L32\x20(bits\x201/2/4)','bridgeIds':['b09'],'label':'Permission\x20groups\x20the\x20account\x20currently\x20belongs\x20to\x20(membership;\x20disappears\x20on\x20removal)'},{'id':'eoa.order','family':'R','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityOrder']},'retention':'bounded_window','evidence':'entity_order.move\x20L31\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20account\x20joined\x20as\x20buyer/agent\x20(buyer\x20view,\x20FIFO\x205200)'},{'id':'eoa.contact','family':'R','source':EOA,'target':'Contact','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityContact']},'retention':'membership','evidence':'entity_contact.move\x20L24','bridgeIds':['b11'],'label':'Contact\x20books\x20the\x20account\x20currently\x20joined'},{'id':'permission.core_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerCore']},'retention':'bounded_exact','evidence':'object_linker.move\x20L37,L88\x20(≤5200\x20aborts)','bridgeIds':['b09'],'label':'Business\x20objects\x20this\x20permission\x20group\x20governs\x20(Service/Demand/Machine/...;\x20exact\x20registry,\x20no\x20eviction)'},{'id':'permission.tx_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx']},'retention':'bounded_window','evidence':'object_linker.move\x20L43\x20(FIFO\x205200\x20operational)','bridgeIds':['b09'],'label':'Objects\x20this\x20permission\x20group\x20has\x20acted\x20on\x20at\x20runtime\x20(FIFO\x205200;\x20oldest\x20evicted)'},{'id':'service.order','family':'R','source':'Service','target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx'],'filterType':'Order'},'retention':'bounded_window','evidence':'object_linker.move\x20L43,L136-140\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20shop\x20currently\x20retains\x20in\x20its\x20window\x20(FIFO\x205200,\x20oldest\x20evicted;\x20complete\x20history\x20via\x20the\x20event\x20channel)'},{'id':'target.vote','family':'S','source':ANY,'target':EOA,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['registrar']},'retention':'bounded_window','evidence':'registrar.move\x20L154-171\x20(ring\x205200,\x20bits\x200x02/0x04/0x08)','label':'Reputation\x20votes\x20the\x20address\x20has\x20received\x20(like/dislike/favor;\x20ring\x205200,\x20oldest\x20evicted)'},{'id':'entity.profile','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L146-152,L176-179,L236-242,L503-560\x20(AddressInfo\x20current\x20row;\x20description/records\x20mutable\x20by\x20the\x20entity)','label':'Self-published\x20entity\x20profile:\x20description,\x20registration\x20time\x20and\x20typed\x20records\x20(self-edge\x20carrying\x20row\x20attributes)'},{'id':'entity.referrer','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L149,L236-242\x20(AddressInfo.referrer\x20Option<address>;\x20invitation\x20chain)','label':'Account\x20that\x20referred\x20this\x20entity\x20onto\x20the\x20platform\x20(invitation\x20upline)'},{'id':'entity.resource','family':'S','source':EOA,'target':'Resource','cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L150,L236-241,L265-319\x20(AddressInfo.resource\x20Option<address>;\x20transferable/destroyable)','label':'On-chain\x20Resource\x20identity\x20object\x20held\x20by\x20this\x20entity\x20(transferable,\x20may\x20be\x20destroyed)'}],TABLE_EDGES=[{'id':'permission.entity','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'PermissionPerm'},'retention':'membership','evidence':'permission.move\x20L34-42\x20(entity\x20may\x20be\x20EOA\x20or\x20Guard\x20address)','bridgeIds':['b04','b09'],'label':'Entity-table\x20members\x20of\x20the\x20permission\x20group\x20(EOA\x20or\x20Guard,\x20carrying\x20perm\x20index\x20bits)'},{'id':'demand.presenter','family':'R','source':'Demand','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L74\x20(presenters\x20table)','bridgeIds':['b03'],'label':'Suppliers\x20that\x20presented\x20to\x20the\x20demand,\x20with\x20acceptance_score'},{'id':'demand.presenter_service','family':'R','source':'Demand','target':'Service','cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L79-118\x20(ServiceInfo.service\x20Option)','bridgeIds':['b03'],'label':'Services\x20proposed\x20by\x20presenters\x20on\x20the\x20demand\x20(same-row\x20co-edge\x20of\x20demand.presenter;\x20absent\x20for\x20bare\x20presents)'},{'id':'machine.node','family':'W','source':'Machine','target':'MachineNode','cardinality':'N','read':{'kind':'table','rowType':'MachineNode'},'retention':'complete','evidence':'machine.move\x20L299-308\x20(immutable\x20after\x20publish)','bridgeIds':['b04'],'contract':{'field':'nodes','frozenWhen':'after\x20publish','forbiddenActions':['add','remove','update'],'allowedActions':[],'unfreeze':null,'moveAnchor':'machine.move\x20node_add_imp\x20/\x20node_remove_imp\x20/\x20node_rename_imp\x20(assert_not_published)'},'label':'The\x20workflow\x27s\x20step\x20table\x20(full\x20node\x20graph;\x20frozen\x20at\x20publish)'},{'id':'treasury.record','family':'M','source':'Treasury','target':'Payment','cardinality':'N','read':{'kind':'table','rowType':'TreasuryRecord'},'retention':'complete','evidence':'treasury.move\x20L39-46,L77\x20(history:\x20ParentTable<address,Record>,\x20key\x20=\x20Payment;\x20append-only)','bridgeIds':['b08'],'label':'Ledger\x20entries\x20tying\x20each\x20withdrawal/deposit/receive\x20Payment\x20to\x20its\x20op\x20code,\x20signer,\x20external\x20guard\x20and\x20amount'},{'id':'reward.claim','family':'M','source':'Reward','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'RewardClaimRecord'},'retention':'complete','evidence':'reward.move\x20L117-138,L180-193\x20(record:\x20ParentTable<address,RecipientRecord>;\x20key\x20=\x20claimant)','bridgeIds':['b07'],'label':'Claimants\x20against\x20the\x20reward\x20pool,\x20with\x20lifetime\x20total\x20and\x20per-guard\x20claim\x20legs'},{'id':'repository.data_about','family':'F','source':'Repository','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'RepositoryData'},'retention':'membership','evidence':'repository.move\x20L455-465,L161-173\x20(data:\x20ParentTable<DataKey{id,key},\x20vector<u8>>)','bridgeIds':['b02'],'label':'Business\x20objects\x20the\x20stored\x20evidence\x20rows\x20are\x20about\x20(DataKey.id,\x20carrying\x20the\x20row\x20key\x20name)'}],W_EDGES=[{'id':'wf.transition','family':'W','source':'MachineNode','target':'MachineNode','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L101\x20NodePair,L269','bridgeIds':['b04'],'label':'Directed\x20hand-off\x20from\x20workflow\x20step\x20to\x20step\x20(carries\x20the\x20advance\x20threshold)'},{'id':'wf.forward_guard','family':'W','source':'MachineNode','target':'Guard','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L63\x20Forward','bridgeIds':['b04','b05','b10','b12'],'label':'Guards\x20evaluated\x20after\x20a\x20step\x20advances\x20(where\x20supply-chain\x20payouts\x20and\x20downstream\x20allocations\x20trigger)'}],M_EDGES=[{'id':'payment.recipient','family':'M','source':'Payment','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'record','field':'recipient'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(Revenue≤200)','bridgeIds':['b05','b08'],'label':'Payment\x20allocation\x20recipients\x20(with\x20amounts,\x20leg\x20by\x20leg)'},{'id':'payment.from_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'from_object'},'retention':'complete','evidence':'payment.move\x20L149-161\x20(framework-only)','bridgeIds':['b05','b08'],'label':'Funding\x20source\x20pool\x20(Treasury/Allocation/Service;\x20framework-settable\x20only)'},{'id':'payment.for_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'info.for_object'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(info\x20routing\x20hint)','bridgeIds':['b05','b08'],'label':'Business\x20routing\x20object\x20(user-settable)'},{'id':'payment.for_guard','family':'M','source':'Payment','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'info.for_guard'},'retention':'complete','evidence':'payment.move\x20L93-101','bridgeIds':['b05'],'label':'Guard\x20the\x20payment\x20was\x20routed\x20under\x20(user-settable\x20routing\x20context)'},{'id':'allocation.for_object','family':'M','source':'Allocation','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_object'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Business\x20object\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20for'},{'id':'allocation.for_guard','family':'M','source':'Allocation','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_guard'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Gate\x20context\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20under'}],EVENT_EDGES=[{'id':'service.order_history','family':'E','source':'Service','target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchField':'service','targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20(NewOrderEvent:\x20object/service/progress/discount/allocation/amount)','label':'Every\x20order\x20ever\x20created\x20in\x20the\x20shop\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20shop-order\x20window'},{'id':'eoa.order_history','family':'E','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchSender':!![],'targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20+\x20indexer\x20tx\x20sender\x20(the\x20transacting\x20buyer)','label':'Orders\x20the\x20account\x20created\x20as\x20the\x20transacting\x20buyer\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20buyer\x20window'},{'id':'arb.history','family':'E','source':'Arbitration','target':'Arb','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::arb::ArbEvent','matchField':'arbitration','targetField':'object'},'retention':'event_full','evidence':'arb.move\x20L33-43,L122,L227\x20(ArbEvent:\x20case/arbitration/order/status/indemnity)','label':'Every\x20dispute\x20case\x20the\x20arbitration\x20service\x20ever\x20handled\x20—\x20complete\x20event\x20stream;\x20latest\x20status\x20transition\x20wins\x20per\x20case'}];export const EDGE_SCHEMAS=[...F_EDGES,...R_EDGES,...TABLE_EDGES,...W_EDGES,...M_EDGES,...EVENT_EDGES];export const EDGE_SCHEMA_BY_ID=new Map(EDGE_SCHEMAS['map'](a=>[a['id'],a]));export function outgoingSchemaIds(a){return EDGE_SCHEMAS['filter'](b=>b['source']===a||b['source']===ANY)['map'](b=>b['id']);}export const COVERED_OBJECT_TYPES=[...new Set(EDGE_SCHEMAS['flatMap'](a=>[a['source'],a['target']])['filter'](a=>a!==EOA&&a!==ANY&&a!=='MachineNode'))];
1
+ import{PackageAddress,WOW_SINGLETON_IDS}from'@wowok/wowok';const EOA='EOA',ANY='ANY';export const EDGE_ID_REPOSITORY_POLICY_GUARD='repository.policy_guard';const F_EDGES=[{'id':'service.permission','family':'F','source':'Service','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b06','b09'],'label':'Permission\x20group\x20governing\x20who\x20may\x20operate\x20the\x20service\x20(must\x20differ\x20from\x20the\x20arbitration\x20permission,\x20E33\x20recusal\x20rule)'},{'id':'service.machine','family':'F','source':'Service','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'after\x20publish','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'service.move\x20machine_set_imp\x20/\x20machine_none_imp\x20(assert!(!bPublished))'},'label':'Workflow\x20template\x20the\x20shop\x20fulfills\x20orders\x20through\x20(chosen\x20at\x20publish,\x20permanently\x20frozen)'},{'id':'service.buy_guard','family':'F','source':'Service','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'buy_guard'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b01','b10'],'contract':{'field':'buy_guard','frozenWhen':null,'forbiddenActions':[],'allowedActions':['set','remove'],'unfreeze':null,'moveAnchor':'service.move\x20buy_guard_set_imp\x20/\x20buy_guard_none_imp\x20(no\x20assert!(!bPublished))'},'label':'Gate\x20every\x20buyer\x20must\x20pass\x20before\x20an\x20order\x20can\x20be\x20created'},{'id':'service.arbitration','family':'F','source':'Service','target':'Arbitration','cardinality':'N','read':{'kind':'fields','path':'arbitrations'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b06'],'contract':{'field':'arbitrations','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20arbitration_remove_imp\x20/\x20arbitration_clear_imp\x20(assert_not_published)'},'label':'Dispute\x20venues\x20the\x20shop\x20designates\x20for\x20order\x20arbitration\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.reward','family':'F','source':'Service','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b07'],'contract':{'field':'rewards','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20reward_remove_imp\x20/\x20reward_clear_imp\x20(assert_not_published)'},'label':'Reward\x20pools\x20funding\x20the\x20shop\x27s\x20promotions\x20and\x20rebates\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.repository','family':'F','source':'Service','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'repositories'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤100)','bridgeIds':['b02'],'contract':{'field':'repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'service.move\x20repository_remove_imp\x20/\x20repository_clear_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20the\x20shop\x20stores\x20fulfillment\x20proofs\x20in\x20(up\x20to\x20100;\x20freely\x20editable\x20after\x20publish)'},{'id':'service.um','family':'F','source':'Service','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b11'],'label':'Shop\x20membership\x20book\x20—\x20the\x20roster\x20deciding\x20who\x20counts\x20as\x20a\x20shop\x20member\x20(messaging\x20and\x20member-gate\x20flows)'},{'id':'service.order_allocator_guard','family':'F','source':'Service','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['order_allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'service.move\x20L175-194;\x20allocation.move\x20L194-200','bridgeIds':['b05'],'label':'Guards\x20gating\x20how\x20incoming\x20orders\x20split\x20across\x20allocation\x20pools\x20(order-allocator\x20triggers)'},{'id':'order.builder','family':'F','source':'Order','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'builder'},'retention':'complete','evidence':'order.move\x20L60-75\x20(owner;\x20SDK\x20builder)','bridgeIds':['b01'],'label':'Buyer\x20who\x20owns\x20the\x20order\x20(payer-side\x20principal;\x20SDK\x20names\x20the\x20field\x20builder)'},{'id':'order.agent','family':'F','source':'Order','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'agent'},'retention':'complete','evidence':'order.move\x20L60-75,L179\x20(≤10)','label':'Merchant\x20agents\x20authorized\x20by\x20the\x20buyer\x20(<=10,\x20buyer\x20calls\x20agent_set)'},{'id':'order.service','family':'F','source':'Order','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Shop\x20fulfilling\x20this\x20order\x20(frozen\x20purchase\x20snapshot\x20of\x20what\x20was\x20bought\x20and\x20from\x20whom)'},{'id':'order.machine','family':'F','source':'Order','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'order.move\x20L130\x20(machine⇒progress)','bridgeIds':['b01','b04'],'label':'Workflow\x20the\x20order\x20advances\x20through\x20(snapshot\x20of\x20the\x20shop\x27s\x20template\x20at\x20purchase\x20time)'},{'id':'order.progress','family':'F','source':'Order','target':'Progress','cardinality':'0..1','read':{'kind':'field','path':'progress'},'retention':'complete','evidence':'order.move\x20L130','bridgeIds':['b04'],'label':'Live\x20fulfillment\x20state\x20of\x20the\x20order\x20(which\x20workflow\x20node\x20it\x20currently\x20sits\x20at)'},{'id':'order.allocation','family':'F','source':'Order','target':'Allocation','cardinality':'0..1','read':{'kind':'field','path':'allocation'},'retention':'complete','evidence':'order.move\x20L130\x20(amount>0⇒allocation)','bridgeIds':['b05'],'label':'Allocation\x20pool\x20routing\x20this\x20order\x27s\x20payouts\x20(present\x20when\x20the\x20order\x20amount\x20>\x200)'},{'id':'order.discount','family':'F','source':'Order','target':'Discount','cardinality':'0..1','read':{'kind':'field','path':'discount'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Discount\x20the\x20shop\x20granted\x20on\x20this\x20order\x20(price\x20concession\x20of\x20record)'},{'id':'order.dispute','family':'F','source':'Order','target':'Arb','cardinality':'N','read':{'kind':'fields','path':'dispute'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b06'],'label':'Dispute\x20cases\x20raised\x20over\x20this\x20order\x20(each\x20case\x20may\x20claw\x20back\x20compensation)'},{'id':'order.claimed_by','family':'F','source':'Order','target':EOA,'cardinality':'0..1','read':{'kind':'field','path':'claimed_by'},'retention':'complete','evidence':'order.move\x20L86-96\x20(single-use)','bridgeIds':['b06'],'label':'Compensation\x20claimant\x20on\x20this\x20order\x20(single-use\x20slot;\x20marks\x20the\x20payout\x20as\x20consumed)'},{'id':'order.required_info','family':'F','source':'Order','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'required_info'},'retention':'complete','evidence':'order.move\x20L73,L77-80\x20(Option<address>:\x20IM\x20book\x20or\x20WTS\x20proof)','bridgeIds':['b11','b12'],'label':'Information\x20credential\x20the\x20shop\x20requires\x20after\x20the\x20order\x20(IM\x20book\x20or\x20WTS\x20proof)'},{'id':'discount.service','family':'F','source':'Discount','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'service.move\x20L109-119\x20(service\x20L117)','bridgeIds':['b01'],'label':'Shop\x20that\x20issued\x20the\x20discount\x20(the\x20party\x20honoring\x20the\x20concession)'},{'id':'progress.machine','family':'F','source':'Progress','target':'Machine','cardinality':0x1,'read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'bound\x20at\x20creation','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20new_imp\x20(machine\x20bound\x20at\x20creation;\x20no\x20mutation\x20entry)'},'label':'Workflow\x20the\x20progress\x20executes\x20(fixed\x20at\x20creation;\x20determines\x20the\x20node\x20graph)'},{'id':'progress.task','family':'F','source':'Progress','target':'Order','cardinality':'0..1','read':{'kind':'field','path':'task'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'task','frozenWhen':'after\x20task_set','forbiddenActions':['set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20task_set_imp\x20(assert!\x20option::is_none\x20→\x20E_TASK_ALREADY_SET)'},'label':'Order\x20this\x20progress\x20fulfills\x20(set\x20once;\x20a\x20progress\x20serves\x20at\x20most\x20one\x20order)'},{'id':'progress.named_operator','family':'F','source':'Progress','target':EOA,'cardinality':'N','read':{'kind':'deep','segments':['namedOperator','operators'],'field':''},'retention':'complete','evidence':'progress.move\x20L76-86\x20(≤80)','bridgeIds':['b04'],'label':'Named\x20operators\x20allowed\x20to\x20advance\x20this\x20progress\x20(up\x20to\x2080;\x20runtime-delegated)'},{'id':'progress.context_repository','family':'F','source':'Progress','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'context_repositories'},'retention':'complete','evidence':'progress.move\x20L79,L199-208\x20(MAX_CONTEXT_REPOSITORY_COUNT)','bridgeIds':['b02','b04'],'label':'Runtime\x20evidence\x20repositories\x20consulted\x20while\x20fulfilling\x20the\x20order'},{'id':'machine.permission','family':'F','source':'Machine','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20run\x20and\x20advance\x20the\x20workflow'},{'id':'machine.consensus_repository','family':'F','source':'Machine','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'consensus_repositories'},'retention':'complete','evidence':'machine.move\x20L299-308','contract':{'field':'consensus_repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'machine.move\x20consensus_repositories_remove_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20nodes\x20consult\x20to\x20reach\x20execution\x20consensus'},{'id':'machine.um','family':'F','source':'Machine','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b11'],'label':'Workflow\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20participates\x20in\x20running\x20the\x20workflow'},{'id':'allocation.guard','family':'F','source':'Allocation','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'allocation.move\x20L194-200','bridgeIds':['b05'],'contract':{'field':'allocators','frozenWhen':'after\x20create\x20(share)','forbiddenActions':['add','remove','clear','set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'allocation.move\x20create\x20(bound\x20via\x20new_with_balance;\x20no\x20mutation\x20entry)'},'label':'Guards\x20gating\x20each\x20payout\x20segment\x20of\x20the\x20pool\x20(release\x20conditions\x20per\x20allocator)'},{'id':'allocation.payment','family':'F','source':'Allocation','target':'Payment','cardinality':'N','read':{'kind':'fields','path':'payment'},'retention':'complete','evidence':'allocation.move\x20L196-202,L307-316','bridgeIds':['b05','b08'],'label':'Payment\x20receipts\x20emitted\x20by\x20this\x20allocation\x20pool'},{'id':'arbitration.permission','family':'F','source':'Arbitration','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b09'],'label':'Arbitration\x20service\x20permission\x20group\x20(must\x20differ\x20from\x20the\x20shop\x20permission,\x20E33)'},{'id':'arbitration.voting_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'voting_guard','field':'guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Arbitration\x20voting\x20Guards\x20(empty\x20=\x20open\x20to\x20all\x20members)'},{'id':'arbitration.usage_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'usage_guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Gate\x20a\x20party\x20must\x20pass\x20before\x20opening\x20a\x20case\x20at\x20this\x20arbitration\x20service'},{'id':'arbitration.um','family':'F','source':'Arbitration','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b11'],'label':'Arbitration\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20vote\x20on\x20dispute\x20cases\x20(open\x20voting)'},{'id':'arb.order','family':'F','source':'Arb','target':'Order','cardinality':0x1,'read':{'kind':'field','path':'order'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Order\x20the\x20arbitration\x20case\x20is\x20about'},{'id':'arb.arbitration_service','family':'F','source':'Arb','target':'Arbitration','cardinality':'0..1','read':{'kind':'field','path':'arbitration'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Arbitration\x20service\x20applied\x20to\x20the\x20case'},{'id':'arb.voter','family':'S','source':'Arb','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'voted','field':'voter'},'retention':'complete','evidence':'arb.move\x20L96-111\x20(voted≤520)','bridgeIds':['b06'],'label':'Actual\x20case\x20voters\x20and\x20weights\x20(<=520)'},{'id':'demand.permission','family':'F','source':'Demand','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b09'],'label':'Demand\x20permission\x20group\x20(the\x20demanding\x20side)'},{'id':'demand.guard','family':'F','source':'Demand','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b03','b10'],'label':'Demand\x20acceptance\x20Guards\x20(must\x20be\x20empty\x20for\x20a\x20bare\x20present)'},{'id':'demand.reward','family':'F','source':'Demand','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b07'],'label':'Escrowed\x20reward\x20pools\x20of\x20the\x20demand'},{'id':'demand.um','family':'F','source':'Demand','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b11'],'label':'Demand\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20act\x20on\x20the\x20demanding\x20side'},{'id':'reward.permission','family':'F','source':'Reward','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20configure\x20the\x20reward\x20pool'},{'id':'reward.guard','family':'F','source':'Reward','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b07'],'label':'Guards\x20a\x20claimant\x20must\x20pass\x20before\x20drawing\x20from\x20the\x20pool'},{'id':'reward.um','family':'F','source':'Reward','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b11'],'label':'Reward\x20membership\x20book\x20—\x20roster\x20of\x20members\x20eligible\x20under\x20member-gated\x20claim\x20rules'},{'id':'repository.permission','family':'F','source':'Repository','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b02','b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20manage\x20the\x20repository'},{'id':'repository.reward','family':'F','source':'Repository','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b07'],'label':'Reward\x20pools\x20held\x20by\x20the\x20repository'},{'id':'repository.um','family':'F','source':'Repository','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'repository.move\x20L461-468,L471-480','bridgeIds':['b11'],'label':'Repository\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20read\x20or\x20write\x20under\x20member\x20policies'},{'id':EDGE_ID_REPOSITORY_POLICY_GUARD,'family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies','write_guard'],'field':'guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.write_guard),L516-570','bridgeIds':['b02','b10'],'label':'Write-policy\x20Guards\x20gating\x20evidence\x20writes\x20under\x20each\x20repository\x20policy'},{'id':'repository.quote_guard','family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies'],'field':'quote_guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.quote_guard),L421-428','bridgeIds':['b02','b10'],'label':'Quote/read-policy\x20Guards\x20gating\x20evidence\x20reads\x20under\x20each\x20repository\x20policy'},{'id':'contact.permission','family':'F','source':'Contact','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'contact.move\x20L25-31','bridgeIds':['b09','b11'],'label':'Permission\x20group\x20governing\x20the\x20contact\x20book'},{'id':'contact.im','family':'F','source':'Contact','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'ims','field':'at'},'retention':'membership','evidence':'contact.move\x20L15,L18-29,L85-105\x20(MAX_IM_COUNT=200)','bridgeIds':['b11'],'contract':{'field':'ims','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear','update'],'unfreeze':null,'moveAnchor':'contact.move\x20im_add_imp\x20/\x20im_remove_imp\x20(roster\x20membership;\x20status/description\x20updatable)'},'label':'IM\x20member\x20entities\x20of\x20the\x20contact\x20book\x20(<=200;\x20membership\x20roster\x20carrying\x20status\x20and\x20join\x20time)'},{'id':'permission.admin','family':'F','source':'Permission','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'admin'},'retention':'complete','evidence':'permission.move\x20L34-42\x20(admin\x20vector)','bridgeIds':['b09'],'label':'Admin\x20EOAs\x20who\x20can\x20mutate\x20the\x20permission\x20group\x27s\x20roles\x20(below\x20the\x20owner)'},{'id':'permission.owner','family':'F','source':'Permission','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'owner'},'retention':'complete','evidence':'permission.move\x20L34-42,L537-543','bridgeIds':['b09'],'contract':{'field':'owner','frozenWhen':null,'forbiddenActions':['add','remove','clear'],'allowedActions':['update'],'unfreeze':null,'moveAnchor':'permission.move\x20transfer\x20(assert_owner;\x20ownership\x20role\x20moves\x20with\x20it)'},'label':'Ultimate\x20owner\x20EOA\x20of\x20the\x20permission\x20group\x20(control-chain\x20root;\x20can\x20transfer\x20the\x20group)'},{'id':'permission.um','family':'F','source':'Permission','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'permission.move\x20L41,L562-571','bridgeIds':['b11'],'label':'Permission\x20group\x27s\x20membership\x20book\x20(who\x20receives\x20the\x20group\x27s\x20messages\x20and\x20notifications)'},{'id':'guard.relies','family':'F','source':'Guard','target':'Guard','cardinality':'N','read':{'kind':'fields','path':'relies'},'retention':'complete','evidence':'guard.move\x20L85-95\x20(≤4,\x20one\x20level)','bridgeIds':['b10'],'maxHops':0x1,'label':'Sub-Guards\x20the\x20Guard\x20relies\x20on\x20(<=4,\x20one\x20level;\x20relied\x20guards\x27\x20own\x20relies\x20are\x20not\x20consulted)'},{'id':'passport.signer','family':'F','source':'Passport','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'passport.move\x20L41-49,L94-98','bridgeIds':['b12'],'label':'Identity\x20that\x20verified\x20this\x20passport\x20(credential\x20consumed\x20per\x20transaction)'},{'id':'passport.guard','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guard','field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-47','bridgeIds':['b10','b12'],'label':'Verification\x20tickets\x20the\x20passport\x20carries\x20(each\x20proving\x20a\x20Guard\x20passed)'},{'id':'passport.ticket_relies','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['guard','relies'],'field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-38,L114-151','bridgeIds':['b10','b12'],'label':'Sub-Guards\x20a\x20verification\x20ticket\x20actually\x20evaluated\x20(ticket-level\x20dependency\x20fanout)'},{'id':'passport.impack','family':'F','source':'Passport','target':ANY,'cardinality':'N','read':{'kind':'fields','path':'impack'},'retention':'complete','evidence':'passport.move\x20L29,L46,L227-242','bridgeIds':['b12'],'label':'Business\x20objects\x20packed\x20into\x20the\x20passport\x20verification\x20context'},{'id':'proof.signer','family':'F','source':'Proof','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'Party\x20who\x20signed\x20the\x20WTS\x20evidence\x20(accountability\x20for\x20the\x20claim)'},{'id':'proof.about','family':'F','source':'Proof','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'about'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'Object\x20the\x20evidence\x20attests\x20to\x20(the\x20subject\x20of\x20the\x20WTS\x20claim)'},{'id':'treasury.permission','family':'F','source':'Treasury','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'treasury.move\x20L73-83','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20move\x20treasury\x20funds'},{'id':'treasury.um','family':'F','source':'Treasury','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'treasury.move\x20L82,L86-95,L504-510','bridgeIds':['b11'],'label':'Treasury\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20operate\x20treasury\x20flows\x20under\x20member\x20roles'},{'id':'treasury.deposit_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_deposit_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L61-65,L78,L138-194','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20release\x20external\x20deposits\x20into\x20the\x20treasury\x20(carries\x20identifier/store_from_id\x20slots)'},{'id':'treasury.withdraw_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_withdraw_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L67-71,L79,L197-250','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20pay\x20external\x20withdrawals\x20out\x20of\x20the\x20treasury\x20(pays\x20the\x20tx\x20sender\x20only;\x20carries\x20identifier/store_from_id\x20slots)'},{'id':'payment.signer','family':'F','source':'Payment','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'payment.move\x20L93-101,L111','bridgeIds':['b08'],'contract':{'field':'signer','frozenWhen':'after\x20create','forbiddenActions':['set','update','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'payment.move\x20new\x20(signer\x20=\x20tx_context::sender\x20at\x20creation)'},'label':'EOA\x20that\x20submitted\x20the\x20payment\x20(payer\x20of\x20record)'}],R_EDGES=[{'id':'eoa.permission','family':'R','source':EOA,'target':'Permission','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityPermission']},'retention':'membership','evidence':'entity_permission.move\x20L32\x20(bits\x201/2/4)','bridgeIds':['b09'],'label':'Permission\x20groups\x20the\x20account\x20currently\x20belongs\x20to\x20(membership;\x20disappears\x20on\x20removal)'},{'id':'eoa.order','family':'R','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityOrder']},'retention':'bounded_window','evidence':'entity_order.move\x20L31\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20account\x20joined\x20as\x20buyer/agent\x20(buyer\x20view,\x20FIFO\x205200)'},{'id':'eoa.contact','family':'R','source':EOA,'target':'Contact','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityContact']},'retention':'membership','evidence':'entity_contact.move\x20L24','bridgeIds':['b11'],'label':'Contact\x20books\x20the\x20account\x20currently\x20joined'},{'id':'permission.core_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerCore']},'retention':'bounded_exact','evidence':'object_linker.move\x20L37,L88\x20(≤5200\x20aborts)','bridgeIds':['b09'],'label':'Business\x20objects\x20this\x20permission\x20group\x20governs\x20(Service/Demand/Machine/...;\x20exact\x20registry,\x20no\x20eviction)'},{'id':'permission.tx_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx']},'retention':'bounded_window','evidence':'object_linker.move\x20L43\x20(FIFO\x205200\x20operational)','bridgeIds':['b09'],'label':'Objects\x20this\x20permission\x20group\x20has\x20acted\x20on\x20at\x20runtime\x20(FIFO\x205200;\x20oldest\x20evicted)'},{'id':'service.order','family':'R','source':'Service','target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx'],'filterType':'Order'},'retention':'bounded_window','evidence':'object_linker.move\x20L43,L136-140\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20shop\x20currently\x20retains\x20in\x20its\x20window\x20(FIFO\x205200,\x20oldest\x20evicted;\x20complete\x20history\x20via\x20the\x20event\x20channel)'},{'id':'target.vote','family':'S','source':ANY,'target':EOA,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['registrar']},'retention':'bounded_window','evidence':'registrar.move\x20L154-171\x20(ring\x205200,\x20bits\x200x02/0x04/0x08)','label':'Reputation\x20votes\x20the\x20address\x20has\x20received\x20(like/dislike/favor;\x20ring\x205200,\x20oldest\x20evicted)'},{'id':'entity.profile','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L146-152,L176-179,L236-242,L503-560\x20(AddressInfo\x20current\x20row;\x20description/records\x20mutable\x20by\x20the\x20entity)','label':'Self-published\x20entity\x20profile:\x20description,\x20registration\x20time\x20and\x20typed\x20records\x20(self-edge\x20carrying\x20row\x20attributes)'},{'id':'entity.referrer','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L149,L236-242\x20(AddressInfo.referrer\x20Option<address>;\x20invitation\x20chain)','label':'Account\x20that\x20referred\x20this\x20entity\x20onto\x20the\x20platform\x20(invitation\x20upline)'},{'id':'entity.resource','family':'S','source':EOA,'target':'Resource','cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L150,L236-241,L265-319\x20(AddressInfo.resource\x20Option<address>;\x20transferable/destroyable)','label':'On-chain\x20Resource\x20identity\x20object\x20held\x20by\x20this\x20entity\x20(transferable,\x20may\x20be\x20destroyed)'}],TABLE_EDGES=[{'id':'permission.entity','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'PermissionPerm'},'retention':'membership','evidence':'permission.move\x20L34-42\x20(entity\x20may\x20be\x20EOA\x20or\x20Guard\x20address)','bridgeIds':['b04','b09'],'label':'Entity-table\x20members\x20of\x20the\x20permission\x20group\x20(EOA\x20or\x20Guard,\x20carrying\x20perm\x20index\x20bits)'},{'id':'demand.presenter','family':'R','source':'Demand','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L74\x20(presenters\x20table)','bridgeIds':['b03'],'label':'Suppliers\x20that\x20presented\x20to\x20the\x20demand,\x20with\x20acceptance_score'},{'id':'demand.presenter_service','family':'R','source':'Demand','target':'Service','cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L79-118\x20(ServiceInfo.service\x20Option)','bridgeIds':['b03'],'label':'Services\x20proposed\x20by\x20presenters\x20on\x20the\x20demand\x20(same-row\x20co-edge\x20of\x20demand.presenter;\x20absent\x20for\x20bare\x20presents)'},{'id':'machine.node','family':'W','source':'Machine','target':'MachineNode','cardinality':'N','read':{'kind':'table','rowType':'MachineNode'},'retention':'complete','evidence':'machine.move\x20L299-308\x20(immutable\x20after\x20publish)','bridgeIds':['b04'],'contract':{'field':'nodes','frozenWhen':'after\x20publish','forbiddenActions':['add','remove','update'],'allowedActions':[],'unfreeze':null,'moveAnchor':'machine.move\x20node_add_imp\x20/\x20node_remove_imp\x20/\x20node_rename_imp\x20(assert_not_published)'},'label':'The\x20workflow\x27s\x20step\x20table\x20(full\x20node\x20graph;\x20frozen\x20at\x20publish)'},{'id':'treasury.record','family':'M','source':'Treasury','target':'Payment','cardinality':'N','read':{'kind':'table','rowType':'TreasuryRecord'},'retention':'complete','evidence':'treasury.move\x20L39-46,L77\x20(history:\x20ParentTable<address,Record>,\x20key\x20=\x20Payment;\x20append-only)','bridgeIds':['b08'],'label':'Ledger\x20entries\x20tying\x20each\x20withdrawal/deposit/receive\x20Payment\x20to\x20its\x20op\x20code,\x20signer,\x20external\x20guard\x20and\x20amount'},{'id':'reward.claim','family':'M','source':'Reward','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'RewardClaimRecord'},'retention':'complete','evidence':'reward.move\x20L117-138,L180-193\x20(record:\x20ParentTable<address,RecipientRecord>;\x20key\x20=\x20claimant)','bridgeIds':['b07'],'label':'Claimants\x20against\x20the\x20reward\x20pool,\x20with\x20lifetime\x20total\x20and\x20per-guard\x20claim\x20legs'},{'id':'repository.data_about','family':'F','source':'Repository','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'RepositoryData'},'retention':'membership','evidence':'repository.move\x20L455-465,L161-173\x20(data:\x20ParentTable<DataKey{id,key},\x20vector<u8>>)','bridgeIds':['b02'],'label':'Business\x20objects\x20the\x20stored\x20evidence\x20rows\x20are\x20about\x20(DataKey.id,\x20carrying\x20the\x20row\x20key\x20name)'}],W_EDGES=[{'id':'wf.transition','family':'W','source':'MachineNode','target':'MachineNode','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L101\x20NodePair,L269','bridgeIds':['b04'],'label':'Directed\x20hand-off\x20from\x20workflow\x20step\x20to\x20step\x20(carries\x20the\x20advance\x20threshold)'},{'id':'wf.forward_guard','family':'W','source':'MachineNode','target':'Guard','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L63\x20Forward','bridgeIds':['b04','b05','b10','b12'],'label':'Guards\x20evaluated\x20after\x20a\x20step\x20advances\x20(where\x20supply-chain\x20payouts\x20and\x20downstream\x20allocations\x20trigger)'}],M_EDGES=[{'id':'payment.recipient','family':'M','source':'Payment','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'record','field':'recipient'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(Revenue≤200)','bridgeIds':['b05','b08'],'label':'Payment\x20allocation\x20recipients\x20(with\x20amounts,\x20leg\x20by\x20leg)'},{'id':'payment.from_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'from_object'},'retention':'complete','evidence':'payment.move\x20L149-161\x20(framework-only)','bridgeIds':['b05','b08'],'label':'Funding\x20source\x20pool\x20(Treasury/Allocation/Service;\x20framework-settable\x20only)'},{'id':'payment.for_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'info.for_object'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(info\x20routing\x20hint)','bridgeIds':['b05','b08'],'label':'Business\x20routing\x20object\x20(user-settable)'},{'id':'payment.for_guard','family':'M','source':'Payment','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'info.for_guard'},'retention':'complete','evidence':'payment.move\x20L93-101','bridgeIds':['b05'],'label':'Guard\x20the\x20payment\x20was\x20routed\x20under\x20(user-settable\x20routing\x20context)'},{'id':'allocation.for_object','family':'M','source':'Allocation','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_object'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Business\x20object\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20for'},{'id':'allocation.for_guard','family':'M','source':'Allocation','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_guard'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Gate\x20context\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20under'}],EVENT_EDGES=[{'id':'service.order_history','family':'E','source':'Service','target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchField':'service','targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20(NewOrderEvent:\x20object/service/progress/discount/allocation/amount)','label':'Every\x20order\x20ever\x20created\x20in\x20the\x20shop\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20shop-order\x20window'},{'id':'eoa.order_history','family':'E','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchSender':!![],'targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20+\x20indexer\x20tx\x20sender\x20(the\x20transacting\x20buyer)','label':'Orders\x20the\x20account\x20created\x20as\x20the\x20transacting\x20buyer\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20buyer\x20window'},{'id':'arb.history','family':'E','source':'Arbitration','target':'Arb','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::arb::ArbEvent','matchField':'arbitration','targetField':'object'},'retention':'event_full','evidence':'arb.move\x20L33-43,L122,L227\x20(ArbEvent:\x20case/arbitration/order/status/indemnity)','label':'Every\x20dispute\x20case\x20the\x20arbitration\x20service\x20ever\x20handled\x20—\x20complete\x20event\x20stream;\x20latest\x20status\x20transition\x20wins\x20per\x20case'}];export const EDGE_SCHEMAS=[...F_EDGES,...R_EDGES,...TABLE_EDGES,...W_EDGES,...M_EDGES,...EVENT_EDGES];export const EDGE_SCHEMA_BY_ID=new Map(EDGE_SCHEMAS['map'](a=>[a['id'],a]));export function outgoingSchemaIds(a){return EDGE_SCHEMAS['filter'](b=>b['source']===a||b['source']===ANY)['map'](b=>b['id']);}export const COVERED_OBJECT_TYPES=[...new Set(EDGE_SCHEMAS['flatMap'](a=>[a['source'],a['target']])['filter'](a=>a!==EOA&&a!==ANY&&a!=='MachineNode'))];
@@ -1 +1 @@
1
- import{EDGE_SCHEMAS,EDGE_SCHEMA_BY_ID}from'./edge-schema.js';import{extractCoinType,extractEventRefs,extractObjectEdges,extractReverseRefs,extractTableRefs,inferObjectType,REVERSE_GROUP_WILDCARD}from'./extract.js';import{mergeBudget}from'./dataplane.js';import{deriveOrderCompletion,terminalNamesOfEdges}from'./order-status.js';import{LINKER_RING_LIMIT as a75a}from'./sdk-batch.js';import{wowAddressKind}from'@wowok/wowok';function readStats(a){const b=a;if(b['stats'])return{'batches':b['stats']['batches'],'byChannel':{...b['stats']['byChannel']},'dedupHits':b['stats']['dedupHits']};if(b['batches'])return{'batches':Object['values'](b['batches'])['reduce']((c,d)=>c+d,0x0),'byChannel':{...b['batches']},'dedupHits':b['dedupHits']??0x0};return{'batches':0x0,'byChannel':{'objects':0x0,'keyedFields':0x0,'tables':0x0,'events':0x0},'dedupHits':0x0};}function isEoa(a){return wowAddressKind(a)==='user';}function isWfNodeId(a){return a['includes']('::node::');}class Gate{['wl'];constructor(a){this['wl']=a;}['allows'](a,b){if(this['wl']['deny']?.['includes'](a['id']))return![];const c=this['wl']['familyDepths']?.[a['family']];if(c!==undefined&&b>=c)return![];if(this['wl']['schemas'])return this['wl']['schemas']['includes'](a['id']);if(this['wl']['families']&&!this['wl']['families']['includes'](a['family']))return![];return!![];}['allowsTable'](a,b){if(a['read']['kind']!=='table')return![];if(this['wl']['deny']?.['includes'](a['id']))return![];const c=this['wl']['familyDepths']?.[a['family']];if(c!==undefined&&b>=c)return![];if(this['wl']['families']&&!this['wl']['families']['includes'](a['family']))return![];return!!this['wl']['tableEdges']?.['includes'](a['id']);}['allowsEvent'](a,b){if(a['read']['kind']!=='event')return![];if(this['wl']['deny']?.['includes'](a['id']))return![];const c=this['wl']['familyDepths']?.[a['family']];if(c!==undefined&&b>=c)return![];if(this['wl']['families']&&!this['wl']['families']['includes'](a['family']))return![];return!!this['wl']['eventEdges']?.['includes'](a['id']);}['effectiveMaxHops'](a){const b=a['maxHops'],c=this['wl']['schemaHops']?.[a['id']];if(b===undefined)return c;if(c===undefined)return b;return Math['min'](b,c);}}class GraphBuilder{['graph'];['edgeIds']=new Set();['budget'];['exhausted']={};constructor(a,b,c){this['budget']=c,this['graph']={'network':a,'seed':b,'builtAt':Date['now'](),'nodes':new Map(),'edges':[],'out':new Map(),'inc':new Map(),'gaps':[],'truncations':[],'rpcReport':{'batches':0x0,'byChannel':{'objects':0x0,'keyedFields':0x0,'tables':0x0,'events':0x0},'dedupHits':0x0},'budgetExhausted':{}};}['addSeed'](a){const b=inferObjectType(a),c={'id':a,'kind':isWfNodeId(a)?'wfnode':isEoa(a)?'eoa':'object','objectType':b??undefined,'state':'seed','origins':[],'depth':0x0};return this['graph']['nodes']['set'](a,c),c;}['addNode'](a,b,c){const d=this['graph']['nodes']['get'](a);if(d){if(c)d['origins']['push']({'via':c['schema'],'from':c['from'],'depth':b});return d;}if(this['graph']['nodes']['size']>=this['budget']['maxNodes'])return this['exhausted']['nodes']=!![],undefined;const e=isWfNodeId(a),f=e?undefined:inferObjectType(a),g={'id':a,'kind':e?'wfnode':isEoa(a)?'eoa':'object','objectType':f??undefined,'state':e?'stub':'seed','origins':c?[{'via':c['schema'],'from':c['from'],'depth':b}]:[],'depth':b};return this['graph']['nodes']['set'](a,g),g;}['addEdge'](a,b,c,d,e){const f=c['to'],g=c['key']?'|'+c['key']:'',h=a['id']+'|'+b+'→'+f+g;if(this['edgeIds']['has'](h))return;this['edgeIds']['add'](h);const i={'id':h,'schema':a['id'],'family':a['family'],'from':b,'to':f,'retention':a['retention'],'evidence':a['evidence'],'observedAt':d,'payload':c['payload'],'truncated':e||a['retention']==='bounded_window','key':c['key']};this['graph']['edges']['push'](i),pushMap(this['graph']['out'],b,i),pushMap(this['graph']['inc'],f,i);}['markTruncation'](a){this['graph']['truncations']['push'](a);}['finalize'](a){return this['graph']['rpcReport']=readStats(a),this['graph']['budgetExhausted']=this['exhausted'],this['graph'];}}function pushMap(a,b,c){const d=a['get'](b);if(d)d['push'](c);else a['set'](b,[c]);}export async function expandTopology(a,c){const d=c['seed']['toLowerCase'](),e=mergeBudget(c['budget']),f=new Gate(c['edges']??{}),h=new GraphBuilder(c['network'],d,e);h['addSeed'](d);const i=new Set(),j=new Set(),l=new Set(),m=new Map(),n=new Set();let o=new Set([d]);for(let p=0x0;p<=e['maxDepth'];p++){if(o['size']===0x0)break;if(h['exhausted']['nodes'])break;const q=Date['now'](),r=new Map(),t=(D,E)=>{const F=r['get'](D);if(F)return F;const G=new Map();r['set'](D,G);const H=h['graph']['nodes']['get'](D);if(H&&H['origins']['length']>0x0&&!E['has'](D)){E['add'](D);for(const I of H['origins']){if(!I['via']||!I['from']||E['has'](I['from']))continue;const J=t(I['from'],E);for(const [L,M]of J){if(M<(G['get'](L)??Infinity))G['set'](L,M);}const K=(J['get'](I['via'])??0x0)+0x1;if(K<(G['get'](I['via'])??Infinity))G['set'](I['via'],K);}E['delete'](D);}return G;},u=[...o]['filter'](D=>{const E=h['graph']['nodes']['get'](D);return E['kind']==='object'&&(E['state']==='seed'||E['state']==='stub')&&!i['has'](D);}),v=new Set();if(u['length']>0x0){const D=await a['getObjects'](u);if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];for(const E of u){const F=h['graph']['nodes']['get'](E),G=lookupMapLower(D,E);i['add'](E);if(!G){F['state']='error',F['error']='not_found_or_failed',h['graph']['gaps']['push'](E);continue;}F['state']='fetched',F['raw']=G,F['objectType']=String(G['type']??F['objectType']??inferObjectType(E)??''),F['coinType']=extractCoinType(G['type_raw']),v['add'](E);}}const w=[];for(const H of v){const I=h['graph']['nodes']['get'](H);if(!I['objectType']||!I['raw'])continue;for(const J of extractObjectEdges(I['objectType'],I['raw'])){const K=EDGE_SCHEMA_BY_ID['get'](J['schemaId']);if(!K||!f['allows'](K,p))continue;w['push']({'schema':K,'sourceId':H,'refs':J['refs'],'observed':J['refs']['length']});}}const x=[...v]['filter'](L=>{const M=h['graph']['nodes']['get'](L);return EDGE_SCHEMAS['some'](N=>N['source']===M['objectType']&&N['read']['kind']==='table');});for(const L of x){const M=h['graph']['nodes']['get'](L),N=EDGE_SCHEMAS['filter'](P=>P['source']===M['objectType']&&P['read']['kind']==='table'&&f['allowsTable'](P,p)),O=new Map();for(const P of N){const Q=P['read']['rowType'],R=O['get'](Q)??[];R['push'](P),O['set'](Q,R);}for(const [S,T]of O){const U=L+'|'+S;if(l['has'](U))continue;l['add'](U);const V=Math['max'](...T['map'](a0=>e['perKindCaps'][a0['id']]??e['maxFanoutPerNode']));let W,X=![];try{const a0=await a['getTable'](L,{'maxItems':V});if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];W=a0['items'],X=a0['truncated'];}catch{h['graph']['gaps']['push'](L+'#'+S);continue;}const Y=new Set(T['map'](a1=>a1['id'])),Z=extractTableRefs(S,L,W)['filter'](a1=>{const a2=EDGE_SCHEMA_BY_ID['get'](a1['schemaId']);return a2['read']['kind']==='derived'||Y['has'](a1['schemaId']);});for(const a1 of Z){const a2=EDGE_SCHEMA_BY_ID['get'](a1['schemaId']);let a3=a1['refs'];a2['family']==='M'&&M['coinType']&&(a3=a3['map'](a4=>({...a4,'payload':{'coinType':M['coinType'],...a4['payload']}}))),w['push']({'schema':a2,'sourceId':L,'refs':a3,'observed':a3['length']});}X&&h['markTruncation']({'nodeId':L,'schema':T[0x0]['id'],'observed':W['length'],'limit':V,'reason':'table_page'});}}const y=[...o]['filter'](a4=>{const a5=h['graph']['nodes']['get'](a4);return a5['kind']!=='wfnode'&&(a5['kind']==='eoa'||a5['state']==='fetched');}),z=new Map(),A=new Map();for(const a4 of y){const a5=h['graph']['nodes']['get'](a4);for(const a6 of EDGE_SCHEMAS){if(a6['read']['kind']!=='reverse'||!f['allows'](a6,p))continue;if(!sourceMatches(a6['source'],a5))continue;const a7=a6['read']['parent'],a8=a4+'|'+a7;if(j['has'](a8))continue;if(!z['has'](a7))z['set'](a7,[]);z['get'](a7)['push'](a4);const a9=a4+'|'+a7+'|schema',aa=A['get'](a9)??[];aa['push'](a6),A['set'](a9,aa);}}for(const [ab,ac]of z){for(const ae of ac)j['add'](ae+'|'+ab);let ad=new Map();try{ad=await a['getKeyedFields'](ab,ac);if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];}catch{h['graph']['gaps']['push']('reverse:'+ab);continue;}for(const af of ac){const ag=A['get'](af+'|'+ab+'|schema')??[],ah=lookupMapLower(ad,af);if(!ah)continue;const ai=extractReverseRefs(ab,ah['data']??ah);for(const aj of ag){const ak=aj['read'];for(const al of ai){if(al['schemaId']!==REVERSE_GROUP_WILDCARD&&al['schemaId']!==aj['id'])continue;let am=al['refs']['map'](an=>an['to']?an:{...an,'to':af});ak['kind']==='reverse'&&ak['filterType']&&(am=am['filter'](an=>inferObjectType(an['to'])===ak['filterType']));if(am['length']===0x0)continue;w['push']({'schema':aj,'sourceId':af,'refs':am,'observed':am['length']});}}}}for(const an of EDGE_SCHEMAS){const ao=an['read'];if(ao['kind']!=='event'||!f['allowsEvent'](an,p))continue;const ap=[...o]['filter'](ar=>{if(n['has'](ar+'|'+an['id']))return![];return sourceMatches(an['source'],h['graph']['nodes']['get'](ar));});if(ap['length']===0x0)continue;let aq=m['get'](ao['eventType']);if(!aq){aq={'events':[],'truncated':![],'failed':![]};try{const ar=await a['getEvents'](ao['eventType'],{'maxPages':e['maxEventPages']});if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];aq['events']=ar['events'],aq['truncated']=ar['truncated'],ar['truncated']&&ar['events']['length']===0x0&&(aq['failed']=!![],h['graph']['gaps']['push']('events:'+ao['eventType']));}catch{aq['failed']=!![],h['graph']['gaps']['push']('events:'+ao['eventType']);}m['set'](ao['eventType'],aq);}if(aq['failed']){for(const as of ap)n['add'](as+'|'+an['id']);continue;}if(aq['truncated']){h['exhausted']['eventPages']=!![];for(const at of ap){h['markTruncation']({'nodeId':at,'schema':an['id'],'observed':aq['events']['length'],'limit':e['maxEventPages'],'reason':'event_pages'});}}for(const au of ap){n['add'](au+'|'+an['id']);const av=extractEventRefs(ao,au,aq['events']);if(av['length']===0x0)continue;w['push']({'schema':an,'sourceId':au,'refs':av,'observed':av['length'],'truncated':aq['truncated']});}}const B=new Set(),C=new Map();for(const aw of w){const ax=e['perKindCaps'][aw['schema']['id']]??e['maxFanoutPerNode'],ay=C['get'](aw['sourceId'])??0x0,az=Math['max'](0x0,e['maxFanoutPerNode']-ay),aA=Math['min'](ax,az),aB=aw['refs']['slice'](0x0,aA);aw['refs']['length']>aA&&h['markTruncation']({'nodeId':aw['sourceId'],'schema':aw['schema']['id'],'observed':aw['refs']['length'],'limit':a75a,'reason':'fanout'});const aC=new Map();for(const aD of aB){const aE=aD['from']??aw['sourceId'],aF=isWfNodeId(aD['to'])?p:p+0x1,aG=h['graph']['nodes']['has'](aD['to']),aH=f['effectiveMaxHops'](aw['schema']);if(aH!==undefined){const aJ=(t(aE,new Set())['get'](aw['schema']['id'])??0x0)+0x1;if(aJ>aH&&!aG){aC['set'](aE,(aC['get'](aE)??0x0)+0x1);continue;}}if(aF>e['maxDepth']&&!aG){h['exhausted']['depth']=!![];continue;}const aI=h['addNode'](aD['to'],Math['min'](aF,e['maxDepth']),{'schema':aw['schema']['id'],'from':aE});if(!aI)break;h['addEdge'](aw['schema'],aE,aD,q,aw['truncated']===!![]||aw['refs']['length']>aA),C['set'](aw['sourceId'],ay+0x1);if(!isWfNodeId(aD['to'])&&aF<=e['maxDepth'])B['add'](aD['to']);}for(const [aK,aL]of aC){h['markTruncation']({'nodeId':aK,'schema':aw['schema']['id'],'observed':aL,'limit':f['effectiveMaxHops'](aw['schema'])??0x0,'reason':'schema_hops'});}}if(h['exhausted']['rpcs']){h['graph']['gaps']['push']('budget:maxRpcs');break;}o=B;}return h['finalize'](a);}function sourceMatches(a,b){if(a==='ANY')return!![];if(a==='EOA')return b['kind']==='eoa';return b['objectType']===a;}function lookupMapLower(a,b){const c=a['get'](b);if(c!==undefined)return c;for(const [d,e]of a)if(d['toLowerCase']()===b)return e;return undefined;}export function orderCompletionInGraph(a,b){const c=a['nodes']['get'](b['toLowerCase']()),d=c?.['raw']?.['data']??c?.['raw']??{},e=String(d['machine']??''),f=String(d['progress']??''),g=a['nodes']['get'](f['toLowerCase']()),h=String((g?.['raw']?.['data']??g?.['raw']??{})['current']??'');let i=null;if(e){const j=e['toLowerCase']()+'::node::',k=a['edges']['filter'](l=>l['schema']==='wf.transition'&&l['from']['startsWith'](j))['map'](l=>({'node':l['payload']?.['node'],'prev_node':l['payload']?.['prevNode']}));if(k['length']>0x0)i=terminalNamesOfEdges(k);}return deriveOrderCompletion({'machine':e||null,'progress':f||null,'currentNode':h||null,'terminalNames':i});}
1
+ import{EDGE_SCHEMAS,EDGE_SCHEMA_BY_ID}from'./edge-schema.js';import{extractCoinType,extractEventRefs,extractObjectEdges,extractReverseRefs,extractTableRefs,inferObjectType,REVERSE_GROUP_WILDCARD}from'./extract.js';import{mergeBudget}from'./dataplane.js';import{deriveOrderCompletion,terminalNamesOfEdges}from'./order-status.js';import{LINKER_RING_LIMIT as a83a}from'./sdk-batch.js';import{wowAddressKind}from'@wowok/wowok';function readStats(a){const b=a;if(b['stats'])return{'batches':b['stats']['batches'],'byChannel':{...b['stats']['byChannel']},'dedupHits':b['stats']['dedupHits']};if(b['batches'])return{'batches':Object['values'](b['batches'])['reduce']((c,d)=>c+d,0x0),'byChannel':{...b['batches']},'dedupHits':b['dedupHits']??0x0};return{'batches':0x0,'byChannel':{'objects':0x0,'keyedFields':0x0,'tables':0x0,'events':0x0},'dedupHits':0x0};}function isEoa(a){return wowAddressKind(a)==='user';}function isWfNodeId(a){return a['includes']('::node::');}class Gate{['wl'];constructor(a){this['wl']=a;}['allows'](a,b){if(this['wl']['deny']?.['includes'](a['id']))return![];const c=this['wl']['familyDepths']?.[a['family']];if(c!==undefined&&b>=c)return![];if(this['wl']['schemas'])return this['wl']['schemas']['includes'](a['id']);if(this['wl']['families']&&!this['wl']['families']['includes'](a['family']))return![];return!![];}['allowsTable'](a,b){if(a['read']['kind']!=='table')return![];if(this['wl']['deny']?.['includes'](a['id']))return![];const c=this['wl']['familyDepths']?.[a['family']];if(c!==undefined&&b>=c)return![];if(this['wl']['families']&&!this['wl']['families']['includes'](a['family']))return![];return!!this['wl']['tableEdges']?.['includes'](a['id']);}['allowsEvent'](a,b){if(a['read']['kind']!=='event')return![];if(this['wl']['deny']?.['includes'](a['id']))return![];const c=this['wl']['familyDepths']?.[a['family']];if(c!==undefined&&b>=c)return![];if(this['wl']['families']&&!this['wl']['families']['includes'](a['family']))return![];return!!this['wl']['eventEdges']?.['includes'](a['id']);}['effectiveMaxHops'](a){const b=a['maxHops'],c=this['wl']['schemaHops']?.[a['id']];if(b===undefined)return c;if(c===undefined)return b;return Math['min'](b,c);}}class GraphBuilder{['graph'];['edgeIds']=new Set();['budget'];['exhausted']={};constructor(a,b,c){this['budget']=c,this['graph']={'network':a,'seed':b,'builtAt':Date['now'](),'nodes':new Map(),'edges':[],'out':new Map(),'inc':new Map(),'gaps':[],'truncations':[],'rpcReport':{'batches':0x0,'byChannel':{'objects':0x0,'keyedFields':0x0,'tables':0x0,'events':0x0},'dedupHits':0x0},'budgetExhausted':{}};}['addSeed'](a){const b=inferObjectType(a),c={'id':a,'kind':isWfNodeId(a)?'wfnode':isEoa(a)?'eoa':'object','objectType':b??undefined,'state':'seed','origins':[],'depth':0x0};return this['graph']['nodes']['set'](a,c),c;}['addNode'](a,b,c){const d=this['graph']['nodes']['get'](a);if(d){if(c)d['origins']['push']({'via':c['schema'],'from':c['from'],'depth':b});return d;}if(this['graph']['nodes']['size']>=this['budget']['maxNodes'])return this['exhausted']['nodes']=!![],undefined;const e=isWfNodeId(a),f=e?undefined:inferObjectType(a),g={'id':a,'kind':e?'wfnode':isEoa(a)?'eoa':'object','objectType':f??undefined,'state':e?'stub':'seed','origins':c?[{'via':c['schema'],'from':c['from'],'depth':b}]:[],'depth':b};return this['graph']['nodes']['set'](a,g),g;}['addEdge'](a,b,c,d,e){const f=c['to'],g=c['key']?'|'+c['key']:'',h=a['id']+'|'+b+'→'+f+g;if(this['edgeIds']['has'](h))return;this['edgeIds']['add'](h);const i={'id':h,'schema':a['id'],'family':a['family'],'from':b,'to':f,'retention':a['retention'],'observedAt':d,'payload':c['payload'],'truncated':e||a['retention']==='bounded_window','key':c['key']};this['graph']['edges']['push'](i),pushMap(this['graph']['out'],b,i),pushMap(this['graph']['inc'],f,i);}['markTruncation'](a){this['graph']['truncations']['push'](a);}['finalize'](a){return this['graph']['rpcReport']=readStats(a),this['graph']['budgetExhausted']=this['exhausted'],this['graph'];}}function pushMap(a,b,c){const d=a['get'](b);if(d)d['push'](c);else a['set'](b,[c]);}export async function expandTopology(a,c){const d=c['seed']['toLowerCase'](),e=mergeBudget(c['budget']),f=new Gate(c['edges']??{}),h=new GraphBuilder(c['network'],d,e);h['addSeed'](d);const i=new Set(),j=new Set(),l=new Set(),m=new Map(),n=new Set();let o=new Set([d]);for(let p=0x0;p<=e['maxDepth'];p++){if(o['size']===0x0)break;if(h['exhausted']['nodes'])break;const q=Date['now'](),r=new Map(),t=(D,E)=>{const F=r['get'](D);if(F)return F;const G=new Map();r['set'](D,G);const H=h['graph']['nodes']['get'](D);if(H&&H['origins']['length']>0x0&&!E['has'](D)){E['add'](D);for(const I of H['origins']){if(!I['via']||!I['from']||E['has'](I['from']))continue;const J=t(I['from'],E);for(const [L,M]of J){if(M<(G['get'](L)??Infinity))G['set'](L,M);}const K=(J['get'](I['via'])??0x0)+0x1;if(K<(G['get'](I['via'])??Infinity))G['set'](I['via'],K);}E['delete'](D);}return G;},u=[...o]['filter'](D=>{const E=h['graph']['nodes']['get'](D);return E['kind']==='object'&&(E['state']==='seed'||E['state']==='stub')&&!i['has'](D);}),v=new Set();if(u['length']>0x0){const D=await a['getObjects'](u);if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];for(const E of u){const F=h['graph']['nodes']['get'](E),G=lookupMapLower(D,E);i['add'](E);if(!G){F['state']='error',F['error']='not_found_or_failed',h['graph']['gaps']['push'](E);continue;}F['state']='fetched',F['raw']=G,F['objectType']=String(G['type']??F['objectType']??inferObjectType(E)??''),F['coinType']=extractCoinType(G['type_raw']),v['add'](E);}}const w=[];for(const H of v){const I=h['graph']['nodes']['get'](H);if(!I['objectType']||!I['raw'])continue;for(const J of extractObjectEdges(I['objectType'],I['raw'])){const K=EDGE_SCHEMA_BY_ID['get'](J['schemaId']);if(!K||!f['allows'](K,p))continue;w['push']({'schema':K,'sourceId':H,'refs':J['refs'],'observed':J['refs']['length']});}}const x=[...v]['filter'](L=>{const M=h['graph']['nodes']['get'](L);return EDGE_SCHEMAS['some'](N=>N['source']===M['objectType']&&N['read']['kind']==='table');});for(const L of x){const M=h['graph']['nodes']['get'](L),N=EDGE_SCHEMAS['filter'](P=>P['source']===M['objectType']&&P['read']['kind']==='table'&&f['allowsTable'](P,p)),O=new Map();for(const P of N){const Q=P['read']['rowType'],R=O['get'](Q)??[];R['push'](P),O['set'](Q,R);}for(const [S,T]of O){const U=L+'|'+S;if(l['has'](U))continue;l['add'](U);const V=Math['max'](...T['map'](a0=>e['perKindCaps'][a0['id']]??e['maxFanoutPerNode']));let W,X=![];try{const a0=await a['getTable'](L,{'maxItems':V});if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];W=a0['items'],X=a0['truncated'];}catch{h['graph']['gaps']['push'](L+'#'+S);continue;}const Y=new Set(T['map'](a1=>a1['id'])),Z=extractTableRefs(S,L,W)['filter'](a1=>{const a2=EDGE_SCHEMA_BY_ID['get'](a1['schemaId']);return a2['read']['kind']==='derived'||Y['has'](a1['schemaId']);});for(const a1 of Z){const a2=EDGE_SCHEMA_BY_ID['get'](a1['schemaId']);let a3=a1['refs'];a2['family']==='M'&&M['coinType']&&(a3=a3['map'](a4=>({...a4,'payload':{'coinType':M['coinType'],...a4['payload']}}))),w['push']({'schema':a2,'sourceId':L,'refs':a3,'observed':a3['length']});}X&&h['markTruncation']({'nodeId':L,'schema':T[0x0]['id'],'observed':W['length'],'limit':V,'reason':'table_page'});}}const y=[...o]['filter'](a4=>{const a5=h['graph']['nodes']['get'](a4);return a5['kind']!=='wfnode'&&(a5['kind']==='eoa'||a5['state']==='fetched');}),z=new Map(),A=new Map();for(const a4 of y){const a5=h['graph']['nodes']['get'](a4);for(const a6 of EDGE_SCHEMAS){if(a6['read']['kind']!=='reverse'||!f['allows'](a6,p))continue;if(!sourceMatches(a6['source'],a5))continue;const a7=a6['read']['parent'],a8=a4+'|'+a7;if(j['has'](a8))continue;if(!z['has'](a7))z['set'](a7,[]);z['get'](a7)['push'](a4);const a9=a4+'|'+a7+'|schema',aa=A['get'](a9)??[];aa['push'](a6),A['set'](a9,aa);}}for(const [ab,ac]of z){for(const ae of ac)j['add'](ae+'|'+ab);let ad=new Map();try{ad=await a['getKeyedFields'](ab,ac);if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];}catch{h['graph']['gaps']['push']('reverse:'+ab);continue;}for(const af of ac){const ag=A['get'](af+'|'+ab+'|schema')??[],ah=lookupMapLower(ad,af);if(!ah)continue;const ai=extractReverseRefs(ab,ah['data']??ah);for(const aj of ag){const ak=aj['read'];for(const al of ai){if(al['schemaId']!==REVERSE_GROUP_WILDCARD&&al['schemaId']!==aj['id'])continue;let am=al['refs']['map'](an=>an['to']?an:{...an,'to':af});ak['kind']==='reverse'&&ak['filterType']&&(am=am['filter'](an=>inferObjectType(an['to'])===ak['filterType']));if(am['length']===0x0)continue;w['push']({'schema':aj,'sourceId':af,'refs':am,'observed':am['length']});}}}}for(const an of EDGE_SCHEMAS){const ao=an['read'];if(ao['kind']!=='event'||!f['allowsEvent'](an,p))continue;const ap=[...o]['filter'](ar=>{if(n['has'](ar+'|'+an['id']))return![];return sourceMatches(an['source'],h['graph']['nodes']['get'](ar));});if(ap['length']===0x0)continue;let aq=m['get'](ao['eventType']);if(!aq){aq={'events':[],'truncated':![],'failed':![]};try{const ar=await a['getEvents'](ao['eventType'],{'maxPages':e['maxEventPages']});if(readStats(a)['batches']>=e['maxRpcs'])h['exhausted']['rpcs']=!![];aq['events']=ar['events'],aq['truncated']=ar['truncated'],ar['truncated']&&ar['events']['length']===0x0&&(aq['failed']=!![],h['graph']['gaps']['push']('events:'+ao['eventType']));}catch{aq['failed']=!![],h['graph']['gaps']['push']('events:'+ao['eventType']);}m['set'](ao['eventType'],aq);}if(aq['failed']){for(const as of ap)n['add'](as+'|'+an['id']);continue;}if(aq['truncated']){h['exhausted']['eventPages']=!![];for(const at of ap){h['markTruncation']({'nodeId':at,'schema':an['id'],'observed':aq['events']['length'],'limit':e['maxEventPages'],'reason':'event_pages'});}}for(const au of ap){n['add'](au+'|'+an['id']);const av=extractEventRefs(ao,au,aq['events']);if(av['length']===0x0)continue;w['push']({'schema':an,'sourceId':au,'refs':av,'observed':av['length'],'truncated':aq['truncated']});}}const B=new Set(),C=new Map();for(const aw of w){const ax=e['perKindCaps'][aw['schema']['id']]??e['maxFanoutPerNode'],ay=C['get'](aw['sourceId'])??0x0,az=Math['max'](0x0,e['maxFanoutPerNode']-ay),aA=Math['min'](ax,az),aB=aw['refs']['slice'](0x0,aA);aw['refs']['length']>aA&&h['markTruncation']({'nodeId':aw['sourceId'],'schema':aw['schema']['id'],'observed':aw['refs']['length'],'limit':a83a,'reason':'fanout'});const aC=new Map();for(const aD of aB){const aE=aD['from']??aw['sourceId'],aF=isWfNodeId(aD['to'])?p:p+0x1,aG=h['graph']['nodes']['has'](aD['to']),aH=f['effectiveMaxHops'](aw['schema']);if(aH!==undefined){const aJ=(t(aE,new Set())['get'](aw['schema']['id'])??0x0)+0x1;if(aJ>aH&&!aG){aC['set'](aE,(aC['get'](aE)??0x0)+0x1);continue;}}if(aF>e['maxDepth']&&!aG){h['exhausted']['depth']=!![];continue;}const aI=h['addNode'](aD['to'],Math['min'](aF,e['maxDepth']),{'schema':aw['schema']['id'],'from':aE});if(!aI)break;h['addEdge'](aw['schema'],aE,aD,q,aw['truncated']===!![]||aw['refs']['length']>aA),C['set'](aw['sourceId'],ay+0x1);if(!isWfNodeId(aD['to'])&&aF<=e['maxDepth'])B['add'](aD['to']);}for(const [aK,aL]of aC){h['markTruncation']({'nodeId':aK,'schema':aw['schema']['id'],'observed':aL,'limit':f['effectiveMaxHops'](aw['schema'])??0x0,'reason':'schema_hops'});}}if(h['exhausted']['rpcs']){h['graph']['gaps']['push']('budget:maxRpcs');break;}o=B;}return h['finalize'](a);}function sourceMatches(a,b){if(a==='ANY')return!![];if(a==='EOA')return b['kind']==='eoa';return b['objectType']===a;}function lookupMapLower(a,b){const c=a['get'](b);if(c!==undefined)return c;for(const [d,e]of a)if(d['toLowerCase']()===b)return e;return undefined;}export function orderCompletionInGraph(a,b){const c=a['nodes']['get'](b['toLowerCase']()),d=c?.['raw']?.['data']??c?.['raw']??{},e=String(d['machine']??''),f=String(d['progress']??''),g=a['nodes']['get'](f['toLowerCase']()),h=String((g?.['raw']?.['data']??g?.['raw']??{})['current']??'');let i=null;if(e){const j=e['toLowerCase']()+'::node::',k=a['edges']['filter'](l=>l['schema']==='wf.transition'&&l['from']['startsWith'](j))['map'](l=>({'node':l['payload']?.['node'],'prev_node':l['payload']?.['prevNode']}));if(k['length']>0x0)i=terminalNamesOfEdges(k);}return deriveOrderCompletion({'machine':e||null,'progress':f||null,'currentNode':h||null,'terminalNames':i});}
@@ -0,0 +1,28 @@
1
+ import type { Finding } from "./types.js";
2
+ export type OpenQuestionKind = "verification" | "data_gap" | "coverage";
3
+ export interface OpenQuestion {
4
+ id: string;
5
+ kind: OpenQuestionKind;
6
+ question: string;
7
+ resolves_with: string[];
8
+ source: string;
9
+ }
10
+ export interface ExplorationBlock {
11
+ open_questions: OpenQuestion[];
12
+ }
13
+ export interface ExplorationContext {
14
+ truncations: ReadonlyArray<{
15
+ nodeId: string;
16
+ schema: string;
17
+ observed: number;
18
+ limit: number;
19
+ }>;
20
+ budgetExhausted: {
21
+ nodes?: boolean;
22
+ depth?: boolean;
23
+ rpcs?: boolean;
24
+ eventPages?: boolean;
25
+ };
26
+ dataGaps: ReadonlyArray<string>;
27
+ }
28
+ export declare function projectExploration(findings: ReadonlyArray<Finding>, ctx: ExplorationContext): ExplorationBlock;
@@ -0,0 +1 @@
1
+ const ADDR_RE=/0x[0-9a-fA-F]{4,}/g;export function projectExploration(a,b){const c=[],d=()=>'X'+(c['length']+0x1);for(const g of a){const h=g['exposure']?.['gainPaths']['filter'](j=>j['viability']==='unverifiable')??[];if(h['length']===0x0)continue;const i=h['map'](j=>j['gate'])['join']('\x20');c['push']({'id':d(),'kind':'verification','question':'Settle\x20the\x20undecided\x20exposure\x20of\x20\x22'+g['title']+'\x22\x20—\x20'+i,'resolves_with':[...new Set([...g['path']??[],...g['objects']??[]])],'source':g['id']});}for(const j of b['truncations']){c['push']({'id':d(),'kind':'coverage','question':'Edge\x20history\x20for\x20'+j['schema']+'\x20at\x20'+j['nodeId']+'\x20stopped\x20at\x20'+j['observed']+'\x20row(s)\x20(limit\x20'+j['limit']+')\x20—\x20counts\x20crossing\x20this\x20edge\x20are\x20lower\x20bounds;\x20extend\x20the\x20read\x20before\x20quantifying.','resolves_with':[j['nodeId']],'source':'truncation'});}const e=[b['budgetExhausted']['nodes']?'node':null,b['budgetExhausted']['depth']?'depth':null,b['budgetExhausted']['rpcs']?'rpc':null,b['budgetExhausted']['eventPages']?'event-page':null]['filter'](k=>k!==null);e['length']>0x0&&c['push']({'id':d(),'kind':'coverage','question':'The\x20'+e['join']('/')+'\x20budget\x20stopped\x20the\x20expansion\x20—\x20parts\x20of\x20the\x20map\x20were\x20never\x20visited;\x20widen\x20the\x20budget\x20or\x20narrow\x20the\x20focus\x20before\x20treating\x20the\x20picture\x20as\x20complete.','resolves_with':[],'source':'budget'});for(const k of b['dataGaps']){c['push']({'id':d(),'kind':'data_gap','question':k,'resolves_with':[...new Set(k['match'](ADDR_RE)??[])['values']()]['map'](l=>l['toLowerCase']()),'source':'data_gap'});}return{'open_questions':c};}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{describe,expect,it}from'vitest';import{projectExploration}from'./exploration.js';function finding(a){return{'id':'T1:0xa#0','kind':'risk','severity':'high','title':'Guard\x20relies\x20on\x20sub-guards','path':['0xguard'],'confidence':'exact','roles':['buyer'],'detail':'d','suggestion':'s',...a};}const EMPTY_CTX={'truncations':[],'budgetExhausted':{},'dataGaps':[]};describe('projectExploration\x20—\x20verification\x20leads',()=>{it('groups\x20undecided\x20gain\x20paths\x20per\x20finding\x20with\x20the\x20disclosure\x20duty\x20as\x20the\x20question',()=>{const a=finding({'id':'ALC1:0xsvc#0','title':'Guard\x20relies\x20on\x20sub-guards\x20—\x20their\x20constraints\x20are\x20NOT\x20credited','path':['0xsvc','0xguard'],'objects':['0xsub1'],'exposure':{'lossParties':[{'role':'buyer','basis':'b'}],'gainPaths':[{'role':'neutral','path':'p1','viability':'viable','gate':'decided'},{'role':'neutral','path':'p2','viability':'unverifiable','gate':'Duty\x20one.'},{'role':'neutral','path':'p3','viability':'unverifiable','gate':'Duty\x20two.'}],'verdict':'pending-disclosure'}}),{open_questions:b}=projectExploration([a],EMPTY_CTX);expect(b)['toHaveLength'](0x1),expect(b[0x0])['toMatchObject']({'id':'X1','kind':'verification','source':'ALC1:0xsvc#0'}),expect(b[0x0]['question'])['toContain']('Settle\x20the\x20undecided\x20exposure\x20of\x20\x22Guard\x20relies\x20on\x20sub-guards'),expect(b[0x0]['question'])['toContain']('Duty\x20one.'),expect(b[0x0]['question'])['toContain']('Duty\x20two.'),expect(b[0x0]['resolves_with'])['toEqual'](['0xsvc','0xguard','0xsub1']);}),it('emits\x20nothing\x20for\x20findings\x20without\x20exposure\x20or\x20without\x20undecided\x20paths',()=>{const a=finding({}),b=finding({'exposure':{'lossParties':[{'role':'buyer','basis':'b'}],'gainPaths':[{'role':'neutral','path':'p','viability':'blocked','gate':'g'}],'verdict':'downgraded','baseSeverity':'high'}});expect(projectExploration([a,b],EMPTY_CTX)['open_questions'])['toHaveLength'](0x0);});}),describe('projectExploration\x20—\x20coverage\x20leads',()=>{it('turns\x20window\x20truncations\x20into\x20lower-bound\x20questions\x20with\x20the\x20node\x20as\x20the\x20handle',()=>{const {open_questions:a}=projectExploration([],{...EMPTY_CTX,'truncations':[{'nodeId':'0xn1','schema':'treasury.record','observed':0x1450,'limit':0x1450}]});expect(a)['toHaveLength'](0x1),expect(a[0x0]['kind'])['toBe']('coverage'),expect(a[0x0]['source'])['toBe']('truncation'),expect(a[0x0]['question'])['toContain']('treasury.record\x20at\x200xn1'),expect(a[0x0]['question'])['toContain']('lower\x20bounds'),expect(a[0x0]['resolves_with'])['toEqual'](['0xn1']);}),it('combines\x20exhausted\x20budgets\x20into\x20ONE\x20posture\x20question',()=>{const {open_questions:a}=projectExploration([],{...EMPTY_CTX,'budgetExhausted':{'nodes':!![],'depth':!![]}});expect(a)['toHaveLength'](0x1),expect(a[0x0]['kind'])['toBe']('coverage'),expect(a[0x0]['source'])['toBe']('budget'),expect(a[0x0]['question'])['toContain']('node/depth\x20budget'),expect(a[0x0]['resolves_with'])['toEqual']([]);});}),describe('projectExploration\x20—\x20data-gap\x20leads\x20and\x20ordering',()=>{it('carries\x20fetch\x20gaps\x20verbatim\x20and\x20extracts\x20embedded\x20addresses\x20as\x20handles',()=>{const {open_questions:a}=projectExploration([],{...EMPTY_CTX,'dataGaps':['Evaluation\x20projection\x20failed\x20for\x200xAbC0000000000000000000000000000000000001\x20(non-blocking)']});expect(a)['toHaveLength'](0x1),expect(a[0x0]['kind'])['toBe']('data_gap'),expect(a[0x0]['source'])['toBe']('data_gap'),expect(a[0x0]['question'])['toContain']('Evaluation\x20projection\x20failed'),expect(a[0x0]['resolves_with'])['toEqual'](['0xabc0000000000000000000000000000000000001']);}),it('orders\x20verification\x20before\x20coverage\x20before\x20data\x20gaps\x20with\x20stable\x20ids',()=>{const a=finding({'exposure':{'lossParties':[],'gainPaths':[{'role':'neutral','path':'p','viability':'unverifiable','gate':'Duty.'}],'verdict':'pending-disclosure'}}),{open_questions:b}=projectExploration([a],{'truncations':[{'nodeId':'0xn','schema':'s','observed':0x1,'limit':0x2}],'budgetExhausted':{'rpcs':!![]},'dataGaps':['graph:\x20node\x20fetch\x20failed']});expect(b['map'](c=>c['kind']))['toEqual'](['verification','coverage','coverage','data_gap']),expect(b['map'](c=>c['id']))['toEqual'](['X1','X2','X3','X4']);}),it('returns\x20an\x20empty\x20block\x20for\x20a\x20fully\x20settled\x20payload',()=>{expect(projectExploration([],EMPTY_CTX)['open_questions'])['toEqual']([]);});});
@@ -0,0 +1,18 @@
1
+ import type { ExposureParty, FindingExposure, GainPath, GainPathViability, FindingSeverity, ViewerRole } from "./types.js";
2
+ export { resolveViability, factRef, parseFactRef } from "../../config/exposure.js";
3
+ export type { ExposureFragment, ExposureParty, ExposureVerdict, FindingExposure, GainPath, GainPathViability, } from "../../config/exposure.js";
4
+ export declare const EXPOSURE_ROLES: {
5
+ buyer: ViewerRole;
6
+ merchant: ViewerRole;
7
+ supplier: ViewerRole;
8
+ collaborator: ViewerRole;
9
+ arbitrator: ViewerRole;
10
+ system: ViewerRole;
11
+ neutral: ViewerRole;
12
+ };
13
+ export declare function applyExposureGate(severity: FindingSeverity, exposure: Omit<FindingExposure, "verdict" | "baseSeverity">): {
14
+ severity: FindingSeverity;
15
+ exposure: FindingExposure;
16
+ };
17
+ export declare function lossParty(role: ViewerRole, basis: string): ExposureParty;
18
+ export declare function gainPath(role: ViewerRole, path: string, viability: GainPathViability, gate: string): GainPath;
@@ -0,0 +1 @@
1
+ import{applyExposureGate as a86a}from'../../config/exposure.js';export{resolveViability,factRef,parseFactRef}from'../../config/exposure.js';export const EXPOSURE_ROLES={'buyer':'buyer','merchant':'merchant','supplier':'supplier','collaborator':'collaborator','arbitrator':'arbitrator','system':'system','neutral':'neutral'};export function applyExposureGate(a,b){return a86a(a,b);}export function lossParty(a,b){return{'role':a,'basis':b};}export function gainPath(a,b,c,d){return{'role':a,'path':b,'viability':c,'gate':d};}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{describe,expect,it}from'vitest';import{applyExposureGate,gainPath,lossParty}from'./exposure.js';import{analyzeRewardClaimGuard}from'../../knowledge/recipient-constraint.js';describe('applyExposureGate',()=>{it('downgrades\x20to\x20info\x20when\x20every\x20gain\x20path\x20is\x20blocked',()=>{const {severity:a,exposure:b}=applyExposureGate('critical',{'lossParties':[lossParty('merchant','pool\x20funder')],'gainPaths':[gainPath('neutral','redirect','blocked','entity-pinned'),gainPath('neutral','re-entry','blocked','one-shot\x20drain')]});expect(a)['toBe']('info'),expect(b['verdict'])['toBe']('downgraded'),expect(b['baseSeverity'])['toBe']('critical');}),it('keeps\x20severity\x20when\x20any\x20path\x20is\x20viable\x20or\x20conditional',()=>{const a=applyExposureGate('high',{'lossParties':[lossParty('buyer','escrow')],'gainPaths':[gainPath('neutral','steal','blocked','bound'),gainPath('merchant','defund','viable','own\x20permission')]});expect(a['severity'])['toBe']('high'),expect(a['exposure']['verdict'])['toBe']('confirmed');const b=applyExposureGate('medium',{'lossParties':[lossParty('buyer','escrow')],'gainPaths':[gainPath('supplier','cross-settle','conditional','needs\x20own\x20order')]});expect(b['severity'])['toBe']('medium'),expect(b['exposure']['verdict'])['toBe']('confirmed');}),it('stamps\x20pending-disclosure\x20when\x20undecided\x20paths\x20exist\x20and\x20none\x20are\x20executable',()=>{const {severity:a,exposure:b}=applyExposureGate('critical',{'lossParties':[lossParty('merchant','treasury')],'gainPaths':[gainPath('neutral','release','unverifiable','guard\x20predicate\x20outside\x20evidence')]});expect(a)['toBe']('critical'),expect(b['verdict'])['toBe']('pending-disclosure');}),it('never\x20downgrades\x20shortfall\x20findings\x20with\x20no\x20gain\x20path',()=>{const {severity:a,exposure:b}=applyExposureGate('high',{'lossParties':[lossParty('supplier','payout\x20stranded')],'gainPaths':[]});expect(a)['toBe']('high'),expect(b['verdict'])['toBe']('confirmed');});});const GUARD_ADDR='0x::guard',NODE={'type':'logic_and','nodes':[]};function tableEntry(a,b,c,d){return{'identifier':a,'value_type':b,...c!==undefined?{'value':c}:{},...d!==undefined?{'b_submission':d}:{}};}describe('analyzeRewardClaimGuard',()=>{it('returns\x20unverifiable\x20when\x20the\x20guard\x20def\x20is\x20not\x20fetched',()=>{const b=analyzeRewardClaimGuard({'entry_index':0x0,'guard':GUARD_ADDR,'recipient':{'GuardIdentifier':0x0}});expect(b['viability'])['toBe']('unverifiable'),expect(b['guard_resolved'])['toBe'](![]);}),it('entity\x20recipient\x20is\x20blocked\x20even\x20with\x20an\x20empty\x20guard',()=>{const b=analyzeRewardClaimGuard({'entry_index':0x0,'guard':GUARD_ADDR,'recipient':{'Entity':'0xabc'},'guard_def':{'table':[],'root':NODE}});expect(b['viability'])['toBe']('blocked'),expect(b['recipient_kind'])['toBe']('entity');}),it('signer\x20recipient\x20is\x20viable\x20without\x20a\x20caller\x20constraint',()=>{const b=analyzeRewardClaimGuard({'entry_index':0x0,'guard':GUARD_ADDR,'recipient':{'Signer':!![]},'guard_def':{'table':[],'root':NODE}});expect(b['viability'])['toBe']('viable');}),it('submission\x20slot\x20never\x20consumed\x20by\x20the\x20guard\x20is\x20viable',()=>{const b=analyzeRewardClaimGuard({'entry_index':0x0,'guard':GUARD_ADDR,'recipient':{'GuardIdentifier':0x3},'guard_def':{'table':[tableEntry(0x3,0x0,undefined,!![])],'root':{'type':'logic_equal','nodeLeft':{'type':'context','context':'Clock'},'nodeRight':{'type':'context','context':'Clock'}}}});expect(b['viability'])['toBe']('viable'),expect(b['recipient_slot_usages'])['toBe'](0x0);}),it('submission\x20slot\x20consumed\x20without\x20a\x20recognized\x20constraint\x20is\x20conditional',()=>{const b=analyzeRewardClaimGuard({'entry_index':0x0,'guard':GUARD_ADDR,'recipient':{'guard_identifier':0x3},'guard_def':{'table':[tableEntry(0x3,0x0,undefined,!![])],'root':{'type':'query','query':0x61b,'object':{'identifier':0x3}}}});expect(b['viability'])['toBe']('conditional'),expect(b['recipient_slot_usages'])['toBe'](0x1);});});
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{mkdtempSync,writeFileSync}from'node:fs';import{tmpdir}from'node:os';import{join}from'node:path';import{afterAll,beforeAll,describe,expect,it}from'vitest';import{beginPolicyRun,endPolicyRun,factoryRulePack,getJudgmentDoc,judgmentStatus}from'../../config/judgment.js';import{evaluateRuleBook}from'../../config/rule-engine.js';import{graphFindingPolicy}from'./policy.js';const CONFIG_DIR=mkdtempSync(join(tmpdir(),'wowok-graph-policy-'));process['env']['WOWOK_CONFIG_DIR']=CONFIG_DIR;const GRAPH_IDS=['R1','R2','R3','R4','R6','R7-treasury','R7-reward','A1','A2','A3','G2','AC1','AC2','AC3','AC4'];beforeAll(()=>{beginPolicyRun();}),afterAll(()=>{endPolicyRun();}),describe('graph\x20finding\x20policy\x20—\x20factory\x20parity',()=>{it('factory\x20pack\x20carries\x20exactly\x20the\x20kernel\x20emission\x20ids',()=>{const a=factoryRulePack('graph');expect(a)['not']['toBeNull'](),expect(a['rules']['map'](b=>b['rule_id'])['sort']())['toEqual']([...GRAPH_IDS]['sort']());}),it('static\x20literals\x20resolve\x20to\x20the\x20kernel\x20severities',()=>{expect(graphFindingPolicy('R1',{'eoa':'0xa'})['severity'])['toBe']('high'),expect(graphFindingPolicy('R4',{'only':'name:ops'})['severity'])['toBe']('medium'),expect(graphFindingPolicy('R6',{})['severity'])['toBe']('medium'),expect(graphFindingPolicy('R7-treasury',{})['severity'])['toBe']('critical'),expect(graphFindingPolicy('A1',{})['severity'])['toBe']('medium'),expect(graphFindingPolicy('A2',{})['severity'])['toBe']('low'),expect(graphFindingPolicy('A3',{})['severity'])['toBe']('medium'),expect(graphFindingPolicy('G2',{})['severity'])['toBe']('low'),expect(graphFindingPolicy('AC1',{})['severity'])['toBe']('high');}),it('dynamic\x20fact:\x20levels\x20resolve\x20through\x20the\x20extractor\x20facts',()=>{expect(graphFindingPolicy('R2',{'r2_level':'high'})['severity'])['toBe']('high'),expect(graphFindingPolicy('R2',{'r2_level':'medium'})['severity'])['toBe']('medium'),expect(graphFindingPolicy('R3',{'r3_level':'medium'})['severity'])['toBe']('medium'),expect(graphFindingPolicy('R3',{'r3_level':'low'})['severity'])['toBe']('low');for(const a of['high','medium','low']){expect(graphFindingPolicy('AC2',{'ac_signal_level':a})['severity'])['toBe'](a),expect(graphFindingPolicy('AC3',{'ac_signal_level':a})['severity'])['toBe'](a),expect(graphFindingPolicy('AC4',{'ac_shell_code':'shell_no_machine','ac_signal_level':a})['severity'])['toBe'](a);}}),it('R7-reward\x20mirrors\x20the\x20viability\x20gate:\x20viable\x20→\x20critical\x20confirmed',()=>{const a=graphFindingPolicy('R7-reward',{'r7_slot_viability':'viable','r7_slot_audit':'#0\x20viable\x20—\x20no\x20binding'});expect(a['severity'])['toBe']('critical'),expect(a['exposure']?.['verdict'])['toBe']('confirmed'),expect(a['exposure']?.['gainPaths'][0x0]?.['gate'])['toContain']('#0\x20viable\x20—\x20no\x20binding'),expect(a['exposure']?.['gainPaths'][0x0]?.['viability'])['toBe']('viable');}),it('R7-reward\x20all-blocked\x20downgrades\x20to\x20info\x20with\x20baseSeverity\x20kept',()=>{const a=graphFindingPolicy('R7-reward',{'r7_slot_viability':'blocked','r7_slot_audit':'#0\x20blocked\x20—\x20Entity\x20recipient'});expect(a['severity'])['toBe']('info'),expect(a['exposure']?.['verdict'])['toBe']('downgraded'),expect(a['exposure']?.['baseSeverity'])['toBe']('critical');}),it('R7-reward\x20undecided\x20keeps\x20critical\x20as\x20pending-disclosure',()=>{const a=graphFindingPolicy('R7-reward',{'r7_slot_viability':'unverifiable','r7_slot_audit':'#0\x20unverifiable\x20—\x20guard\x20not\x20fetched'});expect(a['severity'])['toBe']('critical'),expect(a['exposure']?.['verdict'])['toBe']('pending-disclosure');}),it('AC4\x20selects\x20the\x20attribution\x20case\x20by\x20shell\x20code',()=>{const a=graphFindingPolicy('AC4',{'ac_shell_code':'shell_no_arbitration','ac_signal_level':'high'});expect(a['exposure']?.['lossParties']['map'](d=>d['role']))['toEqual'](['buyer']),expect(a['exposure']?.['gainPaths'][0x0]?.['role'])['toBe']('merchant');const b=graphFindingPolicy('AC4',{'ac_shell_code':'shell_no_machine','ac_signal_level':'low'});expect(b['exposure']?.['verdict'])['toBe']('confirmed');const c=graphFindingPolicy('AC4',{'ac_shell_code':'other','ac_signal_level':'high'});expect(c['enabled'])['toBe'](!![]),expect(c['severity'])['toBeNull']();}),it('an\x20emission\x20id\x20outside\x20the\x20pack\x20leaves\x20the\x20kernel\x20default\x20intact',()=>{expect(graphFindingPolicy('R5',{}))['toEqual']({'enabled':!![],'severity':null});});}),describe('graph\x20finding\x20policy\x20—\x20pack-driven\x20behavior\x20change',()=>{it('a\x20disabled\x20rule\x20id\x20suppresses\x20the\x20emission\x20with\x20a\x20trace',()=>{const {findings:a,disabled_traces:b}=evaluateRuleBook([{'rule_id':'R6','dimension':'structural','cases':[{'when':{'field':'kernel_fired','op':'truthy'},'level':'medium','title':'t','description':'d'}],'enabled':![]}],{'kernel_fired':!![]});expect(a)['toHaveLength'](0x0),expect(b)['toEqual'](['R6']);}),it('a\x20user\x20fact:\x20reference\x20outside\x20the\x20factory\x20vocabulary\x20is\x20rejected',async()=>{const a={'version':0x1,'rules':{'domains':{'graph':{'rules':[{'rule_id':'R1','cases':[{'when':{'field':'kernel_fired','op':'truthy'},'level':'fact:not_a_kernel_fact','title':'t','description':'d'}]}]}}}};writeFileSync(join(CONFIG_DIR,'judgment.json'),JSON['stringify'](a),'utf-8');const b=getJudgmentDoc();expect(factoryRulePack('graph'))['not']['toBeNull']();const c=judgmentStatus();expect(c['user_doc_loaded'])['toBe'](![]),expect(c['last_reload_error'])['toContain']('fact:not_a_kernel_fact'),expect(c['last_reload_error'])['toContain']('R1'),expect(graphFindingPolicy('R1',{'eoa':'0xa'})['severity'])['toBe']('high'),void b;});});
@@ -13,6 +13,12 @@ export type { AntiCheatSeverity, AntiCheatSignal, OrderEvidence, ReviewEvidence,
13
13
  export { buildViewport, edgesOut, edgesInc, nodeOf } from "./viewport.js";
14
14
  export { buildRoleInterest, toCommercialRole, viewerRoleOf, type RoleInterestResult, } from "./interest.js";
15
15
  export { buildControlIndex } from "./analyze.js";
16
+ export { projectExploration } from "./exploration.js";
17
+ export type { ExplorationBlock, ExplorationContext, OpenQuestion, OpenQuestionKind, } from "./exploration.js";
18
+ export { synthesizeVerdicts } from "./synthesis.js";
19
+ export type { RoleVerdict, SynthesisBlock, SynthesisInput, SynthesisPosture, } from "./synthesis.js";
20
+ export { applyExposureGate, gainPath, lossParty, EXPOSURE_ROLES } from "./exposure.js";
21
+ export type { ExposureParty, ExposureVerdict, FindingExposure, GainPath, GainPathViability, } from "./exposure.js";
16
22
  export { projectEvaluationFacts } from "./facts.js";
17
23
  export { projectFacets } from "./facet-projection.js";
18
24
  export type { FacetState, FacetMoney, FacetAmount, FacetSignal, FacetScoreRef, FacetGraphRef, FacetGraph, FacetResult, FacetsBlock, FacetProjectionProfile, FacetWorkflowShape, ProjectFacetsInput, } from "./facet-projection.js";
@@ -1 +1 @@
1
- export*from'./types.js';export*from'./edge-schema.js';export*from'./extract.js';export*from'./order-status.js';export{MAX_OBJECTS_PER_QUERY,DEFAULT_BUDGET,mergeBudget,chunk50,mapPool,FakeDataPlane}from'./dataplane.js';export{SdkDataPlane}from'./sdk-dataplane.js';export*from'./sdk-batch.js';export{expandTopology,orderCompletionInGraph}from'./expand.js';export{TOPOLOGY_INTENTS,INTENT_PRESETS,EVALUATION_SERVICE_INTENTS,EVALUATION_SERVICE_BUDGET,EVALUATION_SERVICE_EDGES,resolveExpansionStrategy,withEvaluationBundle,isTopologyIntent,normalizeTopologyFocusPref,normalizeSchemaHops}from'./strategy.js';export{detectFakeOrders,detectFakeReviews,detectShellMerchant,reputationTradeNote,assessAntiCheat}from'./anti-cheat.js';export{buildViewport,edgesOut,edgesInc,nodeOf}from'./viewport.js';export{buildRoleInterest,toCommercialRole,viewerRoleOf}from'./interest.js';export{buildControlIndex}from'./analyze.js';export{projectEvaluationFacts}from'./facts.js';export{projectFacets}from'./facet-projection.js';export{projectRelationshipFacts}from'./project-relationship.js';export{DEFAULT_ANALYZERS,registerAnalyzer,getAnalyzer,listAnalyzers,runAnalyzers,adaptNodeAnalyzer,runNodeAnalyzers,pathConfidence,findingWhere,findingWhereResolved}from'./analyze.js';export{buildNameIndex,createNameResolver,humanizeStoredName,humanizeTypeTag,isWfNodeId,shortAddress,wfMachineOf,wfNodeName}from'./names.js';export{buildProposalGraph,PROPOSAL_GAP_ANALYZER}from'./proposal-graph.js';
1
+ export*from'./types.js';export*from'./edge-schema.js';export*from'./extract.js';export*from'./order-status.js';export{MAX_OBJECTS_PER_QUERY,DEFAULT_BUDGET,mergeBudget,chunk50,mapPool,FakeDataPlane}from'./dataplane.js';export{SdkDataPlane}from'./sdk-dataplane.js';export*from'./sdk-batch.js';export{expandTopology,orderCompletionInGraph}from'./expand.js';export{TOPOLOGY_INTENTS,INTENT_PRESETS,EVALUATION_SERVICE_INTENTS,EVALUATION_SERVICE_BUDGET,EVALUATION_SERVICE_EDGES,resolveExpansionStrategy,withEvaluationBundle,isTopologyIntent,normalizeTopologyFocusPref,normalizeSchemaHops}from'./strategy.js';export{detectFakeOrders,detectFakeReviews,detectShellMerchant,reputationTradeNote,assessAntiCheat}from'./anti-cheat.js';export{buildViewport,edgesOut,edgesInc,nodeOf}from'./viewport.js';export{buildRoleInterest,toCommercialRole,viewerRoleOf}from'./interest.js';export{buildControlIndex}from'./analyze.js';export{projectExploration}from'./exploration.js';export{synthesizeVerdicts}from'./synthesis.js';export{applyExposureGate,gainPath,lossParty,EXPOSURE_ROLES}from'./exposure.js';export{projectEvaluationFacts}from'./facts.js';export{projectFacets}from'./facet-projection.js';export{projectRelationshipFacts}from'./project-relationship.js';export{DEFAULT_ANALYZERS,registerAnalyzer,getAnalyzer,listAnalyzers,runAnalyzers,adaptNodeAnalyzer,runNodeAnalyzers,pathConfidence,findingWhere,findingWhereResolved}from'./analyze.js';export{buildNameIndex,createNameResolver,humanizeStoredName,humanizeTypeTag,isWfNodeId,shortAddress,wfMachineOf,wfNodeName}from'./names.js';export{buildProposalGraph,PROPOSAL_GAP_ANALYZER}from'./proposal-graph.js';