@wowok/agent-mcp 3.1.3 → 3.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/dist/config/config-audit.spec.d.ts +1 -0
  2. package/dist/config/config-audit.spec.js +1 -0
  3. package/dist/config/exposure.d.ts +108 -0
  4. package/dist/config/exposure.js +1 -0
  5. package/dist/config/index.d.ts +2 -0
  6. package/dist/config/index.js +1 -1
  7. package/dist/config/judgment.d.ts +1228 -0
  8. package/dist/config/judgment.js +1 -0
  9. package/dist/config/judgment.spec.d.ts +1 -0
  10. package/dist/config/judgment.spec.js +1 -0
  11. package/dist/config/rule-engine.d.ts +299 -0
  12. package/dist/config/rule-engine.js +1 -0
  13. package/dist/config/rule-engine.spec.d.ts +1 -0
  14. package/dist/config/rule-engine.spec.js +1 -0
  15. package/dist/config/severity.d.ts +7 -0
  16. package/dist/config/severity.js +1 -0
  17. package/dist/customer/order-monitor.d.ts +3 -1
  18. package/dist/customer/order-monitor.js +1 -1
  19. package/dist/evaluation/acceptance.d.ts +1 -0
  20. package/dist/evaluation/acceptance.js +1 -1
  21. package/dist/evaluation/arbitration-game.js +1 -1
  22. package/dist/evaluation/builtins/demand-match.js +1 -1
  23. package/dist/evaluation/builtins/graph-service.js +1 -1
  24. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  25. package/dist/evaluation/engine.js +1 -1
  26. package/dist/evaluation/game-strategy.d.ts +2 -2
  27. package/dist/evaluation/game-strategy.js +1 -1
  28. package/dist/evaluation/match-operation.d.ts +2 -2
  29. package/dist/evaluation/match-operation.js +1 -1
  30. package/dist/evaluation/standards.d.ts +3 -25
  31. package/dist/evaluation/standards.js +1 -1
  32. package/dist/evaluation/types.d.ts +2 -1
  33. package/dist/experience/realtime-feedback.js +1 -1
  34. package/dist/extensions/business-modules.js +1 -1
  35. package/dist/extensions/custom-registry-file.js +1 -1
  36. package/dist/extensions/industry-audit.spec.d.ts +1 -0
  37. package/dist/extensions/industry-audit.spec.js +1 -0
  38. package/dist/extensions/industry-layers.d.ts +8 -0
  39. package/dist/extensions/industry-layers.js +1 -1
  40. package/dist/extensions/industry-pack.d.ts +2 -0
  41. package/dist/extensions/industry-pack.js +1 -1
  42. package/dist/extensions/mode-evaluator.js +1 -1
  43. package/dist/extensions/modes.js +1 -1
  44. package/dist/graph/onchain/analyze.d.ts +3 -1
  45. package/dist/graph/onchain/analyze.js +1 -1
  46. package/dist/graph/onchain/analyze.spec.js +1 -1
  47. package/dist/graph/onchain/edge-schema.d.ts +1 -0
  48. package/dist/graph/onchain/edge-schema.js +1 -1
  49. package/dist/graph/onchain/expand.js +1 -1
  50. package/dist/graph/onchain/exploration.d.ts +28 -0
  51. package/dist/graph/onchain/exploration.js +1 -0
  52. package/dist/graph/onchain/exploration.spec.d.ts +1 -0
  53. package/dist/graph/onchain/exploration.spec.js +1 -0
  54. package/dist/graph/onchain/exposure.d.ts +18 -0
  55. package/dist/graph/onchain/exposure.js +1 -0
  56. package/dist/graph/onchain/exposure.spec.d.ts +1 -0
  57. package/dist/graph/onchain/exposure.spec.js +1 -0
  58. package/dist/graph/onchain/graph-policy.spec.d.ts +1 -0
  59. package/dist/graph/onchain/graph-policy.spec.js +1 -0
  60. package/dist/graph/onchain/index.d.ts +6 -0
  61. package/dist/graph/onchain/index.js +1 -1
  62. package/dist/graph/onchain/interest.js +1 -1
  63. package/dist/graph/onchain/interest.spec.js +1 -1
  64. package/dist/graph/onchain/names.js +1 -1
  65. package/dist/graph/onchain/names.spec.js +1 -1
  66. package/dist/graph/onchain/policy.d.ts +8 -0
  67. package/dist/graph/onchain/policy.js +1 -0
  68. package/dist/graph/onchain/proposal-graph.js +1 -1
  69. package/dist/graph/onchain/proposal-graph.spec.js +1 -1
  70. package/dist/graph/onchain/synthesis.d.ts +20 -0
  71. package/dist/graph/onchain/synthesis.js +1 -0
  72. package/dist/graph/onchain/synthesis.spec.d.ts +1 -0
  73. package/dist/graph/onchain/synthesis.spec.js +1 -0
  74. package/dist/graph/onchain/types.d.ts +11 -1
  75. package/dist/keeper/keeper.spec.js +1 -1
  76. package/dist/knowledge/alloc-audit-policy.spec.d.ts +1 -0
  77. package/dist/knowledge/alloc-audit-policy.spec.js +1 -0
  78. package/dist/knowledge/allocation-ledger.js +1 -1
  79. package/dist/knowledge/allocation-puzzle.d.ts +1 -1
  80. package/dist/knowledge/allocation-puzzle.js +1 -1
  81. package/dist/knowledge/allocation-risk.d.ts +4 -1
  82. package/dist/knowledge/allocation-risk.js +1 -1
  83. package/dist/knowledge/allocation-templates.js +1 -1
  84. package/dist/knowledge/arb-risk.d.ts +6 -5
  85. package/dist/knowledge/arb-risk.js +1 -1
  86. package/dist/knowledge/arbitration-ledger.d.ts +4 -4
  87. package/dist/knowledge/arbitration-ledger.js +1 -1
  88. package/dist/knowledge/arbitration-puzzle.d.ts +1 -1
  89. package/dist/knowledge/arbitration-puzzle.js +1 -1
  90. package/dist/knowledge/arbitration-risk.d.ts +4 -1
  91. package/dist/knowledge/arbitration-risk.js +1 -1
  92. package/dist/knowledge/arbitration-templates.js +1 -1
  93. package/dist/knowledge/baselines/judgment-baselines.json +289 -0
  94. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
  95. package/dist/knowledge/baselines/rules/alloc_audit.json +290 -0
  96. package/dist/knowledge/baselines/rules/allocation.json +492 -0
  97. package/dist/knowledge/baselines/rules/arb.json +155 -0
  98. package/dist/knowledge/baselines/rules/arbitration.json +366 -0
  99. package/dist/knowledge/baselines/rules/bridge.json +197 -0
  100. package/dist/knowledge/baselines/rules/contact.json +152 -0
  101. package/dist/knowledge/baselines/rules/demand.json +158 -0
  102. package/dist/knowledge/baselines/rules/graph.json +453 -0
  103. package/dist/knowledge/baselines/rules/guard.json +981 -0
  104. package/dist/knowledge/baselines/rules/machine.json +706 -0
  105. package/dist/knowledge/baselines/rules/order.json +549 -0
  106. package/dist/knowledge/baselines/rules/payment.json +205 -0
  107. package/dist/knowledge/baselines/rules/permission.json +330 -0
  108. package/dist/knowledge/baselines/rules/personal.json +139 -0
  109. package/dist/knowledge/baselines/rules/progress.json +346 -0
  110. package/dist/knowledge/baselines/rules/proof.json +158 -0
  111. package/dist/knowledge/baselines/rules/registrar.json +159 -0
  112. package/dist/knowledge/baselines/rules/repository.json +244 -0
  113. package/dist/knowledge/baselines/rules/resource.json +117 -0
  114. package/dist/knowledge/baselines/rules/reward.json +471 -0
  115. package/dist/knowledge/baselines/rules/service.json +595 -0
  116. package/dist/knowledge/baselines/rules/treasury.json +440 -0
  117. package/dist/knowledge/baselines/rules/util.json +101 -0
  118. package/dist/knowledge/bridge-risk.d.ts +6 -5
  119. package/dist/knowledge/bridge-risk.js +1 -1
  120. package/dist/knowledge/builtin-templates.d.ts +26 -0
  121. package/dist/knowledge/builtin-templates.js +1 -0
  122. package/dist/knowledge/contact-risk.d.ts +6 -5
  123. package/dist/knowledge/contact-risk.js +1 -1
  124. package/dist/knowledge/demand-risk.d.ts +6 -5
  125. package/dist/knowledge/demand-risk.js +1 -1
  126. package/dist/knowledge/event-semantics.js +1 -1
  127. package/dist/knowledge/facts-sync.spec.d.ts +1 -0
  128. package/dist/knowledge/facts-sync.spec.js +1 -0
  129. package/dist/knowledge/getting-started.js +1 -1
  130. package/dist/knowledge/guard-design-patterns.js +1 -1
  131. package/dist/knowledge/guard-field-cognition.d.ts +1 -1
  132. package/dist/knowledge/guard-field-cognition.js +1 -1
  133. package/dist/knowledge/guard-ledger.js +1 -1
  134. package/dist/knowledge/guard-risk.d.ts +4 -1
  135. package/dist/knowledge/guard-risk.js +1 -1
  136. package/dist/knowledge/guard-templates.js +1 -1
  137. package/dist/knowledge/guard-translation.js +1 -1
  138. package/dist/knowledge/index.d.ts +10 -2
  139. package/dist/knowledge/index.js +1 -1
  140. package/dist/knowledge/industry-registry.js +1 -1
  141. package/dist/knowledge/industry-strategy.js +1 -1
  142. package/dist/knowledge/jsonrpc-enum.js +1 -1
  143. package/dist/knowledge/machine-ledger.js +1 -1
  144. package/dist/knowledge/machine-risk.d.ts +4 -1
  145. package/dist/knowledge/machine-risk.js +1 -1
  146. package/dist/knowledge/machine-templates.js +1 -1
  147. package/dist/knowledge/machine-translation.js +1 -1
  148. package/dist/knowledge/migration-preflight.js +1 -1
  149. package/dist/knowledge/operation-dictionary.js +1 -1
  150. package/dist/knowledge/order-ledger.js +1 -1
  151. package/dist/knowledge/order-puzzle.d.ts +3 -3
  152. package/dist/knowledge/order-puzzle.js +1 -1
  153. package/dist/knowledge/order-risk.d.ts +6 -3
  154. package/dist/knowledge/order-risk.js +1 -1
  155. package/dist/knowledge/order-templates.js +1 -1
  156. package/dist/knowledge/passport-ledger.js +1 -1
  157. package/dist/knowledge/passport-templates.js +1 -1
  158. package/dist/knowledge/payment-risk.d.ts +8 -6
  159. package/dist/knowledge/payment-risk.js +1 -1
  160. package/dist/knowledge/payment-tracker.js +1 -1
  161. package/dist/knowledge/permission-ledger.js +1 -1
  162. package/dist/knowledge/permission-puzzle.d.ts +12 -12
  163. package/dist/knowledge/permission-puzzle.js +1 -1
  164. package/dist/knowledge/permission-risk.d.ts +4 -7
  165. package/dist/knowledge/permission-risk.js +1 -1
  166. package/dist/knowledge/permission-templates.js +1 -1
  167. package/dist/knowledge/personal-risk.d.ts +6 -5
  168. package/dist/knowledge/personal-risk.js +1 -1
  169. package/dist/knowledge/progress-ledger.js +1 -1
  170. package/dist/knowledge/progress-puzzle.d.ts +2 -2
  171. package/dist/knowledge/progress-puzzle.js +1 -1
  172. package/dist/knowledge/progress-risk.d.ts +4 -1
  173. package/dist/knowledge/progress-risk.js +1 -1
  174. package/dist/knowledge/progress-templates.js +1 -1
  175. package/dist/knowledge/proof-risk.d.ts +6 -5
  176. package/dist/knowledge/proof-risk.js +1 -1
  177. package/dist/knowledge/puzzle-projections.js +1 -1
  178. package/dist/knowledge/recipient-constraint.d.ts +20 -1
  179. package/dist/knowledge/recipient-constraint.js +1 -1
  180. package/dist/knowledge/registrar-risk.d.ts +6 -5
  181. package/dist/knowledge/registrar-risk.js +1 -1
  182. package/dist/knowledge/repository-risk.d.ts +7 -6
  183. package/dist/knowledge/repository-risk.js +1 -1
  184. package/dist/knowledge/resource-risk.d.ts +6 -5
  185. package/dist/knowledge/resource-risk.js +1 -1
  186. package/dist/knowledge/reward-ledger.d.ts +1 -1
  187. package/dist/knowledge/reward-ledger.js +1 -1
  188. package/dist/knowledge/reward-puzzle.d.ts +2 -2
  189. package/dist/knowledge/reward-puzzle.js +1 -1
  190. package/dist/knowledge/reward-risk.d.ts +4 -1
  191. package/dist/knowledge/reward-risk.js +1 -1
  192. package/dist/knowledge/rule-node-analyzers.spec.js +1 -1
  193. package/dist/knowledge/rule-outcome.js +1 -1
  194. package/dist/knowledge/scenario-modes.d.ts +2 -2
  195. package/dist/knowledge/scenario-modes.js +1 -1
  196. package/dist/knowledge/scenario-topology.js +1 -1
  197. package/dist/knowledge/service-allocator-audit-node.js +1 -1
  198. package/dist/knowledge/service-ledger.js +1 -1
  199. package/dist/knowledge/service-puzzle.d.ts +2 -2
  200. package/dist/knowledge/service-puzzle.js +1 -1
  201. package/dist/knowledge/service-risk-node.js +1 -1
  202. package/dist/knowledge/service-risk.d.ts +4 -1
  203. package/dist/knowledge/service-risk.js +1 -1
  204. package/dist/knowledge/service-templates.js +1 -1
  205. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  206. package/dist/knowledge/strategy-manuals.js +1 -1
  207. package/dist/knowledge/template-loader.d.ts +84 -0
  208. package/dist/knowledge/template-loader.js +1 -0
  209. package/dist/knowledge/template-loader.spec.d.ts +1 -0
  210. package/dist/knowledge/template-loader.spec.js +1 -0
  211. package/dist/knowledge/template-registry.js +1 -1
  212. package/dist/knowledge/template-scanner.d.ts +17 -0
  213. package/dist/knowledge/template-scanner.js +1 -0
  214. package/dist/knowledge/template-scanner.spec.d.ts +1 -0
  215. package/dist/knowledge/template-scanner.spec.js +1 -0
  216. package/dist/knowledge/tools-reference.js +1 -1
  217. package/dist/knowledge/treasury-ledger.d.ts +1 -1
  218. package/dist/knowledge/treasury-ledger.js +1 -1
  219. package/dist/knowledge/treasury-puzzle.d.ts +3 -3
  220. package/dist/knowledge/treasury-puzzle.js +1 -1
  221. package/dist/knowledge/treasury-risk.d.ts +4 -1
  222. package/dist/knowledge/treasury-risk.js +1 -1
  223. package/dist/knowledge/treasury-templates.js +1 -1
  224. package/dist/knowledge/util-risk.d.ts +6 -5
  225. package/dist/knowledge/util-risk.js +1 -1
  226. package/dist/knowledge/workflow-guidance.d.ts +4 -0
  227. package/dist/knowledge/workflow-guidance.js +1 -1
  228. package/dist/knowledge/workspace-lists.js +1 -1
  229. package/dist/monitor/MonitorLoop.js +1 -1
  230. package/dist/participation/arbitrator-interest.js +1 -1
  231. package/dist/participation/radar-core.js +1 -1
  232. package/dist/persona/analyzer.js +1 -1
  233. package/dist/persona/index.js +1 -1
  234. package/dist/persona/model.js +1 -1
  235. package/dist/persona/persona-audit.spec.d.ts +1 -0
  236. package/dist/persona/persona-audit.spec.js +1 -0
  237. package/dist/persona/types.d.ts +2 -0
  238. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  239. package/dist/playbooks/service-build/facet-money.d.ts +11 -0
  240. package/dist/playbooks/service-build/facet-money.js +1 -1
  241. package/dist/playbooks/service-build/machine-panorama.d.ts +17 -0
  242. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  243. package/dist/playbooks/service-build/merchant-guide.d.ts +2 -2
  244. package/dist/playbooks/service-build/migration-planner.d.ts +43 -0
  245. package/dist/playbooks/service-build/migration-planner.js +1 -0
  246. package/dist/playbooks/service-build/object-panorama.d.ts +42 -1
  247. package/dist/playbooks/service-build/object-panorama.js +1 -1
  248. package/dist/playbooks/service-build/participation-radar.js +1 -1
  249. package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
  250. package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
  251. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  252. package/dist/playbooks/service-build/risk-aggregator.d.ts +2 -1
  253. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  254. package/dist/playbooks/service-build/semantic-graph.js +1 -1
  255. package/dist/playbooks/service-build/service-panorama.d.ts +53 -1
  256. package/dist/playbooks/service-build/service-panorama.js +1 -1
  257. package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -1
  258. package/dist/playbooks/service-build/topology-query.js +1 -1
  259. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
  260. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  261. package/dist/relationship/registry.js +1 -1
  262. package/dist/review/machine.js +1 -1
  263. package/dist/review/order.js +1 -1
  264. package/dist/review/service.js +1 -1
  265. package/dist/review/types.d.ts +7 -0
  266. package/dist/safety/confirm-gate.js +1 -1
  267. package/dist/schema/benchmark-migration/index.d.ts +207 -0
  268. package/dist/schema/benchmark-migration/index.js +1 -0
  269. package/dist/schema/call/allocation.d.ts +1 -1
  270. package/dist/schema/call/allocation.js +1 -1
  271. package/dist/schema/call/arbitration.d.ts +1 -1
  272. package/dist/schema/call/arbitration.js +1 -1
  273. package/dist/schema/call/base.d.ts +5 -5
  274. package/dist/schema/call/base.js +1 -1
  275. package/dist/schema/call/contact.d.ts +1 -1
  276. package/dist/schema/call/demand.d.ts +1 -1
  277. package/dist/schema/call/guard.d.ts +3 -3
  278. package/dist/schema/call/machine.d.ts +5 -5
  279. package/dist/schema/call/order.d.ts +3 -3
  280. package/dist/schema/call/payment.js +1 -1
  281. package/dist/schema/call/permission-handler.d.ts +1 -1
  282. package/dist/schema/call/permission-handler.js +1 -1
  283. package/dist/schema/call/permission.d.ts +16 -16
  284. package/dist/schema/call/permission.js +1 -1
  285. package/dist/schema/call/personal.d.ts +8 -8
  286. package/dist/schema/call/personal.js +1 -1
  287. package/dist/schema/call/progress.d.ts +3 -3
  288. package/dist/schema/call/repository.d.ts +11 -11
  289. package/dist/schema/call/repository.js +1 -1
  290. package/dist/schema/call/reward.d.ts +1 -1
  291. package/dist/schema/call/semantic.js +1 -1
  292. package/dist/schema/call/service.d.ts +7 -7
  293. package/dist/schema/call/service.js +1 -1
  294. package/dist/schema/call/treasury.d.ts +1 -1
  295. package/dist/schema/common/index.d.ts +6 -6
  296. package/dist/schema/common/index.js +1 -1
  297. package/dist/schema/config/index.d.ts +50 -1
  298. package/dist/schema/config/index.js +1 -1
  299. package/dist/schema/evaluation/index.d.ts +27 -11
  300. package/dist/schema/evaluation/index.js +1 -1
  301. package/dist/schema/goal/index.d.ts +5 -5
  302. package/dist/schema/goal/planning.d.ts +15 -15
  303. package/dist/schema/goal/planning.js +1 -1
  304. package/dist/schema/index.d.ts +1 -0
  305. package/dist/schema/index.js +1 -1
  306. package/dist/schema/interaction/index.d.ts +1 -1
  307. package/dist/schema/local/index.js +1 -1
  308. package/dist/schema/messenger/index.d.ts +26 -26
  309. package/dist/schema/operations.d.ts +33 -33
  310. package/dist/schema/operations.js +1 -1
  311. package/dist/schema/persona/index.d.ts +4708 -0
  312. package/dist/schema/persona/index.js +1 -1
  313. package/dist/schema/query/bi.d.ts +232 -25
  314. package/dist/schema/query/bi.js +1 -1
  315. package/dist/schema/query/index.d.ts +35 -35
  316. package/dist/schema/query/index.js +1 -1
  317. package/dist/schema/schema-version.js +1 -1
  318. package/dist/schema/workflow/index.d.ts +1 -1
  319. package/dist/schema/workspace/index.d.ts +53 -0
  320. package/dist/schema/workspace/index.js +1 -1
  321. package/dist/schema-query-impl/index.d.ts +9 -0
  322. package/dist/schema-query-impl/index.js +1 -1
  323. package/dist/schemas/benchmark_migration_operation.output.json +793 -0
  324. package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
  325. package/dist/schemas/bridge_operation.schema.json +5 -5
  326. package/dist/schemas/config_operation.output.json +252 -0
  327. package/dist/schemas/config_operation.schema.json +21 -1
  328. package/dist/schemas/evaluation_operation.output.json +22 -10
  329. package/dist/schemas/goal_operation.schema.json +8 -8
  330. package/dist/schemas/guard2file.schema.json +1 -1
  331. package/dist/schemas/index.json +7 -1
  332. package/dist/schemas/machineNode2file.schema.json +1 -1
  333. package/dist/schemas/messenger_operation.schema.json +24 -12
  334. package/dist/schemas/onchain_events.output.json +1 -1
  335. package/dist/schemas/onchain_operations.output.json +4 -2
  336. package/dist/schemas/onchain_operations.schema.json +189 -139
  337. package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
  338. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
  339. package/dist/schemas/onchain_operations_contact.schema.json +7 -5
  340. package/dist/schemas/onchain_operations_demand.schema.json +7 -5
  341. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
  342. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  343. package/dist/schemas/onchain_operations_guard.schema.json +5 -3
  344. package/dist/schemas/onchain_operations_machine.schema.json +22 -18
  345. package/dist/schemas/onchain_operations_order.schema.json +11 -7
  346. package/dist/schemas/onchain_operations_payment.schema.json +3 -3
  347. package/dist/schemas/onchain_operations_permission.schema.json +19 -11
  348. package/dist/schemas/onchain_operations_personal.schema.json +16 -10
  349. package/dist/schemas/onchain_operations_progress.schema.json +11 -7
  350. package/dist/schemas/onchain_operations_proof.schema.json +5 -3
  351. package/dist/schemas/onchain_operations_repository.schema.json +12 -8
  352. package/dist/schemas/onchain_operations_reward.schema.json +11 -9
  353. package/dist/schemas/onchain_operations_service.schema.json +28 -22
  354. package/dist/schemas/onchain_operations_treasury.schema.json +11 -9
  355. package/dist/schemas/onchain_table_data.output.json +27 -17
  356. package/dist/schemas/persona_operation.output.json +15875 -1
  357. package/dist/schemas/persona_operation.schema.json +3056 -478
  358. package/dist/schemas/query_toolkit.output.json +343 -63
  359. package/dist/schemas/query_toolkit.schema.json +1 -1
  360. package/dist/schemas/workflow_operation.schema.json +4 -2
  361. package/dist/schemas/workspace_operation.output.json +181 -1
  362. package/dist/schemas/workspace_operation.schema.json +61 -2
  363. package/dist/strategy/scorecard.js +1 -1
  364. package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
  365. package/dist/tools/handlers/benchmark-migration.js +1 -0
  366. package/dist/tools/handlers/config.js +1 -1
  367. package/dist/tools/handlers/industry-pack.js +1 -1
  368. package/dist/tools/handlers/onchain.js +1 -1
  369. package/dist/tools/handlers/query.js +1 -1
  370. package/dist/tools/handlers/schema-query.js +1 -1
  371. package/dist/tools/handlers/workspace.js +1 -1
  372. package/dist/tools/index.js +1 -1
  373. package/dist/tools/move-fn-index.gen.d.ts +3 -0
  374. package/dist/tools/move-fn-index.gen.js +1 -0
  375. package/dist/tools/registry/business.js +1 -1
  376. package/dist/tools/registry/config.js +1 -1
  377. package/dist/tools/registry/evaluation.js +1 -1
  378. package/dist/tools/registry/onchain.js +1 -1
  379. package/dist/tools/sanitize-output.d.ts +3 -0
  380. package/dist/tools/sanitize-output.js +1 -0
  381. package/dist/tools/sanitize-output.spec.d.ts +1 -0
  382. package/dist/tools/sanitize-output.spec.js +1 -0
  383. package/package.json +9 -4
  384. package/dist/knowledge/baselines/evaluation-baselines.json +0 -79
@@ -0,0 +1,26 @@
1
+ import type { Industry } from "../customer/index.js";
2
+ import type { ModeMachineNode, ModeGuardRef, ModeAllocatorStrategy } from "./scenario-modes.js";
3
+ export interface ArchetypeTemplate {
4
+ id: string;
5
+ industry: Industry;
6
+ variant: string;
7
+ archetype: "leader" | "challenger";
8
+ phase: 1 | 2 | 3;
9
+ machine_shape: ModeMachineNode[];
10
+ guards: ModeGuardRef[];
11
+ allocator: ModeAllocatorStrategy;
12
+ fee_params: Record<string, number | string>;
13
+ trust_mechanisms: string[];
14
+ keeper_dependencies: string[];
15
+ recommended_role: "merchant" | "supplier" | "both";
16
+ role_rationale: string;
17
+ differences: string[];
18
+ user_inputs: string[];
19
+ key_risk: string;
20
+ build_notes: string[];
21
+ }
22
+ export declare const BUILTIN_TEMPLATES_VERSION = 2;
23
+ export declare const BUILTIN_TEMPLATES: ArchetypeTemplate[];
24
+ export declare const TEMPLATE_KEYWORDS: Record<string, string[]>;
25
+ export declare function getBuiltinTemplate(id: string): ArchetypeTemplate | undefined;
26
+ export declare function listBuiltinTemplates(): ArchetypeTemplate[];
@@ -0,0 +1 @@
1
+ export const BUILTIN_TEMPLATES_VERSION=0x2;export const BUILTIN_TEMPLATES=[{'id':'retail/scale-marketplace','industry':'retail','variant':'scale-marketplace','archetype':'leader','phase':0x1,'machine_shape':[{'name':'paid','role':'Entry:\x20order\x20created\x20and\x20fully\x20escrowed\x20via\x20the\x20on-chain\x20buy\x20flow;\x20Machine\x20starts\x20here'},{'name':'shipped','role':'Seller/fulfiller\x20ships\x20goods\x20with\x20tracking\x20evidence\x20(fulfiller\x20permission\x20slot)'},{'name':'delivered','role':'Carrier\x20or\x20buyer\x20confirms\x20delivery\x20—\x20buyer-first\x20confirmation'},{'name':'reviewed','role':'Buyer\x20reviews\x20within\x20the\x2014-day\x20review\x20window'},{'name':'completed','role':'Settlement\x20point:\x20no\x20open\x20claims\x20and\x20return\x20window\x20elapsed\x20—\x20settlement\x20Allocator\x20releases\x20funds'},{'name':'return_requested','role':'Buyer\x20requests\x20return\x20within\x20the\x2030-day\x20return\x20window'},{'name':'returned','role':'Return\x20receipt\x20evidenced\x20—\x20triggers\x20refund\x20Allocator\x20to\x20buyer'},{'name':'cancelled','role':'Pre-delivery\x20cancellation\x20—\x20triggers\x20refund\x20Allocator\x20to\x20buyer'}],'guards':[{'template_id':'buy_guard_passport','host':'service','purpose':'Buyer\x20region\x20eligibility\x20and\x20optional\x20buyer\x20Passport\x20gate\x20on\x20purchase'},{'template_id':'ship_guard_wip','host':'machine','purpose':'Shipping\x20evidence\x20(tracking\x20hash)\x20required\x20to\x20ship'},{'template_id':'delivery_confirm_guard_signer','host':'machine','purpose':'Delivery\x20confirmed\x20by\x20buyer-first;\x20carrier\x20only\x20auxiliary\x20evidence\x20—\x20seller\x20can\x20never\x20self-confirm'},{'template_id':'review_window_guard_timelock','host':'machine','purpose':'Review\x20gated\x20to\x20within\x2014\x20days\x20of\x20delivery'},{'template_id':'completion_guard_timelock','host':'machine','purpose':'Settlement\x20gated:\x20no\x20open\x20claims\x20and\x2030\x20days\x20past\x20delivery'},{'template_id':'return_auth_guard_timelock','host':'machine','purpose':'Return\x20request\x20gated\x20to\x20within\x2030\x20days\x20of\x20delivery'},{'template_id':'refund_guard_permission','host':'machine','purpose':'Refund\x20execution\x20requires\x20the\x20refund-executor\x20permission\x20slot\x20or\x20an\x20arbiter'},{'template_id':'settle_guard_timelock','host':'machine','purpose':'Single\x20settlement\x20time-lock\x20merging\x20reserve\x20+\x20settlement\x20cycle\x20+\x20return\x20window\x20into\x20one\x20release\x20point'}],'allocator':{'recipient':'entity','count':0x3,'mode':'rate','description':'Full\x20escrow\x20+\x20single-point\x20settlement:\x20platform\x20fixed\x20fulfillment\x20fee\x20(Amount)\x20+\x20platform\x20commission\x20Rate\x201500\x20+\x20seller\x20Surplus\x20at\x20the\x20settlement\x20point;\x20full\x20refund\x20to\x20buyer\x20(Rate\x2010000)\x20on\x20returned/cancelled;\x20post-settlement\x20claims\x20paid\x20from\x20the\x20compensation\x20fund'},'key_risk':'Settlement\x20uncertainty\x20—\x20sellers\x20need\x20a\x20deterministic\x20release\x20point\x20after\x20reserve\x20+\x20cycle\x20+\x20return\x20window','build_notes':['Full\x20escrow\x20+\x20single-point\x20settlement:\x20funds\x20stay\x20100%\x20in\x20the\x20pool\x20until\x20the\x20settlement\x20time-lock\x20fires','Reserve\x20(7d)\x20+\x20settlement\x20cycle\x20(14d)\x20+\x20return\x20window\x20(30d)\x20merge\x20into\x20ONE\x20settlement\x20time-lock\x20Guard','Disputes\x20go\x20to\x20an\x20independent\x20Arbitration\x20object\x20—\x20never\x20Machine\x20nodes\x20(R-M1-11)','Service\x20Permission\x20and\x20Arbitration\x20Permission\x20must\x20be\x20two\x20separate\x20objects\x20(contract-enforced)','Allocator\x20threshold\x20=\x20minimum\x20payout\x20unit\x20(maps\x20to\x20the\x20$1\x20payout\x20threshold)','Repository\x20evidence\x20chain:\x20tracking\x20hash,\x20delivery\x20scan,\x20WTS\x20message\x20proof,\x20authenticity\x20proof,\x20return\x20receipt','Category-differentiated\x20commission\x20/\x20per-order\x20return\x20policy:\x20every\x20order\x20gets\x20its\x20OWN\x20Allocation\x20(order_allocators\x20is\x20only\x20the\x20template),\x20so\x20add\x20ONE\x20allocator\x20entry\x20per\x20category\x20—\x20each\x20with\x20a\x20category\x20Guard\x20whose\x20relies\x20reference\x20a\x20Repository\x20holding\x20the\x20category\x20rules\x20(commission\x20rate\x20or\x20fixed\x20amount,\x20return\x20window);\x20the\x20Guard\x20validates\x20the\x20differentiated\x20supply\x20(amount\x20or\x20rate)\x20at\x20runtime.\x20No\x20contract\x20change\x20needed'],'fee_params':{'commission_rate_bps':0x5dc,'settlement_days':0xe,'reserve_days':0x7,'return_window_days':0x1e,'dispute_window_days':0x5a,'seller_contact_hours':0x30},'trust_mechanisms':['R1\x20refund\x20path:\x20refund\x20Guard\x20+\x20buyer\x20Rate\x2010000\x20Allocator\x20+\x20dispute\x20compensation\x20channel','R2\x20independent\x20Arbitration\x20with\x20its\x20own\x20Permission\x20(admin\x20=\x20arbitration\x20team)','R3\x20compensation\x20fund\x20>=\x205x\x20claim\x20cap\x20for\x20post-settlement\x20claims','R4\x20buyer-first\x20delivery\x20confirmation\x20—\x20seller\x20self-sign\x20forbidden','R5\x20escrow\x20payment\x20anchored\x20to\x20the\x20order\x20object\x20(anti-recipient-hijack)','R6\x20settlement\x20Allocator\x20carries\x20Surplus\x20so\x20commission\x20Rate\x201500\x20<=\x2010000;\x20refund\x20Allocator\x20Rate\x20=\x2010000','R7\x20all\x20nodes/forwards/Guards\x20configured\x20before\x20publish\x20(publish\x20freezes)','R8\x20customer-service\x20Contact\x20bound\x20to\x20Service\x20and\x20Machine','R9\x20keeper\x20declared\x20for\x20settlement\x20trigger,\x20absence\x20timeout,\x20and\x20window\x20expiry','R10\x20business\x20parameters\x20(claim\x20cap,\x20return\x20window,\x20settlement\x20cycle)\x20embedded\x20as\x20Guard\x20parameters\x20—\x20industry-recommended\x20defaults,\x20merchant-configurable\x20at\x20build\x20time'],'keeper_dependencies':['settlement\x20trigger\x20at\x20the\x20single\x20release\x20point','48h\x20absence\x20auto-loss\x20in\x20arbitration','90-day\x20dispute\x20window\x20expiry','return\x20window\x20expiry'],'recommended_role':'merchant','role_rationale':'Marketplace\x20operator\x20owns\x20the\x20Service\x20and\x20hosts\x20third-party\x20sellers\x20as\x20Permission\x20entities;\x20individual\x20sellers\x20join\x20under\x20the\x20operator\x27s\x20permission\x20slots.','differences':['Scale-first\x20general\x20marketplace:\x20third-party\x20sellers\x20are\x20hosted\x20under\x20the\x20operator\x27s\x20Permission\x20entities,\x20unlike\x20the\x20vertical\x20variant\x20where\x20makers\x20self-fulfill\x20their\x20own\x20storefront\x20Services','Single-point\x20settlement\x20merges\x20reserve\x20+\x20settlement\x20cycle\x20+\x20return\x20window\x20into\x20ONE\x20settlement\x20time-lock\x20(14-day\x20cycle\x20vs\x20the\x20vertical\x20variant\x27s\x200-3\x20day\x20fast\x20settlement)','Post-settlement\x20claims\x20are\x20paid\x20from\x20a\x20compensation\x20fund\x20instead\x20of\x20per-order\x20holds'],'user_inputs':['commission_rate_bps\x20—\x20platform\x20commission\x20in\x20basis\x20points\x20(default\x201500)','settlement_days\x20/\x20reserve_days\x20/\x20return_window_days\x20—\x20the\x20three\x20windows\x20merged\x20into\x20the\x20settlement\x20time-lock','dispute_window_days\x20—\x20post-settlement\x20claim\x20window','Compensation\x20fund\x20size\x20(>=\x205x\x20the\x20claim\x20cap)']},{'id':'retail/vertical-handmade','industry':'retail','variant':'vertical-handmade','archetype':'challenger','phase':0x1,'machine_shape':[{'name':'paid','role':'Entry:\x20order\x20created\x20and\x20fully\x20escrowed;\x20Machine\x20starts\x20here'},{'name':'confirmed','role':'Seller\x20accepts\x20the\x20handmade/custom\x20order\x20before\x20crafting'},{'name':'shipped','role':'Seller\x20ships\x20within\x20processing\x20time\x20with\x20tracking\x20evidence'},{'name':'delivered','role':'Carrier\x20or\x20buyer\x20confirms\x20delivery\x20—\x20buyer-first\x20confirmation'},{'name':'reviewed','role':'Buyer\x20reviews\x20within\x20the\x20case\x20window'},{'name':'completed','role':'Settlement:\x20no\x20open\x20cases\x20and\x20case\x20window\x20elapsed\x20—\x20settlement\x20Allocator\x20releases\x20funds'},{'name':'return_requested','role':'Return\x20request\x20within\x20the\x20seller\x27s\x20policy\x20window'},{'name':'returned','role':'Return\x20received\x20or\x20returnless\x20approval\x20—\x20triggers\x20refund\x20Allocator\x20to\x20buyer'},{'name':'cancelled','role':'Pre-ship\x20cancellation\x20—\x20triggers\x20refund\x20Allocator\x20to\x20buyer'}],'guards':[{'template_id':'buy_guard_passport','host':'service','purpose':'Product\x20policy\x20gate\x20(handmade/vintage/craft/digital\x20categories)\x20+\x20seller\x20verification\x20proof'},{'template_id':'ship_guard_timelock_wip','host':'machine','purpose':'Ship\x20within\x20processing\x20time\x20AND\x20tracking\x20hash\x20non-empty'},{'template_id':'delivery_confirm_guard_signer','host':'machine','purpose':'Delivery\x20confirmed\x20by\x20buyer-first;\x20seller/carrier\x20only\x20auxiliary\x20evidence'},{'template_id':'late_guard_timelock','host':'machine','purpose':'Late-delivery\x20determination\x20(7\x20days\x20past\x20expected\x20date)\x20for\x20on-time-rate\x20statistics'},{'template_id':'return_auth_guard_timelock','host':'machine','purpose':'Return\x20request\x20gated\x20by\x20the\x20seller\x27s\x20return\x20policy\x20window'},{'template_id':'refund_guard_permission','host':'machine','purpose':'Refund\x20execution\x20requires\x20the\x20refund-executor\x20permission\x20slot\x20(protection\x20program\x20executor)'},{'template_id':'settle_guard_timelock','host':'machine','purpose':'Fast\x20settlement\x200-3\x20days\x20after\x20delivery\x20confirmation\x20(challenger\x20lever\x20vs\x20the\x2014-day\x20scale-marketplace\x20cycle)'},{'template_id':'attribution_guard_evidence','host':'machine','purpose':'Off-site\x20attribution\x20channel\x20proof\x20—\x20attributed\x20orders\x20trigger\x20the\x20higher-rate\x20allocator'},{'template_id':'usage_guard_timelock','host':'arbitration','purpose':'Case\x20opening\x20gated:\x20within\x2030\x20days\x20of\x20expected\x20delivery\x20AND\x2048h\x20help\x20request\x20unresolved'}],'allocator':{'recipient':'entity','count':0x3,'mode':'rate','description':'Attribution-first\x20ordering:\x20attributed\x20orders\x20settle\x20at\x20platform\x20Rate\x203920\x20(24.2%\x20base\x20+\x2015%\x20off-site\x20ads),\x20normal\x20orders\x20at\x20Rate\x202420\x20(7580/2420\x20split),\x20seller\x20takes\x20Surplus;\x20full\x20refund\x20to\x20buyer\x20(Rate\x2010000)\x20on\x20returned/cancelled;\x20small\x20claims\x20(<=\x20$250)\x20absorbed\x20by\x20the\x20compensation\x20fund'},'key_risk':'Attribution\x20fee\x20ordering\x20—\x20first-match\x20allocator\x20semantics\x20require\x20the\x20attribution\x20allocator\x20registered\x20BEFORE\x20the\x20normal\x20one','build_notes':['Extra\x20\x27confirmed\x27\x20node\x20vs\x20the\x20scale-marketplace\x20template\x20—\x20handmade/custom\x20orders\x20need\x20seller\x20acceptance\x20before\x20crafting','No\x20independent\x20fulfiller\x20role\x20—\x20sellers\x20self-fulfill','Allocator\x20registration\x20order\x20is\x20critical:\x20first-match\x20semantics\x20mean\x20the\x20attribution\x20allocator\x20must\x20be\x20registered\x20first,\x20or\x20attributed\x20orders\x20hit\x20the\x20normal\x20rate','Fast\x20settlement\x20(0-3\x20days)\x20is\x20the\x20challenger\x20lever\x20against\x20the\x20scale\x20marketplace\x27s\x2014-day\x20cycle','Star-seller\x20tiering\x20goes\x20through\x20Passport,\x20not\x20the\x20Permission\x20entity\x20table\x20(entity\x20capacity\x20is\x20limited)','Disputes\x20go\x20to\x20an\x20independent\x20Arbitration\x20(case\x20mediators)\x20—\x20never\x20Machine\x20nodes\x20(R-M1-11)'],'fee_params':{'base_commission_rate_bps':0x974,'offsite_ads_rate_bps':0x5dc,'attributed_commission_rate_bps':0xf50,'settlement_delay_days':0x1,'protection_cap_usd':0xfa,'processing_time_days':0x3},'trust_mechanisms':['R1\x20refund\x20path:\x20refund\x20Guard\x20+\x20buyer\x20Rate\x2010000\x20Allocator\x20+\x20purchase-protection\x20payout\x20channel','R2\x20independent\x20Arbitration\x20Permission\x20(a\x20testnet\x20shared-Permission\x20lesson\x20hardened\x20into\x20a\x20contract\x20assertion)','R3\x20compensation\x20fund\x20>=\x205x\x20the\x20$250\x20protection\x20cap','R4\x20buyer-first\x20delivery\x20confirmation\x20—\x20self-sign/self-verify\x20forbidden','R5\x20escrow\x20payment\x20anchored\x20to\x20the\x20order\x20object','R6\x20settlement\x20allocators\x20carry\x20Surplus\x20so\x20Rates\x20<=\x2010000;\x20refund\x20Allocator\x20Rate\x20=\x2010000','R7\x20all\x20configuration\x20before\x20publish\x20(publish\x20freezes;\x20return\x20policy\x20cannot\x20vary\x20per\x20listing\x20after\x20publish)','R8\x20customer-service\x20Contact\x20bound\x20to\x20Service\x20and\x20Machine','R9\x20keeper\x20for\x2048h\x20help-request\x20escalation\x20and\x20settlement\x20trigger','R10\x20category\x20policy\x20embedded\x20in\x20the\x20buy\x20guard\x20as\x20immutable\x20parameters'],'keeper_dependencies':['48h\x20help\x20request\x20escalation','settlement\x20trigger\x20after\x20delivery\x20confirmation\x20(0-3\x20day\x20delay)','case\x20window\x20expiry'],'recommended_role':'merchant','role_rationale':'Artisans\x20and\x20vintage\x20sellers\x20run\x20their\x20own\x20storefront\x20Service\x20directly;\x20the\x20vertical-platform\x20variant\x20hosts\x20makers\x20under\x20Permission\x20entities.','differences':['Makers\x20self-fulfill\x20—\x20no\x20independent\x20fulfiller\x20role;\x20a\x20\x27confirmed\x27\x20node\x20lets\x20the\x20seller\x20accept\x20handmade/custom\x20orders\x20before\x20crafting','Fast\x20settlement\x20(0-3\x20days\x20after\x20delivery\x20confirmation)\x20is\x20the\x20challenger\x20lever\x20against\x20the\x20scale\x20marketplace\x27s\x2014-day\x20cycle','Attribution-first\x20allocator\x20ordering:\x20attributed\x20(off-site\x20channel)\x20orders\x20settle\x20at\x20a\x20higher\x20rate\x20—\x20allocator\x20registration\x20order\x20is\x20critical'],'user_inputs':['base_commission_rate_bps\x20/\x20offsite_ads_rate_bps\x20/\x20attributed_commission_rate_bps\x20—\x20the\x20two-tier\x20commission\x20structure','processing_time_days\x20—\x20the\x20ship-within\x20window','protection_cap_usd\x20—\x20purchase-protection\x20cap\x20absorbed\x20by\x20the\x20compensation\x20fund','Seller\x20return-policy\x20window\x20(return_auth_guard_timelock\x20parameter)']},{'id':'freelance/enterprise-talent-market','industry':'freelance','variant':'enterprise-talent-market','archetype':'leader','phase':0x1,'machine_shape':[{'name':'paid','role':'Entry:\x20fixed-price\x20contract\x20signed\x20and\x20fully\x20escrowed;\x20Machine\x20starts\x20here'},{'name':'in_progress','role':'Freelancer\x20accepts\x20(permission\x20slot)\x20and\x20works;\x20revision\x20loop\x20returns\x20here\x20(max\x202\x20rounds,\x20counted\x20off-chain)'},{'name':'delivered','role':'Deliverable\x20submitted\x20with\x20WIP\x20hash\x20evidence\x20(submit-work\x20semantics)'},{'name':'accepted','role':'Client\x20confirms\x20acceptance\x20—\x20manual\x20signature\x20OR\x2014-day\x20timeout\x20(dual-branch\x20guard)'},{'name':'completed','role':'Freelancer\x20withdraws\x20released\x20funds\x20(triple-check\x20withdraw\x20guard)'},{'name':'cancelled','role':'Pre-work\x20cancellation\x20—\x20triggers\x20full\x20refund\x20Allocator\x20to\x20client'}],'guards':[{'template_id':'buy_guard_identity','host':'service','purpose':'Prevent\x20freelancer\x20self-purchase\x20of\x20their\x20own\x20service\x20(Passport-gated\x20purchase\x20once\x20set)'},{'template_id':'deliver_guard_wip','host':'machine','purpose':'WIP\x20hash\x20required\x20on\x20every\x20submission\x20(submit-work\x20evidence)'},{'template_id':'accept_guard_dual','host':'machine','purpose':'Dual-branch\x20acceptance:\x20client\x20signature\x20OR\x2014-day\x20timeout\x20—\x20forward\x20operator\x20left\x20unbound\x20so\x20the\x20keeper\x20can\x20submit\x20the\x20timeout\x20path'},{'template_id':'withdraw_guard_progress','host':'machine','purpose':'Triple-check\x20withdrawal:\x20progress\x20at\x20completed\x20+\x20signer\x20is\x20freelancer\x20+\x20order\x20bound\x20to\x20this\x20service'},{'template_id':'refund_guard_signer','host':'machine','purpose':'Only\x20the\x20client\x20(order\x20owner)\x20can\x20trigger\x20the\x20pre-work\x20cancellation\x20refund'},{'template_id':'dispute_timeout_guard_timelock','host':'machine','purpose':'7-day\x20dispute\x20response\x20timeout\x20for\x20keeper-driven\x20escalation'}],'allocator':{'recipient':'entity','count':0x2,'mode':'rate','description':'Fixed-price\x20split\x20on\x20completed:\x20freelancer\x20Rate\x208460\x20+\x20platform\x20Rate\x201540\x20(parameterizable\x200-1540;\x20a\x200%\x20launch\x20offer\x20is\x20chain-verifiable);\x20full\x20refund\x20to\x20client\x20(Rate\x2010000\x20via\x20order-anchored\x20recipient)\x20on\x20cancelled;\x20multi-milestone\x20=\x20chained\x20Orders\x20each\x20with\x20its\x20own\x20Allocation'},'key_risk':'Client\x20never\x20accepts\x20delivery\x20—\x20the\x2014-day\x20timeout\x20keeper\x20auto-advances\x20acceptance\x20to\x20unblock\x20freelancer\x20payment','build_notes':['The\x20acceptance\x20forward\x20must\x20NOT\x20bind\x20the\x20client\x20as\x20operator\x20—\x20the\x20dual-branch\x20guard\x20carries\x20both\x20the\x20manual\x20(client\x20signature)\x20and\x20timeout\x20(keeper)\x20paths','Every\x20return\x20to\x20delivered\x20refreshes\x20the\x20progress\x20clock\x20—\x20the\x2014-day\x20window\x20resets\x20naturally\x20on\x20re-submission','Refund\x20recipient\x20is\x20the\x20order\x20object\x20(anchored)\x20—\x20the\x20client\x20then\x20claims\x20via\x20the\x20two-step\x20receive\x20flow','Milestones\x20=\x20multiple\x20chained\x20Orders,\x20each\x20with\x20an\x20independent\x20Allocation;\x20leftover\x20balance\x20can\x20be\x20recharged\x20into\x20the\x20next\x20Order\x20pool','Arbitration:\x20independent\x20Permission\x20(arbiter\x20slot),\x20voting\x20guard\x20mandatory\x20(empty\x20=\x20anyone\x20votes\x20with\x20weight\x201),\x20fee\x20near-zero\x20to\x20cover\x20the\x20small-dispute\x20tail\x20the\x20incumbent\x20abandoned','Disputes\x20flow\x20through\x20Arbitration\x20—\x20never\x20Machine\x20nodes\x20(R-M1-11)'],'fee_params':{'commission_rate_bps':0x604,'escrow_release_days':0xe,'dispute_timeout_days':0x7,'arbitration_fee_usd':337.5,'revision_rounds_max':0x2},'trust_mechanisms':['R1\x20dual-track\x20refund:\x20pre-work\x20cancellation\x20Allocator\x20+\x20arbitration-ruled\x20refund','R2\x20independent\x20arbitration\x20Permission\x20enforced\x20by\x20contract\x20assertion','R3\x20compensation\x20fund\x20required\x20before\x20publish\x20whenever\x20the\x20fund\x20is\x20non-zero','R4\x20acceptance\x20gate:\x20client\x20signature\x20or\x20timeout\x20—\x20freelancer\x20can\x20never\x20self-accept','R5\x20order-anchored\x20refund\x20recipient\x20(anti-hijack)','R6\x20Rate\x20sums\x20=\x2010000\x20on\x20every\x20allocator','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20customer-service\x20Contact\x20bound','R9\x20keepers\x20for\x2014-day\x20auto-accept\x20and\x207-day\x20dispute\x20timeout','R10\x20fee\x20parameters\x20expressed\x20as\x20on-chain\x20allocator\x20configuration'],'keeper_dependencies':['14-day\x20acceptance\x20timeout\x20auto-advance','7-day\x20dispute\x20response\x20timeout','arbitration\x20ruling\x20execution\x20(refund\x20path)'],'recommended_role':'supplier','role_rationale':'Freelancers\x20fulfill\x20client\x20demand\x20(demand/sub-order\x20takers\x20in\x20WoWok\x20terms);\x20the\x20marketplace-operator\x20variant\x20flips\x20the\x20role\x20to\x20merchant.','differences':['Commission-based\x20revenue\x20(floating\x20take,\x20capped\x20at\x201540\x20bps)\x20versus\x20the\x20zero-commission\x20variant\x27s\x20fixed\x20contract\x20fee','14-day\x20acceptance\x20timeout\x20keeper\x20unblocks\x20freelancer\x20payment\x20when\x20the\x20client\x20never\x20accepts','Milestones\x20=\x20chained\x20Orders\x20each\x20with\x20an\x20independent\x20Allocation;\x20leftover\x20balance\x20recharges\x20into\x20the\x20next\x20Order\x20pool'],'user_inputs':['commission_rate_bps\x20—\x20platform\x20take\x20(0-1540;\x20a\x200%\x20launch\x20offer\x20is\x20chain-verifiable)','escrow_release_days\x20—\x20the\x20acceptance\x20timeout\x20window','dispute_timeout_days\x20—\x20dispute\x20response\x20timeout','revision_rounds_max\x20—\x20revision\x20loop\x20cap\x20(counted\x20off-chain)','Arbitration\x20fee\x20(near-zero\x20to\x20cover\x20the\x20small-dispute\x20tail)']},{'id':'freelance/creator-zero-commission','industry':'freelance','variant':'creator-zero-commission','archetype':'challenger','phase':0x1,'machine_shape':[{'name':'listed','role':'Entry:\x20service\x20listed\x20(portfolio\x20Repository\x20attached,\x20public\x20URLs\x20only)'},{'name':'contacted','role':'Client\x20initiates\x20contact\x20—\x20negotiation\x20happens\x20on-Machine'},{'name':'ordered','role':'Contract\x20signed\x20and\x20project\x20funds\x20escrowed'},{'name':'in_progress','role':'Freelancer\x20accepts\x20(permission\x20slot)\x20and\x20works'},{'name':'delivered','role':'Deliverable\x20submitted\x20with\x20WIP\x20hash\x20evidence\x20(recommended)'},{'name':'accepted','role':'Client\x20confirms\x20—\x20manual\x20signature\x20OR\x2048-72h\x20timeout\x20(dual-branch\x20guard)'},{'name':'completed','role':'Freelancer\x20withdraws\x20(triple-check\x20withdraw\x20guard)\x20—\x20fixed\x20fee\x20deducted,\x20remainder\x20to\x20freelancer'},{'name':'cancelled','role':'Pre-work\x20cancellation\x20or\x20post-delivery\x20dispute\x20refund\x20—\x20refund\x20Allocator\x20to\x20client'}],'guards':[{'template_id':'buy_guard_identity','host':'service','purpose':'Prevent\x20freelancer\x20self-purchase\x20(Passport-gated\x20purchase\x20once\x20set)'},{'template_id':'withdraw_guard_progress','host':'machine','purpose':'Triple-check\x20withdrawal:\x20progress\x20at\x20completed\x20+\x20signer\x20is\x20freelancer\x20+\x20order\x20bound\x20to\x20this\x20service'},{'template_id':'refund_guard_signer','host':'machine','purpose':'Only\x20the\x20client\x20(order\x20owner)\x20can\x20trigger\x20refunds\x20—\x20dynamic\x20per-order\x20owner\x20query'},{'template_id':'accept_guard_dual','host':'machine','purpose':'Dual-branch\x20acceptance:\x20client\x20signature\x20OR\x2048-72h\x20timeout\x20(value-add\x20over\x20the\x20testnet-validated\x20base\x20topology)'}],'allocator':{'recipient':'entity','count':0x2,'mode':'surplus','description':'0%\x20commission\x20+\x20fixed\x20contract\x20fee:\x20platform\x20Amount\x20(e.g.\x20$29\x20equivalent)\x20deducted\x20first,\x20freelancer\x20takes\x20Surplus\x20on\x20completed;\x20full\x20refund\x20to\x20client\x20(Rate\x2010000\x20via\x20order-anchored\x20recipient)\x20on\x20cancelled\x20—\x20platform-fee\x20refund\x20is\x20a\x20configurable\x20business\x20decision\x20(default:\x20fee\x20deducted\x20at\x20withdrawal,\x20fully\x20on-chain)'},'key_risk':'Platform\x20revenue\x20without\x20commission\x20—\x20the\x20fixed\x20contract\x20fee\x20must\x20be\x20expressed\x20as\x20an\x20Amount\x20allocator\x20entry,\x20never\x20collected\x20off-chain','build_notes':['Pre-payment\x20funnel\x20(listed\x20->\x20contacted\x20->\x20ordered)\x20is\x20the\x20challenger\x20differentiator\x20—\x20negotiation\x20happens\x20on-Machine\x20(testnet-validated\x20topology)','0%\x20commission\x20is\x20chain-verifiable\x20—\x20the\x20allocator\x20split\x20shows\x20the\x20platform\x20takes\x20only\x20the\x20fixed\x20Amount','Minimum\x20contract\x20size\x20guard:\x20order\x20amount\x20should\x20cover\x20the\x20fixed\x20fee\x20(recommended\x20>=\x202x\x20fee\x20so\x20freelancer\x20earnings\x20>=\x20platform\x20fee)','Arbitration\x20is\x20an\x20add-on\x20(native\x20to\x20WoWok)\x20—\x20independent\x20Permission,\x20near-zero\x20fee\x20for\x20the\x20low-ticket\x20dispute\x20range','Portfolio\x20Repository\x20must\x20use\x20public\x20URLs\x20(testnet\x20lesson:\x20never\x20local\x20addresses)','Disputes\x20route\x20to\x20Arbitration\x20—\x20never\x20Machine\x20nodes\x20(R-M1-11)'],'fee_params':{'commission_rate_bps':0x0,'contract_fee_usd':0x1d,'acceptance_timeout_hours':0x30,'min_contract_usd':0x3a},'trust_mechanisms':['R1\x20refund\x20guard\x20restricted\x20to\x20the\x20order\x20owner\x20(cancellation\x20+\x20post-delivery\x20dispute\x20refund)','R2\x20independent\x20arbitration\x20Permission\x20(a\x20testnet\x20shared-Permission\x20critical\x20lesson,\x20contract-enforced)','R3\x20compensation\x20fund\x20optional;\x20when\x20funded,\x20publish\x20requires\x20a\x20mounted\x20Arbitration','R4\x20acceptance\x20dual-branch:\x20client\x20signature\x20or\x20timeout\x20—\x20no\x20self-accept','R5\x20order-anchored\x20refund\x20recipient','R6\x20single\x20Surplus\x20entry\x20+\x20Amount\x20deducted\x20first\x20(fixed\x20fee\x20is\x20native,\x20no\x20off-chain\x20collection)','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20customer-service\x20Contact\x20bound','R9\x20keeper\x20for\x20the\x2048-72h\x20acceptance\x20timeout','R10\x20fixed\x20fee\x20expressed\x20on-chain\x20as\x20an\x20Amount\x20allocator\x20entry'],'keeper_dependencies':['48-72h\x20acceptance\x20timeout\x20auto-advance','arbitration\x20ruling\x20refund\x20execution'],'recommended_role':'supplier','role_rationale':'Independent\x20freelancers\x20own\x20their\x20funnel\x20and\x20keep\x20100%\x20of\x20project\x20funds;\x20the\x20fixed\x20fee\x20replaces\x20commission\x20—\x20supplier-first\x20economics.','differences':['0%\x20commission\x20+\x20fixed\x20contract\x20fee\x20as\x20an\x20Amount\x20allocator\x20entry\x20—\x20platform\x20revenue\x20decoupled\x20from\x20GMV','Pre-payment\x20funnel\x20(listed\x20->\x20contacted\x20->\x20ordered):\x20negotiation\x20happens\x20on-Machine\x20before\x20any\x20escrow','Arbitration\x20is\x20a\x20WoWok-native\x20add-on\x20rather\x20than\x20an\x20inherited\x20model\x20component'],'user_inputs':['contract_fee_usd\x20—\x20the\x20fixed\x20per-contract\x20platform\x20fee\x20(Amount\x20allocator\x20entry)','acceptance_timeout_hours\x20—\x20client\x20acceptance\x20window\x20before\x20the\x20keeper\x20advances','min_contract_usd\x20—\x20minimum\x20contract\x20size\x20(recommended\x20>=\x202x\x20the\x20fixed\x20fee)']},{'id':'rental/p2p-shortstay','industry':'rental','variant':'p2p-shortstay','archetype':'leader','phase':0x1,'machine_shape':[{'name':'reserved','role':'Entry:\x20booking\x20request\x20open\x20—\x20unpaid;\x20expires\x20via\x20time-lock\x20if\x20not\x20paid'},{'name':'paid','role':'Guest\x20pays\x20(rent\x20+\x20cleaning\x20+\x20service\x20fees\x20escrowed);\x20cancellation\x20tiers\x20active'},{'name':'checked_in','role':'Check-in\x20at\x20the\x20date-typed\x20time\x20gate\x20(host\x20or\x20keeper\x20advances)'},{'name':'checked_out','role':'Check-out\x20at\x20the\x20date-typed\x20time\x20gate;\x20payout\x20and\x20claim\x20windows\x20open'},{'name':'settled','role':'Payout\x20released\x20to\x20host\x20(checkout\x20+\x2024h)\x20—\x20claim\x20may\x20still\x20open'},{'name':'completed','role':'Review\x20window\x20elapsed\x20—\x20order\x20finalized'},{'name':'guest_cancelled','role':'Guest\x20cancels\x20under\x20one\x20of\x20six\x20policy\x20tiers\x20—\x20per-tier\x20refund\x20Allocator'},{'name':'host_cancelled','role':'Host\x20cancels\x20—\x20full\x20refund\x20Allocator\x20to\x20guest\x20+\x20off-chain\x20demotion'},{'name':'claim_open','role':'Host\x20files\x20a\x20damage\x20claim\x20within\x2014\x20days\x20of\x20checkout\x20(evidence\x20pre+post\x20required)'},{'name':'claim_denied','role':'Claim\x20denied\x20by\x20platform\x20review\x20—\x20guest\x20deposit\x20untouched'}],'guards':[{'template_id':'buy_guard_amount','host':'service','purpose':'Payment\x20amount\x20equals\x20the\x20sum\x20of\x20sale\x20items\x20(rent\x20+\x20cleaning\x20+\x20service\x20fee)'},{'template_id':'request_expire_guard_timelock','host':'machine','purpose':'Unpaid\x20reservation\x20expires\x20after\x2024h\x20(keeper\x20advances)'},{'template_id':'cancel_guard_tier_flexible','host':'machine','purpose':'Tier\x201:\x20full\x20refund\x20until\x2024h\x20before\x20check-in'},{'template_id':'cancel_guard_tier_moderate','host':'machine','purpose':'Tier\x202:\x20full\x20refund\x20until\x205\x20days\x20before\x20check-in'},{'template_id':'cancel_guard_tier_limited','host':'machine','purpose':'Tier\x203:\x20full\x20refund\x20until\x2014\x20days\x20before\x20check-in'},{'template_id':'cancel_guard_tier_firm','host':'machine','purpose':'Tier\x204:\x20full\x20refund\x20until\x2030\x20days\x20before\x20check-in'},{'template_id':'cancel_guard_tier_strict','host':'machine','purpose':'Tier\x205:\x2050%\x20refund\x20at\x207+\x20days\x20before\x20check-in'},{'template_id':'cancel_guard_tier_longstay','host':'machine','purpose':'Tier\x206:\x2028+\x20night\x20long\x20stays,\x2030-day\x20window'},{'template_id':'host_cancel_guard_timelock','host':'machine','purpose':'Host\x20cancellation\x20with\x20tiered\x20penalties\x20(48h/30d\x20boundaries)'},{'template_id':'checkin_guard_timelock','host':'machine','purpose':'Check-in\x20date-typed\x20time\x20gate\x20(e.g.\x2016:00\x20on\x20arrival\x20day)'},{'template_id':'checkout_guard_timelock','host':'machine','purpose':'Check-out\x20date-typed\x20time\x20gate\x20(e.g.\x2011:00\x20on\x20departure\x20day)'},{'template_id':'payout_guard_timelock','host':'machine','purpose':'Payout\x20release\x20at\x20checkout\x20+\x2024h'},{'template_id':'claim_window_guard_evidence','host':'machine','purpose':'Claim\x20opening\x20within\x2014\x20days\x20of\x20checkout,\x20relies\x20on\x20pre-check-in\x20and\x20post-check-out\x20evidence\x20writes'},{'template_id':'guest_response_guard_timelock','host':'machine','purpose':'Guest\x20response\x20window\x20(24h)\x20after\x20a\x20claim\x20is\x20filed'},{'template_id':'review_window_guard_timelock','host':'machine','purpose':'Review\x20window\x20/\x20order\x20finalization\x20at\x20checkout\x20+\x2014d'}],'allocator':{'recipient':'entity','count':0x6,'mode':'rate','description':'Rate-only\x20single\x20Allocation:\x20normal\x20payout\x20host\x20Rate\x208450\x20+\x20platform\x20Rate\x201550\x20at\x20checkout+24h;\x20per-tier\x20cancellation\x20refund\x20splits\x20(guest/host/platform\x20Rates\x20sum\x2010000);\x20host\x20cancellation\x20=\x20full\x20refund\x20to\x20guest\x20(Rate\x2010000);\x20damage\x20claims\x20=\x20fixed-tier\x20Amount\x20to\x20host\x20or\x20arbitration-ruled\x20Amount\x20(capped\x20at\x203x\x20order);\x20Surplus\x20deliberately\x20DISABLED\x20to\x20protect\x20the\x20claim-window\x20balance'},'key_risk':'Damage\x20claims\x20without\x20pre-check-in\x20evidence\x20—\x20host\x20claims\x20fail\x20without\x20the\x20pre+post\x20evidence\x20comparison\x20chain','build_notes':['Six\x20cancellation\x20tiers\x20=\x20six\x20time-lock\x20Guards\x20with\x20per-tier\x20refund\x20allocator\x20splits','Date-typed\x20time-lock\x20Guards\x20are\x20per-order\x20instances\x20(Guards\x20freeze\x20after\x20creation)\x20—\x20the\x20template\x20provides\x20a\x20generator,\x20not\x20shared\x20Guards','Surplus\x20mode\x20is\x20disabled\x20in\x20this\x20template\x20—\x20a\x20withdraw-all\x20entry\x20would\x20drain\x20the\x20claim-window\x20balance','Coverage-program\x20equivalent\x20=\x20compensation\x20fund:\x20publishing\x20with\x20a\x20funded\x20pool\x20requires\x20a\x20mounted\x20Arbitration','Arbitration\x20awards\x20are\x20capped\x20at\x203x\x20the\x20order\x20amount\x20—\x20excess\x20is\x20covered\x20by\x20the\x20compensation\x20fund\x20(recipient\x20hard-bound\x20to\x20the\x20order\x20owner)','Claim\x20escalation\x20goes\x20to\x20Arbitration\x20off-Machine\x20(R-M1-11)\x20—\x20claim_open/claim_denied\x20are\x20business\x20states,\x20not\x20dispute\x20terminals','Check-in/check-out/payout\x20auto-advance\x20needs\x20keepers\x20—\x20time-lock\x20Guards\x20only\x20ALLOW\x20transitions'],'fee_params':{'host_rate_bps':0x2102,'platform_rate_bps':0x60e,'payout_delay_hours':0x18,'claim_window_days':0xe,'review_window_days':0xe,'cancellation_tiers':0x6},'trust_mechanisms':['R1\x20per-tier\x20refund\x20allocators\x20+\x20host-cancel\x20full\x20refund','R2\x20independent\x20arbitration\x20Permission\x20(contract-enforced\x20separation)','R3\x20compensation\x20fund\x20(coverage\x20program)\x20covering\x20award\x20amounts\x20beyond\x20the\x203x\x20cap','R4\x20check-in/out\x20time\x20gates\x20+\x20claim\x20evidence\x20reliance\x20—\x20no\x20self-sign','R5\x20order-anchored\x20payments','R6\x20pure-Rate\x20allocators\x20sum\x2010000;\x20Surplus\x20disabled','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20customer-service\x20Contact\x20bound','R9\x20keepers\x20for\x20request\x20expiry,\x20check-in/out,\x20payout,\x20and\x20review\x20windows','R10\x20cancellation\x20policy\x20parameters\x20embedded\x20as\x20immutable\x20Guard\x20tiers'],'keeper_dependencies':['request\x20expiry\x20(24h\x20unpaid)','check-in/check-out\x20time\x20gates','payout\x20release\x20(checkout\x20+\x2024h)','review\x20window\x20completion','claim\x20response\x20window\x20expiry'],'recommended_role':'merchant','role_rationale':'Hosts\x20and\x20property\x20operators\x20own\x20the\x20listing\x20Service;\x20the\x20platform\x20variant\x20hosts\x20many\x20hosts\x20under\x20Permission\x20entities\x20with\x20per-listing\x20Guard\x20instances.','differences':['Light\x20platform:\x20hosts\x20own\x20their\x20listing\x20Services;\x20date-typed\x20time-lock\x20Guards\x20are\x20per-order\x20instances\x20(a\x20generator,\x20not\x20shared\x20Guards)','Six\x20cancellation\x20policy\x20tiers\x20with\x20per-tier\x20refund\x20allocator\x20splits','Damage\x20claims\x20rely\x20on\x20the\x20pre+post\x20evidence\x20comparison\x20chain;\x20Surplus\x20is\x20deliberately\x20disabled\x20to\x20protect\x20the\x20claim-window\x20balance'],'user_inputs':['host_rate_bps\x20/\x20platform_rate_bps\x20—\x20the\x20payout\x20split','payout_delay_hours\x20—\x20payout\x20release\x20delay\x20after\x20checkout','claim_window_days\x20/\x20review_window_days\x20—\x20post-checkout\x20windows','Cancellation\x20tier\x20selection\x20(which\x20of\x20the\x20six\x20tier\x20Guards\x20to\x20mount\x20per\x20listing)']},{'id':'rental/institutional-longstay','industry':'rental','variant':'institutional-longstay','archetype':'challenger','phase':0x1,'machine_shape':[{'name':'deposit_paid','role':'Entry:\x20deposit\x20+\x20first\x20rent\x20+\x20service\x20fee\x20escrowed\x20in\x20a\x20single\x20Allocation\x20(12-month\x20pre-funded\x20pool)'},{'name':'in_use','role':'Handover\x20done\x20(checklist\x20hash\x20written\x20to\x20Repository);\x20tenancy\x20active,\x20monthly\x20releases\x20run'},{'name':'returned','role':'Tenant\x20returns\x20keys\x20(>=\x2015\x20days\x20notice\x20or\x20lease\x20end)'},{'name':'inspected','role':'Verifier\x20inspects\x20within\x2024h\x20(pre+post\x20evidence\x20comparison\x20against\x20the\x20natural-wear\x20table)'},{'name':'completed','role':'Lease\x20finalized\x20—\x20deposit\x20refund\x20Allocator\x20to\x20tenant\x20(3-business-day\x20deadline)'},{'name':'damage_confirmed','role':'Damage\x20confirmed\x20via\x20evidence\x20diff\x20—\x20deposit\x20deduction\x20Allocator\x20(repair\x20cost\x20per\x20public\x20price\x20table)'},{'name':'cancelled','role':'No-fault\x20exit\x20within\x203\x20days\x20of\x20signing\x20—\x20full\x20refund\x20Allocator'},{'name':'early_terminated','role':'Early\x20exit\x20—\x20penalty\x20Allocator\x20(1\x20month\x20rent;\x20halved\x20when\x20re-let)'}],'guards':[{'template_id':'buy_guard_amount','host':'service','purpose':'Deposit\x20+\x20first\x20rent\x20+\x20service\x20fee\x20escrowed\x20on\x20purchase'},{'template_id':'first_pay_deadline_guard_timelock','host':'machine','purpose':'First-payment\x20deadline\x20(20\x20min\x20/\x2048h\x20variants)'},{'template_id':'handover_guard_wip','host':'machine','purpose':'Handover\x20checklist\x20hash\x20written\x20to\x20Repository\x20at\x20move-in'},{'template_id':'return_window_guard_timelock','host':'machine','purpose':'Return\x20request\x20>=\x2015\x20days\x20ahead\x20(or\x20lease\x20end)'},{'template_id':'no_fault_exit_guard_timelock','host':'machine','purpose':'No-fault\x20exit\x20within\x203\x20days\x20of\x20signing\x20—\x20full\x20refund'},{'template_id':'inspect_deadline_guard_timelock','host':'machine','purpose':'Inspection\x20within\x2024h\x20of\x20key\x20return'},{'template_id':'objection_window_guard_timelock','host':'machine','purpose':'Tenant\x20objection\x20window\x2024h\x20after\x20inspection\x20(escalation\x20to\x20Arbitration)'},{'template_id':'refund_deadline_guard_timelock','host':'machine','purpose':'Deposit\x20refund\x20within\x203\x20business\x20days\x20of\x20passing\x20inspection;\x20tenant\x20may\x20self-trigger\x20after\x20expiry'},{'template_id':'monthly_release_guard_timelock','host':'machine','purpose':'TWELVE\x20per-month\x20time-lock\x20Guards\x20(one\x20per\x20rent\x20period)\x20—\x20a\x20single\x20shared\x20Guard\x20would\x20allow\x20same-day\x20double\x20releases'},{'template_id':'damage_guard_wip','host':'machine','purpose':'Damage\x20deduction\x20relies\x20on\x20pre+post\x20evidence\x20comparison;\x20natural-wear\x20table\x20excludes\x20normal\x20aging'},{'template_id':'early_exit_guard_amount','host':'machine','purpose':'Early-exit\x20penalty\x20=\x20100%\x20of\x20one\x20month\x20rent\x20(halved\x20when\x20re-let)'},{'template_id':'lease_end_guard_timelock','host':'machine','purpose':'Lease\x20expiry\x20—\x20triggers\x20the\x20deposit\x20refund\x20path'}],'allocator':{'recipient':'entity','count':0xd,'mode':'amount','description':'Long-term\x20monthly\x20core\x20(single\x20Order\x20+\x20single\x20Allocation\x20pre-funded\x20with\x20deposit\x20+\x2012\x20months\x20rent\x20+\x20fee):\x2012\x20monthly\x20Amount\x20releases\x20(platform\x20fee\x2010%\x20+\x20landlord\x20net)\x20each\x20gated\x20by\x20its\x20own\x20month\x20Guard;\x20deposit\x20refund\x20to\x20tenant\x20at\x20lease\x20end;\x20damage\x20deduction\x20(repair\x20cost\x20to\x20platform\x20+\x20remainder\x20to\x20tenant);\x20early-exit\x20settlement\x20(penalty\x20to\x20platform/landlord\x20+\x20deposit\x20remainder\x20to\x20tenant).\x20Amount\x20mode\x20ONLY\x20—\x20Surplus\x20disabled\x20(would\x20drain\x20future\x20months)'},'key_risk':'Monthly\x20release\x20cadence\x20—\x20a\x20single\x20shared\x20release\x20Guard\x20allows\x20same-day\x20repeated\x20releases;\x20per-month\x20Guards\x20provide\x20the\x20weak\x20cadence\x20gate','build_notes':['threshold\x20=\x20ONE\x20month\x27s\x20rent\x20(not\x20the\x20total)\x20—\x20after\x20the\x2012th\x20release\x20the\x20balance\x20equals\x20exactly\x20one\x20month\x20=\x20threshold,\x20so\x20the\x20final\x20call\x20still\x20passes','All\x20monthly\x20allocators\x20use\x20Amount\x20mode;\x20Surplus\x20is\x20forbidden\x20(a\x20withdraw-all\x20entry\x20would\x20drain\x20future\x20months)','Deposit\x20and\x20rent\x20share\x20one\x20pool\x20but\x20are\x20path-isolated:\x20the\x20deposit\x20appears\x20only\x20in\x20the\x20refund/deduction/early-exit\x20allocators','No-fault\x20exit\x20(<=\x203\x20days)\x20=\x20full\x20refund;\x20the\x20deposit\x20refund\x20deadline\x20(3\x20business\x20days)\x20has\x20a\x20tenant\x20self-trigger\x20fallback\x20after\x20expiry','Deduction\x20pricing\x20must\x20reference\x20the\x20public\x20repair\x20price\x20table\x20(Repository)\x20—\x20eliminates\x20unilateral\x20pricing\x20disputes\x20in\x20arbitration','Deposit-free\x20variant:\x20Passport\x20credit\x20credentials\x20replace\x20the\x20deposit\x20(reputation\x20collateral);\x20the\x20credit\x20line\x20itself\x20stays\x20off-chain','Objections\x20escalate\x20to\x20Arbitration\x20within\x20the\x2024h\x20window\x20(R-M1-11:\x20no\x20dispute\x20nodes)'],'fee_params':{'service_fee_rate_bps':0x3e8,'monthly_allocators':0xc,'deposit_refund_days':0x3,'inspection_deadline_hours':0x18,'objection_window_hours':0x18,'no_fault_exit_days':0x3,'early_exit_penalty_months':0x1},'trust_mechanisms':['R1\x20deposit\x20refund\x20path\x20with\x20deadline\x20+\x20tenant\x20self-trigger\x20fallback;\x20no-fault\x203-day\x20full\x20refund','R2\x20independent\x20arbitration\x20Permission\x20(admin\x20=\x20arbitration\x20party)','R3\x20compensation\x20fund\x20front-pays\x20deposit\x20disputes\x20(award\x20cap\x203x\x20order)','R4\x20inspection\x20by\x20a\x20dedicated\x20verifier\x20role\x20—\x20not\x20the\x20landlord\x20alone','R5\x20order-anchored\x20escrow','R6\x20Amount\x20totals\x20>=\x20threshold;\x20no\x20Surplus\x20anywhere','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20customer-service\x20Contact\x20bound','R9\x20keepers\x20for\x20monthly\x20release\x20triggers\x20and\x20refund\x20deadline','R10\x20rent\x20business\x20parameters\x20embedded\x20as\x20Guard\x20constants\x20—\x20industry-recommended\x20defaults,\x20merchant-configurable'],'keeper_dependencies':['monthly\x20rent\x20release\x20trigger\x20(per-month\x20Guard)','inspection\x20deadline\x20expiry','deposit\x20refund\x20deadline\x20(tenant\x20self-trigger\x20fallback)','lease\x20end\x20settlement'],'recommended_role':'merchant','role_rationale':'Centralized\x20long-term\x20rental\x20operators\x20own\x20the\x20lease\x20Service\x20with\x20dedicated\x20staff\x20roles\x20(handover/inspection/finance\x20Permission\x20entities).','differences':['Heavy\x20operations:\x20dedicated\x20staff\x20roles\x20(handover/inspection/finance)\x20as\x20Permission\x20entities\x20under\x20one\x20operator-owned\x20lease\x20Service','12\x20monthly\x20Amount\x20releases\x20each\x20gated\x20by\x20its\x20OWN\x20month\x20Guard\x20—\x20a\x20single\x20shared\x20Guard\x20would\x20allow\x20same-day\x20double\x20releases','Deposit\x20variants:\x20cash\x20deposit\x20or\x20Passport\x20credit\x20credentials\x20(deposit-free;\x20the\x20credit\x20line\x20stays\x20off-chain)'],'user_inputs':['service_fee_rate_bps\x20—\x20platform\x20service\x20fee\x20on\x20each\x20monthly\x20release','monthly_allocators\x20—\x20lease\x20length\x20in\x20months\x20(one\x20release\x20Guard\x20per\x20month)','deposit_refund_days\x20/\x20inspection_deadline_hours\x20/\x20objection_window_hours\x20—\x20the\x20exit-flow\x20windows','no_fault_exit_days\x20/\x20early_exit_penalty_months\x20—\x20exit\x20policy\x20parameters']},{'id':'education/mooc-degree','industry':'education','variant':'mooc-degree','archetype':'leader','phase':0x1,'machine_shape':[{'name':'admitted','role':'Entry:\x20enrollment\x20confirmed\x20and\x20tuition\x20escrowed;\x20Machine\x20starts\x20here'},{'name':'semester_1','role':'Semester\x201\x20—\x20dual-sign\x20completion\x20(institution\x20certifies\x20+\x20student\x20confirms,\x20threshold=2)'},{'name':'semester_2','role':'Semester\x202\x20—\x20dual-sign\x20completion'},{'name':'semester_3','role':'Representative;\x20expand\x20to\x20the\x20real\x20term\x20count\x20(e.g.\x208\x20semesters)\x20at\x20build\x20time'},{'name':'graduation_ready','role':'All\x20terms\x20completed\x20—\x20awaiting\x20degree\x20conferral'},{'name':'graduated','role':'Degree\x20conferred\x20(terminal)\x20—\x20accumulated\x20remainder\x20released\x20via\x20the\x20single\x20Surplus\x20settlement'},{'name':'withdrawn','role':'Student\x20withdraws\x20—\x20per-term\x20pro-rata\x20refund\x20Allocator\x20(R-M1-11\x20compliant)'}],'guards':[{'template_id':'term_complete_guard_dualsign','host':'machine','purpose':'Per-term\x20release:\x20institution\x20advances\x20(permission\x20slot)\x20+\x20student\x20triggers\x20via\x20Passport\x20—\x20dual-sign\x20prevents\x20self-sign\x20(R4)'},{'template_id':'refund_before_guard_progress','host':'machine','purpose':'Pre-start\x20full\x20refund\x20(progress\x20still\x20at\x20admitted)'},{'template_id':'refund_after_guard_segment','host':'machine','purpose':'Post-start\x20pro-rata\x20refund\x20per\x20completed\x20term\x20(enumerated\x20segments,\x20e.g.\x206-8)'},{'template_id':'cert_guard_platform','host':'machine','purpose':'Certificate\x20claim:\x20assessment\x20passed\x20+\x20identity\x20verified\x20+\x20honor\x20code\x20clean\x20(platform-signed)'},{'template_id':'trial_guard_timelock','host':'machine','purpose':'7-day\x20trial\x20window\x20(subscription\x20side-template)'},{'template_id':'refund_window_guard_timelock','host':'machine','purpose':'14-day\x20refund\x20window\x20for\x20single-course\x20/\x20annual\x20plans'},{'template_id':'time_release_guard_timelock','host':'machine','purpose':'Subscription\x20revenue\x20released\x20at\x20month\x20end\x20(side-template)'}],'allocator':{'recipient':'entity','count':0xa,'mode':'amount','description':'Degree\x20tuition\x20split\x20per\x20term:\x20institution\x20Amount\x2060%\x20+\x20platform\x20Amount\x2030%\x20per\x20term\x20(per-term\x20max\x20cap\x20prevents\x20over-release;\x2010%\x20retained);\x20graduation\x20settlement\x20releases\x20the\x20accumulated\x20remainder\x20to\x20the\x20institution\x20via\x20a\x20single\x20Surplus\x20entry;\x20pre-start\x20refund\x20=\x20full\x20Rate\x2010000\x20to\x20student;\x20post-start\x20pro-rata\x20split\x20(institution\x20k/8,\x20student\x20(8-k)/8,\x20Rate\x20sums\x2010000)'},'key_risk':'Institution\x20self-sign\x20on\x20academic\x20completion\x20—\x20dual-sign\x20threshold=2\x20ensures\x20neither\x20institution\x20nor\x20student\x20can\x20unilaterally\x20release\x20term\x20funds','build_notes':['threshold=2\x20dual-sign\x20is\x20the\x20R4\x20adaptation:\x20the\x20institution\x20certifies\x20academics,\x20the\x20student\x20confirms\x20funds\x20—\x20neither\x20side\x20can\x20unilaterally\x20withdraw\x20term\x20payments','Per-term\x20allocators\x20carry\x20a\x20max\x20cap\x20—\x20prevents\x20over-release;\x20the\x20per-term\x20remainder\x20accumulates\x20until\x20the\x20graduation\x20Surplus\x20settlement','Setting\x20lock\x20extended\x20to\x20cover\x20a\x20full\x20term\x20(~120\x20days,\x20add-only)\x20—\x20hedges\x20against\x20unilateral\x20fee-rule\x20changes','Certificate/degree\x20Repository\x20policies\x20freeze\x20on\x20write;\x20refund\x20orchestration\x20must\x20void\x20the\x20certificate\x20BEFORE\x20the\x20refund','Financial\x20aid\x20(scholarships\x20/\x20need-based\x20waivers)\x20=\x20OFF-chain\x20channel:\x20eligibility\x20review\x20and\x20waiver\x20approval\x20stay\x20off-chain;\x20the\x20on-chain\x20Order\x20records\x20only\x20the\x20actually-charged\x20amount\x20—\x20aid\x20never\x20creates\x20zero-amount\x20Orders\x20and\x20does\x20not\x20occupy\x20on-chain\x20objects','Withdrawal\x20refunds\x20route\x20via\x20Allocators\x20(R-M1-11);\x20disputes\x20(refund\x20ratio,\x20grades,\x20certificate\x20revocation)\x20go\x20to\x20Arbitration'],'fee_params':{'platform_fee_rate_bps':0x5dc,'term_count':0x8,'tuition_usd':0x6a98,'term_price_usd':0xd53,'institution_share_bps':0x1770,'platform_share_bps':0xbb8,'setting_lock_days':0x78,'refund_window_days':0xe},'trust_mechanisms':['R1\x20pre-start\x20full\x20refund\x20+\x20post-start\x20pro-rata\x20refund\x20allocators','R2\x20independent\x20arbitration\x20Permission\x20(contract\x20assertion)','R3\x20compensation\x20fund\x20~1%\x20of\x20tuition\x20scale\x20(high\x20ticket)','R4\x20dual-sign\x20term\x20completion\x20(threshold=2)\x20—\x20no\x20self-sign','R5\x20order-anchored\x20refund\x20recipient','R6\x20Amount\x20max\x20caps\x20+\x20Rate\x20sums\x2010000;\x20single\x20Surplus\x20at\x20graduation','R7\x20publish\x20freeze\x20(course\x20revisions\x20=\x20new\x20WIP\x20versions,\x20not\x20Machine\x20edits)','R8\x20customer-service\x20Contact\x20bound','R9\x20keepers\x20for\x20subscription\x20expiry\x20and\x20renewal\x20reminders','R10\x20setting\x20lock\x20>=\x20term\x20duration\x20(recommended:\x20covers\x20a\x20full\x20term\x20so\x20mid-term\x20changes\x20need\x20a\x20new\x20WIP\x20version)'],'keeper_dependencies':['subscription\x20expiry\x20(trial/period\x20end)','monthly\x20subscription\x20release','renewal\x20reminder\x20before\x20period\x20end'],'recommended_role':'merchant','role_rationale':'Partner\x20universities/institutions\x20own\x20the\x20degree\x20Service;\x20platform\x20operations\x20and\x20certificate\x20issuance\x20run\x20under\x20dedicated\x20Permission\x20entities.','differences':['Large-ticket\x20tuition\x20escrowed\x20up\x20front\x20and\x20released\x20PER\x20TERM\x20with\x20dual-sign\x20completion\x20(institution\x20certifies\x20+\x20student\x20confirms,\x20threshold=2)','Per-term\x20allocators\x20carry\x20max\x20caps;\x20the\x20accumulated\x20remainder\x20releases\x20at\x20graduation\x20via\x20a\x20single\x20Surplus\x20settlement','Certificate/degree\x20Repository\x20freezes\x20on\x20write\x20—\x20refund\x20orchestration\x20must\x20void\x20the\x20certificate\x20BEFORE\x20the\x20refund'],'user_inputs':['term_count\x20—\x20real\x20number\x20of\x20terms\x20(semester_*\x20nodes\x20expand\x20to\x20match)','tuition_usd\x20/\x20term_price_usd\x20—\x20the\x20tuition\x20structure','institution_share_bps\x20/\x20platform_share_bps\x20—\x20per-term\x20split\x20(remainder\x20retained\x20until\x20graduation)','setting_lock_days\x20—\x20recommended:\x20cover\x20a\x20full\x20term\x20(merchant-configurable)','refund_window_days\x20—\x20single-course\x20/\x20annual\x20plan\x20window']},{'id':'education/live-class-cohort','industry':'education','variant':'live-class-cohort','archetype':'challenger','phase':0x1,'machine_shape':[{'name':'enrolled','role':'Entry:\x20term\x20paid\x20and\x20escrowed\x20(regular-course\x20Service;\x20the\x20trial\x20funnel\x20is\x20a\x20separate\x20Service)'},{'name':'session_1','role':'Session\x201\x20—\x20dual-sign\x20attendance\x20(institution\x20advances\x20+\x20parent\x20signs,\x20threshold=2)'},{'name':'session_2','role':'Session\x202\x20—\x20dual-sign\x20attendance'},{'name':'session_3','role':'Representative;\x20expand\x20to\x20N\x20sessions\x20at\x20build\x20time\x20(merchant\x20sets\x20the\x20real\x20count)'},{'name':'completed_ready','role':'All\x20sessions\x20attended\x20—\x20awaiting\x20finalization'},{'name':'completed','role':'Course\x20finalized\x20(terminal)'},{'name':'withdrawn','role':'Refund\x20requested\x20—\x20pre-start\x20full\x20refund\x20or\x20post-start\x20pro-rata\x20Allocator\x20(R-M1-11\x20compliant)'},{'name':'renewal_window','role':'Renewal\x20window\x20open\x20—\x20next\x20term\x20via\x20a\x20new\x20Order\x20(REUSE\x20pattern,\x20Machine\x20stays\x20a\x20DAG)'}],'guards':[{'template_id':'prepay_cap_guard','host':'service','purpose':'Buy\x20gate\x20(R10,\x20industry-recommended\x20defaults\x20—\x20merchant-configurable):\x20max\x20prepay\x20amount\x205000\x20/\x20max\x2060\x20sessions\x20/\x20max\x203\x20months\x20—\x20on-chain\x20checks\x20Passport-submitted\x20values'},{'template_id':'attendance_guard_dualsign','host':'machine','purpose':'Session\x20release\x20requires\x20the\x20parent\x27s\x20(order\x20owner\x27s)\x20signature\x20—\x20the\x20institution\x20can\x20NOT\x20self-claim;\x20release-sequence\x20lock\x20prevents\x20over-release'},{'template_id':'refund_before_guard_progress','host':'machine','purpose':'Pre-start\x20full\x20refund\x20(progress\x20still\x20at\x20enrolled)'},{'template_id':'refund_after_guard_segment','host':'machine','purpose':'Post-start\x20pro-rata\x20refund:\x20(N-k)/N\x20converted\x20to\x20static\x20Rate\x20segments'},{'template_id':'content_wip_guard','host':'repository','purpose':'Syllabus\x20+\x20material\x20hash\x20commitment\x20written\x20BEFORE\x20course\x20start\x20(anti\x20empty-broadcast\x20/\x20silent\x20substitution)'}],'allocator':{'recipient':'entity','count':0x15,'mode':'amount','description':'Per-session\x20release:\x20institution\x20Amount\x20=\x20term_price\x20/\x20N\x20(e.g.\x205000/20\x20=\x20250)\x20gated\x20by\x20the\x20dual-sign\x20attendance\x20guard\x20with\x20a\x20release-sequence\x20lock;\x20optional\x20platform\x20commission\x20entry;\x20pre-start\x20refund\x20=\x20Rate\x2010000\x20to\x20the\x20order-anchored\x20recipient;\x20post-start\x20pro-rata\x20Rate\x20splits\x20((N-k)*500\x20to\x20parent,\x20k*500\x20to\x20institution,\x20sums\x2010000).\x20No\x20Surplus\x20—\x20integer-division\x20remainder\x20stays\x20in\x20the\x20pool\x20by\x20design'},'key_risk':'Institution\x20self-claiming\x20attendance\x20—\x20release\x20requires\x20the\x20parent\x27s\x20(order\x20owner\x27s)\x20signature;\x20the\x20institution\x20only\x20advances\x20the\x20workflow','build_notes':['Dual-sign\x20attendance:\x20the\x20institution\x20advances\x20the\x20workflow\x20(permission\x20slot)\x20but\x20fund\x20release\x20requires\x20the\x20parent\x27s\x20signature\x20—\x20fixes\x20the\x20classic\x20self-sign\x20bug','Over-release\x20defense:\x20the\x20attendance\x20Guard\x20family\x20adds\x20a\x20release-sequence\x20lock\x20(payment\x20vector\x20length\x20check)\x20—\x20exactly\x20one\x20trigger\x20per\x20session','Business\x20caps\x20(R10,\x20industry-recommended\x20defaults\x20—\x20merchant-configurable):\x20max\x20prepay\x205000\x20/\x2060\x20sessions\x20/\x203\x20months\x20—\x20the\x20on-chain\x20guard\x20checks\x20Passport-submitted\x20values;\x20Sale\x20structure\x20+\x20quote\x20validation\x20enforce\x20the\x20real\x20bounds','Setting\x20lock\x20extended\x20to\x2090\x20days\x20(add-only\x20function;\x20set\x20once)','Session\x20nodes\x20are\x20representative\x20—\x20expand\x20to\x20N\x20at\x20build\x20time;\x2060\x20sessions\x20is\x20about\x2067\x20nodes\x20(two-thirds\x20of\x20the\x20node\x20cap)','Refund\x20segments\x20are\x20static\x20Rate\x20conversions\x20of\x20(N-k)/N;\x20no\x20Surplus\x20(avoids\x20fractional\x20remainder\x20disputes)','Trial\x20funnel\x20is\x20a\x20SEPARATE\x20Service\x20(lead\x20product);\x20coupon\x20handoff\x20via\x20a\x20Discount\x20pointing\x20at\x20the\x20main-course\x20Service'],'fee_params':{'prepay_cap':0x1388,'max_sessions':0x3c,'max_months':0x3,'term_price':0x1388,'session_count':0x14,'per_session_release':0xfa,'setting_lock_days':0x5a,'platform_commission_rate_bps':0x3e8},'trust_mechanisms':['R1\x20pre-start\x20full\x20refund\x20+\x20post-start\x20pro-rata\x20segment\x20refunds','R2\x20independent\x20arbitration\x20Permission\x20(fee\x20<=\x202%\x20of\x20tuition)','R3\x20compensation\x20fund\x20(10x\x20single\x20order)\x20with\x20a\x2090-day\x20locked\x20withdrawal\x20wait','R4\x20parent-signature\x20attendance\x20release\x20—\x20institution\x20self-sign\x20forbidden','R5\x20order-anchored\x20refund\x20recipient\x20(two-step\x20claim)','R6\x20per-session\x20Amount\x20>=\x20threshold\x200;\x20refund\x20Rate\x20sums\x2010000','R7\x20publish\x20freeze\x20(schedule\x20changes\x20=\x20Repository\x20version\x20evidence,\x20not\x20Machine\x20edits)','R8\x20customer-service\x20Contact\x20bound','R9\x20keepers\x20for\x20trial\x20expiry\x20and\x20renewal\x20window','R10\x20business\x20prepay\x20caps\x20embedded\x20as\x20buy-guard\x20constants\x20(industry-recommended\x20defaults,\x20merchant-configurable)'],'keeper_dependencies':['trial\x20lesson\x20expiry','renewal\x20window\x20trigger','arbitration\x20ruling\x20refund\x20execution'],'recommended_role':'merchant','role_rationale':'Tutoring\x20institutions\x20own\x20the\x20course\x20Service;\x20the\x20parent\x20is\x20the\x20order\x20owner\x20whose\x20signature\x20gates\x20every\x20session\x20release.','differences':['Per-session\x201/N\x20progressive\x20release\x20—\x20funds\x20unlock\x20only\x20as\x20sessions\x20are\x20attended\x20(anti-runaway\x20protection)','Parent\x20(order\x20owner)\x20signature\x20gates\x20every\x20session\x20release;\x20the\x20institution\x20only\x20advances\x20the\x20workflow','Prepay\x20caps\x20(max\x20amount\x20/\x20sessions\x20/\x20months\x20—\x20industry-recommended\x20defaults,\x20merchant-configurable)\x20embedded\x20in\x20the\x20buy\x20guard;\x20the\x20trial\x20funnel\x20is\x20a\x20separate\x20lead\x20Service'],'user_inputs':['session_count\x20—\x20real\x20session\x20count\x20(session_*\x20nodes\x20expand\x20to\x20N;\x20merchant\x20sets\x20the\x20count)','term_price\x20/\x20per_session_release\x20—\x20the\x20term\x20price\x20and\x20its\x201/N\x20release\x20unit','prepay_cap\x20/\x20max_sessions\x20/\x20max_months\x20—\x20buy-gate\x20constants\x20(industry-recommended\x20defaults,\x20merchant-configurable)','platform_commission_rate_bps\x20—\x20optional\x20platform\x20commission\x20entry']},{'id':'travel/global-ota','industry':'travel','variant':'global-ota','archetype':'leader','phase':0x1,'machine_shape':[{'name':'paid','role':'Entry:\x20booking\x20paid\x20and\x20escrowed;\x20Machine\x20starts\x20here'},{'name':'confirmed','role':'Property/supplier\x20confirms\x20(permission\x20slot);\x2048h\x20confirm\x20timeout\x20releases\x20via\x20keeper'},{'name':'in_stay','role':'Check-in:\x20property\x20submits\x20redemption\x20WIP\x20+\x20buyer\x20confirms\x20(dual\x20confirmation)'},{'name':'completed','role':'Check-out\x20(date\x20gate\x20or\x20buyer\x20confirmation);\x20no-show\x20branch\x20lands\x20here\x20with\x20the\x20charge\x20allocator'},{'name':'reviewed','role':'Buyer\x20submits\x20review\x20—\x20Reward\x20window\x2090\x20days'},{'name':'settled','role':'Settlement\x20Allocator\x20fires\x20(terminal):\x20property\x20net\x20+\x20commission\x20+\x20payment\x20fee'},{'name':'cancelled','role':'Free\x20cancellation\x20(72h\x20pre-check-in)\x20or\x20confirm\x20timeout\x20—\x20refund\x20Allocator\x20to\x20buyer'},{'name':'claim_open','role':'Oversell/walk\x20claim\x20—\x20buyer\x20or\x20support\x20reports;\x20arbitration\x20decides\x20off-Machine'}],'guards':[{'template_id':'free_cancel_guard_timelock','host':'machine','purpose':'Free\x20cancellation\x20before\x20check-in\x20minus\x2072h\x20(0-168h\x20adjustable)\x20—\x20buyer-triggered'},{'template_id':'confirm_timeout_guard_timelock','host':'machine','purpose':'Supplier\x20confirm\x20timeout\x2048h\x20—\x20keeper\x20releases\x20the\x20order'},{'template_id':'check_in_guard_wip','host':'machine','purpose':'Redemption\x20evidence\x20hash\x20compared\x20against\x20the\x20listing\x20commitment;\x20dual\x20confirmation\x20(R4)'},{'template_id':'check_out_guard_timelock','host':'machine','purpose':'Check-out\x20at\x20the\x20departure\x20date\x20gate\x20or\x20buyer\x20confirmation'},{'template_id':'noshow_guard_evidence','host':'machine','purpose':'Property\x20evidences\x20no-show\x20+\x20time\x20gate\x20—\x20triggers\x20the\x20charge\x20allocator'},{'template_id':'settle_guard_timelock','host':'machine','purpose':'Settlement\x20at\x20max(cancel\x20deadline,\x20check-in\x20date)\x20+\x20payout\x20delay'},{'template_id':'ruling_refund_guard_evidence','host':'machine','purpose':'Arbitration\x20ruling\x20evidence\x20triggers\x20the\x20refund\x20allocator'},{'template_id':'review_guard_evidence','host':'reward','purpose':'Review\x20claim\x20condition:\x20progress\x20at\x20completed\x20+\x20review\x20content\x20hash'}],'allocator':{'recipient':'entity','count':0x5,'mode':'rate','description':'Merchant-mode\x20settlement:\x20property\x20Rate\x208400\x20+\x20platform\x20commission\x20Rate\x201500\x20+\x20payment\x20fee\x20Rate\x20100\x20(sum\x2010000)\x20at\x20the\x20settlement\x20point;\x20free\x20cancellation\x20=\x20full\x20refund\x20to\x20the\x20order-anchored\x20recipient;\x20percentage\x20cancellation\x20policies\x20=\x20platform\x20X\x20/\x20buyer\x20(10000-X)\x20splits;\x20no-show\x20approximates\x20a\x20first-night\x20charge\x20by\x20Rate;\x20arbitration-ruled\x20refunds\x20full\x20or\x20partial'},'key_risk':'Oversell\x20walk\x20—\x20buyer-first\x20claim\x20evidence\x20+\x20arbitration\x20ruling\x20refund\x20with\x20compensation-fund\x20front-pay','build_notes':['Merchant\x20mode\x20=\x20funds\x20flow\x20buyer\x20->\x20escrow\x20->\x20property/platform;\x20agent\x20mode\x20(reverse\x20commission)\x20=\x20the\x20commission-DEPOSIT\x20variant:\x20the\x20supplier\x20posts\x20a\x20refundable\x20commission\x20deposit\x20(a\x20separate\x20prepaid\x20Allocation)\x20at\x20onboarding,\x20each\x20order\x20still\x20settles\x20buyer\x20->\x20escrow\x20->\x20supplier\x20net,\x20and\x20the\x20platform\x20draws\x20the\x20accrued\x20commission\x20from\x20the\x20deposit\x20pool\x20on\x20the\x20settlement\x20cadence\x20—\x20no\x20reverse-fund-flow\x20primitive\x20needed','Free-cancellation\x20window\x20(default\x2072h\x20pre-check-in)\x20is\x20a\x20single\x20time-lock\x20Guard\x20—\x20buyer-triggered','Supplier\x20confirm\x20timeout\x20(48h)\x20releases\x20the\x20order\x20via\x20keeper;\x20the\x20property\x20is\x20demoted\x20off-chain','Check-in\x20is\x20dual-confirmation:\x20property\x20submits\x20the\x20redemption\x20WIP\x20+\x20buyer\x20confirms\x20(R4)','Settlement\x20ledger\x20+\x20redemption\x20evidence\x20+\x20walk\x20evidence\x20live\x20in\x20dedicated\x20Repositories\x20with\x20write-guarded\x20policies','Refund\x20recipient\x20is\x20the\x20order\x20object\x20(anchored)\x20—\x20the\x20buyer\x20claims\x20via\x20the\x20two-step\x20receive\x20flow\x20(R5)','Disputes\x20route\x20to\x20Arbitration\x20with\x20an\x20independent\x20Permission\x20(R-M1-11)'],'fee_params':{'property_rate_bps':0x20d0,'commission_rate_bps':0x5dc,'payment_fee_bps':0x64,'free_cancel_hours':0x48,'confirm_timeout_hours':0x30,'review_window_days':0x5a,'preferred_property_rate_bps':0x1fa4},'trust_mechanisms':['R1\x20three\x20refund\x20paths:\x20free\x20cancellation\x20/\x20cancellation\x20policy\x20/\x20arbitration\x20ruling','R2\x20independent\x20arbitration\x20Permission\x20(contract-enforced)','R3\x20compensation\x20fund\x20>=\x205x\x20max\x20order\x20(front-pay\x20+\x20recovery)','R4\x20check-in\x20dual\x20confirmation\x20—\x20property\x20self-sign\x20forbidden','R5\x20order-anchored\x20escrow\x20+\x20refund\x20recipient','R6\x20Rate\x20sums\x20=\x2010000;\x20threshold\x200','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20Contact\x20on\x20Service\x20and\x20Machine','R9\x20keepers\x20for\x20confirm\x20timeout,\x20check-out,\x20and\x20settlement','R10\x20cancellation\x20policy\x20parameters\x20as\x20immutable\x20Guard\x20windows'],'keeper_dependencies':['supplier\x20confirm\x20timeout\x20(48h)','check-out\x20time\x20gate','settlement\x20trigger\x20(payout\x20delay)','review\x20window\x20expiry'],'recommended_role':'merchant','role_rationale':'Property\x20operators\x20and\x20hotel\x20merchants\x20own\x20the\x20booking\x20Service;\x20the\x20platform\x20variant\x20hosts\x20properties\x20under\x20Permission\x20entities\x20with\x20per-property\x20settlement\x20ledgers.','differences':['Merchant-mode\x20settlement\x20(buyer\x20->\x20escrow\x20->\x20property/platform);\x20agent\x20mode\x20(reverse\x20commission)\x20=\x20the\x20commission-deposit\x20variant:\x20supplier\x20posts\x20a\x20refundable\x20deposit\x20Allocation\x20at\x20onboarding,\x20the\x20platform\x20draws\x20accrued\x20commission\x20from\x20it\x20on\x20the\x20settlement\x20cadence','Free-cancellation\x20window\x20+\x20supplier\x20confirm\x20timeout\x20(48h\x20keeper\x20release)\x20shape\x20the\x20pre-stay\x20funnel','Check-in\x20is\x20dual-confirmation:\x20property\x20redemption\x20WIP\x20+\x20buyer\x20confirm\x20(R4)'],'user_inputs':['property_rate_bps\x20/\x20commission_rate_bps\x20/\x20payment_fee_bps\x20—\x20the\x20settlement\x20split\x20(sum\x2010000)','free_cancel_hours\x20—\x20free-cancellation\x20window\x20before\x20check-in','confirm_timeout_hours\x20—\x20supplier\x20confirmation\x20timeout','review_window_days\x20—\x20the\x20review\x20Reward\x20window']},{'id':'travel/destination-experience','industry':'travel','variant':'destination-experience','archetype':'challenger','phase':0x1,'machine_shape':[{'name':'paid','role':'Entry:\x20multi-segment\x20trip\x20paid\x20and\x20escrowed;\x20Machine\x20starts\x20here'},{'name':'segment_D1','role':'Segment\x201\x20redeemed:\x20supplier\x20submits\x20WIP\x20+\x20buyer\x20confirms\x20(dual\x20confirmation)'},{'name':'segment_D2','role':'Segment\x202\x20redeemed\x20(same\x20dual-confirmation\x20pattern)'},{'name':'segment_D3','role':'Segment\x203\x20redeemed\x20—\x20representative;\x20configure\x20per-segment\x20nodes\x20at\x20build\x20time'},{'name':'completed','role':'All\x20segments\x20redeemed'},{'name':'settled','role':'Settlement\x20Allocator\x20fires\x20(terminal)\x20—\x20layer-1\x20pool\x20to\x20platform\x20aggregation'},{'name':'cancelled','role':'Free\x20cancellation\x20(24h\x20pre-use)\x20or\x20tiered\x20cancellation\x20—\x20refund/charge\x20Allocators'}],'guards':[{'template_id':'free_cancel_guard_timelock','host':'machine','purpose':'Free\x20cancellation\x20before\x20use\x20date\x20minus\x2024h\x20(0-168h\x20adjustable)'},{'template_id':'cancel_tier_guard_timelock','host':'machine','purpose':'Four\x20cancellation\x20tiers\x20(7d+\x20/\x203-7d\x20/\x201-3d\x20/\x20same-day)\x20charging\x205%\x20/\x2020%\x20/\x2050%\x20/\x2070%'},{'template_id':'redeem_guard_wip','host':'machine','purpose':'Per-segment\x20redemption\x20WIP:\x20supplier\x20submits\x20+\x20buyer\x20confirms\x20(T+3\x20time-lock\x20fallback)'},{'template_id':'evidence_guard_timelock','host':'machine','purpose':'Force-majeure\x20evidence\x20window\x2048h\x20—\x20expired\x20claims\x20lose\x20standing'},{'template_id':'settle_guard_evidence','host':'machine','purpose':'Settlement\x20when\x20all\x20segments\x20redeemed\x20(or\x20monthly\x20cycle\x20variant)'},{'template_id':'ruling_refund_guard_evidence','host':'machine','purpose':'Arbitration\x20ruling\x20evidence\x20triggers\x20the\x20refund\x20allocator'},{'template_id':'review_guard_evidence','host':'reward','purpose':'Review\x20claim:\x20progress\x20at\x20completed\x20+\x20review\x20content\x20hash'}],'allocator':{'recipient':'entity','count':0x8,'mode':'rate','description':'Two-tier\x20waterfall:\x20layer-1\x20(Service-level,\x20shared\x20by\x20all\x20orders)\x20settles\x20the\x20full\x20amount\x20to\x20the\x20platform\x20pool,\x20refunds\x20free\x20cancellations\x20fully,\x20applies\x20four-tier\x20cancellation\x20charges,\x20and\x20executes\x20arbitration\x20refunds;\x20layer-2\x20(a\x20per-order\x20Allocation\x20created\x20after\x20payment)\x20releases\x20per-segment\x20fixed\x20Amounts\x20to\x20each\x20supplier\x20on\x20redemption,\x20with\x20the\x20platform\x20taking\x20the\x20remainder\x20as\x20a\x20single\x20Surplus\x20entry\x20(commission\x20=\x20order\x20total\x20-\x20segment\x20sums)'},'key_risk':'Per-segment\x20supplier\x20payout\x20under\x20Service-level\x20static\x20rules\x20—\x20the\x20per-order\x20second-layer\x20Allocation\x20bypasses\x20the\x20Service\x20granularity\x20freeze','build_notes':['Core\x20redesign:\x20a\x20Service-level\x20segment\x20Rate\x20allocator\x20fails\x20contract\x20validation\x20—\x20use\x20a\x20per-order\x20layer-2\x20Allocation\x20(publicly\x20creatable\x20after\x20payment)\x20with\x20per-segment\x20Amount\x20entries','Layer-2\x20Amount\x20entries\x20are\x20exact\x20per-segment\x20figures\x20(per-order\x20customization);\x20sequential\x20execution\x20causes\x20no\x20distortion','Platform\x20commission\x20=\x20the\x20pool\x20remainder\x20via\x20a\x20single\x20Surplus\x20entry\x20(no\x20explicit\x20Rate\x20needed)','Instant-confirmation\x20variant\x20(real-time\x20ticketing):\x20paid\x20->\x20confirmed\x20->\x20redeemed\x20->\x20completed\x20(4\x20nodes)','Monthly\x20settlement\x20variant:\x20layer-2\x20recipients\x20=\x20platform\x20Treasury\x20aggregation\x20+\x20supplier-by-month\x20settlement\x20ledger;\x20batch\x20payout\x20via\x20permissioned\x20Treasury\x20withdrawal','Force-majeure\x20evidence\x20window\x20is\x2048h\x20—\x20expired\x20claims\x20lose\x20standing\x20(prevents\x20retroactive\x20evidence)','Disputes\x20route\x20to\x20Arbitration\x20with\x20an\x20independent\x20Permission\x20(R-M1-11)'],'fee_params':{'free_cancel_hours':0x18,'cancel_tier_charges_bps':'500/2000/5000/7000','segment_count':0x3,'evidence_window_hours':0x30},'trust_mechanisms':['R1\x20three\x20refund\x20allocators\x20(free\x20cancellation\x20/\x20tiered\x20balance\x20/\x20arbitration)\x20with\x20order-anchored\x20recipients','R2\x20independent\x20arbitration\x20Permission\x20(structurally\x20eliminates\x20the\x20shared-Permission\x20critical\x20finding)','R3\x20compensation\x20fund\x20>=\x205x\x20max\x20order\x20(guarantee\x20front-pay\x20pool)','R4\x20per-segment\x20dual\x20confirmation:\x20supplier\x20WIP\x20+\x20buyer\x20confirm\x20or\x20T+3\x20fallback','R5\x20both\x20layers\x20anchor\x20payments\x20to\x20the\x20order','R6\x20layer-1\x20Rate\x20sums\x2010000;\x20layer-2\x20Amount\x20+\x20single\x20Surplus','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20Contact\x20on\x20Service\x20and\x20Machine','R9\x20keepers\x20for\x20layer-2\x20Allocation\x20creation,\x20settlement,\x20and\x20evidence\x20windows','R10\x20tiered\x20cancellation\x20parameters\x20as\x20immutable\x20Guard\x20windows'],'keeper_dependencies':['per-order\x20layer-2\x20Allocation\x20creation\x20after\x20payment','settlement\x20trigger\x20(all\x20segments\x20redeemed\x20or\x20monthly\x20cycle)','T+3\x20redemption\x20confirmation\x20fallback','force-majeure\x20evidence\x20window\x20expiry'],'recommended_role':'both','role_rationale':'Experience\x20suppliers\x20fulfill\x20segments\x20as\x20sub-order\x20takers\x20(supplier\x20path);\x20the\x20platform\x20operator\x20runs\x20the\x20two-tier\x20waterfall\x20(merchant\x20path).','differences':['Redemption\x20=\x20the\x20only\x20settlement\x20evidence:\x20per-segment\x20supplier\x20WIP\x20+\x20buyer\x20dual\x20confirmation\x20(T+3\x20time-lock\x20fallback)','Two-tier\x20waterfall:\x20Service-level\x20layer-1\x20pool\x20+\x20a\x20per-order\x20layer-2\x20Allocation\x20for\x20per-segment\x20supplier\x20payouts\x20(bypasses\x20the\x20Service\x20granularity\x20freeze)','Platform\x20commission\x20=\x20the\x20pool\x20remainder\x20via\x20a\x20single\x20Surplus\x20entry\x20(no\x20explicit\x20Rate\x20needed)'],'user_inputs':['segment_count\x20—\x20per-segment\x20nodes\x20expand\x20to\x20the\x20real\x20trip\x20structure','free_cancel_hours\x20—\x20free-cancellation\x20window\x20before\x20use','cancel_tier_charges_bps\x20—\x20the\x20four\x20tiered\x20cancellation\x20charges','evidence_window_hours\x20—\x20force-majeure\x20evidence\x20window']},{'id':'subscription/creator-membership','industry':'subscription','variant':'creator-membership','archetype':'leader','phase':0x1,'machine_shape':[{'name':'subscribed','role':'Entry:\x20fan\x20joins;\x20Machine\x20starts\x20here'},{'name':'charging','role':'Fan\x20signs\x20the\x20period\x20charge\x20(explicit\x20signature\x20—\x20never\x20auto-charged);\x20renewal\x20loop\x20re-enters\x20here'},{'name':'delivering','role':'Payment\x20confirmed;\x20creator\x20produces\x20the\x20period\x20content'},{'name':'delivered','role':'Period\x20content\x20hash\x20submitted\x20(matches\x20the\x20order\x20item\x20commitment)'},{'name':'completed','role':'Fan\x20confirms\x20receipt\x20—\x20period\x20funds\x20releasable\x20(R4:\x20fan-only\x20confirmation)'},{'name':'expired','role':'Period\x20end\x20+\x207-day\x20grace\x20passed\x20without\x20renewal\x20(keeper\x20advances)'},{'name':'cancelled','role':'Fan\x20cancels\x20—\x20next-period\x20effective;\x20pro-rata\x20refund\x20Allocator\x20for\x20unearned\x20periods'}],'guards':[{'template_id':'charge_guard_signer','host':'machine','purpose':'Every\x20charge/renewal\x20requires\x20the\x20subscriber\x27s\x20own\x20signature\x20(signer\x20=\x20order\x20owner)\x20—\x20no\x20third\x20party\x20can\x20renew'},{'template_id':'deliver_guard_wip','host':'machine','purpose':'Per-period\x20content\x20hash\x20required,\x20matching\x20the\x20order\x20item\x20commitment'},{'template_id':'withdraw_guard_progress','host':'machine','purpose':'Release\x20gated\x20by\x20the\x20delivery-confirmed\x20state\x20(state-based\x20release,\x20not\x20a\x20calendar\x20window)'},{'template_id':'refund_guard_signer_progress','host':'machine','purpose':'Refund\x20restricted\x20to\x20the\x20order\x20owner\x20in\x20pre-delivery\x20states'},{'template_id':'cancel_guard_signer','host':'machine','purpose':'Fan\x20cancels\x20anytime;\x20effective\x20next\x20period'},{'template_id':'expire_time_guard_timelock','host':'machine','purpose':'Expiry\x20at\x20period\x20end\x20+\x207-day\x20grace\x20(keeper\x20advances)'},{'template_id':'dispute_window_guard_timelock','host':'arbitration','purpose':'Disputes\x20open\x20within\x2014\x20days\x20of\x20delivery\x20—\x20replaces\x20the\x20legacy\x20calendar\x20freeze\x20window'}],'allocator':{'recipient':'entity','count':0x2,'mode':'rate','description':'0%\x20platform\x20take:\x20per-period\x20release\x20Rate\x2010000\x20to\x20the\x20creator\x20at\x20completed;\x20refund\x20Rate\x2010000\x20to\x20the\x20subscriber\x20(signer\x20locked\x20to\x20the\x20order\x20owner\x20by\x20the\x20refund\x20guard);\x20threshold\x20MUST\x20be\x200\x20(a\x20positive\x20threshold\x20locks\x20small\x20residual\x20balances\x20after\x20partial\x20refunds)'},'key_risk':'Auto-renew\x20trap\x20—\x20every\x20period\x20requires\x20an\x20explicit\x20subscriber\x20signature;\x20keepers\x20may\x20remind\x20and\x20expire\x20but\x20can\x20never\x20charge','build_notes':['Per-period\x20signature\x20renewal\x20collapses\x20the\x20bind-card/auto-charge/retry/grace/drop\x20black\x20box\x20into\x20one\x20mechanism:\x20one\x20explicit\x20subscriber\x20signature\x20per\x20period','Renewal\x20=\x20a\x20single\x20subscriber\x20transaction:\x20next-period\x20payment\x20into\x20the\x20Allocation\x20pool\x20+\x20pool\x20recharge\x20+\x20Machine\x20loop\x20back\x20to\x20charging','The\x20renew\x20forward\x20binds\x20the\x20subscriber\x20as\x20operator;\x20the\x20charge\x20guard\x20checks\x20signer\x20=\x20order\x20owner\x20—\x20no\x20third\x20party\x20(creator/keeper)\x20can\x20renew\x20on\x20the\x20subscriber\x27s\x20behalf','The\x20renewal\x20loop\x20edge\x20is\x20legal:\x20the\x20charging\x20node\x20carries\x20two\x20entry\x20pairs\x20(initial\x20+\x20loop);\x20node\x20revisits\x20are\x20unrestricted','threshold\x20must\x20be\x200\x20—\x20small\x20subscription\x20amounts\x20+\x20partial\x20refunds\x20would\x20otherwise\x20lock\x20the\x20residual\x20below\x20a\x20positive\x20threshold','Long\x20subscriptions\x20(>\x2024\x20periods):\x20prefer\x20per-period\x20new\x20Orders\x20to\x20bound\x20progress-history\x20growth','Disputes\x20route\x20to\x20Arbitration\x20(default\x20open\x20voting)\x20—\x20award\x20cap\x20is\x203x\x20the\x20period\x20amount;\x20multi-period\x20disputes\x20split\x20per\x20period\x20(R-M1-11)','Honor-tier\x20Rewards:\x20claim\x20guard\x20=\x20historical\x20period\x20count\x20>=\x20N','Anti-dark-pattern\x20selling\x20point:\x20\x27explicit\x20signature\x20every\x20period\x20—\x20no\x20silent\x20auto-renewal,\x20no\x20card-on-file\x20black\x20box\x27\x20is\x20a\x20trust\x20differentiator;\x20surface\x20it\x20in\x20the\x20listing\x20WIP\x20promise\x20and\x20onboarding\x20copy'],'fee_params':{'platform_take_bps':0x0,'grace_days':0x7,'dispute_window_days':0xe,'renewal_reminder_days':0x3,'threshold':0x0},'trust_mechanisms':['R1\x20refund\x20allocator\x20(Rate\x2010000\x20to\x20subscriber,\x20signer-locked)','R2\x20independent\x20arbitration\x20Permission\x20(contract-enforced\x20separation)','R3\x20compensation\x20fund\x20with\x20award\x20recipient\x20hard-bound\x20to\x20the\x20order\x20owner','R4\x20receipt\x20confirmation\x20by\x20the\x20subscriber\x20only\x20—\x20creator\x20self-sign\x20forbidden','R5\x20period\x20payments\x20anchored\x20to\x20the\x20order\x20Allocation','R6\x20Rate\x20=\x2010000\x20single\x20recipient;\x20threshold\x200','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20customer-service\x20Contact\x20bound','R9\x20keepers\x20for\x20renewal\x20reminders\x20+\x20expiry\x20ONLY\x20(no\x20charge\x20authority)','R10\x20period\x20price\x20embedded\x20in\x20the\x20Sale;\x20no\x20silent\x20auto-charge\x20parameter\x20exists'],'keeper_dependencies':['renewal\x20reminder\x20(period\x20end\x20-\x203\x20days)','expiry\x20trigger\x20(period\x20end\x20+\x20grace)','NO\x20auto-charge\x20authority\x20by\x20design'],'recommended_role':'merchant','role_rationale':'Creators\x20own\x20the\x20subscription\x20Service\x20and\x20keep\x20100%\x20of\x20period\x20funds\x20(0%\x20take);\x20honor\x20tiers\x20are\x20Reward\x20objects\x20on\x20the\x20same\x20Service.','differences':['Tiered\x20membership:\x20honor-tier\x20Reward\x20objects\x20(claim\x20guard\x20=\x20historical\x20period\x20count\x20>=\x20N)\x20layer\x20on\x20top\x20of\x20the\x20base\x20subscription','0%\x20platform\x20take\x20on\x20the\x20base\x20template\x20—\x20revenue\x20extension\x20points\x20are\x20Reward/discount\x20add-ons\x20rather\x20than\x20a\x20take\x20rate','Per-period\x20explicit-signature\x20renewal;\x20keepers\x20remind\x20and\x20expire\x20but\x20can\x20never\x20charge'],'user_inputs':['Period\x20price\x20(embedded\x20in\x20the\x20Sale\x20structure)','grace_days\x20—\x20renewal\x20grace\x20window\x20before\x20expiry','dispute_window_days\x20—\x20dispute\x20opening\x20window\x20after\x20delivery','renewal_reminder_days\x20—\x20keeper\x20reminder\x20lead\x20time','Honor-tier\x20count\x20and\x20per-tier\x20claim\x20thresholds']},{'id':'subscription/direct-fan-subscription','industry':'subscription','variant':'direct-fan-subscription','archetype':'challenger','phase':0x1,'machine_shape':[{'name':'subscribed','role':'Entry:\x20fan\x20joins\x20(age-verified\x20via\x20Passport);\x20Machine\x20starts\x20here'},{'name':'charging','role':'Fan\x20signs\x20the\x20period\x20charge\x20(explicit\x20signature\x20—\x20never\x20auto-charged);\x20renewal\x20loop\x20re-enters\x20here'},{'name':'delivering','role':'Payment\x20confirmed;\x20creator\x20produces\x20the\x20period\x20content\x20/\x20response\x20record'},{'name':'delivered','role':'Period\x20content\x20hash\x20submitted\x20(matches\x20the\x20order\x20item\x20commitment)'},{'name':'completed','role':'Fan\x20confirms\x20receipt\x20—\x20state-machine\x20release\x20replaces\x20the\x20calendar\x20freeze\x20(R4:\x20fan-only\x20confirmation)'},{'name':'expired','role':'Period\x20end\x20+\x207-day\x20grace\x20passed\x20without\x20renewal\x20(keeper\x20advances)'},{'name':'cancelled','role':'Fan\x20cancels\x20—\x20next-period\x20effective;\x20pro-rata\x20refund\x20Allocator'}],'guards':[{'template_id':'buy_guard_age_passport','host':'service','purpose':'Age-verification\x20buy\x20gate\x20(R10):\x20purchase\x20requires\x20a\x20Passport\x20with\x20qualifying\x20age\x20credentials'},{'template_id':'charge_guard_signer','host':'machine','purpose':'Every\x20charge/renewal\x20requires\x20the\x20subscriber\x27s\x20own\x20signature\x20(signer\x20=\x20order\x20owner)'},{'template_id':'deliver_guard_wip','host':'machine','purpose':'Per-period\x20content/response-record\x20hash\x20required,\x20matching\x20the\x20order\x20item\x20commitment'},{'template_id':'withdraw_guard_progress','host':'machine','purpose':'Release\x20gated\x20by\x20the\x20delivery-confirmed\x20state\x20—\x20replaces\x20the\x207/21-day\x20calendar\x20freeze'},{'template_id':'refund_guard_signer_progress','host':'machine','purpose':'Refund\x20restricted\x20to\x20the\x20order\x20owner\x20in\x20pre-delivery\x20states'},{'template_id':'cancel_guard_signer','host':'machine','purpose':'Fan\x20cancels\x20anytime;\x20effective\x20next\x20period'},{'template_id':'expire_time_guard_timelock','host':'machine','purpose':'Expiry\x20at\x20period\x20end\x20+\x207-day\x20grace\x20(keeper\x20advances)'},{'template_id':'dispute_window_guard_timelock','host':'arbitration','purpose':'Dispute\x20window\x20default\x2014\x20days\x20(extendable\x20for\x20new\x20creators\x20as\x20a\x20risk\x20lever)'}],'allocator':{'recipient':'entity','count':0x2,'mode':'rate','description':'0%\x20platform\x20take\x20(the\x20flip\x20of\x20the\x20incumbent\x27s\x2020%):\x20per-period\x20release\x20Rate\x2010000\x20to\x20the\x20creator\x20at\x20completed;\x20refund\x20Rate\x2010000\x20to\x20the\x20subscriber;\x20threshold\x20MUST\x20be\x200\x20for\x20small\x20per-period\x20amounts;\x20tips\x20bypass\x20the\x20Machine\x20entirely\x20(direct\x20payments\x20with\x20no\x20allocation\x20semantics)'},'key_risk':'Chargeback-funded\x20freeze\x20replaced\x20by\x20state-machine\x20release\x20—\x20funds\x20unlock\x20at\x20delivery\x20confirmation,\x20not\x20after\x20a\x20calendar\x20window','build_notes':['State\x20replaces\x20time:\x20release\x20is\x20gated\x20by\x20the\x20delivery-confirmed\x20state,\x20not\x20a\x207/21-day\x20calendar\x20freeze;\x20signature\x20payments\x20eliminate\x20the\x20chargeback\x20category\x20entirely','Age\x20verification\x20(R10):\x20the\x20buy\x20guard\x20requires\x20a\x20Passport\x20with\x20qualifying\x20age\x20credentials;\x20the\x20credential\x20issuer\x20(KYC\x20provider)\x20is\x20off-chain\x20—\x20the\x20only\x20non-on-chain-able\x20link','Creator\x20onboarding\x20=\x20identity\x20Passport\x20+\x20permission\x20grant\x20(verification\x20standards\x20declared\x20in\x20the\x20deployment\x20checklist)','Three\x20sub-templates:\x20pay-per-view\x20(5\x20nodes,\x20its\x20own\x20Service\x20—\x20single\x20Machine\x20binding\x20per\x20Service),\x20paid\x20messaging\x20(subscription\x20skeleton\x20with\x20response-record\x20delivery),\x20tips\x20(direct\x20payment,\x20no\x20Machine)','Paid-messaging\x20response\x20obligations\x20are\x20SOFT\x20clauses:\x20response-time\x20promises\x20are\x20not\x20deterministic,\x20so\x20encode\x20them\x20as\x20written\x20promises\x20in\x20the\x20listing\x20WIP\x20(never\x20as\x20Guards);\x20a\x20missed\x20response\x20is\x20an\x20ordinary\x20dispute\x20and\x20routes\x20to\x20Arbitration','Content\x20compliance\x20boundary:\x20only\x20hashes\x20on-chain;\x20content\x20bodies\x20live\x20off-chain\x20—\x20content\x20governance\x20is\x20structurally\x20out\x20of\x20scope\x20for\x20on-chain\x20objects','Disputes\x20route\x20to\x20Arbitration\x20(open\x20voting\x20default);\x20multi-period\x20disputes\x20split\x20per\x20period\x20(award\x20cap\x203x\x20period\x20amount)','Anti-dark-pattern\x20selling\x20point:\x20every\x20renewal\x20requires\x20the\x20subscriber\x27s\x20explicit\x20signature\x20—\x20surface\x20\x27no\x20silent\x20auto-renewal\x27\x20in\x20the\x20listing\x20WIP\x20promise'],'fee_params':{'platform_take_bps':0x0,'incumbent_take_bps':0x7d0,'dispute_window_days':0xe,'grace_days':0x7,'threshold':0x0},'trust_mechanisms':['R1\x20refund\x20allocator\x20—\x20the\x20platform-level\x20answer\x20to\x20\x27no\x20refund\x20policy\x20+\x20chargeback\x20pass-through\x27','R2\x20independent\x20arbitration\x20Permission\x20(testnet\x20lesson\x20hardened\x20into\x20the\x20contract)','R3\x20compensation\x20fund\x20payout\x20hard-bound\x20to\x20the\x20order\x20owner','R4\x20receipt\x20confirmation\x20by\x20the\x20subscriber\x20only\x20—\x20creator\x20self-sign\x20forbidden','R5\x20period\x20payments\x20anchored\x20to\x20the\x20order\x20Allocation','R6\x20Rate\x20=\x2010000;\x20threshold\x200','R7\x20publish\x20freeze\x20—\x20full\x20configuration\x20before\x20publish','R8\x20customer-service\x20Contact\x20bound','R9\x20keepers\x20for\x20reminders/expiry\x20only\x20(no\x20charge\x20authority)','R10\x20age-verification\x20buy\x20guard\x20(Passport\x20credentials)'],'keeper_dependencies':['renewal\x20reminder\x20(period\x20end\x20-\x203\x20days)','expiry\x20trigger\x20(period\x20end\x20+\x20grace)','NO\x20auto-charge\x20authority\x20by\x20design'],'recommended_role':'merchant','role_rationale':'Creators\x20own\x20the\x20subscription\x20Service\x20with\x200%\x20take;\x20age-verification\x20credentials\x20gate\x20purchases\x20via\x20Passport.','differences':['State-machine\x20release\x20replaces\x20the\x20calendar\x20freeze:\x20funds\x20unlock\x20at\x20delivery\x20confirmation,\x20not\x20after\x20a\x20window;\x20signature\x20payments\x20eliminate\x20the\x20chargeback\x20category','Age-verification\x20buy\x20gate\x20via\x20Passport\x20credentials\x20(R10)\x20—\x20the\x20credential\x20issuer\x20is\x20the\x20only\x20off-chain\x20link','Interaction\x20monetization\x20sub-templates:\x20pay-per-view\x20(own\x20Service),\x20paid\x20messaging\x20(response-record\x20delivery),\x20tips\x20(direct\x20payment,\x20no\x20Machine)'],'user_inputs':['dispute_window_days\x20—\x20extendable\x20for\x20new\x20creators\x20as\x20a\x20risk\x20lever','grace_days\x20—\x20renewal\x20grace\x20window\x20before\x20expiry','Age-credential\x20issuer\x20selection\x20(KYC\x20provider,\x20off-chain)','Sub-template\x20selection:\x20pay-per-view\x20/\x20paid\x20messaging\x20/\x20tips']}];export const TEMPLATE_KEYWORDS={'retail/scale-marketplace':['marketplace','fulfillment','reserve','third-party\x20seller','scale\x20marketplace','a-to-z\x20guarantee'],'retail/vertical-handmade':['handmade','artisan','vintage','craft','custom\x20order','offsite\x20ads','attribution'],'freelance/enterprise-talent-market':['freelance\x20marketplace','talent\x20market','escrow\x20release','revision','acceptance\x20timeout','milestone'],'freelance/creator-zero-commission':['0%\x20commission','zero\x20commission','no\x20commission','fixed\x20contract\x20fee','portfolio\x20funnel'],'rental/p2p-shortstay':['short-term\x20rental','homestay','host','cancellation\x20policy','damage\x20claim','check-in'],'rental/institutional-longstay':['long-term\x20rental','monthly\x20rent','lease','deposit\x20refund','property\x20management'],'education/mooc-degree':['degree','semester','university','certificate','mooc','tuition'],'education/live-class-cohort':['tutoring','k12','session','attendance','prepay\x20cap','trial\x20lesson','live\x20class'],'travel/global-ota':['hotel','room','no-show','walk','merchant\x20mode','accommodation','ota'],'travel/destination-experience':['experience','ticket','multi-segment','redeem','supplier\x20payout','instant\x20confirmation'],'subscription/creator-membership':['creator','membership','per-period','honor\x20tier','fan\x20subscription'],'subscription/direct-fan-subscription':['age\x20verification','pay-per-view','ppv','tip','content\x20subscription']};export function getBuiltinTemplate(a){return BUILTIN_TEMPLATES['find'](b=>b['id']===a);}export function listBuiltinTemplates(){return BUILTIN_TEMPLATES;}
@@ -1,4 +1,5 @@
1
- export type ContactRiskLevel = "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "INFO";
1
+ import { type Facts } from "../config/rule-engine.js";
2
+ export type ContactRiskLevel = "critical" | "high" | "medium" | "low" | "info";
2
3
  export type ContactRiskCategory = "structural" | "semantic" | "lifecycle" | "permission" | "cross_object" | "knowledge";
3
4
  export type ContactStakeholder = "creator" | "im_member" | "consumer" | "system";
4
5
  export interface ContactRisk {
@@ -23,9 +24,9 @@ export interface ContactRiskCheckContext {
23
24
  change_status_no_permission?: boolean;
24
25
  constants_synced?: boolean;
25
26
  }
26
- export declare const CONTACT_RISK_RULES: {
27
- rule: ContactRisk;
28
- check: (ctx: ContactRiskCheckContext) => ContactRisk | null;
29
- }[];
27
+ export declare function contactRiskFacts(ctx: ContactRiskCheckContext): Facts;
30
28
  export declare const CONTACT_RISK_VERSION = "1.0.0";
29
+ export declare const CONTACT_RISK_RULES: Array<ContactRisk & {
30
+ trigger?: string;
31
+ }>;
31
32
  export declare function checkContactRisks(ctx: ContactRiskCheckContext): ContactRisk[];
@@ -1 +1 @@
1
- import{MAX_IM_COUNT}from'@wowok/wowok';const R_C_01={'rule':{'id':'R-CONTACT-01','level':'MEDIUM','category':'permission','title':'change_status\x20has\x20no\x20permission\x20check\x20—\x20IM\x20list\x20pollution\x20risk','description':'change_status\x20lets\x20any\x20IM\x20member\x20self-update\x20their\x20status\x20string\x20without\x20Permission\x20'+'verification\x20(contact.move:32-43).\x20If\x20an\x20attacker\x27s\x20address\x20is\x20added\x20to\x20the\x20ims\x20list\x20'+'(via\x20im_add,\x20which\x20requires\x20permission\x20index\x20453),\x20the\x20attacker\x20can\x20freely\x20pollute\x20'+'their\x20status\x20field\x20(e.g.\x20set\x20status\x20to\x20\x27fraud\x27).\x20The\x20risk\x20is\x20bounded\x20by\x20the\x20im_add\x20'+'permission\x20gate,\x20but\x20a\x20misconfigured\x20Permission\x20could\x20expose\x20the\x20IM\x20list.','affected_stakeholders':['creator','im_member'],'scenario':'Contact\x27s\x20IM\x20list\x20is\x20misconfigured\x20to\x20allow\x20public\x20adds;\x20attacker\x20pollutes\x20status','mitigation':'Restrict\x20permission\x20index\x20453\x20(CONTACT_IM)\x20to\x20trusted\x20guardians.\x20Audit\x20the\x20IM\x20list\x20'+'periodically.\x20Business\x20layer\x20may\x20validate\x20status\x20strings\x20against\x20an\x20allowlist.','auto_fixable':![]},'check':a=>{if(!a['change_status_no_permission'])return null;return{...R_C_01['rule'],'evidence':'change_status_no_permission=true'};}},R_C_02={'rule':{'id':'R-CONTACT-02','level':'LOW','category':'structural','title':'MAX_IM_COUNT='+MAX_IM_COUNT+'\x20is\x20permissive\x20—\x20on-chain\x20storage\x20cost','description':'A\x20single\x20Contact\x20may\x20hold\x20up\x20to\x20MAX_IM_COUNT='+MAX_IM_COUNT+'\x20IM\x20entries\x20(contact.move:14).\x20'+'Aborting\x20with\x20E_IM_COUNT_EXCEEDED\x20(1)\x20only\x20triggers\x20at\x20the\x20boundary.\x20200\x20entries\x20is\x20'+'relatively\x20permissive\x20for\x20a\x20social\x20scenario;\x20loading\x20the\x20full\x20list\x20on\x20every\x20read\x20'+'increases\x20gas\x20and\x20storage\x20cost.','affected_stakeholders':['creator'],'scenario':'Caller\x20adds\x20200\x20IM\x20entries\x20to\x20a\x20single\x20Contact','mitigation':'Business\x20layer\x20should\x20self-limit\x20IM\x20count\x20well\x20below\x20200.\x20For\x20high-volume\x20contact\x20'+'lists,\x20shard\x20across\x20multiple\x20Contact\x20objects\x20and\x20aggregate\x20off-chain.','related_move_error':'E_IM_COUNT_EXCEEDED\x20(1)','auto_fixable':![]},'check':a=>{if(a['im_count']===undefined)return null;if(a['im_count']<MAX_IM_COUNT)return null;return{...R_C_02['rule'],'evidence':'im_count='+a['im_count']+',\x20limit='+MAX_IM_COUNT};}},R_C_03={'rule':{'id':'R-CONTACT-03','level':'MEDIUM','category':'semantic','title':'IM\x20list\x20mutations\x20emit\x20no\x20events\x20—\x20external\x20indexers\x20must\x20poll','description':'im_add\x20/\x20im_remove\x20/\x20im_clear\x20do\x20not\x20emit\x20events\x20(contact.move:70-100).\x20External\x20'+'indexers\x20and\x20notification\x20systems\x20cannot\x20rely\x20on\x20event\x20streams\x20to\x20track\x20IM\x20list\x20'+'changes;\x20they\x20must\x20poll\x20the\x20ims\x20field\x20directly,\x20increasing\x20latency\x20and\x20RPC\x20cost.','affected_stakeholders':['creator','consumer'],'scenario':'Indexer\x20expects\x20an\x20event\x20on\x20im_add\x20but\x20none\x20is\x20emitted;\x20UI\x20fails\x20to\x20refresh','mitigation':'External\x20indexers\x20should\x20poll\x20the\x20Contact.ims\x20field\x20on\x20a\x20cadence.\x20A\x20future\x20version\x20'+'may\x20add\x20IMEvent;\x20until\x20then,\x20do\x20not\x20build\x20critical\x20UX\x20on\x20IM\x20event\x20streams.','auto_fixable':![]},'check':a=>null},R_C_04={'rule':{'id':'R-CONTACT-04','level':'LOW','category':'semantic','title':'location\x20defaults\x20to\x20empty\x20string\x20—\x20may\x20be\x20misread\x20as\x20\x27unset\x27','description':'A\x20freshly\x20created\x20Contact\x20has\x20location=\x22\x22\x20(empty\x20String).\x20The\x20Move\x20type\x20does\x20not\x20'+'distinguish\x20\x27unset\x27\x20from\x20\x27empty\x27,\x20so\x20consumers\x20may\x20misinterpret\x20an\x20empty\x20location\x20'+'as\x20\x27globally\x20applicable\x27\x20or\x20as\x20\x27missing\x20data\x27.','affected_stakeholders':['creator','consumer'],'scenario':'Consumer\x20reads\x20location=\x22\x22\x20and\x20treats\x20the\x20Contact\x20as\x20global\x20when\x20it\x20was\x20never\x20set','mitigation':'Document\x20that\x20empty\x20location\x20means\x20\x27not\x20specified\x27.\x20If\x20a\x20default\x20region\x20is\x20required,\x20'+'set\x20location\x20explicitly\x20at\x20creation\x20time.','auto_fixable':!![]},'check':a=>{if(!a['location_empty'])return null;return{...R_C_04['rule'],'evidence':'location=\x22\x22\x20(empty,\x20default)'};}},R_C_05={'rule':{'id':'R-CONTACT-05','level':'MEDIUM','category':'lifecycle','title':'my_status\x20silently\x20fails\x20for\x20non-IM-members','description':'my_status\x20only\x20updates\x20the\x20caller\x27s\x20status\x20entry\x20if\x20the\x20caller\x20is\x20in\x20the\x20ims\x20list\x20'+'(contact.move:35-42).\x20For\x20a\x20non-IM-member,\x20the\x20call\x20silently\x20succeeds\x20without\x20any\x20'+'state\x20change\x20—\x20there\x20is\x20no\x20abort\x20and\x20no\x20event.\x20Users\x20get\x20no\x20feedback,\x20making\x20it\x20'+'impossible\x20to\x20distinguish\x20\x27status\x20updated\x27\x20from\x20\x27operation\x20ignored\x27.','affected_stakeholders':['im_member'],'scenario':'Non-IM-member\x20calls\x20my_status\x20expecting\x20an\x20error;\x20operation\x20is\x20silently\x20ignored','mitigation':'SDK\x20layer\x20should\x20pre-validate\x20IM\x20membership\x20before\x20submitting\x20my_status\x20and\x20return\x20a\x20'+'clear\x20error.\x20UI\x20should\x20show\x20\x27not\x20an\x20IM\x20member\x27\x20instead\x20of\x20\x27success\x27.','auto_fixable':![]},'check':a=>{if(!a['my_status_from_non_member'])return null;return{...R_C_05['rule'],'evidence':'my_status_from_non_member=true\x20(will\x20be\x20silently\x20ignored)'};}},R_C_06={'rule':{'id':'R-CONTACT-06','level':'LOW','category':'semantic','title':'im_add\x20description\x20uses\x20LONG_NAME\x20(not\x20DESCRIPTION)\x20—\x20different\x20length\x20cap','description':'im_add\x27s\x20description\x20parameter\x20is\x20validated\x20with\x20common::LONG_NAME\x20rather\x20than\x20'+'common::DESCRIPTION\x20(contact.move:70-86).\x20The\x20two\x20validators\x20have\x20different\x20length\x20'+'limits;\x20callers\x20expecting\x20DESCRIPTION\x20semantics\x20may\x20submit\x20overly\x20long\x20strings\x20and\x20'+'hit\x20an\x20unexpected\x20abort.','affected_stakeholders':['creator'],'scenario':'Caller\x20submits\x20an\x20im_add\x20description\x20sized\x20for\x20DESCRIPTION\x20but\x20hits\x20LONG_NAME\x20limit','mitigation':'Document\x20that\x20im_add\x20description\x20uses\x20LONG_NAME\x20validation.\x20SDK\x20should\x20expose\x20the\x20'+'exact\x20limit\x20so\x20callers\x20size\x20their\x20strings\x20correctly.','auto_fixable':![]},'check':a=>{if(!a['im_add_description_uses_long_name'])return null;return{...R_C_06['rule'],'evidence':'im_add\x20description\x20validated\x20with\x20LONG_NAME'};}},R_C_07={'rule':{'id':'R-CONTACT-07','level':'MEDIUM','category':'cross_object','title':'permission_um_set\x20creates\x20Contact\x20↔\x20Permission\x20bidirectional\x20dependency','description':'When\x20Contact\x20is\x20set\x20as\x20a\x20Permission\x27s\x20um\x20via\x20permission_um_set\x20(contact.move:207-209),\x20'+'a\x20bidirectional\x20dependency\x20forms:\x20Permission.um\x20→\x20Contact,\x20and\x20Contact.permission\x20→\x20'+'Permission.\x20Deleting\x20the\x20Contact\x20without\x20first\x20clearing\x20the\x20um\x20reference\x20leaves\x20a\x20'+'dangling\x20pointer\x20in\x20Permission.um.','affected_stakeholders':['creator','consumer'],'scenario':'Contact\x20is\x20deleted\x20while\x20still\x20bound\x20as\x20Permission.um;\x20Permission.um\x20becomes\x20dangling','mitigation':'Document\x20the\x20deletion\x20order:\x20(1)\x20clear\x20Permission.um\x20via\x20permission_um_set(null)\x20'+'first,\x20(2)\x20then\x20delete\x20the\x20Contact.\x20SDK\x20should\x20refuse\x20to\x20delete\x20a\x20Contact\x20that\x20is\x20'+'still\x20bound\x20as\x20a\x20um.','auto_fixable':![]},'check':a=>{if(!a['bound_to_permission_um'])return null;return{...R_C_07['rule'],'evidence':'bound_to_permission_um=true\x20(deletion\x20requires\x20unbinding)'};}},R_C_08={'rule':{'id':'R-CONTACT-08','level':'LOW','category':'knowledge','title':'Knowledge\x20layer\x20&\x20constant\x20sync\x20—\x20RESOLVED','description':'MAX_IM_COUNT\x20is\x20now\x20synced\x20to\x20onchain-constants.ts\x20('+MAX_IM_COUNT+').\x20The\x20MCP\x20'+'Knowledge\x20layer\x20now\x20includes\x20contact-risk.ts.\x20This\x20risk\x20rule\x20is\x20retained\x20for\x20'+'historical\x20audit\x20and\x20to\x20detect\x20future\x20regressions.','affected_stakeholders':['system'],'scenario':'Future\x20regression:\x20someone\x20removes\x20MAX_IM_COUNT\x20from\x20onchain-constants.ts','mitigation':'Run\x20the\x20onchain-constants\x20sync\x20test\x20to\x20detect\x20drift.','auto_fixable':![]},'check':a=>{if(a['constants_synced'])return null;return{...R_C_08['rule'],'evidence':'constants_synced=false'};}};export const CONTACT_RISK_RULES=[R_C_01,R_C_02,R_C_03,R_C_04,R_C_05,R_C_06,R_C_07,R_C_08];export const CONTACT_RISK_VERSION='1.0.0';export function checkContactRisks(a){const b=[];for(const c of CONTACT_RISK_RULES){const d=c['check'](a);if(d)b['push'](d);}return!b['find'](e=>e['id']==='R-CONTACT-03')&&b['push'](R_C_03['rule']),b;}
1
+ import{MAX_IM_COUNT}from'@wowok/wowok';import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook,interpolate}from'../config/rule-engine.js';export function contactRiskFacts(a){return{'im_count':a['im_count'],'im_count_over_limit':a['im_count']!==undefined&&a['im_count']>=MAX_IM_COUNT,'my_status_from_non_member':a['my_status_from_non_member'],'location_empty':a['location_empty'],'im_add_description_uses_long_name':a['im_add_description_uses_long_name'],'bound_to_permission_um':a['bound_to_permission_um'],'change_status_no_permission':a['change_status_no_permission'],'constants_synced':a['constants_synced'],'always_true':!![],'max_im_count':MAX_IM_COUNT};}const RELATED_MOVE_ERRORS={'R-CONTACT-02':'E_IM_COUNT_EXCEEDED\x20(1)'},AUTO_FIXABLE=new Set(['R-CONTACT-04']);function contactRuleBook(){const a=getJudgmentDoc()['rules']['domains']['contact'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27contact\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToContactRisk(a){const b=RELATED_MOVE_ERRORS[a['rule_id']];return{'id':a['rule_id'],'level':a['level'],'category':a['dimension']??'semantic','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'',...b===undefined?{}:{'related_move_error':b},'auto_fixable':AUTO_FIXABLE['has'](a['rule_id']),...a['evidence']===undefined?{}:{'evidence':a['evidence']}};}export const CONTACT_RISK_VERSION='1.0.0';export const CONTACT_RISK_RULES=((()=>{const a=factoryRulePack('contact');if(!a)return[];const b=contactRiskFacts({});return a['rules']['map'](d=>{const e=d['cases'][0x0],f=RELATED_MOVE_ERRORS[d['rule_id']];return{'id':d['rule_id'],'level':e['level'],'category':d['dimension']??'semantic','title':interpolate(e['title'],b),'description':interpolate(e['description'],b),'affected_stakeholders':e['stakeholders']??[],'scenario':e['scenario']===undefined?'':interpolate(e['scenario'],b),'mitigation':e['mitigation']===undefined?'':interpolate(e['mitigation'],b),...f===undefined?{}:{'related_move_error':f},'auto_fixable':AUTO_FIXABLE['has'](d['rule_id']),...d['trigger']===undefined?{}:{'trigger':d['trigger']}};});})());export function checkContactRisks(a){const {findings:b}=evaluateRuleBook(contactRuleBook(),contactRiskFacts(a));return b['map'](findingToContactRisk);}
@@ -1,4 +1,5 @@
1
- export type DemandRiskLevel = "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "INFO";
1
+ import { type Facts } from "../config/rule-engine.js";
2
+ export type DemandRiskLevel = "critical" | "high" | "medium" | "low" | "info";
2
3
  export type DemandRiskCategory = "structural" | "semantic" | "lifecycle" | "knowledge";
3
4
  export type DemandStakeholder = "creator" | "presenter" | "consumer" | "system";
4
5
  export interface DemandRisk {
@@ -22,8 +23,8 @@ export interface DemandRiskCheckContext {
22
23
  guards_non_empty?: boolean;
23
24
  constants_synced?: boolean;
24
25
  }
25
- export declare const DEMAND_RISK_RULES: {
26
- rule: DemandRisk;
27
- check: (ctx: DemandRiskCheckContext) => DemandRisk | null;
28
- }[];
26
+ export declare function demandRiskFacts(ctx: DemandRiskCheckContext): Facts;
27
+ export declare const DEMAND_RISK_RULES: Array<DemandRisk & {
28
+ trigger?: string;
29
+ }>;
29
30
  export declare function checkDemandRisks(ctx: DemandRiskCheckContext): DemandRisk[];
@@ -1 +1 @@
1
- import{MAX_REWARD_COUNT,MAX_GUARD_COUNT_DEMAND}from'@wowok/wowok';const MAX_FEEDBACK_COUNT=0x14,R_DEM_1_01={'rule':{'id':'R-DEM-01','level':'HIGH','category':'structural','title':'rewards\x20count\x20exceeds\x20MAX_REWARD_COUNT\x20('+MAX_REWARD_COUNT+')','description':'The\x20\x27rewards\x27\x20vector\x20is\x20bounded\x20by\x20MAX_REWARD_COUNT='+MAX_REWARD_COUNT+'\x20(Move\x20source:\x20demand.move:21).\x20'+'Exceeding\x20this\x20limit\x20aborts\x20with\x20E_MAX_REWARD_COUNT_EXCEEDED\x20(1).\x20Each\x20reward\x20is\x20bound\x20via\x20object_linker::affiliation_core,\x20'+'so\x20adding\x20a\x20reward\x20also\x20triggers\x20object_linker::affiliation_core.\x20Use\x20reward_remove/reward_clear\x20to\x20free\x20slots\x20before\x20'+'adding\x20new\x20ones\x20if\x20the\x20limit\x20is\x20reached.','affected_stakeholders':['creator'],'scenario':'Caller\x20calls\x20reward_add\x20when\x2020\x20rewards\x20are\x20already\x20affiliated','mitigation':'Track\x20the\x20current\x20reward\x20count.\x20Before\x20adding\x20a\x20new\x20reward,\x20call\x20reward_remove\x20or\x20reward_clear\x20to\x20'+'free\x20a\x20slot.\x20Consider\x20consolidating\x20rewards\x20into\x20a\x20single\x20Reward\x20object\x20with\x20multiple\x20tiers\x20if\x20the\x20'+'\x20Demand\x20needs\x20to\x20offer\x20more\x20than\x2020\x20distinct\x20reward\x20paths.','related_move_error':'E_MAX_REWARD_COUNT_EXCEEDED\x20(1)','auto_fixable':![]},'check':a=>{if(a['reward_count']===undefined)return null;if(a['reward_count']<=MAX_REWARD_COUNT)return null;return{...R_DEM_1_01['rule'],'evidence':'reward_count='+a['reward_count']+',\x20limit='+MAX_REWARD_COUNT};}},R_DEM_1_02={'rule':{'id':'R-DEM-02','level':'HIGH','category':'structural','title':'guards\x20count\x20exceeds\x20MAX_GUARD_COUNT_DEMAND\x20('+MAX_GUARD_COUNT_DEMAND+')','description':'The\x20\x27guards\x27\x20vector\x20is\x20bounded\x20by\x20MAX_GUARD_COUNT_DEMAND='+MAX_GUARD_COUNT_DEMAND+'\x20(Move\x20source:\x20demand.move:22).\x20'+'Exceeding\x20this\x20limit\x20aborts\x20with\x20E_MAX_GUARD_COUNT_EXCEEDED\x20(2).\x20Each\x20guard\x20carries\x20an\x20optional\x20'+'service_identifier\x20(u8)\x20that\x20routes\x20present_with_passport\x20submissions\x20to\x20a\x20specific\x20Service\x20submission\x20'+'extracted\x20from\x20the\x20Passport.\x20Adding\x20a\x20duplicate\x20guard\x20updates\x20the\x20service_identifier\x20instead\x20of\x20pushing.','affected_stakeholders':['creator','presenter'],'scenario':'Caller\x20calls\x20guard_add\x20when\x2020\x20guards\x20are\x20already\x20affiliated\x20and\x20the\x20address\x20is\x20new','mitigation':'Track\x20the\x20current\x20guard\x20count.\x20Before\x20adding\x20a\x20new\x20guard,\x20call\x20guard_remove\x20or\x20guard_clear.\x20'+'If\x20updating\x20an\x20existing\x20guard\x27s\x20service_identifier,\x20call\x20guard_add\x20with\x20the\x20same\x20address\x20(it\x20updates\x20'+'in\x20place\x20rather\x20than\x20pushing).','related_move_error':'E_MAX_GUARD_COUNT_EXCEEDED\x20(2)','auto_fixable':![]},'check':a=>{if(a['guard_count']===undefined)return null;if(a['guard_count']<=MAX_GUARD_COUNT_DEMAND)return null;return{...R_DEM_1_02['rule'],'evidence':'guard_count='+a['guard_count']+',\x20limit='+MAX_GUARD_COUNT_DEMAND};}},R_DEM_1_03={'rule':{'id':'R-DEM-03','level':'MEDIUM','category':'structural','title':'feedback\x20batch\x20exceeds\x20MAX_FEEDBACK_COUNT\x20('+MAX_FEEDBACK_COUNT+')','description':'The\x20\x27feedback\x27\x20Move\x20function\x20(demand.move:352)\x20updates\x20ONE\x20presenter\x20per\x20call\x20(feedback_imp\x20iterates\x20'+('no\x20vector).\x20The\x20SDK\x20batches\x20multiple\x20feedback\x20calls\x20and\x20caps\x20the\x20batch\x20at\x20MAX_FEEDBACK_COUNT='+MAX_FEEDBACK_COUNT+'\x20')+'(SDK-only\x20limit,\x20NOT\x20in\x20onchain-constants.ts\x20—\x20Move\x20has\x20no\x20aggregate\x20feedback-count\x20check).\x20Exceeding\x20the\x20'+'SDK\x20batch\x20limit\x20causes\x20the\x20SDK\x20to\x20refuse\x20the\x20call\x20before\x20transaction\x20building.\x20Each\x20feedback\x20entry\x20writes\x20'+'a\x20String\x20(bounded\x20by\x20common::DESCRIPTION,\x204000\x20chars)\x20and\x20an\x20optional\x20u8\x20acceptance_score\x20to\x20a\x20presenter\x27s\x20'+'ServiceInfo\x20record.','affected_stakeholders':['creator'],'scenario':'Caller\x20attempts\x20to\x20submit\x2021\x20feedback\x20entries\x20in\x20a\x20single\x20SDK\x20call','mitigation':'Split\x20the\x20feedback\x20batch\x20into\x20chunks\x20of\x20≤\x2020\x20entries.\x20If\x20the\x20Demand\x20has\x20more\x20than\x2020\x20presenters\x20to\x20'+'give\x20feedback\x20on,\x20submit\x20multiple\x20transactions.\x20Consider\x20whether\x20bulk\x20feedback\x20is\x20appropriate\x20—\x20'+'individualized\x20feedback\x20per\x20presenter\x20is\x20often\x20more\x20meaningful.','auto_fixable':![]},'check':a=>{if(a['feedback_count']===undefined)return null;if(a['feedback_count']<=MAX_FEEDBACK_COUNT)return null;return{...R_DEM_1_03['rule'],'evidence':'feedback_count='+a['feedback_count']+',\x20limit='+MAX_FEEDBACK_COUNT};}},R_DEM_2_01={'rule':{'id':'R-DEM-04','level':'HIGH','category':'semantic','title':'present\x20called\x20without\x20passport\x20when\x20guards\x20vector\x20is\x20non-empty','description':'The\x20Move\x20present\x20function\x20(demand.move:100)\x20asserts\x20`vector::is_empty(&self.guards)`\x20and\x20aborts\x20with\x20'+'E_NEED_PASSPORT\x20(3)\x20if\x20the\x20guards\x20vector\x20is\x20non-empty.\x20When\x20guards\x20exist,\x20every\x20presenter\x20MUST\x20go\x20through\x20'+'present_with_passport\x20(or\x20present_service_with_passport),\x20which\x20routes\x20through\x20present_with_passport_imp.\x20'+'That\x20function\x20looks\x20up\x20the\x20specified\x20Guard\x20in\x20the\x20guards\x20vector,\x20calls\x20passport::result_for_guard\x20to\x20'+'verify\x20the\x20Passport,\x20and\x20(if\x20service_identifier\x20is\x20set)\x20extracts\x20the\x20submission\x20address\x20from\x20the\x20Passport.\x20'+'Calling\x20plain\x20`present`\x20on\x20a\x20guarded\x20Demand\x20always\x20aborts\x20—\x20there\x20is\x20no\x20fallback\x20path.','affected_stakeholders':['presenter','creator'],'scenario':'Demand\x20has\x202\x20guards;\x20a\x20presenter\x20calls\x20present()\x20instead\x20of\x20present_with_passport()','mitigation':'Before\x20presenting,\x20query\x20the\x20Demand\x27s\x20guards\x20vector.\x20If\x20non-empty,\x20use\x20present_with_passport\x20and\x20'+'supply\x20a\x20Guard\x20+\x20Passport.\x20The\x20Guard\x20address\x20must\x20already\x20be\x20in\x20the\x20guards\x20vector\x20(otherwise\x20'+'E_GUARD_NOT_FOUND\x20(4)\x20aborts).\x20If\x20service_identifier\x20is\x20set\x20on\x20the\x20matching\x20guard,\x20the\x20submission\x20'+'address\x20is\x20extracted\x20from\x20the\x20Passport\x20—\x20do\x20not\x20pass\x20a\x20separate\x20service\x20parameter.','related_move_error':'E_NEED_PASSPORT\x20(3)','auto_fixable':![]},'check':a=>{if(!a['using_present_without_passport'])return null;if(!a['guards_non_empty'])return null;return{...R_DEM_2_01['rule'],'evidence':'guards_non_empty=true,\x20using\x20present\x20(no\x20passport)'};}},R_DEM_3_01={'rule':{'id':'R-DEM-05','level':'INFO','category':'lifecycle','title':'um_set_imp\x20object-linker\x20dependency\x20leak\x20—\x20RESOLVED\x20(P-DEM-P1-1)','description':'PREVIOUS\x20RISK:\x20um_set_imp\x20(demand.move:139-147)\x20previously\x20set\x20self.um\x20to\x20the\x20new\x20Contact\x20address\x20'+'BEFORE\x20disaffiliating\x20the\x20old\x20um,\x20causing\x20the\x20old\x20Contact\x20to\x20retain\x20a\x20stale\x20object-linker\x20binding\x20record\x20in\x20the\x20'+'object_linker.\x20affiliation_change_core\x20was\x20not\x20called\x20for\x20the\x20old\x20um,\x20leading\x20to\x20an\x20object-linker\x20dependency\x20leak.\x0a\x0a'+'FIX\x20(P-DEM-P1-1):\x20um_set_imp\x20now\x20disaffiliates\x20the\x20old\x20um\x20via\x20object_linker::disaffiliation_core\x20BEFORE\x20setting\x20'+'the\x20new\x20one.\x20The\x20new\x20um\x20is\x20then\x20affiliated\x20via\x20object_linker::affiliation_core.\x20This\x20matches\x20the\x20pattern\x20used\x20'+'by\x20permission_set\x20(which\x20uses\x20affiliation_change_core).\x20um_none_imp\x20also\x20disaffiliates\x20before\x20clearing.\x0a\x0a'+'This\x20rule\x20is\x20retained\x20for\x20historical\x20audit\x20and\x20to\x20detect\x20regressions.','affected_stakeholders':['creator','system'],'scenario':'Future\x20regression:\x20someone\x20reorders\x20um_set_imp\x20to\x20set\x20new\x20before\x20disaffiliating\x20old','mitigation':'Keep\x20the\x20disaffiliate-then-set\x20ordering.\x20The\x20Move\x20invariant:\x20any\x20path\x20that\x20mutates\x20self.um\x20MUST\x20call\x20'+'object_linker::disaffiliation_core\x20on\x20the\x20old\x20value\x20before\x20assigning\x20a\x20new\x20one.','auto_fixable':![]},'check':a=>{if(a['constants_synced'])return null;return{...R_DEM_3_01['rule'],'evidence':'constants_synced=false\x20(regression\x20check)'};}},R_DEM_2_02={'rule':{'id':'R-DEM-06','level':'INFO','category':'semantic','title':'guard_add_imp\x20service_identifier\x20type\x20check\x20skipped\x20on\x20early\x20return\x20—\x20RESOLVED\x20(P-DEM-P1-2)','description':'PREVIOUS\x20RISK:\x20guard_add_imp\x20(demand.move:213-242)\x20previously\x20had\x20the\x20service_identifier\x20type\x20check\x20'+'AFTER\x20the\x20early-return\x20path\x20that\x20updates\x20an\x20existing\x20guard\x27s\x20service_identifier.\x20When\x20a\x20guard\x20with\x20'+'the\x20same\x20address\x20already\x20existed,\x20the\x20function\x20returned\x20before\x20validating\x20the\x20new\x20service_identifier\x20'+'against\x20guard::get_submission_object_type.\x20This\x20allowed\x20setting\x20an\x20invalid\x20service_identifier\x20that\x20'+'would\x20later\x20fail\x20at\x20present_with_passport\x20time\x20with\x20E_INVALID_SERVICE_OBJECT_TYPE\x20(common.move:13).\x0a\x0a'+'FIX\x20(P-DEM-P1-2):\x20The\x20service_identifier\x20type\x20check\x20now\x20runs\x20FIRST\x20(demand.move:218-222),\x20BEFORE\x20the\x20'+'duplicate-detection\x20loop.\x20common::assert_service_object_type\x20is\x20called\x20for\x20any\x20non-None\x20service_identifier,\x20'+'ensuring\x20both\x20the\x20insert\x20and\x20update\x20paths\x20validate\x20the\x20type.\x0a\x0a'+'This\x20rule\x20is\x20retained\x20for\x20historical\x20audit\x20and\x20to\x20detect\x20regressions.','affected_stakeholders':['creator','presenter'],'scenario':'Future\x20regression:\x20someone\x20moves\x20the\x20type\x20check\x20back\x20to\x20after\x20the\x20duplicate-detection\x20loop','mitigation':'Keep\x20the\x20type\x20check\x20at\x20the\x20top\x20of\x20guard_add_imp.\x20The\x20Move\x20invariant:\x20any\x20service_identifier\x20provided\x20'+'to\x20guard_add\x20MUST\x20be\x20validated\x20via\x20guard::get_submission_object_type\x20+\x20common::assert_service_object_type\x20'+'BEFORE\x20any\x20mutation\x20of\x20the\x20guards\x20vector.','auto_fixable':![]},'check':a=>{if(a['constants_synced'])return null;return{...R_DEM_2_02['rule'],'evidence':'constants_synced=false\x20(regression\x20check)'};}},R_DEM_4_01={'rule':{'id':'R-DEM-07','level':'INFO','category':'knowledge','title':'Demand\x20matching\x20must\x20not\x20read\x20non-existent\x20Move\x20fields\x20—\x20RESOLVED\x20(P-DEM-P1-3)','description':'PREVIOUS\x20RISK:\x20the\x20retired\x20demand-matching.ts\x20engine\x20(matchDemand/extractDemandInfo)\x20read\x20fields\x20(tags,\x20'+'maxPrice,\x20scenario,\x20minTrustScore,\x20keywords)\x20that\x20do\x20NOT\x20exist\x20on\x20the\x20Move\x20Demand\x20struct.\x20The\x20Move\x20struct\x20'+'only\x20has:\x20description,\x20location,\x20rewards,\x20guards,\x20presenters,\x20um,\x20permission.\x20This\x20caused\x20the\x20matching\x20'+'engine\x20to\x20silently\x20produce\x20undefined\x20values\x20when\x20fed\x20raw\x20on-chain\x20query\x20results.\x0a\x0a'+'FIX\x20(P-DEM-P1-3):\x20the\x20capability-vector\x20engine\x20(evaluation/builtins/demand-match.ts)\x20enriches\x20via\x20'+'evaluation/extract.ts\x20(extractDemandCapability/extractServiceCapability).\x20Only\x20`location`\x20maps\x20directly\x20'+'to\x20the\x20Move\x20Demand\x20struct;\x20all\x20other\x20signals\x20(industry/tags/keywords/region/trust/price\x20budget)\x20are\x20'+'enriched\x20from\x20description\x20NLP,\x20the\x20industry\x20generalizer,\x20or\x20caller-injected\x20overrides/data\x20sources.\x0a\x0a'+'This\x20rule\x20is\x20retained\x20for\x20historical\x20audit\x20and\x20to\x20detect\x20regressions.','affected_stakeholders':['system'],'scenario':'Future\x20regression:\x20someone\x20removes\x20the\x20enrichment\x20contract\x20docs\x20from\x20evaluation/extract.ts','mitigation':'Keep\x20the\x20enrichment\x20contract\x20in\x20evaluation/extract.ts\x20(non-chain-derivable\x20fields\x20are\x20enriched\x20there,\x20'+'not\x20read\x20as\x20on-chain\x20fact).\x20The\x20matching\x20engine\x20must\x20never\x20query\x20on-chain\x20data\x20directly\x20—\x20it\x20scores\x20'+'over\x20already-enriched\x20capability\x20vectors.','auto_fixable':![]},'check':a=>{if(a['constants_synced'])return null;return{...R_DEM_4_01['rule'],'evidence':'constants_synced=false\x20(regression\x20check)'};}},R_DEM_4_02={'rule':{'id':'R-DEM-08','level':'INFO','category':'knowledge','title':'permission_set\x20not\x20exposed\x20in\x20SDK\x20—\x20RESOLVED\x20(DE-D-2=A)','description':'PREVIOUS\x20GAP:\x20The\x20Move\x20permission_set\x20function\x20(demand.move:286)\x20was\x20not\x20exposed\x20as\x20a\x20standalone\x20'+'function\x20in\x20the\x20SDK\x27s\x20call/demand.ts.\x20Callers\x20could\x20not\x20change\x20the\x20Permission\x20object\x20bound\x20to\x20a\x20Demand\x20'+'after\x20creation.\x0a\x0a'+'RESOLUTION\x20(DE-D-2=A):\x20permission_set\x20is\x20now\x20exposed\x20via\x20the\x20CallPermission.apply\x20mechanism.\x20The\x20SDK\x20'+'wraps\x20permission_set\x20by\x20routing\x20it\x20through\x20CallPermission,\x20which\x20performs\x20the\x20assert_owner\x20check\x20on\x20the\x20'+'old\x20Permission\x20and\x20updates\x20the\x20Demand\x27s\x20bound\x20permission.\x20object_linker\x27s\x20affiliation_change_core\x20is\x20called\x20'+'to\x20migrate\x20the\x20binding\x20from\x20the\x20old\x20Permission\x20to\x20the\x20new\x20one.\x0a\x0a'+'Permission\x20indices\x20for\x20Demand\x20(demand.move:20):\x20400=DEMAND_NEW,\x20401=DEMAND_DESCRIPTION,\x20402=DEMAND_LOCATION,\x20'+'404=DEMAND_GUARD,\x20405=DEMAND_REWARD,\x20406=DEMAND_FEEDBACK,\x20407=DEMAND_OWNER_RECEIVE,\x20408=DEMAND_UM.\x0a\x0a'+'This\x20rule\x20is\x20retained\x20for\x20historical\x20audit\x20and\x20to\x20detect\x20regressions.','affected_stakeholders':['creator','system'],'scenario':'Future\x20regression:\x20someone\x20removes\x20the\x20CallPermission.apply\x20path\x20for\x20permission_set','mitigation':'Keep\x20permission_set\x20exposed\x20via\x20CallPermission.apply.\x20The\x20Move\x20invariant:\x20permission_set\x20requires\x20'+'permission::assert_owner(old)\x20and\x20MUST\x20call\x20object_linker::affiliation_change_core\x20to\x20migrate\x20the\x20binding.','auto_fixable':![]},'check':a=>{if(a['constants_synced'])return null;return{...R_DEM_4_02['rule'],'evidence':'constants_synced=false\x20(regression\x20check)'};}};export const DEMAND_RISK_RULES=[R_DEM_1_01,R_DEM_1_02,R_DEM_1_03,R_DEM_2_01,R_DEM_3_01,R_DEM_2_02,R_DEM_4_01,R_DEM_4_02];export function checkDemandRisks(a){const b=[];for(const c of DEMAND_RISK_RULES){const d=c['check'](a);if(d)b['push'](d);}return b;}
1
+ import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook,interpolate}from'../config/rule-engine.js';import{MAX_REWARD_COUNT,MAX_GUARD_COUNT_DEMAND}from'@wowok/wowok';const MAX_FEEDBACK_COUNT=0x14;export function demandRiskFacts(a){return{'reward_count':a['reward_count'],'reward_count_over_limit':a['reward_count']!==undefined&&a['reward_count']>MAX_REWARD_COUNT,'guard_count':a['guard_count'],'guard_count_over_limit':a['guard_count']!==undefined&&a['guard_count']>MAX_GUARD_COUNT_DEMAND,'feedback_count':a['feedback_count'],'feedback_count_over_limit':a['feedback_count']!==undefined&&a['feedback_count']>MAX_FEEDBACK_COUNT,'using_present_without_passport':a['using_present_without_passport'],'guards_non_empty':a['guards_non_empty'],'constants_synced':a['constants_synced'],'max_reward_count':MAX_REWARD_COUNT,'max_guard_count_demand':MAX_GUARD_COUNT_DEMAND,'max_feedback_count':MAX_FEEDBACK_COUNT};}function demandRuleBook(){const a=getJudgmentDoc()['rules']['domains']['demand'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27demand\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToDemandRisk(a){return{'id':a['rule_id'],'level':a['level'],'category':a['dimension']??'structural','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'','evidence':a['evidence'],'auto_fixable':![]};}export const DEMAND_RISK_RULES=((()=>{const a=factoryRulePack('demand');if(!a)return[];const b=demandRiskFacts({});return a['rules']['map'](d=>{const e=d['cases'][0x0];return{'id':d['rule_id'],'level':e['level'],'category':d['dimension']??'structural','title':interpolate(e['title'],b),'description':interpolate(e['description'],b),'affected_stakeholders':e['stakeholders']??[],'scenario':e['scenario']===undefined?'':interpolate(e['scenario'],b),'mitigation':e['mitigation']===undefined?'':interpolate(e['mitigation'],b),'auto_fixable':![],...d['trigger']===undefined?{}:{'trigger':d['trigger']}};});})());export function checkDemandRisks(a){const {findings:b}=evaluateRuleBook(demandRuleBook(),demandRiskFacts(a));return b['map'](findingToDemandRisk);}
@@ -1 +1 @@
1
- export const EVENT_SEMANTIC_REGISTRY=[{'name':'NewOrderEvent','move_type':'::order::NewOrderEvent','module':'order','category':'lifecycle','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20new\x20Order\x20was\x20placed\x20on\x20a\x20Service\x20(shared,\x20escrow-funded)','trigger':'order.move\x20`create`\x20—\x20the\x20ONLY\x20emission\x20point.\x20Fires\x20when\x20the\x20order\x20becomes\x20a\x20shared\x20object;\x20'+'validates:\x20machine\x20⇒\x20progress\x20bound;\x20amount\x20>\x200\x20⇒\x20allocation\x20bound.','side_effect':'Order\x20is\x20live:\x20buyer\x20funds\x20were\x20split\x20into\x20CoinWrappers\x20via\x20the\x20Service\x20Allocation;\x20'+'machine-governed\x20orders\x20can\x20now\x20be\x20advanced\x20by\x20operators.','params':[{'name':'object','shape':'address','meaning':'The\x20new\x20Order\x20object\x20id'},{'name':'service','shape':'address','meaning':'The\x20Service\x20the\x20order\x20was\x20placed\x20on'},{'name':'progress','shape':'Option<address>','meaning':'Bound\x20Progress\x20(machine\x20orders)\x20—\x20null\x20for\x20non-machine\x20orders'},{'name':'discount','shape':'Option<address>','meaning':'Discount\x20object\x20consumed\x20at\x20quote\x20time,\x20if\x20any'},{'name':'allocation','shape':'Option<address>','meaning':'Allocation\x20that\x20escrowed\x20the\x20payment\x20(required\x20when\x20amount\x20>\x200)'},{'name':'amount','shape':'u64','meaning':'Total\x20order\x20amount\x20in\x20the\x20Service\x27s\x20payment\x20token\x20(raw\x20on-chain\x20units)'}]},{'name':'ArbEvent','move_type':'::arb::ArbEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','problem_bridge','intent_radar'],'business_meaning':'Arbitration\x20status\x20transition\x20on\x20a\x20dispute\x20case\x20(open\x20/\x20voting\x20/\x20verdict\x20/\x20objection\x20/\x20finish\x20/\x20withdraw)','trigger':'arb.move\x20—\x20emitted\x20on\x20EVERY\x20status\x20transition:\x20create\x20(Arbitrator_confirming),\x20'+'proposition_change\x20/\x20principal\x20confirm\x20(Voting),\x20votes\x20closed\x20(Arbitrated),\x20objection\x20'+'(Objectionable),\x20finish\x20with\x20indemnity\x20(Finished\x20+\x20compensation),\x20withdraw\x20(Withdrawn).\x20'+'Helper\x20`emit_arb_event`\x20reads\x20the\x20POST-transition\x20state.','side_effect':'Parties\x20should\x20re-read\x20the\x20Arb\x20object\x20on\x20every\x20event;\x20status\x20decides\x20who\x20acts\x20next.\x20'+'When\x20indemnity_amount\x20is\x20set,\x20the\x20compensation\x20recipient\x20can\x20claim\x20after\x20compensation_time.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20(dispute\x20case)\x20object\x20id'},{'name':'arbitration','shape':'address','meaning':'The\x20governing\x20Arbitration\x20object\x20(voting\x20rules,\x20arbitrator\x20set)'},{'name':'order','shape':'address','meaning':'The\x20disputed\x20Order'},{'name':'status','shape':'u8','meaning':'0\x20Principal_confirming\x20·\x201\x20Arbitrator_confirming\x20·\x202\x20Voting\x20·\x203\x20Arbitrated\x20·\x204\x20Objectionable\x20·\x205\x20Finished\x20·\x206\x20Withdrawn'},{'name':'indemnity_amount','shape':'Option<u64>','meaning':'Awarded\x20compensation\x20(set\x20on\x20Arbitrated/Finished);\x20null\x20otherwise'},{'name':'compensation_time','shape':'Option<u64>','meaning':'Timestamp-ms\x20after\x20which\x20the\x20compensation\x20can\x20be\x20withdrawn\x20(locks\x20expire)'}]},{'name':'VoteEvent','move_type':'::arb::VoteEvent','module':'arb','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20per-vote\x20granularity\x20is\x20too\x20noisy\x20for\x20push;\x20the\x20ArbEvent\x20'+'Voting/Arbitrated\x20transitions\x20already\x20carry\x20the\x20push\x20signals\x20(P2-1).','business_meaning':'One\x20arbitration\x20vote\x20cast\x20(real-time\x20tally)','trigger':'arb.move\x20—\x20on\x20each\x20`vote`/`vote_with_passport`\x20call\x20(one\x20per\x20voter\x20per\x20round);\x20'+'lets\x20parties\x20track\x20the\x20tally\x20without\x20polling\x20the\x20Arb\x20object.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object\x20being\x20voted\x20on'},{'name':'voter','shape':'address','meaning':'The\x20voting\x20arbitrator\x20(or\x20passport-proven\x20delegate)'},{'name':'agrees','shape':'vector<u8>','meaning':'Proposition\x20indexes\x20the\x20voter\x20agreed\x20to'},{'name':'weight','shape':'u32','meaning':'Vote\x20weight\x20applied\x20(guard-weighted\x20voting)'}]},{'name':'FeedbackEvent','move_type':'::arb::FeedbackEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'New\x20feedback\x20message\x20on\x20an\x20arbitration\x20case','trigger':'arb.move\x20—\x20on\x20`feedback`\x20(any\x20party\x20posts\x20a\x20message\x20into\x20the\x20case).','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object'},{'name':'feedback','shape':'String','meaning':'The\x20feedback\x20text'}]},{'name':'DemandPresentEvent','move_type':'::demand::PresentEvent','module':'demand','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20presenter\x20submitted/updated\x20a\x20solution\x20pitch\x20on\x20a\x20Demand','trigger':'demand.move\x20`present_imp`\x20—\x20first\x20present\x20inserts\x20a\x20presenter\x20row;\x20re-present\x20updates\x20it\x20'+'(recommend\x20text\x20+\x20optional\x20bound\x20Service).\x20Passport-gated\x20variants\x20resolve\x20the\x20Service\x20from\x20'+'the\x20passport\x20submission\x20when\x20the\x20demand\x27s\x20guard\x20sets\x20a\x20service_identifier.','side_effect':'Demand\x20owner\x20now\x20has\x20a\x20candidate;\x20track\x20update_time\x20to\x20rank\x20freshest\x20pitches.\x20'+'This\x20is\x20the\x20supply\x20side\x20of\x20the\x20demand\x20marketplace\x20(K3\x2013\x20§6.7).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20presented\x20Service\x20(null\x20=\x20raw\x20recommendation\x20without\x20a\x20bound\x20service)'},{'name':'recommend','shape':'String','meaning':'The\x20presenter\x27s\x20pitch/recommendation\x20text'}]},{'name':'DemandFeedbackEvent','move_type':'::demand::DemandEvent','module':'demand','category':'reputation','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Demand\x20owner\x20scored/feedbacked\x20a\x20presenter\x20(acceptance\x20score)','trigger':'demand.move\x20`feedback_imp`\x20—\x20only\x20for\x20addresses\x20already\x20in\x20the\x20presenters\x20table;\x20'+'records\x20feedback\x20text\x20+\x20optional\x20acceptance\x20score\x20onto\x20the\x20presenter\x20row.','side_effect':'Acceptance\x20score\x20is\x20the\x20demand-side\x20quality\x20signal\x20for\x20the\x20presenter;\x20high\x20scores\x20build\x20'+'presenter\x20reputation\x20for\x20future\x20matching.','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20Service\x20that\x20was\x20presented\x20by\x20the\x20scored\x20presenter'},{'name':'feedback','shape':'String','meaning':'Feedback\x20text'},{'name':'acceptance_score','shape':'Option<u8>','meaning':'0-100\x20acceptance\x20score,\x20null\x20when\x20feedback\x20carries\x20no\x20score'}]},{'name':'DemandChangedEvent','move_type':'::demand::DemandChangedEvent','module':'demand','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20merchant-side\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(K3\x2013\x20§6.7\x20opportunity\x20broadcast);\x20there\x20is\x20no\x20goal-bound\x20push\x20target\x20to\x20bridge\x20to.','business_meaning':'Demand\x20became/updated\x20a\x20profitable\x20opportunity\x20for\x20merchants\x20(market-opportunity\x20event)','trigger':'demand.move\x20`demand_changed_event_emit`\x20—\x20fires\x20when\x20rewards\x20are\x20bound/changed,\x20or\x20'+'description/location\x20changes\x20while\x20reward-bearing.\x20A\x20reward-less\x20demand\x20NEVER\x20emits\x20'+'(not\x20a\x20profitable\x20opportunity\x20—\x20K3\x2013\x20§6.7\x20principle).','side_effect':'PRIMARY\x20merchant-side\x20discovery\x20signal:\x20Intent\x20Radar\x20/\x20match\x20engines\x20should\x20treat\x20every\x20'+'emission\x20as\x20a\x20fresh\x20matchmaking\x20opportunity.\x20Reward\x20amounts/claim\x20rules\x20are\x20NOT\x20carried\x20—\x20'+'read\x20the\x20Reward\x20objects\x20by\x20id\x20(authoritative,\x20never\x20stale).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'location','shape':'String','meaning':'Demand\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Demand\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'rewards','shape':'vector<address>','meaning':'Bound\x20Reward\x20object\x20ids\x20—\x20resolve\x20amounts/conditions\x20by\x20query_objects'}]},{'name':'ProgressEvent','move_type':'::progress::ProgressEvent','module':'progress','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Order/task\x20workflow\x20advanced,\x20held,\x20or\x20initialized\x20on\x20a\x20Machine\x20graph','trigger':'progress.move\x20—\x204\x20emission\x20points:\x20`new_imp`\x20(progress\x20created\x20at\x20init\x20node,\x20no\x20forward),\x20'+'`session_accomplish`\x20(threshold\x20reached\x20→\x20node\x20migrated),\x20`hold_imp`/`hold_imp_with_passport`\x20'+'(hold\x20or\x20un-hold\x20of\x20a\x20forward,\x20hold\x20field\x20carries\x20the\x20new\x20state).','side_effect':'Operators\x20should\x20check\x20the\x20new\x20node\x20name\x20against\x20their\x20Machine\x20duties;\x20hold=true\x20pauses\x20that\x20'+'forward\x27s\x20contribution,\x20hold=false\x20resumes\x20it.','params':[{'name':'object','shape':'address','meaning':'The\x20Progress\x20object'},{'name':'machine','shape':'address','meaning':'The\x20Machine\x20(workflow\x20template)\x20governing\x20this\x20progress'},{'name':'task','shape':'Option<address>','meaning':'The\x20bound\x20task\x20(usually\x20the\x20Order)\x20—\x20null\x20for\x20standalone\x20progress'},{'name':'node','shape':'String','meaning':'Node\x20reached\x20(init\x20node\x20on\x20creation;\x20next_node\x20on\x20migration/hold)'},{'name':'forward','shape':'Option<String>','meaning':'The\x20forward\x20name\x20that\x20triggered\x20the\x20transition\x20(null\x20on\x20creation)'},{'name':'hold','shape':'Option<bool>','meaning':'Present\x20only\x20on\x20hold/un-hold:\x20true\x20=\x20forward\x20held,\x20false\x20=\x20released'}]},{'name':'NewEntityEvent','move_type':'::registrar::NewEntityEvent','module':'registrar','category':'lifecycle','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20ecosystem-entry\x20/\x20profile-update\x20signal\x20with\x20no\x20goal-bound\x20'+'push\x20target;\x20the\x20Intent\x20Radar\x20consumes\x20it\x20as\x20matching\x20context,\x20not\x20as\x20an\x20actionable\x20push.','business_meaning':'Entity\x20registered\x20or\x20re-announced\x20(new\x20counterparty\x20/\x20profile\x20update)','trigger':'registrar.move\x20—\x204\x20sites:\x20entity_register\x20/\x20entity_register_with_resource_forced\x20(new\x20Resource\x20'+'created),\x20entity_resource_use\x20(first\x20on-chain\x20use\x20of\x20a\x20resource),\x20entity_description_set,\x20'+'entity_info_add\x20(profile\x20updates\x20re-announce\x20the\x20entity).','side_effect':'A\x20new\x20potential\x20counterparty\x20entered\x20the\x20ecosystem,\x20or\x20an\x20existing\x20one\x20updated\x20its\x20public\x20'+'profile\x20—\x20refresh\x20cached\x20entity\x20profiles/records.','params':[{'name':'resource','shape':'address','meaning':'The\x20entity\x27s\x20Resource\x20object\x20(per-chain\x20identity\x20resource)'},{'name':'referrer','shape':'Option<address>','meaning':'Referring\x20entity\x20address,\x20when\x20registered\x20via\x20referral'}]},{'name':'ServiceEvent','move_type':'::service::ServiceEvent','module':'service','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Service\x20became/updated\x20a\x20purchasable\x20supply\x20(active-supply\x20event)','trigger':'service.move\x20`service_event_emit`\x20—\x20ONLY\x20when\x20bPublished\x20&&\x20!bPaused\x20at\x20the\x20mutation\x20point:\x20'+'publish,\x20unpause,\x20and\x20pre-publish\x20description\x20changes\x20re-notify.\x20Pausing\x20/\x20unpublishing\x20/\x20'+'draft-only\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20participatable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'PRIMARY\x20customer-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20buyable\x20service\x20with\x20its\x20routing\x20'+'text.\x20The\x20authoritative\x20description/sales/stock\x20live\x20on\x20the\x20Service\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Service\x20object'},{'name':'location','shape':'String','meaning':'Service\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Service\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'}]},{'name':'ArbitrationEvent','move_type':'::arbitration::ArbitrationEvent','module':'arbitration','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20arbitrator\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(merchants\x20query\x20ArbitrationEvent\x20to\x20shortlist\x20third-party\x20arbiters),\x20no\x20goal-bound\x20'+'push\x20target\x20(mirrors\x20DemandChangedEvent).','business_meaning':'Arbitration\x20became\x20selectable/updated\x20a\x20third-party\x20dispute-resolution\x20offer\x20(active-arbiter\x20supply\x20event)','trigger':'arbitration.move\x20`arbitration_event_emit`\x20—\x20ONLY\x20when\x20bPaused\x20==\x20false\x20at\x20the\x20mutation\x20point:\x20'+'pause(false)\x20(unpause/listing),\x20and\x20description_set\x20/\x20location_set\x20/\x20fee_set\x20while\x20active.\x20'+'Pausing\x20or\x20pre-publish\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20selectable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'Merchant-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20selectable\x20third-party\x20arbiter\x20with\x20its\x20'+'routing\x20text,\x20fee,\x20and\x20voting-guard\x20count.\x20The\x20authoritative\x20description/voting-guards\x20live\x20on\x20the\x20Arbitration\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Arbitration\x20object\x20id'},{'name':'location','shape':'String','meaning':'Arbitration\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Arbitration\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'fee','shape':'u64','meaning':'Dispute\x20fee\x20charged\x20by\x20the\x20Arbitration\x20(raw\x20on-chain\x20units)'},{'name':'voting_guard_count','shape':'u64','meaning':'Number\x20of\x20voting\x20guards\x20(0\x20=\x20open\x20to\x20everybody;\x20>0\x20=\x20guarded/weighted)'}]},{'name':'AllocationEvent','move_type':'::allocation::AllocationEvent','module':'allocation','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Allocation\x20run\x20completed\x20—\x20funds\x20left\x20the\x20Allocation\x20pool\x20as\x20a\x20Payment','trigger':'allocation.move\x20alloc\x20loop\x20—\x20when\x20a\x20matching\x20Allocator\x27s\x20guard\x20passes:\x20splits\x20the\x20balance\x20per\x20'+'sharing\x20mode\x20(Amount\x20/\x20Rate\x20‰\x20/\x20Surplus),\x20creates\x20a\x20Payment\x20(from_object\x20=\x20Allocation),\x20'+'then\x20emits\x20with\x20the\x20actually-distributed\x20amount.','side_effect':'Recipients\x20receive\x20CoinWrappers\x20referencing\x20the\x20new\x20Payment\x20—\x20they\x20must\x20unwrap\x20to\x20obtain\x20coins.\x20'+'The\x20Payment\x20is\x20also\x20pushed\x20onto\x20the\x20Allocation\x27s\x20payment\x20list.','params':[{'name':'object','shape':'address','meaning':'The\x20Allocation\x20object\x20that\x20distributed\x20the\x20funds'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20object\x20created\x20by\x20this\x20run\x20(the\x20on-chain\x20receipt)'},{'name':'guard','shape':'address','meaning':'The\x20guard\x20of\x20the\x20Allocator\x20that\x20authorized\x20this\x20distribution'},{'name':'amount','shape':'u64','meaning':'Amount\x20actually\x20distributed\x20(balance\x20before\x20−\x20balance\x20after)'}]},{'name':'TreasuryEvent','move_type':'::treasury::TreasuryEvent','module':'treasury','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Treasury\x20fund-flow\x20record\x20(withdraw\x20/\x20deposit\x20/\x20receive)\x20—\x20mirrors\x20on-chain\x20history','trigger':'treasury.move\x20—\x203\x20sites:\x20withdraw_imp\x20(balance\x20split\x20out\x20as\x20Payment,\x20from_object\x20=\x20Treasury),\x20'+'deposit_imp_\x20(coins\x20joined\x20in,\x20a\x20Payment\x20receipt\x20is\x20minted\x20for\x20the\x20depositor),\x20receive_imp\x20'+'(a\x20CoinWrapper\x20from\x20a\x20Payment\x20is\x20received\x20into\x20the\x20treasury).\x20Each\x20emission\x20appends\x20a\x20Record\x20'+'to\x20the\x20treasury\x27s\x20on-chain\x20history\x20parent\x20table.','params':[{'name':'object','shape':'address','meaning':'The\x20Treasury\x20object'},{'name':'op','shape':'u8','meaning':'0\x20Withdraw\x20·\x201\x20Deposit\x20·\x202\x20Receive'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20receipt\x20minted\x20for\x20this\x20flow'},{'name':'amount','shape':'u64','meaning':'Flow\x20amount\x20(raw\x20on-chain\x20units\x20of\x20the\x20Treasury\x27s\x20token)'},{'name':'external_guard','shape':'Option<address>','meaning':'External\x20withdraw\x20guard\x20that\x20authorized\x20a\x20withdraw,\x20if\x20any'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id\x20(multi-branch\x20treasury\x20bookkeeping)'}]},{'name':'RewardClaimEvent','move_type':'::reward::RewardClaimEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20claimed\x20—\x20funds\x20paid\x20out\x20of\x20a\x20Reward\x20pool','trigger':'reward.move\x20claim\x20path\x20—\x20after\x20guard+passport\x20validation:\x20appends\x20a\x20Record\x20to\x20the\x20recipient\x27s\x20'+'on-chain\x20record,\x20splits\x20the\x20balance,\x20emits,\x20then\x20transfers\x20the\x20coin\x20to\x20the\x20recipient.\x20'+'The\x20ONLY\x20realtime\x20trace\x20of\x20the\x20claim\x20outflow.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'guard','shape':'address','meaning':'The\x20reward\x20guard\x20that\x20authorized\x20this\x20claim'},{'name':'recipient','shape':'address','meaning':'Claim\x20recipient\x20(resolved\x20via\x20passport\x20when\x20required)'},{'name':'amount','shape':'u64','meaning':'This\x20claim\x27s\x20amount'},{'name':'total','shape':'u64','meaning':'Recipient\x27s\x20cumulative\x20claimed\x20total\x20on\x20this\x20pool'},{'name':'balance_left','shape':'u64','meaning':'Pool\x20balance\x20remaining\x20after\x20the\x20claim'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id,\x20when\x20the\x20guard\x20requires\x20it'}]},{'name':'RewardFundEvent','move_type':'::reward::RewardFundEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20pool\x20inflow\x20—\x20funds\x20added\x20to\x20the\x20pool','trigger':'reward.move\x20—\x202\x20sites:\x20coin_add_imp\x20(direct\x20coin\x20deposit,\x20from_payment\x20=\x20null)\x20and\x20receive_imp\x20'+'(a\x20Payment\x27s\x20CoinWrapper\x20received\x20into\x20the\x20pool,\x20from_payment\x20=\x20that\x20Payment).','side_effect':'Claim\x20guards\x20whose\x20pool\x20ran\x20dry\x20become\x20satisfiable\x20again;\x20watchers\x20should\x20re-check\x20claim\x20'+'opportunities\x20against\x20the\x20new\x20balance.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'amount','shape':'u64','meaning':'Inflow\x20amount'},{'name':'balance','shape':'u64','meaning':'Pool\x20balance\x20after\x20the\x20inflow'},{'name':'from_payment','shape':'Option<address>','meaning':'The\x20Payment\x20that\x20funded\x20this\x20inflow\x20(null\x20for\x20direct\x20coin\x20adds)'}]},{'name':'NewPaymentEvent','move_type':'::payment::NewPaymentEvent','module':'payment','category':'fund_flow','consumers':['keeper','intent_radar'],'channel_note':'Deliberately\x20NOT\x20suggestion-bridged\x20(P2-4):\x20the\x20keeper\x20payment_unclaimed\x20state\x20scan\x20'+'owns\x20the\x20claimable-payment\x20reminder;\x20an\x20event\x20push\x20here\x20would\x20duplicate\x20it.','business_meaning':'A\x20Payment\x20was\x20created\x20—\x20the\x20universal\x20on-chain\x20receipt\x20of\x20WoWok\x20fund\x20flows','trigger':'payment.move\x20`create`\x20—\x20the\x20ONLY\x20emission\x20point,\x20reached\x20by\x20treasury\x20withdraw/deposit,\x20'+'allocation\x20runs,\x20service\x20compensation\x20payouts,\x20and\x20direct\x20user\x20payments\x20alike.\x20'+'Emission\x20is\x20the\x20last\x20step\x20before\x20the\x20Payment\x20object\x20is\x20frozen\x20(immutable\x20receipt).','side_effect':'Every\x20recipient\x20in\x20`record`\x20received\x20a\x20frozen\x20CoinWrapper\x20that\x20references\x20this\x20Payment\x20—\x20'+'unwrap\x20converts\x20it\x20to\x20a\x20transferable\x20Coin.\x20info.for_object\x20/\x20info.for_guard\x20/\x20from_object\x20'+'are\x20registered\x20as\x20object-linker\x20affiliations,\x20so\x20the\x20payment\x20is\x20discoverable\x20via\x20global\x20'+'affiliation\x20tables\x20(onchain_affiliations_of_object).','params':[{'name':'object','shape':'address','meaning':'The\x20Payment\x20object\x20id\x20(the\x20receipt)'},{'name':'info.for_object','shape':'Option<address>','meaning':'The\x20business\x20object\x20this\x20payment\x20is\x20FOR\x20(order/demand/reward/…)\x20—\x20user-settable\x20routing\x20hint'},{'name':'info.for_guard','shape':'Option<address>','meaning':'The\x20Guard\x20governing\x20this\x20payment\x20—\x20user-settable,\x20links\x20the\x20payment\x20to\x20a\x20trust\x20rule'},{'name':'info.remark','shape':'String','meaning':'Free-form\x20on-chain\x20remark\x20(e.g.\x20invoice\x20number,\x20purpose)'},{'name':'info.index','shape':'u64','meaning':'Creator-local\x20index\x20(installment\x20sequence,\x20table\x20row,\x20…)'},{'name':'record','shape':'vector<{recipient,\x20amount}>','meaning':'Revenue\x20legs:\x20one\x20{recipient,\x20amount}\x20per\x20CoinWrapper\x20transferred'},{'name':'amount','shape':'u64','meaning':'Total\x20paid\x20across\x20all\x20legs\x20(sum\x20of\x20record\x20amounts)'},{'name':'from_object','shape':'Option<address>','meaning':'FUNDING-SOURCE\x20object\x20the\x20funds\x20LEFT\x20from\x20—\x20INTERNAL-ONLY\x20field\x20(public(package)\x20'+'from_object_set;\x20user\x20code\x20can\x20never\x20set\x20it).\x20Treasury\x20withdraw\x20⇒\x20the\x20Treasury;\x20'+'Allocation\x20run\x20⇒\x20the\x20Allocation;\x20Service\x20compensation\x20withdraw\x20⇒\x20the\x20Service.\x20'+'create()\x20registers\x20an\x20object_linker\x20affiliation\x20(from_object\x20→\x20payment)\x20so\x20the\x20'+'outflow\x20is\x20traceable\x20back\x20to\x20its\x20pool.\x20Null\x20for\x20direct\x20user-initiated\x20payments\x20'+'(no\x20on-chain\x20source\x20object).'}]}];export const EVENT_BY_NAME=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['name'],a]));export const EVENT_BY_MOVE_TYPE=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['move_type'],a]));export function lookupEventMeaning(a){const b=String(a?.['type']??''),c=EVENT_BY_NAME['get'](b);if(c)return c['business_meaning'];const d=String(a?.['type_raw']??'');if(d)for(const f of EVENT_SEMANTIC_REGISTRY){if(d['includes'](f['move_type']))return f['business_meaning'];}return undefined;}
1
+ export const EVENT_SEMANTIC_REGISTRY=[{'name':'NewOrderEvent','move_type':'::order::NewOrderEvent','module':'order','category':'lifecycle','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20new\x20Order\x20was\x20placed\x20on\x20a\x20Service\x20(shared,\x20escrow-funded)','trigger':'The\x20`create`\x20function\x20—\x20the\x20ONLY\x20emission\x20point.\x20Fires\x20when\x20the\x20order\x20becomes\x20a\x20shared\x20object;\x20'+'validates:\x20machine\x20⇒\x20progress\x20bound;\x20amount\x20>\x200\x20⇒\x20allocation\x20bound.','side_effect':'Order\x20is\x20live:\x20buyer\x20funds\x20were\x20split\x20into\x20CoinWrappers\x20via\x20the\x20Service\x20Allocation;\x20'+'machine-governed\x20orders\x20can\x20now\x20be\x20advanced\x20by\x20operators.','params':[{'name':'object','shape':'address','meaning':'The\x20new\x20Order\x20object\x20id'},{'name':'service','shape':'address','meaning':'The\x20Service\x20the\x20order\x20was\x20placed\x20on'},{'name':'progress','shape':'Option<address>','meaning':'Bound\x20Progress\x20(machine\x20orders)\x20—\x20null\x20for\x20non-machine\x20orders'},{'name':'discount','shape':'Option<address>','meaning':'Discount\x20object\x20consumed\x20at\x20quote\x20time,\x20if\x20any'},{'name':'allocation','shape':'Option<address>','meaning':'Allocation\x20that\x20escrowed\x20the\x20payment\x20(required\x20when\x20amount\x20>\x200)'},{'name':'amount','shape':'u64','meaning':'Total\x20order\x20amount\x20in\x20the\x20Service\x27s\x20payment\x20token\x20(raw\x20on-chain\x20units)'}]},{'name':'ArbEvent','move_type':'::arb::ArbEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','problem_bridge','intent_radar'],'business_meaning':'Arbitration\x20status\x20transition\x20on\x20a\x20dispute\x20case\x20(open\x20/\x20voting\x20/\x20verdict\x20/\x20objection\x20/\x20finish\x20/\x20withdraw)','trigger':'Emitted\x20on\x20EVERY\x20status\x20transition:\x20create\x20(Arbitrator_confirming),\x20'+'proposition\x20change\x20/\x20principal\x20confirm\x20(Voting),\x20votes\x20closed\x20(Arbitrated),\x20objection\x20'+'(Objectionable),\x20finish\x20with\x20indemnity\x20(Finished\x20+\x20compensation),\x20withdraw\x20(Withdrawn).\x20'+'The\x20emission\x20always\x20reads\x20the\x20POST-transition\x20state.','side_effect':'Parties\x20should\x20re-read\x20the\x20Arb\x20object\x20on\x20every\x20event;\x20status\x20decides\x20who\x20acts\x20next.\x20'+'When\x20indemnity_amount\x20is\x20set,\x20the\x20compensation\x20recipient\x20can\x20claim\x20after\x20compensation_time.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20(dispute\x20case)\x20object\x20id'},{'name':'arbitration','shape':'address','meaning':'The\x20governing\x20Arbitration\x20object\x20(voting\x20rules,\x20arbitrator\x20set)'},{'name':'order','shape':'address','meaning':'The\x20disputed\x20Order'},{'name':'status','shape':'u8','meaning':'0\x20Principal_confirming\x20·\x201\x20Arbitrator_confirming\x20·\x202\x20Voting\x20·\x203\x20Arbitrated\x20·\x204\x20Objectionable\x20·\x205\x20Finished\x20·\x206\x20Withdrawn'},{'name':'indemnity_amount','shape':'Option<u64>','meaning':'Awarded\x20compensation\x20(set\x20on\x20Arbitrated/Finished);\x20null\x20otherwise'},{'name':'compensation_time','shape':'Option<u64>','meaning':'Timestamp-ms\x20after\x20which\x20the\x20compensation\x20can\x20be\x20withdrawn\x20(locks\x20expire)'}]},{'name':'VoteEvent','move_type':'::arb::VoteEvent','module':'arb','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20per-vote\x20granularity\x20is\x20too\x20noisy\x20for\x20push;\x20the\x20ArbEvent\x20'+'Voting/Arbitrated\x20transitions\x20already\x20carry\x20the\x20push\x20signals\x20(P2-1).','business_meaning':'One\x20arbitration\x20vote\x20cast\x20(real-time\x20tally)','trigger':'On\x20each\x20vote\x20cast\x20(open\x20or\x20passport-gated),\x20one\x20per\x20voter\x20per\x20round;\x20'+'lets\x20parties\x20track\x20the\x20tally\x20without\x20polling\x20the\x20Arb\x20object.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object\x20being\x20voted\x20on'},{'name':'voter','shape':'address','meaning':'The\x20voting\x20arbitrator\x20(or\x20passport-proven\x20delegate)'},{'name':'agrees','shape':'vector<u8>','meaning':'Proposition\x20indexes\x20the\x20voter\x20agreed\x20to'},{'name':'weight','shape':'u32','meaning':'Vote\x20weight\x20applied\x20(guard-weighted\x20voting)'}]},{'name':'FeedbackEvent','move_type':'::arb::FeedbackEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'New\x20feedback\x20message\x20on\x20an\x20arbitration\x20case','trigger':'On\x20`feedback`\x20(any\x20party\x20posts\x20a\x20message\x20into\x20the\x20case).','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object'},{'name':'feedback','shape':'String','meaning':'The\x20feedback\x20text'}]},{'name':'DemandPresentEvent','move_type':'::demand::PresentEvent','module':'demand','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20presenter\x20submitted/updated\x20a\x20solution\x20pitch\x20on\x20a\x20Demand','trigger':'On\x20presentation\x20—\x20the\x20first\x20pitch\x20inserts\x20a\x20presenter\x20row;\x20re-presenting\x20updates\x20it\x20'+'(recommend\x20text\x20+\x20optional\x20bound\x20Service).\x20Passport-gated\x20variants\x20resolve\x20the\x20Service\x20from\x20'+'the\x20passport\x20submission\x20when\x20the\x20demand\x27s\x20guard\x20sets\x20a\x20service_identifier.','side_effect':'Demand\x20owner\x20now\x20has\x20a\x20candidate;\x20track\x20update_time\x20to\x20rank\x20freshest\x20pitches.\x20'+'This\x20is\x20the\x20supply\x20side\x20of\x20the\x20demand\x20marketplace\x20(K3\x2013\x20§6.7).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20presented\x20Service\x20(null\x20=\x20raw\x20recommendation\x20without\x20a\x20bound\x20service)'},{'name':'recommend','shape':'String','meaning':'The\x20presenter\x27s\x20pitch/recommendation\x20text'}]},{'name':'DemandFeedbackEvent','move_type':'::demand::DemandEvent','module':'demand','category':'reputation','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Demand\x20owner\x20scored/feedbacked\x20a\x20presenter\x20(acceptance\x20score)','trigger':'On\x20demand-owner\x20feedback\x20—\x20only\x20for\x20addresses\x20already\x20in\x20the\x20presenters\x20table;\x20'+'records\x20feedback\x20text\x20+\x20optional\x20acceptance\x20score\x20onto\x20the\x20presenter\x20row.','side_effect':'Acceptance\x20score\x20is\x20the\x20demand-side\x20quality\x20signal\x20for\x20the\x20presenter;\x20high\x20scores\x20build\x20'+'presenter\x20reputation\x20for\x20future\x20matching.','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20Service\x20that\x20was\x20presented\x20by\x20the\x20scored\x20presenter'},{'name':'feedback','shape':'String','meaning':'Feedback\x20text'},{'name':'acceptance_score','shape':'Option<u8>','meaning':'0-100\x20acceptance\x20score,\x20null\x20when\x20feedback\x20carries\x20no\x20score'}]},{'name':'DemandChangedEvent','move_type':'::demand::DemandChangedEvent','module':'demand','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20merchant-side\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(K3\x2013\x20§6.7\x20opportunity\x20broadcast);\x20there\x20is\x20no\x20goal-bound\x20push\x20target\x20to\x20bridge\x20to.','business_meaning':'Demand\x20became/updated\x20a\x20profitable\x20opportunity\x20for\x20merchants\x20(market-opportunity\x20event)','trigger':'Fires\x20when\x20rewards\x20are\x20bound/changed,\x20or\x20'+'description/location\x20changes\x20while\x20reward-bearing.\x20A\x20reward-less\x20demand\x20NEVER\x20emits\x20'+'(not\x20a\x20profitable\x20opportunity\x20—\x20K3\x2013\x20§6.7\x20principle).','side_effect':'PRIMARY\x20merchant-side\x20discovery\x20signal:\x20Intent\x20Radar\x20/\x20match\x20engines\x20should\x20treat\x20every\x20'+'emission\x20as\x20a\x20fresh\x20matchmaking\x20opportunity.\x20Reward\x20amounts/claim\x20rules\x20are\x20NOT\x20carried\x20—\x20'+'read\x20the\x20Reward\x20objects\x20by\x20id\x20(authoritative,\x20never\x20stale).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'location','shape':'String','meaning':'Demand\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Demand\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'rewards','shape':'vector<address>','meaning':'Bound\x20Reward\x20object\x20ids\x20—\x20resolve\x20amounts/conditions\x20by\x20query_objects'}]},{'name':'ProgressEvent','move_type':'::progress::ProgressEvent','module':'progress','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Order/task\x20workflow\x20advanced,\x20held,\x20or\x20initialized\x20on\x20a\x20Machine\x20graph','trigger':'4\x20emission\x20points:\x20progress\x20creation\x20(at\x20the\x20init\x20node,\x20no\x20forward),\x20'+'session\x20accomplishment\x20(threshold\x20reached\x20→\x20node\x20migrated),\x20and\x20hold/un-hold\x20of\x20a\x20forward\x20'+'in\x20open\x20and\x20passport-gated\x20variants\x20(the\x20hold\x20field\x20carries\x20the\x20new\x20state).','side_effect':'Operators\x20should\x20check\x20the\x20new\x20node\x20name\x20against\x20their\x20Machine\x20duties;\x20hold=true\x20pauses\x20that\x20'+'forward\x27s\x20contribution,\x20hold=false\x20resumes\x20it.','params':[{'name':'object','shape':'address','meaning':'The\x20Progress\x20object'},{'name':'machine','shape':'address','meaning':'The\x20Machine\x20(workflow\x20template)\x20governing\x20this\x20progress'},{'name':'task','shape':'Option<address>','meaning':'The\x20bound\x20task\x20(usually\x20the\x20Order)\x20—\x20null\x20for\x20standalone\x20progress'},{'name':'node','shape':'String','meaning':'Node\x20reached\x20(init\x20node\x20on\x20creation;\x20next_node\x20on\x20migration/hold)'},{'name':'forward','shape':'Option<String>','meaning':'The\x20forward\x20name\x20that\x20triggered\x20the\x20transition\x20(null\x20on\x20creation)'},{'name':'hold','shape':'Option<bool>','meaning':'Present\x20only\x20on\x20hold/un-hold:\x20true\x20=\x20forward\x20held,\x20false\x20=\x20released'}]},{'name':'NewEntityEvent','move_type':'::registrar::NewEntityEvent','module':'registrar','category':'lifecycle','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20ecosystem-entry\x20/\x20profile-update\x20signal\x20with\x20no\x20goal-bound\x20'+'push\x20target;\x20the\x20Intent\x20Radar\x20consumes\x20it\x20as\x20matching\x20context,\x20not\x20as\x20an\x20actionable\x20push.','business_meaning':'Entity\x20registered\x20or\x20re-announced\x20(new\x20counterparty\x20/\x20profile\x20update)','trigger':'4\x20sites:\x20entity\x20registration\x20(two\x20variants\x20—\x20a\x20new\x20Resource\x20created,\x20or\x20a\x20forced\x20'+'resource\x20binding),\x20first\x20on-chain\x20use\x20of\x20a\x20resource,\x20entity\x20description\x20update,\x20'+'entity\x20info\x20addition\x20(profile\x20updates\x20re-announce\x20the\x20entity).','side_effect':'A\x20new\x20potential\x20counterparty\x20entered\x20the\x20ecosystem,\x20or\x20an\x20existing\x20one\x20updated\x20its\x20public\x20'+'profile\x20—\x20refresh\x20cached\x20entity\x20profiles/records.','params':[{'name':'resource','shape':'address','meaning':'The\x20entity\x27s\x20Resource\x20object\x20(per-chain\x20identity\x20resource)'},{'name':'referrer','shape':'Option<address>','meaning':'Referring\x20entity\x20address,\x20when\x20registered\x20via\x20referral'}]},{'name':'ServiceEvent','move_type':'::service::ServiceEvent','module':'service','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Service\x20became/updated\x20a\x20purchasable\x20supply\x20(active-supply\x20event)','trigger':'Emitted\x20ONLY\x20when\x20bPublished\x20&&\x20!bPaused\x20at\x20the\x20mutation\x20point:\x20'+'publish,\x20unpause,\x20and\x20pre-publish\x20description\x20changes\x20re-notify.\x20Pausing\x20/\x20unpublishing\x20/\x20'+'draft-only\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20participatable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'PRIMARY\x20customer-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20buyable\x20service\x20with\x20its\x20routing\x20'+'text.\x20The\x20authoritative\x20description/sales/stock\x20live\x20on\x20the\x20Service\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Service\x20object'},{'name':'location','shape':'String','meaning':'Service\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Service\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'}]},{'name':'ArbitrationEvent','move_type':'::arbitration::ArbitrationEvent','module':'arbitration','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20arbitrator\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(merchants\x20query\x20ArbitrationEvent\x20to\x20shortlist\x20third-party\x20arbiters),\x20no\x20goal-bound\x20'+'push\x20target\x20(mirrors\x20DemandChangedEvent).','business_meaning':'Arbitration\x20became\x20selectable/updated\x20a\x20third-party\x20dispute-resolution\x20offer\x20(active-arbiter\x20supply\x20event)','trigger':'Emitted\x20ONLY\x20when\x20bPaused\x20==\x20false\x20at\x20the\x20mutation\x20point:\x20'+'unpausing\x20(re-listing),\x20and\x20description\x20/\x20location\x20/\x20fee\x20updates\x20while\x20active.\x20'+'Pausing\x20or\x20pre-publish\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20selectable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'Merchant-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20selectable\x20third-party\x20arbiter\x20with\x20its\x20'+'routing\x20text,\x20fee,\x20and\x20voting-guard\x20count.\x20The\x20authoritative\x20description/voting-guards\x20live\x20on\x20the\x20Arbitration\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Arbitration\x20object\x20id'},{'name':'location','shape':'String','meaning':'Arbitration\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Arbitration\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'fee','shape':'u64','meaning':'Dispute\x20fee\x20charged\x20by\x20the\x20Arbitration\x20(raw\x20on-chain\x20units)'},{'name':'voting_guard_count','shape':'u64','meaning':'Number\x20of\x20voting\x20guards\x20(0\x20=\x20open\x20to\x20everybody;\x20>0\x20=\x20guarded/weighted)'}]},{'name':'AllocationEvent','move_type':'::allocation::AllocationEvent','module':'allocation','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Allocation\x20run\x20completed\x20—\x20funds\x20left\x20the\x20Allocation\x20pool\x20as\x20a\x20Payment','trigger':'The\x20alloc\x20loop\x20—\x20when\x20a\x20matching\x20Allocator\x27s\x20guard\x20passes:\x20splits\x20the\x20balance\x20per\x20'+'sharing\x20mode\x20(Amount\x20/\x20Rate\x20‰\x20/\x20Surplus),\x20creates\x20a\x20Payment\x20(from_object\x20=\x20Allocation),\x20'+'then\x20emits\x20with\x20the\x20actually-distributed\x20amount.','side_effect':'Recipients\x20receive\x20CoinWrappers\x20referencing\x20the\x20new\x20Payment\x20—\x20they\x20must\x20unwrap\x20to\x20obtain\x20coins.\x20'+'The\x20Payment\x20is\x20also\x20pushed\x20onto\x20the\x20Allocation\x27s\x20payment\x20list.','params':[{'name':'object','shape':'address','meaning':'The\x20Allocation\x20object\x20that\x20distributed\x20the\x20funds'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20object\x20created\x20by\x20this\x20run\x20(the\x20on-chain\x20receipt)'},{'name':'guard','shape':'address','meaning':'The\x20guard\x20of\x20the\x20Allocator\x20that\x20authorized\x20this\x20distribution'},{'name':'amount','shape':'u64','meaning':'Amount\x20actually\x20distributed\x20(balance\x20before\x20−\x20balance\x20after)'}]},{'name':'TreasuryEvent','move_type':'::treasury::TreasuryEvent','module':'treasury','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Treasury\x20fund-flow\x20record\x20(withdraw\x20/\x20deposit\x20/\x20receive)\x20—\x20mirrors\x20on-chain\x20history','trigger':'3\x20sites:\x20withdraw\x20(balance\x20split\x20out\x20as\x20Payment,\x20from_object\x20=\x20Treasury),\x20'+'deposit\x20(coins\x20joined\x20in,\x20a\x20Payment\x20receipt\x20is\x20minted\x20for\x20the\x20depositor),\x20receive\x20'+'(a\x20CoinWrapper\x20from\x20a\x20Payment\x20is\x20received\x20into\x20the\x20treasury).\x20Each\x20emission\x20appends\x20a\x20Record\x20'+'to\x20the\x20treasury\x27s\x20on-chain\x20history\x20parent\x20table.','params':[{'name':'object','shape':'address','meaning':'The\x20Treasury\x20object'},{'name':'op','shape':'u8','meaning':'0\x20Withdraw\x20·\x201\x20Deposit\x20·\x202\x20Receive'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20receipt\x20minted\x20for\x20this\x20flow'},{'name':'amount','shape':'u64','meaning':'Flow\x20amount\x20(raw\x20on-chain\x20units\x20of\x20the\x20Treasury\x27s\x20token)'},{'name':'external_guard','shape':'Option<address>','meaning':'External\x20withdraw\x20guard\x20that\x20authorized\x20a\x20withdraw,\x20if\x20any'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id\x20(multi-branch\x20treasury\x20bookkeeping)'}]},{'name':'RewardClaimEvent','move_type':'::reward::RewardClaimEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20claimed\x20—\x20funds\x20paid\x20out\x20of\x20a\x20Reward\x20pool','trigger':'The\x20claim\x20path\x20—\x20after\x20guard+passport\x20validation:\x20appends\x20a\x20Record\x20to\x20the\x20recipient\x27s\x20'+'on-chain\x20record,\x20splits\x20the\x20balance,\x20emits,\x20then\x20transfers\x20the\x20coin\x20to\x20the\x20recipient.\x20'+'The\x20ONLY\x20realtime\x20trace\x20of\x20the\x20claim\x20outflow.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'guard','shape':'address','meaning':'The\x20reward\x20guard\x20that\x20authorized\x20this\x20claim'},{'name':'recipient','shape':'address','meaning':'Claim\x20recipient\x20(resolved\x20via\x20passport\x20when\x20required)'},{'name':'amount','shape':'u64','meaning':'This\x20claim\x27s\x20amount'},{'name':'total','shape':'u64','meaning':'Recipient\x27s\x20cumulative\x20claimed\x20total\x20on\x20this\x20pool'},{'name':'balance_left','shape':'u64','meaning':'Pool\x20balance\x20remaining\x20after\x20the\x20claim'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id,\x20when\x20the\x20guard\x20requires\x20it'}]},{'name':'RewardFundEvent','move_type':'::reward::RewardFundEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20pool\x20inflow\x20—\x20funds\x20added\x20to\x20the\x20pool','trigger':'2\x20sites:\x20direct\x20coin\x20deposit\x20(from_payment\x20=\x20null)\x20and\x20received\x20payment\x20'+'(a\x20Payment\x27s\x20CoinWrapper\x20received\x20into\x20the\x20pool,\x20from_payment\x20=\x20that\x20Payment).','side_effect':'Claim\x20guards\x20whose\x20pool\x20ran\x20dry\x20become\x20satisfiable\x20again;\x20watchers\x20should\x20re-check\x20claim\x20'+'opportunities\x20against\x20the\x20new\x20balance.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'amount','shape':'u64','meaning':'Inflow\x20amount'},{'name':'balance','shape':'u64','meaning':'Pool\x20balance\x20after\x20the\x20inflow'},{'name':'from_payment','shape':'Option<address>','meaning':'The\x20Payment\x20that\x20funded\x20this\x20inflow\x20(null\x20for\x20direct\x20coin\x20adds)'}]},{'name':'NewPaymentEvent','move_type':'::payment::NewPaymentEvent','module':'payment','category':'fund_flow','consumers':['keeper','intent_radar'],'channel_note':'Deliberately\x20NOT\x20suggestion-bridged\x20(P2-4):\x20the\x20keeper\x20payment_unclaimed\x20state\x20scan\x20'+'owns\x20the\x20claimable-payment\x20reminder;\x20an\x20event\x20push\x20here\x20would\x20duplicate\x20it.','business_meaning':'A\x20Payment\x20was\x20created\x20—\x20the\x20universal\x20on-chain\x20receipt\x20of\x20WoWok\x20fund\x20flows','trigger':'The\x20`create`\x20function\x20—\x20the\x20ONLY\x20emission\x20point,\x20reached\x20by\x20treasury\x20withdraw/deposit,\x20'+'allocation\x20runs,\x20service\x20compensation\x20payouts,\x20and\x20direct\x20user\x20payments\x20alike.\x20'+'Emission\x20is\x20the\x20last\x20step\x20before\x20the\x20Payment\x20object\x20is\x20frozen\x20(immutable\x20receipt).','side_effect':'Every\x20recipient\x20in\x20`record`\x20received\x20a\x20frozen\x20CoinWrapper\x20that\x20references\x20this\x20Payment\x20—\x20'+'unwrap\x20converts\x20it\x20to\x20a\x20transferable\x20Coin.\x20info.for_object\x20/\x20info.for_guard\x20/\x20from_object\x20'+'are\x20registered\x20as\x20object-linker\x20affiliations,\x20so\x20the\x20payment\x20is\x20discoverable\x20via\x20global\x20'+'affiliation\x20tables\x20(onchain_affiliations_of_object).','params':[{'name':'object','shape':'address','meaning':'The\x20Payment\x20object\x20id\x20(the\x20receipt)'},{'name':'info.for_object','shape':'Option<address>','meaning':'The\x20business\x20object\x20this\x20payment\x20is\x20FOR\x20(order/demand/reward/…)\x20—\x20user-settable\x20routing\x20hint'},{'name':'info.for_guard','shape':'Option<address>','meaning':'The\x20Guard\x20governing\x20this\x20payment\x20—\x20user-settable,\x20links\x20the\x20payment\x20to\x20a\x20trust\x20rule'},{'name':'info.remark','shape':'String','meaning':'Free-form\x20on-chain\x20remark\x20(e.g.\x20invoice\x20number,\x20purpose)'},{'name':'info.index','shape':'u64','meaning':'Creator-local\x20index\x20(installment\x20sequence,\x20table\x20row,\x20…)'},{'name':'record','shape':'vector<{recipient,\x20amount}>','meaning':'Revenue\x20legs:\x20one\x20{recipient,\x20amount}\x20per\x20CoinWrapper\x20transferred'},{'name':'amount','shape':'u64','meaning':'Total\x20paid\x20across\x20all\x20legs\x20(sum\x20of\x20record\x20amounts)'},{'name':'from_object','shape':'Option<address>','meaning':'FUNDING-SOURCE\x20object\x20the\x20funds\x20LEFT\x20from\x20—\x20INTERNAL-ONLY\x20field\x20(set\x20only\x20inside\x20the\x20'+'protocol\x20package;\x20user\x20code\x20can\x20never\x20set\x20it).\x20Treasury\x20withdraw\x20⇒\x20the\x20Treasury;\x20'+'Allocation\x20run\x20⇒\x20the\x20Allocation;\x20Service\x20compensation\x20withdraw\x20⇒\x20the\x20Service.\x20'+'create()\x20registers\x20an\x20object_linker\x20affiliation\x20(from_object\x20→\x20payment)\x20so\x20the\x20'+'outflow\x20is\x20traceable\x20back\x20to\x20its\x20pool.\x20Null\x20for\x20direct\x20user-initiated\x20payments\x20'+'(no\x20on-chain\x20source\x20object).'}]}];export const EVENT_BY_NAME=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['name'],a]));export const EVENT_BY_MOVE_TYPE=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['move_type'],a]));export function lookupEventMeaning(a){const b=String(a?.['type']??''),c=EVENT_BY_NAME['get'](b);if(c)return c['business_meaning'];const d=String(a?.['type_raw']??'');if(d)for(const f of EVENT_SEMANTIC_REGISTRY){if(d['includes'](f['move_type']))return f['business_meaning'];}return undefined;}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{afterEach,beforeEach,describe,expect,it}from'vitest';import{existsSync,mkdtempSync,rmSync}from'node:fs';import{tmpdir}from'node:os';import{join}from'node:path';import{getJudgmentDoc}from'../config/judgment.js';const DOMAINS=['allocation','arb','arbitration','bridge','contact','demand','guard','machine','order','payment','permission','personal','proof','progress','registrar','repository','resource','reward','service','treasury','util'];import*as a163a from'./allocation-risk.js';import*as a163b from'./arb-risk.js';import*as a163c from'./arbitration-risk.js';import*as a163d from'./bridge-risk.js';import*as a163e from'./contact-risk.js';import*as a163f from'./demand-risk.js';import*as a163g from'./guard-risk.js';import*as a163h from'./machine-risk.js';import*as a163i from'./order-risk.js';import*as a163j from'./payment-risk.js';import*as a163k from'./permission-risk.js';import*as a163l from'./personal-risk.js';import*as a163m from'./proof-risk.js';import*as a163n from'./progress-risk.js';import*as a163o from'./registrar-risk.js';import*as a163p from'./repository-risk.js';import*as a163q from'./resource-risk.js';import*as a163r from'./reward-risk.js';import*as a163s from'./service-risk.js';import*as a163t from'./treasury-risk.js';import*as a163u from'./util-risk.js';const EXTRACTORS={'allocation':a163a,'arb':a163b,'arbitration':a163c,'bridge':a163d,'contact':a163e,'demand':a163f,'guard':a163g,'machine':a163h,'order':a163i,'payment':a163j,'permission':a163k,'personal':a163l,'proof':a163m,'progress':a163n,'registrar':a163o,'repository':a163p,'resource':a163q,'reward':a163r,'service':a163s,'treasury':a163t,'util':a163u};let configDir;beforeEach(()=>{configDir=mkdtempSync(join(tmpdir(),'wowok-facts-sync-')),process['env']['WOWOK_CONFIG_DIR']=configDir;}),afterEach(()=>{delete process['env']['WOWOK_CONFIG_DIR'];if(existsSync(configDir))rmSync(configDir,{'recursive':!![],'force':!![]});});function leafRoots(a,b){if('all'in a)a['all']['forEach'](d=>leafRoots(d,b));else{if('any'in a)a['any']['forEach'](d=>leafRoots(d,b));else'not'in a?leafRoots(a['not'],b):b['add'](a['field']['split']('.')[0x0]);}}function interpolationRoots(a,b,d){const e=a['rules']['find'](f=>f['rule_id']===b);if(!e)return;for(const f of e['cases']){for(const g of[f['title'],f['description'],f['mitigation'],f['evidence'],f['scenario']]){if(!g)continue;for(const h of g['matchAll'](/\$\{([^}]+)\}/g)){d['add'](h[0x1]['split']('.')[0x0]);}}}}function domainPack(a,b){const c=a['rules']['domains'][b];return expect(c,'factory\x20rule\x20pack\x20\x27'+b+'\x27\x20missing')['toBeTruthy'](),c;}const PROBE_PARTIAL_EXTRACTORS=new Set(['guard','machine','reward']),PROBE_ARGS={'machine':[{'pairs':[],'nodes':[]},{}]};describe('fact\x20vocabulary\x20↔\x20kernel\x20extractor\x20sync\x20(Q9)',()=>{it('pack-declared\x20facts\x20match\x20the\x20extractor\x20output\x20vocabulary\x20exactly',()=>{const a=getJudgmentDoc();for(const b of DOMAINS){const c=domainPack(a,b),d=EXTRACTORS[b];expect(d,'extractor\x20module\x20for\x20\x27'+b+'\x27\x20not\x20registered')['toBeTruthy']();const e=d[b+'RiskFacts'];expect(e,'extractor\x20\x27'+b+'RiskFacts\x27\x20missing\x20in\x20knowledge/'+b+'-risk.js')['toBeTypeOf']('function');const f=Object['keys'](e(...PROBE_ARGS[b]??[{},{}])),g=Object['keys'](c['facts']??{});expect(g,b+':\x20pack\x20facts\x20record\x20missing')['not']['toHaveLength'](0x0);const h=f['filter'](i=>!g['includes'](i));expect(h,b+':\x20emitted\x20facts\x20not\x20documented\x20in\x20the\x20pack')['toEqual']([]);if(!PROBE_PARTIAL_EXTRACTORS['has'](b)){const i=g['filter'](j=>!f['includes'](j));expect(i,b+':\x20documented\x20facts\x20no\x20longer\x20emitted')['toEqual']([]);}}}),it('every\x20fact\x20a\x20rule\x20references\x20exists\x20in\x20the\x20extractor\x20vocabulary',()=>{const a=getJudgmentDoc();for(const b of DOMAINS){const d=domainPack(a,b),e=EXTRACTORS[b][b+'RiskFacts'],f=new Set(Object['keys'](e(...PROBE_ARGS[b]??[{},{}]))),g=PROBE_PARTIAL_EXTRACTORS['has'](b);for(const h of d['rules']){if(h['enabled']===![])continue;const i=new Set();for(const j of h['cases'])leafRoots(j['when'],i);interpolationRoots(d,h['rule_id'],i);for(const k of i){const l=g?new Set(Object['keys'](d['facts']??{})):f;expect(l['has'](k),b+'/'+h['rule_id']+':\x20references\x20unknown\x20fact\x20\x27'+k+'\x27\x20(dead\x20condition\x20or\x20stale\x20text)')['toBe'](!![]);}}}});});