@wowok/agent-mcp 3.1.0 → 3.1.3

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 (337) hide show
  1. package/dist/config/runtime.js +1 -1
  2. package/dist/customer/index.d.ts +3 -9
  3. package/dist/customer/index.js +1 -1
  4. package/dist/customer/industry-risks.d.ts +3 -17
  5. package/dist/customer/industry-risks.js +1 -1
  6. package/dist/customer/types.d.ts +1 -165
  7. package/dist/customer/types.js +1 -1
  8. package/dist/customer/user-preferences.d.ts +0 -49
  9. package/dist/customer/user-preferences.js +1 -1
  10. package/dist/evaluation/arbitration-game.js +1 -1
  11. package/dist/evaluation/architecture.spec.d.ts +1 -0
  12. package/dist/evaluation/architecture.spec.js +1 -0
  13. package/dist/evaluation/builtins/graph-service.d.ts +16 -0
  14. package/dist/evaluation/builtins/graph-service.js +1 -0
  15. package/dist/evaluation/builtins/graph-service.spec.d.ts +1 -0
  16. package/dist/evaluation/builtins/graph-service.spec.js +1 -0
  17. package/dist/evaluation/builtins/index.d.ts +1 -1
  18. package/dist/evaluation/builtins/index.js +1 -1
  19. package/dist/evaluation/builtins/purity.spec.d.ts +1 -0
  20. package/dist/evaluation/builtins/purity.spec.js +1 -0
  21. package/dist/evaluation/engine.js +1 -1
  22. package/dist/evaluation/facets/catalog.d.ts +19 -0
  23. package/dist/evaluation/facets/catalog.js +1 -0
  24. package/dist/evaluation/guard-scan.d.ts +10 -0
  25. package/dist/evaluation/guard-scan.js +1 -0
  26. package/dist/evaluation/location-match.js +1 -1
  27. package/dist/evaluation/standards.d.ts +31 -0
  28. package/dist/evaluation/standards.js +1 -0
  29. package/dist/evaluation/standards.spec.d.ts +1 -0
  30. package/dist/evaluation/standards.spec.js +1 -0
  31. package/dist/evaluation/types.d.ts +9 -0
  32. package/dist/experience/realtime-feedback.js +1 -1
  33. package/dist/extensions/index.d.ts +1 -1
  34. package/dist/extensions/index.js +1 -1
  35. package/dist/extensions/industry-layers.d.ts +6 -5
  36. package/dist/extensions/industry-layers.js +1 -1
  37. package/dist/extensions/industry-pack.js +1 -1
  38. package/dist/goal/GoalClassifier.js +1 -1
  39. package/dist/graph/onchain/analyze.d.ts +16 -3
  40. package/dist/graph/onchain/analyze.js +1 -1
  41. package/dist/graph/onchain/analyze.spec.js +1 -1
  42. package/dist/graph/onchain/dataplane.d.ts +1 -1
  43. package/dist/graph/onchain/dataplane.js +1 -1
  44. package/dist/graph/onchain/edge-batch.spec.d.ts +1 -0
  45. package/dist/graph/onchain/edge-batch.spec.js +1 -0
  46. package/dist/graph/onchain/edge-schema.d.ts +11 -3
  47. package/dist/graph/onchain/edge-schema.js +1 -1
  48. package/dist/graph/onchain/entity-profile.spec.d.ts +1 -0
  49. package/dist/graph/onchain/entity-profile.spec.js +1 -0
  50. package/dist/graph/onchain/event-history.spec.d.ts +1 -0
  51. package/dist/graph/onchain/event-history.spec.js +1 -0
  52. package/dist/graph/onchain/expand.js +1 -1
  53. package/dist/graph/onchain/extract-deep.spec.d.ts +1 -0
  54. package/dist/graph/onchain/extract-deep.spec.js +1 -0
  55. package/dist/graph/onchain/extract.d.ts +11 -3
  56. package/dist/graph/onchain/extract.js +1 -1
  57. package/dist/graph/onchain/facet-projection.d.ts +99 -0
  58. package/dist/graph/onchain/facet-projection.js +1 -0
  59. package/dist/graph/onchain/facet-projection.spec.d.ts +1 -0
  60. package/dist/graph/onchain/facet-projection.spec.js +1 -0
  61. package/dist/graph/onchain/facts.d.ts +103 -0
  62. package/dist/graph/onchain/facts.js +1 -0
  63. package/dist/graph/onchain/facts.spec.d.ts +1 -0
  64. package/dist/graph/onchain/facts.spec.js +1 -0
  65. package/dist/graph/onchain/field-manifest.d.ts +29 -0
  66. package/dist/graph/onchain/field-manifest.js +1 -0
  67. package/dist/graph/onchain/field-manifest.spec.d.ts +1 -0
  68. package/dist/graph/onchain/field-manifest.spec.js +1 -0
  69. package/dist/graph/onchain/fixtures.d.ts +80 -0
  70. package/dist/graph/onchain/fixtures.js +1 -0
  71. package/dist/graph/onchain/fixtures.spec.d.ts +1 -0
  72. package/dist/graph/onchain/fixtures.spec.js +1 -0
  73. package/dist/graph/onchain/index.d.ts +8 -2
  74. package/dist/graph/onchain/index.js +1 -1
  75. package/dist/graph/onchain/interest.js +1 -1
  76. package/dist/graph/onchain/label-lint.spec.d.ts +1 -0
  77. package/dist/graph/onchain/label-lint.spec.js +1 -0
  78. package/dist/graph/onchain/names.d.ts +23 -0
  79. package/dist/graph/onchain/names.js +1 -0
  80. package/dist/graph/onchain/names.spec.d.ts +1 -0
  81. package/dist/graph/onchain/names.spec.js +1 -0
  82. package/dist/graph/onchain/onchain.spec.js +1 -1
  83. package/dist/graph/onchain/proposal-graph.d.ts +11 -0
  84. package/dist/graph/onchain/proposal-graph.js +1 -0
  85. package/dist/graph/onchain/proposal-graph.spec.d.ts +1 -0
  86. package/dist/graph/onchain/proposal-graph.spec.js +1 -0
  87. package/dist/graph/onchain/sdk-batch.d.ts +5 -1
  88. package/dist/graph/onchain/sdk-batch.js +1 -1
  89. package/dist/graph/onchain/sdk-dataplane.js +1 -1
  90. package/dist/graph/onchain/strategy.d.ts +16 -0
  91. package/dist/graph/onchain/strategy.js +1 -1
  92. package/dist/graph/onchain/strategy.spec.js +1 -1
  93. package/dist/graph/onchain/table-ledger.spec.d.ts +1 -0
  94. package/dist/graph/onchain/table-ledger.spec.js +1 -0
  95. package/dist/graph/onchain/types.d.ts +51 -11
  96. package/dist/graph/onchain/viewport.d.ts +1 -0
  97. package/dist/graph/onchain/viewport.js +1 -1
  98. package/dist/harness/index.d.ts +1 -5
  99. package/dist/harness/index.js +1 -1
  100. package/dist/harness/verify.d.ts +6 -1
  101. package/dist/harness/verify.js +1 -1
  102. package/dist/index.js +1 -1
  103. package/dist/knowledge/allocation-ledger.d.ts +2 -0
  104. package/dist/knowledge/allocation-ledger.js +1 -1
  105. package/dist/knowledge/allocation-puzzle.js +1 -1
  106. package/dist/knowledge/allocation-risk.d.ts +2 -3
  107. package/dist/knowledge/allocation-risk.js +1 -1
  108. package/dist/knowledge/arb-risk.d.ts +0 -1
  109. package/dist/knowledge/arb-risk.js +1 -1
  110. package/dist/knowledge/arbitration-risk.d.ts +0 -2
  111. package/dist/knowledge/arbitration-risk.js +1 -1
  112. package/dist/knowledge/baselines/evaluation-baselines.json +79 -0
  113. package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +1 -0
  114. package/dist/knowledge/baselines/guard-lint-baseline.spec.js +1 -0
  115. package/dist/knowledge/baselines/risk-baselines.spec.d.ts +1 -0
  116. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -0
  117. package/dist/knowledge/baselines/risk-cases.d.ts +8 -0
  118. package/dist/knowledge/baselines/risk-cases.js +1 -0
  119. package/dist/knowledge/bridge-risk.d.ts +0 -1
  120. package/dist/knowledge/bridge-risk.js +1 -1
  121. package/dist/knowledge/contact-risk.d.ts +0 -1
  122. package/dist/knowledge/contact-risk.js +1 -1
  123. package/dist/knowledge/contract-invariants.d.ts +1 -0
  124. package/dist/knowledge/contract-invariants.js +1 -1
  125. package/dist/knowledge/demand-risk.d.ts +0 -1
  126. package/dist/knowledge/demand-risk.js +1 -1
  127. package/dist/knowledge/getting-started.js +1 -1
  128. package/dist/knowledge/guard-design-patterns.js +1 -1
  129. package/dist/knowledge/guard-eval.d.ts +15 -0
  130. package/dist/knowledge/guard-eval.js +1 -0
  131. package/dist/knowledge/guard-eval.spec.d.ts +1 -0
  132. package/dist/knowledge/guard-eval.spec.js +1 -0
  133. package/dist/knowledge/guard-field-cognition.d.ts +48 -0
  134. package/dist/knowledge/guard-field-cognition.js +1 -0
  135. package/dist/knowledge/guard-lint.d.ts +1 -1
  136. package/dist/knowledge/guard-lint.js +1 -1
  137. package/dist/knowledge/guard-risk.d.ts +4 -19
  138. package/dist/knowledge/guard-risk.js +1 -1
  139. package/dist/knowledge/index.d.ts +42 -43
  140. package/dist/knowledge/index.js +1 -1
  141. package/dist/knowledge/industry-registry.js +1 -1
  142. package/dist/knowledge/industry-rule-node.d.ts +7 -0
  143. package/dist/knowledge/industry-rule-node.js +1 -0
  144. package/dist/knowledge/industry-strategy.js +1 -1
  145. package/dist/knowledge/jsonrpc-enum.js +1 -1
  146. package/dist/knowledge/machine-risk.d.ts +0 -6
  147. package/dist/knowledge/machine-risk.js +1 -1
  148. package/dist/knowledge/order-risk.d.ts +1 -9
  149. package/dist/knowledge/order-risk.js +1 -1
  150. package/dist/knowledge/payment-risk.d.ts +0 -1
  151. package/dist/knowledge/payment-risk.js +1 -1
  152. package/dist/knowledge/permission-risk.d.ts +0 -3
  153. package/dist/knowledge/permission-risk.js +1 -1
  154. package/dist/knowledge/personal-risk.d.ts +0 -1
  155. package/dist/knowledge/personal-risk.js +1 -1
  156. package/dist/knowledge/progress-risk.d.ts +0 -2
  157. package/dist/knowledge/progress-risk.js +1 -1
  158. package/dist/knowledge/proof-risk.d.ts +0 -1
  159. package/dist/knowledge/proof-risk.js +1 -1
  160. package/dist/knowledge/puzzle-projections.d.ts +11 -0
  161. package/dist/knowledge/puzzle-projections.js +1 -0
  162. package/dist/knowledge/recipient-constraint.d.ts +6 -1
  163. package/dist/knowledge/recipient-constraint.js +1 -1
  164. package/dist/knowledge/registrar-risk.d.ts +0 -1
  165. package/dist/knowledge/registrar-risk.js +1 -1
  166. package/dist/knowledge/repository-risk.d.ts +0 -1
  167. package/dist/knowledge/repository-risk.js +1 -1
  168. package/dist/knowledge/resource-risk.d.ts +0 -1
  169. package/dist/knowledge/resource-risk.js +1 -1
  170. package/dist/knowledge/reward-risk.d.ts +1 -5
  171. package/dist/knowledge/reward-risk.js +1 -1
  172. package/dist/knowledge/rule-node-analyzers.d.ts +43 -0
  173. package/dist/knowledge/rule-node-analyzers.js +1 -0
  174. package/dist/knowledge/rule-node-analyzers.spec.d.ts +1 -0
  175. package/dist/knowledge/rule-node-analyzers.spec.js +1 -0
  176. package/dist/knowledge/rule-outcome.d.ts +5 -0
  177. package/dist/knowledge/rule-outcome.js +1 -0
  178. package/dist/knowledge/safety-rules.js +1 -1
  179. package/dist/knowledge/scenario-topology.js +1 -1
  180. package/dist/knowledge/service-allocator-audit-node.d.ts +3 -0
  181. package/dist/knowledge/service-allocator-audit-node.js +1 -0
  182. package/dist/knowledge/service-risk-node.js +1 -1
  183. package/dist/knowledge/service-risk.d.ts +0 -3
  184. package/dist/knowledge/service-risk.js +1 -1
  185. package/dist/knowledge/template-registry.js +1 -1
  186. package/dist/knowledge/tools-reference.js +1 -1
  187. package/dist/knowledge/treasury-risk.d.ts +2 -3
  188. package/dist/knowledge/treasury-risk.js +1 -1
  189. package/dist/knowledge/util-risk.d.ts +0 -1
  190. package/dist/knowledge/util-risk.js +1 -1
  191. package/dist/knowledge/workflow-guidance.d.ts +2 -0
  192. package/dist/knowledge/workflow-guidance.js +1 -1
  193. package/dist/monitor/MonitorLoop.js +1 -1
  194. package/dist/persona/bridge.js +1 -1
  195. package/dist/persona/facet-profile.d.ts +33 -0
  196. package/dist/persona/facet-profile.js +1 -0
  197. package/dist/persona/model.d.ts +2 -1
  198. package/dist/persona/model.js +1 -1
  199. package/dist/persona/strategy-intent.js +1 -1
  200. package/dist/persona/topology-focus.d.ts +2 -2
  201. package/dist/persona/topology-focus.js +1 -1
  202. package/dist/persona/types.d.ts +12 -0
  203. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  204. package/dist/playbooks/service-build/facet-money.d.ts +22 -0
  205. package/dist/playbooks/service-build/facet-money.js +1 -0
  206. package/dist/playbooks/service-build/facet-money.spec.d.ts +1 -0
  207. package/dist/playbooks/service-build/facet-money.spec.js +1 -0
  208. package/dist/playbooks/service-build/intent-analyzer.js +1 -1
  209. package/dist/playbooks/service-build/machine-panorama.d.ts +3 -0
  210. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  211. package/dist/playbooks/service-build/object-panorama.d.ts +27 -27
  212. package/dist/playbooks/service-build/object-panorama.js +1 -1
  213. package/dist/playbooks/service-build/pipeline-actions.d.ts +2 -2
  214. package/dist/playbooks/service-build/pipeline-actions.js +1 -1
  215. package/dist/playbooks/service-build/risk-aggregator.d.ts +2 -1
  216. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  217. package/dist/playbooks/service-build/service-panorama.d.ts +4 -9
  218. package/dist/playbooks/service-build/service-panorama.js +1 -1
  219. package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +1 -0
  220. package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -0
  221. package/dist/playbooks/service-build/topology-query.d.ts +13 -2
  222. package/dist/playbooks/service-build/topology-query.js +1 -1
  223. package/dist/review/arb.d.ts +0 -2
  224. package/dist/review/arb.js +1 -1
  225. package/dist/review/order.d.ts +0 -1
  226. package/dist/review/order.js +1 -1
  227. package/dist/role/profiles.js +1 -1
  228. package/dist/rules.d.ts +1 -2
  229. package/dist/rules.js +1 -1
  230. package/dist/safety/confirm-gate.js +1 -1
  231. package/dist/safety/preview.js +1 -1
  232. package/dist/schema/call/base.d.ts +3372 -668
  233. package/dist/schema/call/base.js +1 -1
  234. package/dist/schema/call/handler.js +1 -1
  235. package/dist/schema/call/receipt.d.ts +28 -0
  236. package/dist/schema/call/receipt.js +1 -0
  237. package/dist/schema/call/semantic-customer-advice.spec.d.ts +1 -0
  238. package/dist/schema/call/semantic-customer-advice.spec.js +1 -0
  239. package/dist/schema/call/semantic.d.ts +5 -2
  240. package/dist/schema/call/semantic.js +1 -1
  241. package/dist/schema/call/treasury.js +1 -1
  242. package/dist/schema/common/index.js +1 -1
  243. package/dist/schema/evaluation/index.d.ts +289 -211
  244. package/dist/schema/evaluation/index.js +1 -1
  245. package/dist/schema/goal/index.d.ts +1 -1
  246. package/dist/schema/goal/planning.d.ts +2 -2
  247. package/dist/schema/index.d.ts +0 -1
  248. package/dist/schema/index.js +1 -1
  249. package/dist/schema/industry-pack/index.d.ts +1 -1
  250. package/dist/schema/keeper/index.d.ts +1 -1
  251. package/dist/schema/local/index.js +1 -1
  252. package/dist/schema/operations.d.ts +28 -10
  253. package/dist/schema/operations.js +1 -1
  254. package/dist/schema/persona/index.d.ts +24 -24
  255. package/dist/schema/query/bi.d.ts +629 -14
  256. package/dist/schema/query/bi.js +1 -1
  257. package/dist/schema/query/index.d.ts +9 -9
  258. package/dist/schema/query/index.js +1 -1
  259. package/dist/schema/schema-version.js +1 -1
  260. package/dist/schema/workspace/index.d.ts +2 -2
  261. package/dist/schema-query-impl/index.js +1 -1
  262. package/dist/schemas/account_operation.output.json +10 -10
  263. package/dist/schemas/account_operation.schema.json +3 -3
  264. package/dist/schemas/bridge_operation.output.json +10 -10
  265. package/dist/schemas/evaluation_operation.output.json +697 -169
  266. package/dist/schemas/evaluation_operation.schema.json +5 -434
  267. package/dist/schemas/index.json +1 -7
  268. package/dist/schemas/keeper_operation.output.json +10 -10
  269. package/dist/schemas/local_history_operation.output.json +10 -10
  270. package/dist/schemas/local_info_operation.output.json +10 -10
  271. package/dist/schemas/local_mark_operation.output.json +10 -10
  272. package/dist/schemas/messenger_operation.output.json +10 -10
  273. package/dist/schemas/monitor_events.output.json +10 -10
  274. package/dist/schemas/monitor_subscription.output.json +10 -10
  275. package/dist/schemas/onchain_events.output.json +11 -11
  276. package/dist/schemas/onchain_operations.output.json +6369 -3736
  277. package/dist/schemas/onchain_operations.schema.json +48 -48
  278. package/dist/schemas/onchain_operations_allocation.schema.json +5 -5
  279. package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
  280. package/dist/schemas/onchain_operations_contact.schema.json +2 -2
  281. package/dist/schemas/onchain_operations_demand.schema.json +2 -2
  282. package/dist/schemas/onchain_operations_machine.schema.json +2 -2
  283. package/dist/schemas/onchain_operations_order.schema.json +2 -2
  284. package/dist/schemas/onchain_operations_payment.schema.json +2 -2
  285. package/dist/schemas/onchain_operations_permission.schema.json +2 -2
  286. package/dist/schemas/onchain_operations_progress.schema.json +2 -2
  287. package/dist/schemas/onchain_operations_repository.schema.json +2 -2
  288. package/dist/schemas/onchain_operations_reward.schema.json +6 -6
  289. package/dist/schemas/onchain_operations_service.schema.json +8 -8
  290. package/dist/schemas/onchain_operations_treasury.schema.json +10 -10
  291. package/dist/schemas/onchain_table_data.output.json +78 -84
  292. package/dist/schemas/query_toolkit.output.json +1087 -254
  293. package/dist/schemas/query_toolkit.schema.json +65 -3
  294. package/dist/strategy/collectors.js +1 -1
  295. package/dist/strategy/metrics.js +1 -1
  296. package/dist/task/playbook.js +1 -1
  297. package/dist/tools/handlers/bridge.js +1 -1
  298. package/dist/tools/handlers/config.js +1 -1
  299. package/dist/tools/handlers/dispatch-expectations.d.ts +3 -0
  300. package/dist/tools/handlers/dispatch-expectations.js +1 -0
  301. package/dist/tools/handlers/evaluation.js +1 -1
  302. package/dist/tools/handlers/evaluation.spec.js +1 -1
  303. package/dist/tools/handlers/onchain.js +1 -1
  304. package/dist/tools/handlers/query.js +1 -1
  305. package/dist/tools/index.js +1 -1
  306. package/dist/tools/registry/evaluation.d.ts +2 -0
  307. package/dist/tools/registry/evaluation.js +1 -0
  308. package/dist/tools/registry/monitor.js +1 -1
  309. package/dist/tools/registry/query.js +1 -1
  310. package/dist/tools/shared.d.ts +0 -1
  311. package/dist/tools/shared.js +1 -1
  312. package/dist/tools/wrap.js +1 -1
  313. package/package.json +4 -3
  314. package/dist/customer/customer-advice.d.ts +0 -32
  315. package/dist/customer/customer-advice.js +0 -1
  316. package/dist/customer/info-puzzle.d.ts +0 -146
  317. package/dist/customer/info-puzzle.js +0 -1
  318. package/dist/customer/order-strategy.d.ts +0 -17
  319. package/dist/customer/order-strategy.js +0 -1
  320. package/dist/customer/preorder-compare.d.ts +0 -24
  321. package/dist/customer/preorder-compare.js +0 -1
  322. package/dist/customer/reminder-system.d.ts +0 -42
  323. package/dist/customer/reminder-system.js +0 -1
  324. package/dist/customer/risk-assessment.d.ts +0 -13
  325. package/dist/customer/risk-assessment.js +0 -1
  326. package/dist/evaluation/builtins/service-risk.d.ts +0 -7
  327. package/dist/evaluation/builtins/service-risk.js +0 -1
  328. package/dist/knowledge/trust-metrics.d.ts +0 -66
  329. package/dist/knowledge/trust-metrics.js +0 -1
  330. package/dist/schema/trust/index.d.ts +0 -334
  331. package/dist/schema/trust/index.js +0 -1
  332. package/dist/schemas/trust_score.output.json +0 -847
  333. package/dist/schemas/trust_score.schema.json +0 -364
  334. package/dist/tools/handlers/trust.d.ts +0 -16
  335. package/dist/tools/handlers/trust.js +0 -1
  336. package/dist/tools/registry/trust.d.ts +0 -2
  337. package/dist/tools/registry/trust.js +0 -1
@@ -1127,7 +1127,7 @@
1127
1127
  "type": "boolean"
1128
1128
  },
1129
1129
  "favor": {
1130
- "description": "Whether favorited (收藏)",
1130
+ "description": "Whether favorited",
1131
1131
  "type": "boolean"
1132
1132
  },
1133
1133
  "time": {
@@ -2643,7 +2643,7 @@
2643
2643
  "type": "string"
2644
2644
  }
2645
2645
  ],
2646
- "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
2646
+ "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. WARNING — BARE INTEGER MEANS SMALLEST UNIT, NOT TOKENS: formats (2)/(3) are NEVER interpreted as display tokens. For example amount=\"5\" or 5 means 5 raw units = 0.000000005 WOW (9 decimals) — NOT 5 WOW. When the user asks for a token amount, you MUST use display format (\"5WOW\", \"2USDC\"); a bare integer is only correct for unitless counts (e.g. stock quantity) or when you computed exact raw units yourself. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
2647
2647
  },
2648
2648
  {
2649
2649
  "type": "null"
@@ -4915,7 +4915,7 @@
4915
4915
  "type": "string"
4916
4916
  }
4917
4917
  ],
4918
- "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
4918
+ "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. WARNING — BARE INTEGER MEANS SMALLEST UNIT, NOT TOKENS: formats (2)/(3) are NEVER interpreted as display tokens. For example amount=\"5\" or 5 means 5 raw units = 0.000000005 WOW (9 decimals) — NOT 5 WOW. When the user asks for a token amount, you MUST use display format (\"5WOW\", \"2USDC\"); a bare integer is only correct for unitless counts (e.g. stock quantity) or when you computed exact raw units yourself. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
4919
4919
  },
4920
4920
  {
4921
4921
  "type": "null"
@@ -4948,7 +4948,7 @@
4948
4948
  "type": "object",
4949
4949
  "properties": {
4950
4950
  "for_object": {
4951
- "description": "Object this distribution belongs to (e.g. the order for a per-order allocation, recorded at creation). Auditors can query it to see the distribution's business context.",
4951
+ "description": "Binding anchor for this distribution. On an Allocation a SET for_object is ENFORCED at alloc(): every GuardIdentifier recipient submission must equal this address or the whole tx aborts (ERECIPIENT_NOT_FOR_OBJECT, code 15) — verify the anchor matches the intended recipient flow BEFORE create; payment_info is immutable afterwards. NULL/omitted = no anchor: nothing is enforced on-chain, recipient routing is entirely the creator's design. Also recorded at creation for auditors to query the distribution's business context.",
4952
4952
  "anyOf": [
4953
4953
  {
4954
4954
  "type": "string"
@@ -5332,7 +5332,7 @@
5332
5332
  "type": "string"
5333
5333
  }
5334
5334
  ],
5335
- "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
5335
+ "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. WARNING — BARE INTEGER MEANS SMALLEST UNIT, NOT TOKENS: formats (2)/(3) are NEVER interpreted as display tokens. For example amount=\"5\" or 5 means 5 raw units = 0.000000005 WOW (9 decimals) — NOT 5 WOW. When the user asks for a token amount, you MUST use display format (\"5WOW\", \"2USDC\"); a bare integer is only correct for unitless counts (e.g. stock quantity) or when you computed exact raw units yourself. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
5336
5336
  }
5337
5337
  },
5338
5338
  "required": [
@@ -7117,7 +7117,7 @@
7117
7117
  "type": "string"
7118
7118
  }
7119
7119
  ],
7120
- "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
7120
+ "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. WARNING — BARE INTEGER MEANS SMALLEST UNIT, NOT TOKENS: formats (2)/(3) are NEVER interpreted as display tokens. For example amount=\"5\" or 5 means 5 raw units = 0.000000005 WOW (9 decimals) — NOT 5 WOW. When the user asks for a token amount, you MUST use display format (\"5WOW\", \"2USDC\"); a bare integer is only correct for unitless counts (e.g. stock quantity) or when you computed exact raw units yourself. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
7121
7121
  }
7122
7122
  },
7123
7123
  "required": [
@@ -7169,7 +7169,7 @@
7169
7169
  "type": "object",
7170
7170
  "properties": {
7171
7171
  "for_object": {
7172
- "description": "Object this distribution belongs to (e.g. the order for a per-order allocation, recorded at creation). Auditors can query it to see the distribution's business context.",
7172
+ "description": "Binding anchor for this distribution. On an Allocation a SET for_object is ENFORCED at alloc(): every GuardIdentifier recipient submission must equal this address or the whole tx aborts (ERECIPIENT_NOT_FOR_OBJECT, code 15) — verify the anchor matches the intended recipient flow BEFORE create; payment_info is immutable afterwards. NULL/omitted = no anchor: nothing is enforced on-chain, recipient routing is entirely the creator's design. Also recorded at creation for auditors to query the distribution's business context.",
7173
7173
  "anyOf": [
7174
7174
  {
7175
7175
  "type": "string"
@@ -9259,7 +9259,7 @@
9259
9259
  "type": "string"
9260
9260
  }
9261
9261
  ],
9262
- "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
9262
+ "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. WARNING — BARE INTEGER MEANS SMALLEST UNIT, NOT TOKENS: formats (2)/(3) are NEVER interpreted as display tokens. For example amount=\"5\" or 5 means 5 raw units = 0.000000005 WOW (9 decimals) — NOT 5 WOW. When the user asks for a token amount, you MUST use display format (\"5WOW\", \"2USDC\"); a bare integer is only correct for unitless counts (e.g. stock quantity) or when you computed exact raw units yourself. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
9263
9263
  },
9264
9264
  {
9265
9265
  "type": "null"
@@ -10303,7 +10303,7 @@
10303
10303
  "type": "boolean"
10304
10304
  },
10305
10305
  "favor": {
10306
- "description": "Whether favorited (收藏)",
10306
+ "description": "Whether favorited",
10307
10307
  "type": "boolean"
10308
10308
  },
10309
10309
  "time": {
@@ -12951,7 +12951,7 @@
12951
12951
  "type": "boolean"
12952
12952
  },
12953
12953
  "favor": {
12954
- "description": "Whether favorited (收藏)",
12954
+ "description": "Whether favorited",
12955
12955
  "type": "boolean"
12956
12956
  },
12957
12957
  "time": {
@@ -15400,7 +15400,7 @@
15400
15400
  "type": "string"
15401
15401
  }
15402
15402
  ],
15403
- "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
15403
+ "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. WARNING — BARE INTEGER MEANS SMALLEST UNIT, NOT TOKENS: formats (2)/(3) are NEVER interpreted as display tokens. For example amount=\"5\" or 5 means 5 raw units = 0.000000005 WOW (9 decimals) — NOT 5 WOW. When the user asks for a token amount, you MUST use display format (\"5WOW\", \"2USDC\"); a bare integer is only correct for unitless counts (e.g. stock quantity) or when you computed exact raw units yourself. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
15404
15404
  },
15405
15405
  "token_type": {
15406
15406
  "type": "string",
@@ -15424,7 +15424,7 @@
15424
15424
  "type": "string"
15425
15425
  }
15426
15426
  ],
15427
- "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
15427
+ "description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05WOW\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is only within the safe integer range (±2^53); numbers outside it are REJECTED, use a numeric string instead. PRECISION RULE: for values exceeding 2^53 (9007199254740991), ALWAYS use format (1) or (2) — JS numbers lose integer precision silently and such inputs are blocked. Raw amounts must be plain non-negative integers; a decimal value without a token symbol (e.g. \"2.5\") is rejected — append the symbol (\"2.5WOW\") so the Fund Processing Layer converts it. WARNING — BARE INTEGER MEANS SMALLEST UNIT, NOT TOKENS: formats (2)/(3) are NEVER interpreted as display tokens. For example amount=\"5\" or 5 means 5 raw units = 0.000000005 WOW (9 decimals) — NOT 5 WOW. When the user asks for a token amount, you MUST use display format (\"5WOW\", \"2USDC\"); a bare integer is only correct for unitless counts (e.g. stock quantity) or when you computed exact raw units yourself. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer, where the token's FULL type, decimals and raw amount are always visible. MULTIPLE ISSUERS: several on-chain tokens may legally share the same symbol (e.g. multiple \"USDT\" coins). When a bare symbol matches more than one token, the operation is BLOCKED and every candidate is listed with full details (type, name, decimals, verified tag) — present the list to the USER and let them choose (they may answer by number), then re-issue with the chosen token's FULL type string in type_parameter; never guess an issuer from the bare symbol. MISSING TOKEN INFO: when a token's precision cannot be resolved, the operation is REFUSED (raw u64 included — amount magnitude could not be verified). Recovery: provide the token's FULL type in package::module::Name form in type_parameter (a bare symbol like \"USDT\" cannot be resolved), and verify the WOW network is correct. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
15428
15428
  },
15429
15429
  "payment": {
15430
15430
  "type": "string",
@@ -16172,7 +16172,7 @@
16172
16172
  "const": "service_panorama"
16173
16173
  },
16174
16174
  "result": {
16175
- "description": "ServicePanorama (base data + workflow graph + guards + supply chain + trust + BusinessReport + recent orders)."
16175
+ "description": "ServicePanorama (base data + workflow graph + guards + supply chain + BusinessReport + recent orders)."
16176
16176
  }
16177
16177
  },
16178
16178
  "required": [
@@ -18165,6 +18165,13 @@
18165
18165
  },
18166
18166
  "description": "Dynamic-table edges expanded."
18167
18167
  },
18168
+ "event_edges": {
18169
+ "description": "Event-derived history edges expanded (absent = events off — they are strictly opt-in).",
18170
+ "type": "array",
18171
+ "items": {
18172
+ "type": "string"
18173
+ }
18174
+ },
18168
18175
  "family_depths": {
18169
18176
  "description": "Per-family BFS depth caps.",
18170
18177
  "type": "object",
@@ -18398,9 +18405,10 @@
18398
18405
  "R",
18399
18406
  "M",
18400
18407
  "W",
18401
- "S"
18408
+ "S",
18409
+ "E"
18402
18410
  ],
18403
- "description": "F=forward field snapshot; R=global reverse index; W=workflow-derived; M=money-flow receipt; S=social/reputation."
18411
+ "description": "F=forward field snapshot; R=global reverse index; W=workflow-derived; M=money-flow receipt; S=social/reputation; E=event-derived history."
18404
18412
  },
18405
18413
  "from": {
18406
18414
  "type": "string"
@@ -18415,9 +18423,11 @@
18415
18423
  "bounded_exact",
18416
18424
  "bounded_window",
18417
18425
  "membership",
18418
- "derived"
18426
+ "derived",
18427
+ "event_full",
18428
+ "event_degraded"
18419
18429
  ],
18420
- "description": "Data-bound semantics: complete=full snapshot; bounded_exact=lossless bounded index; bounded_window=FIFO/ring <=5200 (counts are LOWER BOUNDS, see truncations); membership=current members only; derived=structurally produced."
18430
+ "description": "Data-bound semantics: complete=full snapshot; bounded_exact=lossless bounded index; bounded_window=FIFO/ring <=5200 (counts are LOWER BOUNDS, see truncations); membership=current members only; derived=structurally produced; event_full=complete append-only event history (truncated flag when page budget hit); event_degraded=event source that can be inherently incomplete."
18421
18431
  },
18422
18432
  "evidence": {
18423
18433
  "type": "string",
@@ -18626,7 +18636,7 @@
18626
18636
  "properties": {
18627
18637
  "id": {
18628
18638
  "type": "string",
18629
- "description": "Stable analyzer rule id (R1-R6 / A1-A3 / O1-O3 / G1-G3 / AC1-AC4; node bindings like SR1:<service>#<n>)."
18639
+ "description": "Stable analyzer rule id (R1-R7 / A1-A3 / O1-O3 / G1-G3 / AC1-AC4; node bindings like SR1:<service>#<n>)."
18630
18640
  },
18631
18641
  "kind": {
18632
18642
  "type": "string",
@@ -18643,12 +18653,13 @@
18643
18653
  "info",
18644
18654
  "low",
18645
18655
  "medium",
18646
- "high"
18656
+ "high",
18657
+ "critical"
18647
18658
  ]
18648
18659
  },
18649
- "titleZh": {
18660
+ "title": {
18650
18661
  "type": "string",
18651
- "description": "Chinese one-line finding title."
18662
+ "description": "One-line finding title (English in code; localized by the output layer)."
18652
18663
  },
18653
18664
  "path": {
18654
18665
  "type": "array",
@@ -18691,16 +18702,16 @@
18691
18702
  },
18692
18703
  "description": "Commercial roles this finding is relevant to."
18693
18704
  },
18694
- "detailZh": {
18705
+ "detail": {
18695
18706
  "type": "string",
18696
- "description": "Chinese objective detail (facts only)."
18707
+ "description": "Objective detail, facts only (English in code; localized by the output layer)."
18697
18708
  },
18698
- "suggestionZh": {
18709
+ "suggestion": {
18699
18710
  "type": "string",
18700
- "description": "Chinese structural suggestion (never a score)."
18711
+ "description": "Structural suggestion, never a score (English in code; localized by the output layer)."
18701
18712
  },
18702
18713
  "interest": {
18703
- "description": "G2 role-interest view payload — present only on IR:<role> findings (利益评估/操作路径/对手分析/风险提醒).",
18714
+ "description": "G2 role-interest view payload — present only on IR:<role> findings (stakes/actions/counterparties/risk reminders).",
18704
18715
  "type": "object",
18705
18716
  "properties": {
18706
18717
  "role": {
@@ -18773,7 +18784,7 @@
18773
18784
  ],
18774
18785
  "additionalProperties": false
18775
18786
  },
18776
- "description": "利益评估 — what the observer has at stake."
18787
+ "description": "Interest assessment — what the observer has at stake."
18777
18788
  },
18778
18789
  "actions": {
18779
18790
  "type": "array",
@@ -18949,7 +18960,7 @@
18949
18960
  ],
18950
18961
  "additionalProperties": false
18951
18962
  },
18952
- "description": "可行操作路径 — per in-flight order."
18963
+ "description": "Actionable paths — per in-flight order."
18953
18964
  },
18954
18965
  "arb_actions": {
18955
18966
  "type": "array",
@@ -19057,7 +19068,7 @@
19057
19068
  "neutral"
19058
19069
  ]
19059
19070
  },
19060
- "noteZh": {
19071
+ "note": {
19061
19072
  "type": "string"
19062
19073
  }
19063
19074
  },
@@ -19068,20 +19079,20 @@
19068
19079
  "their_prefer",
19069
19080
  "their_avoid",
19070
19081
  "alignment",
19071
- "noteZh"
19082
+ "note"
19072
19083
  ],
19073
19084
  "additionalProperties": false
19074
19085
  },
19075
- "description": "博弈对手分析 — structural tension from the single ROLE_INTERESTS table."
19086
+ "description": "Counterparty game analysis — structural tension from the single ROLE_INTERESTS table."
19076
19087
  },
19077
19088
  "risk_finding_ids": {
19078
19089
  "type": "array",
19079
19090
  "items": {
19080
19091
  "type": "string"
19081
19092
  },
19082
- "description": "风险提醒 — ids of role-relevant risk findings in the same result."
19093
+ "description": "Risk reminders — ids of role-relevant risk findings in the same result."
19083
19094
  },
19084
- "summaryZh": {
19095
+ "summary": {
19085
19096
  "type": "string"
19086
19097
  }
19087
19098
  },
@@ -19093,7 +19104,7 @@
19093
19104
  "arb_actions",
19094
19105
  "counterparties",
19095
19106
  "risk_finding_ids",
19096
- "summaryZh"
19107
+ "summary"
19097
19108
  ],
19098
19109
  "additionalProperties": false
19099
19110
  }
@@ -19102,259 +19113,1081 @@
19102
19113
  "id",
19103
19114
  "kind",
19104
19115
  "severity",
19105
- "titleZh",
19116
+ "title",
19106
19117
  "path",
19107
19118
  "confidence",
19108
19119
  "roles",
19109
- "detailZh",
19110
- "suggestionZh"
19120
+ "detail",
19121
+ "suggestion"
19111
19122
  ],
19112
19123
  "additionalProperties": false
19113
19124
  },
19114
19125
  "description": "R/A/O/G analyzer findings (empty when analyze=false)."
19115
19126
  },
19116
- "role_interest": {
19117
- "description": "G2 role interest view (same payload as the IR:<role> finding): stakes / node-game actions / arbitration moves / counterparty tensions / risk reminders for interest_role's observer.",
19127
+ "evaluation": {
19128
+ "description": "Task 16 graph-facts evaluation projection over the SAME expansion (trust/risk scored from the facts this topology already gathered) — absent when analyze=false or the evaluation failed (a data gap note explains why).",
19118
19129
  "type": "object",
19119
19130
  "properties": {
19120
- "role": {
19121
- "type": "string",
19122
- "description": "The CommercialRole whose interest view this is."
19123
- },
19124
- "observer": {
19131
+ "target": {
19125
19132
  "type": "string",
19126
- "description": "The EOA the view is projected for."
19133
+ "description": "Evaluated service address (resolved from service_id)."
19127
19134
  },
19128
- "drive": {
19129
- "description": "Persona driving signals that re-anchored scoring.",
19135
+ "trust": {
19130
19136
  "type": "object",
19131
19137
  "properties": {
19132
- "risk_appetite": {
19138
+ "evaluation_id": {
19139
+ "type": "string"
19140
+ },
19141
+ "total": {
19142
+ "type": "integer",
19143
+ "minimum": 0,
19144
+ "maximum": 100
19145
+ },
19146
+ "level": {
19133
19147
  "type": "string",
19134
19148
  "enum": [
19135
- "conservative",
19136
- "balanced",
19137
- "aggressive"
19149
+ "low",
19150
+ "medium_low",
19151
+ "medium_high",
19152
+ "high"
19138
19153
  ]
19139
19154
  },
19140
- "requirements": {
19155
+ "breakdown": {
19141
19156
  "type": "array",
19142
19157
  "items": {
19143
- "type": "string"
19144
- }
19145
- }
19146
- },
19147
- "additionalProperties": false
19148
- },
19149
- "stakes": {
19150
- "type": "array",
19151
- "items": {
19152
- "type": "object",
19153
- "properties": {
19154
- "object": {
19155
- "type": "string"
19156
- },
19157
- "object_type": {
19158
- "type": "string"
19159
- },
19160
- "positions": {
19161
- "type": "array",
19162
- "items": {
19163
- "type": "string"
19164
- }
19165
- },
19166
- "amount": {
19167
- "type": "string"
19168
- },
19169
- "coin_type": {
19170
- "type": "string"
19171
- },
19172
- "state": {
19173
- "type": "string"
19174
- },
19175
- "evidence": {
19176
- "type": "array",
19177
- "items": {
19178
- "type": "string"
19179
- }
19180
- }
19181
- },
19182
- "required": [
19183
- "object",
19184
- "object_type",
19185
- "positions",
19186
- "evidence"
19187
- ],
19188
- "additionalProperties": false
19189
- },
19190
- "description": "利益评估 — what the observer has at stake."
19191
- },
19192
- "actions": {
19193
- "type": "array",
19194
- "items": {
19195
- "type": "object",
19196
- "properties": {
19197
- "order": {
19198
- "type": "string"
19199
- },
19200
- "machine": {
19201
- "type": "string"
19202
- },
19203
- "current_node": {
19204
- "type": "string"
19205
- },
19206
- "advice": {
19207
19158
  "type": "object",
19208
19159
  "properties": {
19209
- "current_node": {
19160
+ "rule_id": {
19210
19161
  "type": "string"
19211
19162
  },
19212
- "perspective": {
19163
+ "dimension": {
19213
19164
  "type": "string"
19214
19165
  },
19215
- "actions": {
19166
+ "score": {
19167
+ "type": "number"
19168
+ },
19169
+ "weight": {
19170
+ "type": "number"
19171
+ },
19172
+ "reason": {
19173
+ "type": "string"
19174
+ },
19175
+ "matched": {
19176
+ "type": "array",
19177
+ "items": {
19178
+ "type": "string"
19179
+ }
19180
+ },
19181
+ "mismatched": {
19182
+ "type": "array",
19183
+ "items": {
19184
+ "type": "string"
19185
+ }
19186
+ },
19187
+ "finding_refs": {
19188
+ "description": "Structural findings this risk dimension deducted for — resolve graph-aware where-lines from these ids.",
19216
19189
  "type": "array",
19217
19190
  "items": {
19218
19191
  "type": "object",
19219
19192
  "properties": {
19220
- "forward": {
19221
- "type": "string"
19222
- },
19223
- "to_node": {
19224
- "type": "string"
19225
- },
19226
- "execution_path": {
19227
- "type": "string"
19228
- },
19229
- "guard": {
19230
- "type": "string"
19231
- },
19232
- "favorability": {
19233
- "type": "number"
19234
- },
19235
- "gain_score": {
19236
- "type": "number"
19237
- },
19238
- "risk_score": {
19239
- "type": "number"
19240
- },
19241
- "is_optimal": {
19242
- "type": "boolean"
19193
+ "id": {
19194
+ "type": "string",
19195
+ "description": "Stable finding registry id (e.g. R4:<machine>:<pair>)."
19243
19196
  },
19244
- "payoff_note": {
19245
- "type": "string"
19197
+ "title": {
19198
+ "type": "string",
19199
+ "description": "Human finding title."
19246
19200
  },
19247
- "risk": {
19201
+ "severity": {
19248
19202
  "type": "string",
19249
- "enum": [
19250
- "low",
19251
- "medium",
19252
- "high"
19253
- ]
19203
+ "description": "Analyzer severity (critical/high/medium/low)."
19254
19204
  }
19255
19205
  },
19256
19206
  "required": [
19257
- "forward",
19258
- "to_node",
19259
- "execution_path",
19260
- "favorability",
19261
- "gain_score",
19262
- "risk_score",
19263
- "is_optimal",
19264
- "payoff_note",
19265
- "risk"
19207
+ "id",
19208
+ "title",
19209
+ "severity"
19266
19210
  ],
19267
19211
  "additionalProperties": false
19268
19212
  }
19269
19213
  },
19270
- "cooperation": {
19271
- "type": "object",
19272
- "properties": {
19273
- "threshold": {
19274
- "type": "number"
19275
- },
19276
- "my_weight": {
19277
- "type": "number"
19278
- },
19279
- "needed_from_others": {
19280
- "type": "number"
19281
- },
19282
- "collaborators": {
19283
- "type": "array",
19284
- "items": {
19285
- "type": "string"
19286
- }
19287
- },
19288
- "allocation_note": {
19289
- "type": "string"
19290
- }
19291
- },
19292
- "required": [
19293
- "threshold",
19294
- "my_weight",
19295
- "needed_from_others",
19296
- "collaborators"
19297
- ],
19298
- "additionalProperties": false
19299
- },
19300
- "value_at_stake": {
19301
- "type": "string"
19214
+ "red_flag": {
19215
+ "type": "boolean"
19216
+ }
19217
+ },
19218
+ "required": [
19219
+ "rule_id",
19220
+ "dimension",
19221
+ "score",
19222
+ "weight"
19223
+ ],
19224
+ "additionalProperties": false
19225
+ }
19226
+ },
19227
+ "red_flags": {
19228
+ "type": "array",
19229
+ "items": {
19230
+ "type": "string"
19231
+ }
19232
+ },
19233
+ "blocked": {
19234
+ "type": "boolean"
19235
+ },
19236
+ "trace": {
19237
+ "type": "array",
19238
+ "items": {
19239
+ "type": "object",
19240
+ "properties": {
19241
+ "kind": {
19242
+ "type": "string",
19243
+ "enum": [
19244
+ "data_source",
19245
+ "rule",
19246
+ "override"
19247
+ ]
19302
19248
  },
19303
- "risk_exposure": {
19249
+ "id": {
19304
19250
  "type": "string"
19305
19251
  },
19306
- "summary": {
19252
+ "detail": {
19307
19253
  "type": "string"
19308
19254
  }
19309
19255
  },
19310
19256
  "required": [
19311
- "current_node",
19312
- "perspective",
19313
- "actions",
19314
- "summary"
19257
+ "kind",
19258
+ "id",
19259
+ "detail"
19315
19260
  ],
19316
- "additionalProperties": false,
19317
- "description": "node-game ranking — the single action authority."
19318
- },
19319
- "recommended_calls": {
19320
- "type": "array",
19321
- "items": {
19322
- "type": "object",
19323
- "properties": {
19324
- "forward": {
19325
- "type": "string"
19326
- },
19327
- "call": {}
19328
- },
19329
- "required": [
19330
- "forward",
19331
- "call"
19332
- ],
19333
- "additionalProperties": false
19334
- }
19335
- },
19336
- "blocked_forwards": {
19337
- "type": "array",
19338
- "items": {
19339
- "type": "object",
19340
- "properties": {
19341
- "forward": {
19342
- "type": "string"
19343
- },
19344
- "reason": {
19345
- "type": "string"
19346
- }
19347
- },
19348
- "required": [
19349
- "forward",
19350
- "reason"
19351
- ],
19352
- "additionalProperties": false
19353
- }
19261
+ "additionalProperties": false
19354
19262
  }
19355
19263
  },
19356
- "required": [
19357
- "order",
19264
+ "summary": {
19265
+ "type": "string"
19266
+ },
19267
+ "unverified": {
19268
+ "description": "Dimension rule ids excluded from the weighted aggregation as unverifiable (data gaps) — never scored as default-low.",
19269
+ "type": "array",
19270
+ "items": {
19271
+ "type": "string"
19272
+ }
19273
+ },
19274
+ "criterionScores": {
19275
+ "description": "Per-criterion weighted breakdown (producer/consumer perspective-aware kernel union).",
19276
+ "type": "array",
19277
+ "items": {
19278
+ "type": "object",
19279
+ "properties": {
19280
+ "name": {
19281
+ "type": "string"
19282
+ },
19283
+ "score": {
19284
+ "type": "number"
19285
+ },
19286
+ "weight": {
19287
+ "type": "number"
19288
+ },
19289
+ "rationale": {
19290
+ "type": "string"
19291
+ }
19292
+ },
19293
+ "required": [
19294
+ "name",
19295
+ "score",
19296
+ "weight",
19297
+ "rationale"
19298
+ ],
19299
+ "additionalProperties": false
19300
+ }
19301
+ },
19302
+ "findings": {
19303
+ "description": "Negative-evidence findings (richer than red_flags strings).",
19304
+ "type": "array",
19305
+ "items": {
19306
+ "type": "object",
19307
+ "properties": {
19308
+ "criterion": {
19309
+ "type": "string"
19310
+ },
19311
+ "severity": {
19312
+ "type": "string",
19313
+ "enum": [
19314
+ "critical",
19315
+ "warning",
19316
+ "info"
19317
+ ]
19318
+ },
19319
+ "message": {
19320
+ "type": "string"
19321
+ },
19322
+ "deduction": {
19323
+ "type": "number"
19324
+ }
19325
+ },
19326
+ "required": [
19327
+ "criterion",
19328
+ "severity",
19329
+ "message",
19330
+ "deduction"
19331
+ ],
19332
+ "additionalProperties": false
19333
+ }
19334
+ },
19335
+ "strengths": {
19336
+ "description": "Positive-evidence strengths.",
19337
+ "type": "array",
19338
+ "items": {
19339
+ "type": "string"
19340
+ }
19341
+ },
19342
+ "needsLlm": {
19343
+ "description": "True when this evaluation requires LLM processing (worth_buying/value).",
19344
+ "type": "boolean"
19345
+ },
19346
+ "llmPrompt": {
19347
+ "description": "When needsLlm=true, the prompt to hand to the caller LLM.",
19348
+ "type": "string"
19349
+ }
19350
+ },
19351
+ "required": [
19352
+ "evaluation_id",
19353
+ "total",
19354
+ "level",
19355
+ "breakdown",
19356
+ "red_flags",
19357
+ "blocked",
19358
+ "trace",
19359
+ "summary"
19360
+ ],
19361
+ "additionalProperties": false,
19362
+ "description": "Trust evaluation over the graph facts (arbitration/reviews/fulfillment/fund_safety/transparency)."
19363
+ },
19364
+ "risk": {
19365
+ "type": "object",
19366
+ "properties": {
19367
+ "evaluation_id": {
19368
+ "type": "string"
19369
+ },
19370
+ "total": {
19371
+ "type": "integer",
19372
+ "minimum": 0,
19373
+ "maximum": 100
19374
+ },
19375
+ "level": {
19376
+ "type": "string",
19377
+ "enum": [
19378
+ "low",
19379
+ "medium_low",
19380
+ "medium_high",
19381
+ "high"
19382
+ ]
19383
+ },
19384
+ "breakdown": {
19385
+ "type": "array",
19386
+ "items": {
19387
+ "type": "object",
19388
+ "properties": {
19389
+ "rule_id": {
19390
+ "type": "string"
19391
+ },
19392
+ "dimension": {
19393
+ "type": "string"
19394
+ },
19395
+ "score": {
19396
+ "type": "number"
19397
+ },
19398
+ "weight": {
19399
+ "type": "number"
19400
+ },
19401
+ "reason": {
19402
+ "type": "string"
19403
+ },
19404
+ "matched": {
19405
+ "type": "array",
19406
+ "items": {
19407
+ "type": "string"
19408
+ }
19409
+ },
19410
+ "mismatched": {
19411
+ "type": "array",
19412
+ "items": {
19413
+ "type": "string"
19414
+ }
19415
+ },
19416
+ "finding_refs": {
19417
+ "description": "Structural findings this risk dimension deducted for — resolve graph-aware where-lines from these ids.",
19418
+ "type": "array",
19419
+ "items": {
19420
+ "type": "object",
19421
+ "properties": {
19422
+ "id": {
19423
+ "type": "string",
19424
+ "description": "Stable finding registry id (e.g. R4:<machine>:<pair>)."
19425
+ },
19426
+ "title": {
19427
+ "type": "string",
19428
+ "description": "Human finding title."
19429
+ },
19430
+ "severity": {
19431
+ "type": "string",
19432
+ "description": "Analyzer severity (critical/high/medium/low)."
19433
+ }
19434
+ },
19435
+ "required": [
19436
+ "id",
19437
+ "title",
19438
+ "severity"
19439
+ ],
19440
+ "additionalProperties": false
19441
+ }
19442
+ },
19443
+ "red_flag": {
19444
+ "type": "boolean"
19445
+ }
19446
+ },
19447
+ "required": [
19448
+ "rule_id",
19449
+ "dimension",
19450
+ "score",
19451
+ "weight"
19452
+ ],
19453
+ "additionalProperties": false
19454
+ }
19455
+ },
19456
+ "red_flags": {
19457
+ "type": "array",
19458
+ "items": {
19459
+ "type": "string"
19460
+ }
19461
+ },
19462
+ "blocked": {
19463
+ "type": "boolean"
19464
+ },
19465
+ "trace": {
19466
+ "type": "array",
19467
+ "items": {
19468
+ "type": "object",
19469
+ "properties": {
19470
+ "kind": {
19471
+ "type": "string",
19472
+ "enum": [
19473
+ "data_source",
19474
+ "rule",
19475
+ "override"
19476
+ ]
19477
+ },
19478
+ "id": {
19479
+ "type": "string"
19480
+ },
19481
+ "detail": {
19482
+ "type": "string"
19483
+ }
19484
+ },
19485
+ "required": [
19486
+ "kind",
19487
+ "id",
19488
+ "detail"
19489
+ ],
19490
+ "additionalProperties": false
19491
+ }
19492
+ },
19493
+ "summary": {
19494
+ "type": "string"
19495
+ },
19496
+ "unverified": {
19497
+ "description": "Dimension rule ids excluded from the weighted aggregation as unverifiable (data gaps) — never scored as default-low.",
19498
+ "type": "array",
19499
+ "items": {
19500
+ "type": "string"
19501
+ }
19502
+ },
19503
+ "criterionScores": {
19504
+ "description": "Per-criterion weighted breakdown (producer/consumer perspective-aware kernel union).",
19505
+ "type": "array",
19506
+ "items": {
19507
+ "type": "object",
19508
+ "properties": {
19509
+ "name": {
19510
+ "type": "string"
19511
+ },
19512
+ "score": {
19513
+ "type": "number"
19514
+ },
19515
+ "weight": {
19516
+ "type": "number"
19517
+ },
19518
+ "rationale": {
19519
+ "type": "string"
19520
+ }
19521
+ },
19522
+ "required": [
19523
+ "name",
19524
+ "score",
19525
+ "weight",
19526
+ "rationale"
19527
+ ],
19528
+ "additionalProperties": false
19529
+ }
19530
+ },
19531
+ "findings": {
19532
+ "description": "Negative-evidence findings (richer than red_flags strings).",
19533
+ "type": "array",
19534
+ "items": {
19535
+ "type": "object",
19536
+ "properties": {
19537
+ "criterion": {
19538
+ "type": "string"
19539
+ },
19540
+ "severity": {
19541
+ "type": "string",
19542
+ "enum": [
19543
+ "critical",
19544
+ "warning",
19545
+ "info"
19546
+ ]
19547
+ },
19548
+ "message": {
19549
+ "type": "string"
19550
+ },
19551
+ "deduction": {
19552
+ "type": "number"
19553
+ }
19554
+ },
19555
+ "required": [
19556
+ "criterion",
19557
+ "severity",
19558
+ "message",
19559
+ "deduction"
19560
+ ],
19561
+ "additionalProperties": false
19562
+ }
19563
+ },
19564
+ "strengths": {
19565
+ "description": "Positive-evidence strengths.",
19566
+ "type": "array",
19567
+ "items": {
19568
+ "type": "string"
19569
+ }
19570
+ },
19571
+ "needsLlm": {
19572
+ "description": "True when this evaluation requires LLM processing (worth_buying/value).",
19573
+ "type": "boolean"
19574
+ },
19575
+ "llmPrompt": {
19576
+ "description": "When needsLlm=true, the prompt to hand to the caller LLM.",
19577
+ "type": "string"
19578
+ }
19579
+ },
19580
+ "required": [
19581
+ "evaluation_id",
19582
+ "total",
19583
+ "level",
19584
+ "breakdown",
19585
+ "red_flags",
19586
+ "blocked",
19587
+ "trace",
19588
+ "summary"
19589
+ ],
19590
+ "additionalProperties": false,
19591
+ "description": "Risk evaluation over the graph facts (workflow/fund/trust/behavior)."
19592
+ },
19593
+ "completeness": {
19594
+ "type": "number",
19595
+ "description": "Material coverage of the required fact slots (0-100)."
19596
+ },
19597
+ "coverage": {
19598
+ "type": "array",
19599
+ "items": {
19600
+ "type": "object",
19601
+ "properties": {
19602
+ "slot": {
19603
+ "type": "string",
19604
+ "description": "Slot key (e.g. arbitration / reviews)."
19605
+ },
19606
+ "label": {
19607
+ "type": "string",
19608
+ "description": "Human-readable slot name."
19609
+ },
19610
+ "gloss": {
19611
+ "type": "string",
19612
+ "description": "One-sentence plain explanation of the evidence this slot covers."
19613
+ },
19614
+ "required": {
19615
+ "type": "boolean",
19616
+ "description": "Whether this slot is required for a material evaluation."
19617
+ },
19618
+ "state": {
19619
+ "type": "string",
19620
+ "enum": [
19621
+ "present",
19622
+ "empty",
19623
+ "gap"
19624
+ ],
19625
+ "description": "present = scored material; empty = verified absence; gap = unverifiable."
19626
+ },
19627
+ "facts": {
19628
+ "type": "array",
19629
+ "items": {
19630
+ "type": "string"
19631
+ },
19632
+ "description": "Fact keys answering this slot (empty for the root snapshot slot)."
19633
+ }
19634
+ },
19635
+ "required": [
19636
+ "slot",
19637
+ "label",
19638
+ "gloss",
19639
+ "required",
19640
+ "state",
19641
+ "facts"
19642
+ ],
19643
+ "additionalProperties": false
19644
+ },
19645
+ "description": "Per-slot coverage of the facts projection."
19646
+ },
19647
+ "unverified": {
19648
+ "type": "array",
19649
+ "items": {
19650
+ "type": "string"
19651
+ },
19652
+ "description": "Dimension rule ids excluded as unverifiable (data gaps) — never scored as default-low."
19653
+ },
19654
+ "vocabulary": {
19655
+ "type": "object",
19656
+ "properties": {
19657
+ "present": {
19658
+ "type": "string"
19659
+ },
19660
+ "empty": {
19661
+ "type": "string"
19662
+ },
19663
+ "gap": {
19664
+ "type": "string"
19665
+ },
19666
+ "unverified": {
19667
+ "type": "string"
19668
+ },
19669
+ "completeness": {
19670
+ "type": "string"
19671
+ }
19672
+ },
19673
+ "required": [
19674
+ "present",
19675
+ "empty",
19676
+ "gap",
19677
+ "unverified",
19678
+ "completeness"
19679
+ ],
19680
+ "additionalProperties": false,
19681
+ "description": "One-sentence canonical glosses of the coverage vocabulary to quote verbatim."
19682
+ }
19683
+ },
19684
+ "required": [
19685
+ "target",
19686
+ "trust",
19687
+ "risk",
19688
+ "completeness",
19689
+ "coverage",
19690
+ "unverified",
19691
+ "vocabulary"
19692
+ ],
19693
+ "additionalProperties": false
19694
+ },
19695
+ "facets": {
19696
+ "description": "The ten-facet evaluation surface over the SAME expansion: ordered persona-lensed facet cards referencing the evaluation breakdown rows (business facets carry no scores), with structured money and graph-aware names. Absent under the same conditions as evaluation.",
19697
+ "type": "object",
19698
+ "properties": {
19699
+ "profile": {
19700
+ "type": "object",
19701
+ "properties": {
19702
+ "role": {
19703
+ "type": "string"
19704
+ },
19705
+ "industry": {
19706
+ "type": "string"
19707
+ },
19708
+ "persona_applied": {
19709
+ "type": "boolean"
19710
+ },
19711
+ "sources": {
19712
+ "type": "array",
19713
+ "items": {
19714
+ "type": "string"
19715
+ },
19716
+ "description": "Ordered provenance of every lens layer contributing to the facet profile."
19717
+ }
19718
+ },
19719
+ "required": [
19720
+ "persona_applied",
19721
+ "sources"
19722
+ ],
19723
+ "additionalProperties": false
19724
+ },
19725
+ "items": {
19726
+ "type": "array",
19727
+ "items": {
19728
+ "type": "object",
19729
+ "properties": {
19730
+ "id": {
19731
+ "type": "string",
19732
+ "description": "One of the ten facet catalog ids."
19733
+ },
19734
+ "label": {
19735
+ "type": "string"
19736
+ },
19737
+ "question": {
19738
+ "type": "string"
19739
+ },
19740
+ "state": {
19741
+ "type": "string",
19742
+ "enum": [
19743
+ "present",
19744
+ "empty",
19745
+ "gap"
19746
+ ],
19747
+ "description": "present=material evidence; empty=verified absence; gap=unverifiable (excluded from scoring, never a low score)."
19748
+ },
19749
+ "scores": {
19750
+ "description": "Only the nine trust/risk rule facets carry score refs; business facets are score-free.",
19751
+ "type": "array",
19752
+ "items": {
19753
+ "type": "object",
19754
+ "properties": {
19755
+ "evaluation": {
19756
+ "type": "string",
19757
+ "enum": [
19758
+ "trust",
19759
+ "risk"
19760
+ ]
19761
+ },
19762
+ "rule_id": {
19763
+ "type": "string",
19764
+ "description": "Reference to evaluation.trust/risk.breakdown row — the engine stays the only score authority."
19765
+ }
19766
+ },
19767
+ "required": [
19768
+ "evaluation",
19769
+ "rule_id"
19770
+ ],
19771
+ "additionalProperties": false
19772
+ }
19773
+ },
19774
+ "signals": {
19775
+ "type": "array",
19776
+ "items": {
19777
+ "type": "object",
19778
+ "properties": {
19779
+ "key": {
19780
+ "type": "string"
19781
+ },
19782
+ "label": {
19783
+ "type": "string"
19784
+ },
19785
+ "state": {
19786
+ "type": "string",
19787
+ "enum": [
19788
+ "configured",
19789
+ "missing",
19790
+ "unknown"
19791
+ ]
19792
+ },
19793
+ "detail": {
19794
+ "type": "string"
19795
+ },
19796
+ "gloss": {
19797
+ "description": "One-sentence plain explanation of what this on-chain configuration signal means.",
19798
+ "type": "string"
19799
+ }
19800
+ },
19801
+ "required": [
19802
+ "key",
19803
+ "label",
19804
+ "state"
19805
+ ],
19806
+ "additionalProperties": false
19807
+ }
19808
+ },
19809
+ "amounts": {
19810
+ "type": "array",
19811
+ "items": {
19812
+ "type": "object",
19813
+ "properties": {
19814
+ "key": {
19815
+ "type": "string"
19816
+ },
19817
+ "label": {
19818
+ "type": "string"
19819
+ },
19820
+ "money": {
19821
+ "type": "object",
19822
+ "properties": {
19823
+ "raw": {
19824
+ "type": "string",
19825
+ "description": "Raw on-chain value in smallest units (always preserved)."
19826
+ },
19827
+ "coin_type": {
19828
+ "description": "Full token type tag (e.g. 0x2::wow::WOW).",
19829
+ "type": "string"
19830
+ },
19831
+ "display": {
19832
+ "description": "Unit value when precision is known (e.g. 2.00); conversion is never guessed.",
19833
+ "type": "string"
19834
+ },
19835
+ "symbol": {
19836
+ "description": "Token symbol when resolved (e.g. WOW).",
19837
+ "type": "string"
19838
+ },
19839
+ "decimals": {
19840
+ "description": "Token decimals when resolved — the precision reminder.",
19841
+ "type": "number"
19842
+ },
19843
+ "precision_known": {
19844
+ "type": "boolean",
19845
+ "description": "false → display is absent/raw and decimals were never guessed."
19846
+ },
19847
+ "tip": {
19848
+ "description": "Precision/address explanation when precision_known is false.",
19849
+ "type": "string"
19850
+ }
19851
+ },
19852
+ "required": [
19853
+ "raw",
19854
+ "precision_known"
19855
+ ],
19856
+ "additionalProperties": false
19857
+ }
19858
+ },
19859
+ "required": [
19860
+ "key",
19861
+ "label",
19862
+ "money"
19863
+ ],
19864
+ "additionalProperties": false
19865
+ }
19866
+ },
19867
+ "graph": {
19868
+ "type": "object",
19869
+ "properties": {
19870
+ "kind": {
19871
+ "type": "string",
19872
+ "enum": [
19873
+ "workflow",
19874
+ "fund_flow",
19875
+ "supply_chain"
19876
+ ]
19877
+ },
19878
+ "summary": {
19879
+ "type": "string"
19880
+ },
19881
+ "refs": {
19882
+ "type": "array",
19883
+ "items": {
19884
+ "type": "object",
19885
+ "properties": {
19886
+ "id": {
19887
+ "type": "string"
19888
+ },
19889
+ "label": {
19890
+ "type": "string",
19891
+ "description": "Graph-aware resolved name (object/machine/workflow node — never a raw ::node:: id)."
19892
+ },
19893
+ "full": {
19894
+ "description": "Verbatim value (e.g. full Move type tag) when label is a humanization.",
19895
+ "type": "string"
19896
+ },
19897
+ "role": {
19898
+ "type": "string"
19899
+ }
19900
+ },
19901
+ "required": [
19902
+ "id",
19903
+ "label"
19904
+ ],
19905
+ "additionalProperties": false
19906
+ }
19907
+ }
19908
+ },
19909
+ "required": [
19910
+ "kind",
19911
+ "summary",
19912
+ "refs"
19913
+ ],
19914
+ "additionalProperties": false
19915
+ },
19916
+ "evidence": {
19917
+ "type": "array",
19918
+ "items": {
19919
+ "type": "string"
19920
+ },
19921
+ "description": "Human-readable evidence; money placeholders are replaced with display values."
19922
+ },
19923
+ "gap_reason": {
19924
+ "type": "string"
19925
+ },
19926
+ "threshold": {
19927
+ "description": "Card-highlight hint from the persona/request lens — never an engine gate.",
19928
+ "type": "number"
19929
+ }
19930
+ },
19931
+ "required": [
19932
+ "id",
19933
+ "label",
19934
+ "question",
19935
+ "state",
19936
+ "evidence"
19937
+ ],
19938
+ "additionalProperties": false
19939
+ },
19940
+ "description": "Ten catalog facets in resolved profile order; hidden facets and the ungated my_stakes facet are omitted."
19941
+ }
19942
+ },
19943
+ "required": [
19944
+ "profile",
19945
+ "items"
19946
+ ],
19947
+ "additionalProperties": false
19948
+ },
19949
+ "role_interest": {
19950
+ "description": "G2 role interest view (same payload as the IR:<role> finding): stakes / node-game actions / arbitration moves / counterparty tensions / risk reminders for interest_role's observer.",
19951
+ "type": "object",
19952
+ "properties": {
19953
+ "role": {
19954
+ "type": "string",
19955
+ "description": "The CommercialRole whose interest view this is."
19956
+ },
19957
+ "observer": {
19958
+ "type": "string",
19959
+ "description": "The EOA the view is projected for."
19960
+ },
19961
+ "drive": {
19962
+ "description": "Persona driving signals that re-anchored scoring.",
19963
+ "type": "object",
19964
+ "properties": {
19965
+ "risk_appetite": {
19966
+ "type": "string",
19967
+ "enum": [
19968
+ "conservative",
19969
+ "balanced",
19970
+ "aggressive"
19971
+ ]
19972
+ },
19973
+ "requirements": {
19974
+ "type": "array",
19975
+ "items": {
19976
+ "type": "string"
19977
+ }
19978
+ }
19979
+ },
19980
+ "additionalProperties": false
19981
+ },
19982
+ "stakes": {
19983
+ "type": "array",
19984
+ "items": {
19985
+ "type": "object",
19986
+ "properties": {
19987
+ "object": {
19988
+ "type": "string"
19989
+ },
19990
+ "object_type": {
19991
+ "type": "string"
19992
+ },
19993
+ "positions": {
19994
+ "type": "array",
19995
+ "items": {
19996
+ "type": "string"
19997
+ }
19998
+ },
19999
+ "amount": {
20000
+ "type": "string"
20001
+ },
20002
+ "coin_type": {
20003
+ "type": "string"
20004
+ },
20005
+ "state": {
20006
+ "type": "string"
20007
+ },
20008
+ "evidence": {
20009
+ "type": "array",
20010
+ "items": {
20011
+ "type": "string"
20012
+ }
20013
+ }
20014
+ },
20015
+ "required": [
20016
+ "object",
20017
+ "object_type",
20018
+ "positions",
20019
+ "evidence"
20020
+ ],
20021
+ "additionalProperties": false
20022
+ },
20023
+ "description": "Interest assessment — what the observer has at stake."
20024
+ },
20025
+ "actions": {
20026
+ "type": "array",
20027
+ "items": {
20028
+ "type": "object",
20029
+ "properties": {
20030
+ "order": {
20031
+ "type": "string"
20032
+ },
20033
+ "machine": {
20034
+ "type": "string"
20035
+ },
20036
+ "current_node": {
20037
+ "type": "string"
20038
+ },
20039
+ "advice": {
20040
+ "type": "object",
20041
+ "properties": {
20042
+ "current_node": {
20043
+ "type": "string"
20044
+ },
20045
+ "perspective": {
20046
+ "type": "string"
20047
+ },
20048
+ "actions": {
20049
+ "type": "array",
20050
+ "items": {
20051
+ "type": "object",
20052
+ "properties": {
20053
+ "forward": {
20054
+ "type": "string"
20055
+ },
20056
+ "to_node": {
20057
+ "type": "string"
20058
+ },
20059
+ "execution_path": {
20060
+ "type": "string"
20061
+ },
20062
+ "guard": {
20063
+ "type": "string"
20064
+ },
20065
+ "favorability": {
20066
+ "type": "number"
20067
+ },
20068
+ "gain_score": {
20069
+ "type": "number"
20070
+ },
20071
+ "risk_score": {
20072
+ "type": "number"
20073
+ },
20074
+ "is_optimal": {
20075
+ "type": "boolean"
20076
+ },
20077
+ "payoff_note": {
20078
+ "type": "string"
20079
+ },
20080
+ "risk": {
20081
+ "type": "string",
20082
+ "enum": [
20083
+ "low",
20084
+ "medium",
20085
+ "high"
20086
+ ]
20087
+ }
20088
+ },
20089
+ "required": [
20090
+ "forward",
20091
+ "to_node",
20092
+ "execution_path",
20093
+ "favorability",
20094
+ "gain_score",
20095
+ "risk_score",
20096
+ "is_optimal",
20097
+ "payoff_note",
20098
+ "risk"
20099
+ ],
20100
+ "additionalProperties": false
20101
+ }
20102
+ },
20103
+ "cooperation": {
20104
+ "type": "object",
20105
+ "properties": {
20106
+ "threshold": {
20107
+ "type": "number"
20108
+ },
20109
+ "my_weight": {
20110
+ "type": "number"
20111
+ },
20112
+ "needed_from_others": {
20113
+ "type": "number"
20114
+ },
20115
+ "collaborators": {
20116
+ "type": "array",
20117
+ "items": {
20118
+ "type": "string"
20119
+ }
20120
+ },
20121
+ "allocation_note": {
20122
+ "type": "string"
20123
+ }
20124
+ },
20125
+ "required": [
20126
+ "threshold",
20127
+ "my_weight",
20128
+ "needed_from_others",
20129
+ "collaborators"
20130
+ ],
20131
+ "additionalProperties": false
20132
+ },
20133
+ "value_at_stake": {
20134
+ "type": "string"
20135
+ },
20136
+ "risk_exposure": {
20137
+ "type": "string"
20138
+ },
20139
+ "summary": {
20140
+ "type": "string"
20141
+ }
20142
+ },
20143
+ "required": [
20144
+ "current_node",
20145
+ "perspective",
20146
+ "actions",
20147
+ "summary"
20148
+ ],
20149
+ "additionalProperties": false,
20150
+ "description": "node-game ranking — the single action authority."
20151
+ },
20152
+ "recommended_calls": {
20153
+ "type": "array",
20154
+ "items": {
20155
+ "type": "object",
20156
+ "properties": {
20157
+ "forward": {
20158
+ "type": "string"
20159
+ },
20160
+ "call": {}
20161
+ },
20162
+ "required": [
20163
+ "forward",
20164
+ "call"
20165
+ ],
20166
+ "additionalProperties": false
20167
+ }
20168
+ },
20169
+ "blocked_forwards": {
20170
+ "type": "array",
20171
+ "items": {
20172
+ "type": "object",
20173
+ "properties": {
20174
+ "forward": {
20175
+ "type": "string"
20176
+ },
20177
+ "reason": {
20178
+ "type": "string"
20179
+ }
20180
+ },
20181
+ "required": [
20182
+ "forward",
20183
+ "reason"
20184
+ ],
20185
+ "additionalProperties": false
20186
+ }
20187
+ }
20188
+ },
20189
+ "required": [
20190
+ "order",
19358
20191
  "machine",
19359
20192
  "current_node",
19360
20193
  "advice",
@@ -19363,7 +20196,7 @@
19363
20196
  ],
19364
20197
  "additionalProperties": false
19365
20198
  },
19366
- "description": "可行操作路径 — per in-flight order."
20199
+ "description": "Actionable paths — per in-flight order."
19367
20200
  },
19368
20201
  "arb_actions": {
19369
20202
  "type": "array",
@@ -19471,7 +20304,7 @@
19471
20304
  "neutral"
19472
20305
  ]
19473
20306
  },
19474
- "noteZh": {
20307
+ "note": {
19475
20308
  "type": "string"
19476
20309
  }
19477
20310
  },
@@ -19482,20 +20315,20 @@
19482
20315
  "their_prefer",
19483
20316
  "their_avoid",
19484
20317
  "alignment",
19485
- "noteZh"
20318
+ "note"
19486
20319
  ],
19487
20320
  "additionalProperties": false
19488
20321
  },
19489
- "description": "博弈对手分析 — structural tension from the single ROLE_INTERESTS table."
20322
+ "description": "Counterparty game analysis — structural tension from the single ROLE_INTERESTS table."
19490
20323
  },
19491
20324
  "risk_finding_ids": {
19492
20325
  "type": "array",
19493
20326
  "items": {
19494
20327
  "type": "string"
19495
20328
  },
19496
- "description": "风险提醒 — ids of role-relevant risk findings in the same result."
20329
+ "description": "Risk reminders — ids of role-relevant risk findings in the same result."
19497
20330
  },
19498
- "summaryZh": {
20331
+ "summary": {
19499
20332
  "type": "string"
19500
20333
  }
19501
20334
  },
@@ -19507,7 +20340,7 @@
19507
20340
  "arb_actions",
19508
20341
  "counterparties",
19509
20342
  "risk_finding_ids",
19510
- "summaryZh"
20343
+ "summary"
19511
20344
  ],
19512
20345
  "additionalProperties": false
19513
20346
  },
@@ -20035,7 +20868,7 @@
20035
20868
  "type": "object",
20036
20869
  "properties": {
20037
20870
  "risk_score": {
20038
- "description": "Composite risk score 0-100 (higher = safer). Relation: from risk-assessment.ts 4-dimension scoring. Example: 75",
20871
+ "description": "Composite risk score 0-100 (higher = safer). Relation: risk dimension of the onchain_topology graph evaluation. Example: 75",
20039
20872
  "type": "number",
20040
20873
  "minimum": 0,
20041
20874
  "maximum": 100
@@ -20526,14 +21359,14 @@
20526
21359
  "description": "Business meaning of advancing to this node. Example: 'Guide starts the day service'"
20527
21360
  },
20528
21361
  "gains": {
20529
- "description": "Gains for the caller if this option is chosen (K3 Game G1 收益分离). Example: ['Settlement triggered — funds released to provider']",
21362
+ "description": "Gains for the caller if this option is chosen (K3 Game G1 gain separation). Example: ['Settlement triggered — funds released to provider']",
20530
21363
  "type": "array",
20531
21364
  "items": {
20532
21365
  "type": "string"
20533
21366
  }
20534
21367
  },
20535
21368
  "risks": {
20536
- "description": "Risks for the caller if this option is chosen (K3 Game G1 风险分离). Example: ['Refund leverage lost after confirmation']",
21369
+ "description": "Risks for the caller if this option is chosen (K3 Game G1 risk separation). Example: ['Refund leverage lost after confirmation']",
20537
21370
  "type": "array",
20538
21371
  "items": {
20539
21372
  "type": "string"
@@ -20563,7 +21396,7 @@
20563
21396
  "description": "ALL reachable next-node directions (every operator/permission/guard disclosed)."
20564
21397
  },
20565
21398
  "recommendation": {
20566
- "description": "Recommended option with rationale (K3 Game 意图/博弈/利益).",
21399
+ "description": "Recommended option with rationale (K3 Game intent/game/interests).",
20567
21400
  "type": "object",
20568
21401
  "properties": {
20569
21402
  "best": {
@@ -20575,7 +21408,7 @@
20575
21408
  "type": "string"
20576
21409
  },
20577
21410
  "caveat": {
20578
- "description": "Disclosed trade-off / opportunity cost of NOT taking another path (K3 Game G3 机会成本). Example: 'Choosing cancelled forfeits this order's settlement'",
21411
+ "description": "Disclosed trade-off / opportunity cost of NOT taking another path (K3 Game G3 opportunity cost). Example: 'Choosing cancelled forfeits this order's settlement'",
20579
21412
  "type": "string"
20580
21413
  }
20581
21414
  },
@@ -20695,7 +21528,7 @@
20695
21528
  "operator"
20696
21529
  ],
20697
21530
  "additionalProperties": false,
20698
- "description": "A forward still pending — who must act next (threshold cooperation, K3 Game G4 阈值配合)."
21531
+ "description": "A forward still pending — who must act next (threshold cooperation, K3 Game G4)."
20699
21532
  }
20700
21533
  },
20701
21534
  "next_guidance": {
@@ -20773,14 +21606,14 @@
20773
21606
  "description": "Business meaning of advancing to this node. Example: 'Guide starts the day service'"
20774
21607
  },
20775
21608
  "gains": {
20776
- "description": "Gains for the caller if this option is chosen (K3 Game G1 收益分离). Example: ['Settlement triggered — funds released to provider']",
21609
+ "description": "Gains for the caller if this option is chosen (K3 Game G1 gain separation). Example: ['Settlement triggered — funds released to provider']",
20777
21610
  "type": "array",
20778
21611
  "items": {
20779
21612
  "type": "string"
20780
21613
  }
20781
21614
  },
20782
21615
  "risks": {
20783
- "description": "Risks for the caller if this option is chosen (K3 Game G1 风险分离). Example: ['Refund leverage lost after confirmation']",
21616
+ "description": "Risks for the caller if this option is chosen (K3 Game G1 risk separation). Example: ['Refund leverage lost after confirmation']",
20784
21617
  "type": "array",
20785
21618
  "items": {
20786
21619
  "type": "string"
@@ -20810,7 +21643,7 @@
20810
21643
  "description": "ALL reachable next-node directions (every operator/permission/guard disclosed)."
20811
21644
  },
20812
21645
  "recommendation": {
20813
- "description": "Recommended option with rationale (K3 Game 意图/博弈/利益).",
21646
+ "description": "Recommended option with rationale (K3 Game intent/game/interests).",
20814
21647
  "type": "object",
20815
21648
  "properties": {
20816
21649
  "best": {
@@ -20822,7 +21655,7 @@
20822
21655
  "type": "string"
20823
21656
  },
20824
21657
  "caveat": {
20825
- "description": "Disclosed trade-off / opportunity cost of NOT taking another path (K3 Game G3 机会成本). Example: 'Choosing cancelled forfeits this order's settlement'",
21658
+ "description": "Disclosed trade-off / opportunity cost of NOT taking another path (K3 Game G3 opportunity cost). Example: 'Choosing cancelled forfeits this order's settlement'",
20826
21659
  "type": "string"
20827
21660
  }
20828
21661
  },