@wowok/agent-mcp 3.1.3 → 3.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/dist/config/config-audit.spec.d.ts +1 -0
  2. package/dist/config/config-audit.spec.js +1 -0
  3. package/dist/config/exposure.d.ts +108 -0
  4. package/dist/config/exposure.js +1 -0
  5. package/dist/config/index.d.ts +2 -0
  6. package/dist/config/index.js +1 -1
  7. package/dist/config/judgment.d.ts +1228 -0
  8. package/dist/config/judgment.js +1 -0
  9. package/dist/config/judgment.spec.d.ts +1 -0
  10. package/dist/config/judgment.spec.js +1 -0
  11. package/dist/config/rule-engine.d.ts +299 -0
  12. package/dist/config/rule-engine.js +1 -0
  13. package/dist/config/rule-engine.spec.d.ts +1 -0
  14. package/dist/config/rule-engine.spec.js +1 -0
  15. package/dist/config/severity.d.ts +7 -0
  16. package/dist/config/severity.js +1 -0
  17. package/dist/customer/order-monitor.d.ts +3 -1
  18. package/dist/customer/order-monitor.js +1 -1
  19. package/dist/evaluation/acceptance.d.ts +1 -0
  20. package/dist/evaluation/acceptance.js +1 -1
  21. package/dist/evaluation/arbitration-game.js +1 -1
  22. package/dist/evaluation/builtins/demand-match.js +1 -1
  23. package/dist/evaluation/builtins/graph-service.js +1 -1
  24. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  25. package/dist/evaluation/engine.js +1 -1
  26. package/dist/evaluation/game-strategy.d.ts +2 -2
  27. package/dist/evaluation/game-strategy.js +1 -1
  28. package/dist/evaluation/match-operation.d.ts +2 -2
  29. package/dist/evaluation/match-operation.js +1 -1
  30. package/dist/evaluation/standards.d.ts +3 -25
  31. package/dist/evaluation/standards.js +1 -1
  32. package/dist/evaluation/types.d.ts +2 -1
  33. package/dist/experience/realtime-feedback.js +1 -1
  34. package/dist/extensions/business-modules.js +1 -1
  35. package/dist/extensions/custom-registry-file.js +1 -1
  36. package/dist/extensions/industry-audit.spec.d.ts +1 -0
  37. package/dist/extensions/industry-audit.spec.js +1 -0
  38. package/dist/extensions/industry-layers.d.ts +8 -0
  39. package/dist/extensions/industry-layers.js +1 -1
  40. package/dist/extensions/industry-pack.d.ts +2 -0
  41. package/dist/extensions/industry-pack.js +1 -1
  42. package/dist/extensions/mode-evaluator.js +1 -1
  43. package/dist/extensions/modes.js +1 -1
  44. package/dist/graph/onchain/analyze.d.ts +3 -1
  45. package/dist/graph/onchain/analyze.js +1 -1
  46. package/dist/graph/onchain/analyze.spec.js +1 -1
  47. package/dist/graph/onchain/edge-schema.d.ts +1 -0
  48. package/dist/graph/onchain/edge-schema.js +1 -1
  49. package/dist/graph/onchain/expand.js +1 -1
  50. package/dist/graph/onchain/exploration.d.ts +28 -0
  51. package/dist/graph/onchain/exploration.js +1 -0
  52. package/dist/graph/onchain/exploration.spec.d.ts +1 -0
  53. package/dist/graph/onchain/exploration.spec.js +1 -0
  54. package/dist/graph/onchain/exposure.d.ts +18 -0
  55. package/dist/graph/onchain/exposure.js +1 -0
  56. package/dist/graph/onchain/exposure.spec.d.ts +1 -0
  57. package/dist/graph/onchain/exposure.spec.js +1 -0
  58. package/dist/graph/onchain/graph-policy.spec.d.ts +1 -0
  59. package/dist/graph/onchain/graph-policy.spec.js +1 -0
  60. package/dist/graph/onchain/index.d.ts +6 -0
  61. package/dist/graph/onchain/index.js +1 -1
  62. package/dist/graph/onchain/interest.js +1 -1
  63. package/dist/graph/onchain/interest.spec.js +1 -1
  64. package/dist/graph/onchain/names.js +1 -1
  65. package/dist/graph/onchain/names.spec.js +1 -1
  66. package/dist/graph/onchain/policy.d.ts +8 -0
  67. package/dist/graph/onchain/policy.js +1 -0
  68. package/dist/graph/onchain/proposal-graph.js +1 -1
  69. package/dist/graph/onchain/proposal-graph.spec.js +1 -1
  70. package/dist/graph/onchain/synthesis.d.ts +20 -0
  71. package/dist/graph/onchain/synthesis.js +1 -0
  72. package/dist/graph/onchain/synthesis.spec.d.ts +1 -0
  73. package/dist/graph/onchain/synthesis.spec.js +1 -0
  74. package/dist/graph/onchain/types.d.ts +11 -1
  75. package/dist/keeper/keeper.spec.js +1 -1
  76. package/dist/knowledge/alloc-audit-policy.spec.d.ts +1 -0
  77. package/dist/knowledge/alloc-audit-policy.spec.js +1 -0
  78. package/dist/knowledge/allocation-ledger.js +1 -1
  79. package/dist/knowledge/allocation-puzzle.d.ts +1 -1
  80. package/dist/knowledge/allocation-puzzle.js +1 -1
  81. package/dist/knowledge/allocation-risk.d.ts +4 -1
  82. package/dist/knowledge/allocation-risk.js +1 -1
  83. package/dist/knowledge/allocation-templates.js +1 -1
  84. package/dist/knowledge/arb-risk.d.ts +6 -5
  85. package/dist/knowledge/arb-risk.js +1 -1
  86. package/dist/knowledge/arbitration-ledger.d.ts +4 -4
  87. package/dist/knowledge/arbitration-ledger.js +1 -1
  88. package/dist/knowledge/arbitration-puzzle.d.ts +1 -1
  89. package/dist/knowledge/arbitration-puzzle.js +1 -1
  90. package/dist/knowledge/arbitration-risk.d.ts +4 -1
  91. package/dist/knowledge/arbitration-risk.js +1 -1
  92. package/dist/knowledge/arbitration-templates.js +1 -1
  93. package/dist/knowledge/baselines/judgment-baselines.json +289 -0
  94. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
  95. package/dist/knowledge/baselines/rules/alloc_audit.json +290 -0
  96. package/dist/knowledge/baselines/rules/allocation.json +492 -0
  97. package/dist/knowledge/baselines/rules/arb.json +155 -0
  98. package/dist/knowledge/baselines/rules/arbitration.json +366 -0
  99. package/dist/knowledge/baselines/rules/bridge.json +197 -0
  100. package/dist/knowledge/baselines/rules/contact.json +152 -0
  101. package/dist/knowledge/baselines/rules/demand.json +158 -0
  102. package/dist/knowledge/baselines/rules/graph.json +453 -0
  103. package/dist/knowledge/baselines/rules/guard.json +981 -0
  104. package/dist/knowledge/baselines/rules/machine.json +706 -0
  105. package/dist/knowledge/baselines/rules/order.json +549 -0
  106. package/dist/knowledge/baselines/rules/payment.json +205 -0
  107. package/dist/knowledge/baselines/rules/permission.json +330 -0
  108. package/dist/knowledge/baselines/rules/personal.json +139 -0
  109. package/dist/knowledge/baselines/rules/progress.json +346 -0
  110. package/dist/knowledge/baselines/rules/proof.json +158 -0
  111. package/dist/knowledge/baselines/rules/registrar.json +159 -0
  112. package/dist/knowledge/baselines/rules/repository.json +244 -0
  113. package/dist/knowledge/baselines/rules/resource.json +117 -0
  114. package/dist/knowledge/baselines/rules/reward.json +471 -0
  115. package/dist/knowledge/baselines/rules/service.json +595 -0
  116. package/dist/knowledge/baselines/rules/treasury.json +440 -0
  117. package/dist/knowledge/baselines/rules/util.json +101 -0
  118. package/dist/knowledge/bridge-risk.d.ts +6 -5
  119. package/dist/knowledge/bridge-risk.js +1 -1
  120. package/dist/knowledge/builtin-templates.d.ts +26 -0
  121. package/dist/knowledge/builtin-templates.js +1 -0
  122. package/dist/knowledge/contact-risk.d.ts +6 -5
  123. package/dist/knowledge/contact-risk.js +1 -1
  124. package/dist/knowledge/demand-risk.d.ts +6 -5
  125. package/dist/knowledge/demand-risk.js +1 -1
  126. package/dist/knowledge/event-semantics.js +1 -1
  127. package/dist/knowledge/facts-sync.spec.d.ts +1 -0
  128. package/dist/knowledge/facts-sync.spec.js +1 -0
  129. package/dist/knowledge/getting-started.js +1 -1
  130. package/dist/knowledge/guard-design-patterns.js +1 -1
  131. package/dist/knowledge/guard-field-cognition.d.ts +1 -1
  132. package/dist/knowledge/guard-field-cognition.js +1 -1
  133. package/dist/knowledge/guard-ledger.js +1 -1
  134. package/dist/knowledge/guard-risk.d.ts +4 -1
  135. package/dist/knowledge/guard-risk.js +1 -1
  136. package/dist/knowledge/guard-templates.js +1 -1
  137. package/dist/knowledge/guard-translation.js +1 -1
  138. package/dist/knowledge/index.d.ts +10 -2
  139. package/dist/knowledge/index.js +1 -1
  140. package/dist/knowledge/industry-registry.js +1 -1
  141. package/dist/knowledge/industry-strategy.js +1 -1
  142. package/dist/knowledge/jsonrpc-enum.js +1 -1
  143. package/dist/knowledge/machine-ledger.js +1 -1
  144. package/dist/knowledge/machine-risk.d.ts +4 -1
  145. package/dist/knowledge/machine-risk.js +1 -1
  146. package/dist/knowledge/machine-templates.js +1 -1
  147. package/dist/knowledge/machine-translation.js +1 -1
  148. package/dist/knowledge/migration-preflight.js +1 -1
  149. package/dist/knowledge/operation-dictionary.js +1 -1
  150. package/dist/knowledge/order-ledger.js +1 -1
  151. package/dist/knowledge/order-puzzle.d.ts +3 -3
  152. package/dist/knowledge/order-puzzle.js +1 -1
  153. package/dist/knowledge/order-risk.d.ts +6 -3
  154. package/dist/knowledge/order-risk.js +1 -1
  155. package/dist/knowledge/order-templates.js +1 -1
  156. package/dist/knowledge/passport-ledger.js +1 -1
  157. package/dist/knowledge/passport-templates.js +1 -1
  158. package/dist/knowledge/payment-risk.d.ts +8 -6
  159. package/dist/knowledge/payment-risk.js +1 -1
  160. package/dist/knowledge/payment-tracker.js +1 -1
  161. package/dist/knowledge/permission-ledger.js +1 -1
  162. package/dist/knowledge/permission-puzzle.d.ts +12 -12
  163. package/dist/knowledge/permission-puzzle.js +1 -1
  164. package/dist/knowledge/permission-risk.d.ts +4 -7
  165. package/dist/knowledge/permission-risk.js +1 -1
  166. package/dist/knowledge/permission-templates.js +1 -1
  167. package/dist/knowledge/personal-risk.d.ts +6 -5
  168. package/dist/knowledge/personal-risk.js +1 -1
  169. package/dist/knowledge/progress-ledger.js +1 -1
  170. package/dist/knowledge/progress-puzzle.d.ts +2 -2
  171. package/dist/knowledge/progress-puzzle.js +1 -1
  172. package/dist/knowledge/progress-risk.d.ts +4 -1
  173. package/dist/knowledge/progress-risk.js +1 -1
  174. package/dist/knowledge/progress-templates.js +1 -1
  175. package/dist/knowledge/proof-risk.d.ts +6 -5
  176. package/dist/knowledge/proof-risk.js +1 -1
  177. package/dist/knowledge/puzzle-projections.js +1 -1
  178. package/dist/knowledge/recipient-constraint.d.ts +20 -1
  179. package/dist/knowledge/recipient-constraint.js +1 -1
  180. package/dist/knowledge/registrar-risk.d.ts +6 -5
  181. package/dist/knowledge/registrar-risk.js +1 -1
  182. package/dist/knowledge/repository-risk.d.ts +7 -6
  183. package/dist/knowledge/repository-risk.js +1 -1
  184. package/dist/knowledge/resource-risk.d.ts +6 -5
  185. package/dist/knowledge/resource-risk.js +1 -1
  186. package/dist/knowledge/reward-ledger.d.ts +1 -1
  187. package/dist/knowledge/reward-ledger.js +1 -1
  188. package/dist/knowledge/reward-puzzle.d.ts +2 -2
  189. package/dist/knowledge/reward-puzzle.js +1 -1
  190. package/dist/knowledge/reward-risk.d.ts +4 -1
  191. package/dist/knowledge/reward-risk.js +1 -1
  192. package/dist/knowledge/rule-node-analyzers.spec.js +1 -1
  193. package/dist/knowledge/rule-outcome.js +1 -1
  194. package/dist/knowledge/scenario-modes.d.ts +2 -2
  195. package/dist/knowledge/scenario-modes.js +1 -1
  196. package/dist/knowledge/scenario-topology.js +1 -1
  197. package/dist/knowledge/service-allocator-audit-node.js +1 -1
  198. package/dist/knowledge/service-ledger.js +1 -1
  199. package/dist/knowledge/service-puzzle.d.ts +2 -2
  200. package/dist/knowledge/service-puzzle.js +1 -1
  201. package/dist/knowledge/service-risk-node.js +1 -1
  202. package/dist/knowledge/service-risk.d.ts +4 -1
  203. package/dist/knowledge/service-risk.js +1 -1
  204. package/dist/knowledge/service-templates.js +1 -1
  205. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  206. package/dist/knowledge/strategy-manuals.js +1 -1
  207. package/dist/knowledge/template-loader.d.ts +84 -0
  208. package/dist/knowledge/template-loader.js +1 -0
  209. package/dist/knowledge/template-loader.spec.d.ts +1 -0
  210. package/dist/knowledge/template-loader.spec.js +1 -0
  211. package/dist/knowledge/template-registry.js +1 -1
  212. package/dist/knowledge/template-scanner.d.ts +17 -0
  213. package/dist/knowledge/template-scanner.js +1 -0
  214. package/dist/knowledge/template-scanner.spec.d.ts +1 -0
  215. package/dist/knowledge/template-scanner.spec.js +1 -0
  216. package/dist/knowledge/tools-reference.js +1 -1
  217. package/dist/knowledge/treasury-ledger.d.ts +1 -1
  218. package/dist/knowledge/treasury-ledger.js +1 -1
  219. package/dist/knowledge/treasury-puzzle.d.ts +3 -3
  220. package/dist/knowledge/treasury-puzzle.js +1 -1
  221. package/dist/knowledge/treasury-risk.d.ts +4 -1
  222. package/dist/knowledge/treasury-risk.js +1 -1
  223. package/dist/knowledge/treasury-templates.js +1 -1
  224. package/dist/knowledge/util-risk.d.ts +6 -5
  225. package/dist/knowledge/util-risk.js +1 -1
  226. package/dist/knowledge/workflow-guidance.d.ts +4 -0
  227. package/dist/knowledge/workflow-guidance.js +1 -1
  228. package/dist/knowledge/workspace-lists.js +1 -1
  229. package/dist/monitor/MonitorLoop.js +1 -1
  230. package/dist/participation/arbitrator-interest.js +1 -1
  231. package/dist/participation/radar-core.js +1 -1
  232. package/dist/persona/analyzer.js +1 -1
  233. package/dist/persona/index.js +1 -1
  234. package/dist/persona/model.js +1 -1
  235. package/dist/persona/persona-audit.spec.d.ts +1 -0
  236. package/dist/persona/persona-audit.spec.js +1 -0
  237. package/dist/persona/types.d.ts +2 -0
  238. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  239. package/dist/playbooks/service-build/facet-money.d.ts +11 -0
  240. package/dist/playbooks/service-build/facet-money.js +1 -1
  241. package/dist/playbooks/service-build/machine-panorama.d.ts +17 -0
  242. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  243. package/dist/playbooks/service-build/merchant-guide.d.ts +2 -2
  244. package/dist/playbooks/service-build/migration-planner.d.ts +43 -0
  245. package/dist/playbooks/service-build/migration-planner.js +1 -0
  246. package/dist/playbooks/service-build/object-panorama.d.ts +42 -1
  247. package/dist/playbooks/service-build/object-panorama.js +1 -1
  248. package/dist/playbooks/service-build/participation-radar.js +1 -1
  249. package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
  250. package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
  251. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  252. package/dist/playbooks/service-build/risk-aggregator.d.ts +2 -1
  253. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  254. package/dist/playbooks/service-build/semantic-graph.js +1 -1
  255. package/dist/playbooks/service-build/service-panorama.d.ts +53 -1
  256. package/dist/playbooks/service-build/service-panorama.js +1 -1
  257. package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -1
  258. package/dist/playbooks/service-build/topology-query.js +1 -1
  259. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
  260. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  261. package/dist/relationship/registry.js +1 -1
  262. package/dist/review/machine.js +1 -1
  263. package/dist/review/order.js +1 -1
  264. package/dist/review/service.js +1 -1
  265. package/dist/review/types.d.ts +7 -0
  266. package/dist/safety/confirm-gate.js +1 -1
  267. package/dist/schema/benchmark-migration/index.d.ts +207 -0
  268. package/dist/schema/benchmark-migration/index.js +1 -0
  269. package/dist/schema/call/allocation.d.ts +1 -1
  270. package/dist/schema/call/allocation.js +1 -1
  271. package/dist/schema/call/arbitration.d.ts +1 -1
  272. package/dist/schema/call/arbitration.js +1 -1
  273. package/dist/schema/call/base.d.ts +5 -5
  274. package/dist/schema/call/base.js +1 -1
  275. package/dist/schema/call/contact.d.ts +1 -1
  276. package/dist/schema/call/demand.d.ts +1 -1
  277. package/dist/schema/call/guard.d.ts +3 -3
  278. package/dist/schema/call/machine.d.ts +5 -5
  279. package/dist/schema/call/order.d.ts +3 -3
  280. package/dist/schema/call/payment.js +1 -1
  281. package/dist/schema/call/permission-handler.d.ts +1 -1
  282. package/dist/schema/call/permission-handler.js +1 -1
  283. package/dist/schema/call/permission.d.ts +16 -16
  284. package/dist/schema/call/permission.js +1 -1
  285. package/dist/schema/call/personal.d.ts +8 -8
  286. package/dist/schema/call/personal.js +1 -1
  287. package/dist/schema/call/progress.d.ts +3 -3
  288. package/dist/schema/call/repository.d.ts +11 -11
  289. package/dist/schema/call/repository.js +1 -1
  290. package/dist/schema/call/reward.d.ts +1 -1
  291. package/dist/schema/call/semantic.js +1 -1
  292. package/dist/schema/call/service.d.ts +7 -7
  293. package/dist/schema/call/service.js +1 -1
  294. package/dist/schema/call/treasury.d.ts +1 -1
  295. package/dist/schema/common/index.d.ts +6 -6
  296. package/dist/schema/common/index.js +1 -1
  297. package/dist/schema/config/index.d.ts +50 -1
  298. package/dist/schema/config/index.js +1 -1
  299. package/dist/schema/evaluation/index.d.ts +27 -11
  300. package/dist/schema/evaluation/index.js +1 -1
  301. package/dist/schema/goal/index.d.ts +5 -5
  302. package/dist/schema/goal/planning.d.ts +15 -15
  303. package/dist/schema/goal/planning.js +1 -1
  304. package/dist/schema/index.d.ts +1 -0
  305. package/dist/schema/index.js +1 -1
  306. package/dist/schema/interaction/index.d.ts +1 -1
  307. package/dist/schema/local/index.js +1 -1
  308. package/dist/schema/messenger/index.d.ts +26 -26
  309. package/dist/schema/operations.d.ts +33 -33
  310. package/dist/schema/operations.js +1 -1
  311. package/dist/schema/persona/index.d.ts +4708 -0
  312. package/dist/schema/persona/index.js +1 -1
  313. package/dist/schema/query/bi.d.ts +232 -25
  314. package/dist/schema/query/bi.js +1 -1
  315. package/dist/schema/query/index.d.ts +35 -35
  316. package/dist/schema/query/index.js +1 -1
  317. package/dist/schema/schema-version.js +1 -1
  318. package/dist/schema/workflow/index.d.ts +1 -1
  319. package/dist/schema/workspace/index.d.ts +53 -0
  320. package/dist/schema/workspace/index.js +1 -1
  321. package/dist/schema-query-impl/index.d.ts +9 -0
  322. package/dist/schema-query-impl/index.js +1 -1
  323. package/dist/schemas/benchmark_migration_operation.output.json +793 -0
  324. package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
  325. package/dist/schemas/bridge_operation.schema.json +5 -5
  326. package/dist/schemas/config_operation.output.json +252 -0
  327. package/dist/schemas/config_operation.schema.json +21 -1
  328. package/dist/schemas/evaluation_operation.output.json +22 -10
  329. package/dist/schemas/goal_operation.schema.json +8 -8
  330. package/dist/schemas/guard2file.schema.json +1 -1
  331. package/dist/schemas/index.json +7 -1
  332. package/dist/schemas/machineNode2file.schema.json +1 -1
  333. package/dist/schemas/messenger_operation.schema.json +24 -12
  334. package/dist/schemas/onchain_events.output.json +1 -1
  335. package/dist/schemas/onchain_operations.output.json +4 -2
  336. package/dist/schemas/onchain_operations.schema.json +189 -139
  337. package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
  338. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
  339. package/dist/schemas/onchain_operations_contact.schema.json +7 -5
  340. package/dist/schemas/onchain_operations_demand.schema.json +7 -5
  341. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
  342. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  343. package/dist/schemas/onchain_operations_guard.schema.json +5 -3
  344. package/dist/schemas/onchain_operations_machine.schema.json +22 -18
  345. package/dist/schemas/onchain_operations_order.schema.json +11 -7
  346. package/dist/schemas/onchain_operations_payment.schema.json +3 -3
  347. package/dist/schemas/onchain_operations_permission.schema.json +19 -11
  348. package/dist/schemas/onchain_operations_personal.schema.json +16 -10
  349. package/dist/schemas/onchain_operations_progress.schema.json +11 -7
  350. package/dist/schemas/onchain_operations_proof.schema.json +5 -3
  351. package/dist/schemas/onchain_operations_repository.schema.json +12 -8
  352. package/dist/schemas/onchain_operations_reward.schema.json +11 -9
  353. package/dist/schemas/onchain_operations_service.schema.json +28 -22
  354. package/dist/schemas/onchain_operations_treasury.schema.json +11 -9
  355. package/dist/schemas/onchain_table_data.output.json +27 -17
  356. package/dist/schemas/persona_operation.output.json +15875 -1
  357. package/dist/schemas/persona_operation.schema.json +3056 -478
  358. package/dist/schemas/query_toolkit.output.json +343 -63
  359. package/dist/schemas/query_toolkit.schema.json +1 -1
  360. package/dist/schemas/workflow_operation.schema.json +4 -2
  361. package/dist/schemas/workspace_operation.output.json +181 -1
  362. package/dist/schemas/workspace_operation.schema.json +61 -2
  363. package/dist/strategy/scorecard.js +1 -1
  364. package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
  365. package/dist/tools/handlers/benchmark-migration.js +1 -0
  366. package/dist/tools/handlers/config.js +1 -1
  367. package/dist/tools/handlers/industry-pack.js +1 -1
  368. package/dist/tools/handlers/onchain.js +1 -1
  369. package/dist/tools/handlers/query.js +1 -1
  370. package/dist/tools/handlers/schema-query.js +1 -1
  371. package/dist/tools/handlers/workspace.js +1 -1
  372. package/dist/tools/index.js +1 -1
  373. package/dist/tools/move-fn-index.gen.d.ts +3 -0
  374. package/dist/tools/move-fn-index.gen.js +1 -0
  375. package/dist/tools/registry/business.js +1 -1
  376. package/dist/tools/registry/config.js +1 -1
  377. package/dist/tools/registry/evaluation.js +1 -1
  378. package/dist/tools/registry/onchain.js +1 -1
  379. package/dist/tools/sanitize-output.d.ts +3 -0
  380. package/dist/tools/sanitize-output.js +1 -0
  381. package/dist/tools/sanitize-output.spec.d.ts +1 -0
  382. package/dist/tools/sanitize-output.spec.js +1 -0
  383. package/package.json +9 -4
  384. package/dist/knowledge/baselines/evaluation-baselines.json +0 -79
@@ -1 +1 @@
1
- export const GUARD_TEMPLATES=[{'id':'tpl_buy_guard_whitelist','scene_id':'service_buy_guard','name':'Whitelist\x20purchase\x20validation','description':'Only\x20addresses\x20in\x20the\x20whitelist\x20can\x20purchase\x20the\x20service.\x20Suitable\x20for\x20limited-time\x20sales,\x20VIP\x20exclusives,\x20internal\x20testing\x20eligibility,\x20etc.','recommended_patterns':['P04','P03'],'parameters':[{'name':'whitelist','type':'vec_address','description':'List\x20of\x20authorized\x20addresses','required':!![],'constraint':'Each\x20address\x20must\x20be\x20valid\x20and\x20unique'},{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(used\x20for\x20circular\x20references)','required':![],'constraint':'If\x20P16\x20circular\x20reference\x20is\x20used,\x20a\x20name\x20must\x20be\x20provided\x20rather\x20than\x20an\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Vec<Address>','value':'${whitelist}','name':'Authorized\x20purchase\x20whitelist'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x0},'target':{'type':'context','context':'Signer'}},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-01','R-C3-01','R-C4-01'],'creation_notes':['Updating\x20the\x20whitelist\x20requires\x20rebuilding\x20the\x20Guard\x20(buy_guard\x20is\x20iterable)','If\x20the\x20Service\x20is\x20already\x20published,\x20the\x20table\x20can\x20use\x20the\x20address\x20directly;\x20otherwise\x20use\x20the\x20name\x20(P16\x20circular\x20reference)'],'example_use_case':'Internal\x20testing\x20phase\x20for\x20camera\x20equipment\x20rental,\x20allowing\x20only\x20the\x20first\x2050\x20seed\x20users\x20to\x20place\x20rental\x20orders.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_threshold','scene_id':'service_order_allocators_guard','name':'Allocation\x20amount\x20threshold\x20validation','description':'Selects\x20different\x20allocation\x20strategies\x20based\x20on\x20the\x20order\x20amount.\x20When\x20the\x20amount\x20exceeds\x20the\x20threshold,\x20advanced\x20allocation\x20is\x20used;\x20otherwise,\x20default\x20allocation\x20applies.','recommended_patterns':['P02','P10'],'parameters':[{'name':'threshold','type':'number','description':'Allocation\x20threshold\x20(unit:\x20smallest\x20precision)','required':!![],'constraint':'Must\x20be\x20>\x200;\x20a\x20reasonable\x20range\x20is\x20recommended\x20to\x20avoid\x20boundary\x20gaming'},{'name':'service_name','type':'string','description':'Service\x20object\x20name','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${threshold}','name':'Allocation\x20threshold'}],'example_root':{'type':'logic_as_u256_greater','left':{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-05','R-X1-08'],'creation_notes':['order_allocators\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20publish)','First-match-wins\x20mechanism:\x20multiple\x20allocators\x20are\x20matched\x20in\x20order;\x20the\x20first\x20one\x20that\x20passes\x20executes','Threshold\x20boundary\x20must\x20be\x20tested:\x20behavior\x20when\x20exactly\x20equal\x20to\x20the\x20threshold\x20(>\x20vs\x20>=)'],'example_use_case':'E-commerce\x20platform:\x20order\x20amount\x20>\x201000\x20WOW\x20triggers\x203-way\x20allocation\x20(platform\x20+\x20merchant\x20+\x20logistics);\x20otherwise\x202-way\x20allocation\x20(platform\x20+\x20merchant).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_treasury_personal','scene_id':'service_order_allocators_guard','name':'Treasury\x20+\x20personal\x20address\x20allocation\x20(Entity\x20sharing)','description':'2\x20allocators\x20representing\x202\x20merchant\x20collection\x20approaches:\x20(1)\x20named\x20Treasury\x20address\x20for\x20public\x20fund\x20aggregation,\x20(2)\x20fixed\x20personal\x20address.\x20'+'Uses\x20sharing.who=Entity\x20so\x20funds\x20always\x20flow\x20to\x20the\x20legitimate\x20recipient\x20regardless\x20of\x20caller\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20Guard.\x20'+'Guards\x20verify\x20the\x20order\x20is\x20at\x20the\x20Complete\x20node\x20+\x20belongs\x20to\x20the\x20service\x20(project\x20binding).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'},{'name':'complete_node_name','type':'string','description':'Expected\x20node\x20name\x20that\x20triggers\x20allocation\x20(e.g.\x20\x27Complete\x27)','required':!![],'default':'Complete','constraint':'Must\x20exactly\x20match\x20the\x20Machine\x20node\x20name\x20(case-sensitive)'},{'name':'treasury_name','type':'string','description':'Named\x20Treasury\x20object\x20(created\x20with\x20the\x20Service\x27s\x20permission)','required':!![],'constraint':'Treasury\x20must\x20be\x20created\x20before\x20the\x20Service;\x20use\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20for\x20consistency'},{'name':'personal_address','type':'address','description':'Fixed\x20personal\x20collection\x20address\x20(e.g.\x20the\x20permission\x20creator\x27s\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${complete_node_name}','name':'Expected\x20Complete\x20node\x20name\x20(case-sensitive)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['insurance','ecommerce','travel','rental','subscription'],'relevant_risks':['R-C3-05','R-C3-06','R-X1-05','R-X1-01'],'creation_notes':['2\x20Guard\x20objects\x20with\x20IDENTICAL\x20root/table\x20but\x20DIFFERENT\x20descriptions\x20(allocators\x20require\x20unique\x20guard\x20addresses\x20—\x20no\x20two\x20allocators\x20may\x20reference\x20the\x20same\x20Guard).','sharing.who=Entity\x20(Treasury/personal)\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20the\x20Guard\x20(R-C3-06\x20safe).','First-match-wins:\x20only\x20the\x20first\x20allocator\x20(Treasury)\x20executes;\x20the\x20personal\x20allocator\x20is\x20an\x20alternative\x20(swap\x20the\x20allocators\x20order\x20to\x20activate\x20personal\x20collection).','Treasury\x20should\x20be\x20created\x20with\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20(permission\x20consistency\x20—\x20different\x20permissions\x20=\x20minor\x20risk).','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass\x20prevents\x20premature\x20allocation\x20on\x20foreign\x20orders).','order_allocators\x20is\x20immutable\x20after\x20Service\x20publish\x20—\x20verify\x20the\x20Guard\x20logic\x20and\x20sharing\x20config\x20before\x20publishing.'],'example_use_case':'Insurance\x20service:\x20after\x20a\x20claim\x20reaches\x20the\x20Complete\x20node,\x20order\x20funds\x20are\x20allocated\x20to\x20the\x20insurance\x20Treasury\x20'+'(approach\x201,\x20for\x20operational\x20fund\x20aggregation)\x20or\x20to\x20the\x20provider\x27s\x20personal\x20address\x20(approach\x202,\x20for\x20direct\x20income).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_identity_set_order_holder','scene_id':'service_order_allocators_guard','name':'Order-holder\x20identity-set\x20allocation\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding:\x20Signer\x20is\x20order.owner\x20(1562,\x20Address)\x20OR\x20order.agent\x20(1567,\x20Bool\x20with\x20[Signer]\x20param).\x20'+'Demonstrates\x20the\x20mixed\x20return-type\x20construction\x20pattern\x20—\x20Address-returning\x20queries\x20are\x20wrapped\x20in\x20logic_equal,\x20'+'while\x20Bool-returning\x20queries\x20(suffix\x20\x27has\x27)\x20are\x20used\x20directly\x20as\x20logic_or\x20children.\x20'+'Combined\x20with\x20order.service\x20binding\x20(R-C3-05)\x20for\x20cross-service\x20theft\x20prevention.\x20'+'Use\x20when\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20should\x20be\x20able\x20to\x20trigger\x20allocation\x20(e.g.\x20refund\x20to\x20caller).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'order.agent\x20has','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['ecommerce','rental','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['MIXED\x20RETURN-TYPE\x20CONSTRUCTION\x20(key\x20Level\x202\x20pattern):\x20query\x201562\x20(order.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal\x20with\x20context(Signer);\x20query\x201567\x20(order.agent\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning)\x20—\x20this\x20is\x20the\x20recommended\x20Level\x202\x20alternative.','Use\x20this\x20pattern\x20when\x20sharing.who=Signer\x20(funds\x20flow\x20to\x20caller)\x20AND\x20either\x20the\x20owner\x20or\x20an\x20agent\x20should\x20be\x20authorized\x20to\x20trigger\x20allocation.','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass).','If\x20agents\x20are\x20not\x20needed,\x20use\x20the\x20simpler\x20Level\x202\x20dynamic\x20pattern:\x20logic_equal[query(1562),\x20context(Signer)]\x20without\x20logic_or.'],'example_use_case':'Refund\x20allocation:\x20when\x20an\x20order\x20is\x20cancelled,\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20can\x20trigger\x20the\x20refund.\x20'+'The\x20Guard\x20verifies\x20Signer\x20is\x20order.owner\x20OR\x20order.agent,\x20and\x20that\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_identity_set_service_provider_dynamic','scene_id':'service_order_allocators_guard','name':'Service-provider\x20identity-set\x20allocation\x20with\x20dynamic\x20permission\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding\x20with\x20DYNAMIC\x20permission\x20address:\x20Signer\x20is\x20permission.owner\x20(1002,\x20Address)\x20OR\x20'+'has\x20admin\x20(1004,\x20Bool\x20with\x20[Signer]\x20param).\x20The\x20permission\x20address\x20is\x20submitted\x20by\x20the\x20caller\x20and\x20verified\x20'+'against\x20service.permission\x20(1488)\x20—\x20this\x20survives\x20permission\x20rotation\x20without\x20rebuilding\x20the\x20Guard.\x20'+'Use\x20when\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board)\x20and\x20a\x20static\x20permission\x20'+'address\x20would\x20break\x20the\x20Guard.','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','object_type':'Permission','name':'permission_id\x20(Permission\x20object\x20submitted\x20by\x20caller\x20—\x20must\x20equal\x20service.permission)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'service.permission','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]},{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'permission.owner','object':{'identifier':0x2},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'permission.admin\x20has','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'}]}]}]},'applicable_industries':['ecommerce','rental','insurance','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['DYNAMIC\x20PERMISSION\x20VERIFICATION\x20(key\x20pattern):\x20caller\x20submits\x20a\x20Permission\x20address\x20(identifier\x202);\x20Guard\x20verifies\x20query(1488:\x20service.permission)\x20==\x20submitted\x20permission,\x20then\x20checks\x201002/1004\x20against\x20the\x20submitted\x20permission.\x20This\x20survives\x20permission\x20rotation\x20—\x20if\x20the\x20Service\x20changes\x20its\x20permission,\x20the\x20Guard\x20still\x20works\x20without\x20rebuilding.','MIXED\x20RETURN-TYPE\x20CONSTRUCTION:\x20query\x201002\x20(permission.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal;\x20query\x201004\x20(permission.admin\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning).','THREE\x20conditions\x20in\x20logic_and:\x20(1)\x20order.service\x20binding\x20(R-C3-05),\x20(2)\x20dynamic\x20permission\x20verification,\x20(3)\x20identity\x20set\x20(owner\x20OR\x20admin).','Static\x20permission\x20alternative\x20(simpler\x20but\x20breaks\x20on\x20rotation):\x20use\x20a\x20table\x20constant\x20for\x20the\x20permission\x20address\x20instead\x20of\x20b_submission=true\x20+\x201488\x20verification.','Repository-based\x20address\x20set\x20(most\x20flexible,\x20most\x20complex):\x20store\x20the\x20permission\x20address\x20set\x20in\x20a\x20Repository\x20and\x20query\x20dynamically\x20—\x20only\x20for\x20extreme\x20flexibility\x20needs.'],'example_use_case':'Merchant\x20allocation:\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board).\x20'+'The\x20caller\x20submits\x20the\x20current\x20permission\x20address;\x20the\x20Guard\x20verifies\x20it\x20matches\x20service.permission\x20(1488),\x20'+'then\x20checks\x20that\x20Signer\x20is\x20the\x20permission\x20owner\x20or\x20has\x20admin\x20rights.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_node_check','scene_id':'machine_forward_guard','name':'Workflow\x20node\x20state\x20validation','description':'Verifies\x20that\x20the\x20order\x20is\x20currently\x20at\x20the\x20correct\x20Machine\x20node\x20before\x20advancing\x20to\x20the\x20next\x20step.\x20Prevents\x20skipping\x20nodes\x20or\x20reverse\x20operations.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_node','type':'string','description':'Expected\x20current\x20node\x20name','required':!![],'constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_node}','name':'Expected\x20current\x20node\x20name'}],'example_root':{'type':'logic_equal','left':{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['Forward.guard\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20Machine\x20publish)','witness\x20100\x20(Order→Progress)\x20is\x20a\x20single\x20hop;\x20no\x20risk\x20of\x20chained-derivation\x20breakage','Node\x20names\x20are\x20case-sensitive;\x20query\x20returns\x20a\x20String\x20type'],'example_use_case':'Camera\x20equipment\x20rental\x20flow:\x20the\x20user\x20must\x20be\x20at\x20the\x20\x27pending\x20return\x27\x20node\x20to\x20perform\x20the\x20return\x20operation.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_privacy_delivery_proof','scene_id':'machine_forward_guard','name':'Privacy-delivery\x20Proof\x20verification\x20(strict\x20mode,\x20Messenger\x20→\x20on-chain\x20Proof)','description':'Strict-mode\x20guard\x20for\x20\x27privacy\x20information\x20delivered\x20via\x20Messenger\x20but\x20not\x20suitable\x20for\x20on-chain\x20publication\x27\x20'+'(e.g.\x20shipping\x20details,\x20return\x20addresses,\x20private\x20credentials).\x20The\x20verifier\x20submits\x20BOTH\x20a\x20Proof\x20object\x20address\x20'+'(generated\x20by\x20messenger.submitChainProof)\x20AND\x20the\x20Order\x20object\x20address.\x20Three\x20conditions\x20verify:\x20'+'(1)\x20Signer\x20==\x20proof.signer\x20(submitter\x20accountability\x20—\x20\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27),\x20'+'(2)\x20proof.time\x20>\x20order.time\x20(proof\x20created\x20after\x20the\x20order\x20—\x20freshness,\x20prevents\x20stale-proof\x20replay),\x20'+'(3)\x20order.service\x20==\x20service\x20(project\x20binding,\x20suppresses\x20R-C3-05\x20cross-project\x20bypass).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility.\x20The\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20'+'Messenger\x20conversation.\x20Broad-mode\x20alternative\x20(verify\x20Merkle\x20Root\x20string\x20length\x20==\x2066\x20via\x20P15)\x20is\x20documented\x20'+'in\x20creation_notes\x20—\x20broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty\x20and\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20'+'arbitration\x20basis\x20rather\x20than\x20a\x20fund-flow\x20gate.','recommended_patterns':['P10','P15'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Proof','name':'proof_object\x20(Proof\x20address\x20generated\x20by\x20messenger.submitChainProof,\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20a\x20Proof\x20object\x20created\x20AFTER\x20the\x20order;\x20signer\x20must\x20equal\x20the\x20transaction\x20Signer'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_object\x20(Order\x20address\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20belong\x20to\x20the\x20service\x20declared\x20in\x20identifier\x202\x20(order.service\x20==\x20service)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'proof.signer','object':{'identifier':0x0},'parameters':[]}]},{'type':'logic_as_u256_greater','nodes':[{'type':'query','query':'proof.time','object':{'identifier':0x0},'parameters':[]},{'type':'query','query':'order.time','object':{'identifier':0x1},'parameters':[]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','logistics','service','privacy\x20delivery'],'relevant_risks':['R-C3-01','R-C3-05','R-X1-12'],'creation_notes':['STRICT\x20MODE\x20(this\x20template):\x20verifier\x20submits\x20Proof\x20+\x20Order\x20addresses.\x20Three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27beneficiary\x20bears\x20burden\x20of\x20proof\x27\x20principle).','BROAD\x20MODE\x20ALTERNATIVE:\x20use\x20P15\x20retained_submission\x20with\x20a\x20String\x20submission\x20(the\x20Merkle\x20Root)\x20and\x20verify\x20calc_string_length\x20==\x2066\x20(0x\x20prefix\x20+\x2064\x20hex\x20chars).\x20Broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20Broad\x20mode\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','Guard\x20table\x20supports\x20MULTIPLE\x20b_submission=true\x20Address\x20identifiers\x20(no\x20submission\x20count\x20limit)\x20—\x20this\x20template\x20uses\x20two:\x20Proof\x20(identifier\x200)\x20and\x20Order\x20(identifier\x201).','submitChainProof(env,\x20peerAddress,\x20description?)\x20sets\x20Proof.about\x20=\x20peerAddress\x20(the\x20counterparty\x27s\x20address).\x20Pass\x20the\x20order_id\x20as\x20a\x20string\x20in\x20the\x20description\x20parameter\x20to\x20associate\x20the\x20Proof\x20with\x20an\x20order\x20(e.g.\x20description:\x20\x27order:0x123...\x27).','Query\x20IDs\x20(all\x20zero-parameter):\x20proof.signer=1958,\x20proof.time=1960\x20(invariant\x20clock_derived,\x20always\x20>0),\x20order.time=1574,\x20order.service=1563.','Forward.guard\x20is\x20immutable\x20after\x20Machine\x20publish\x20—\x20choose\x20broad\x20vs\x20strict\x20before\x20publishing.','The\x20same\x20strict\x20Guard\x20can\x20be\x20reused\x20across\x20ALL\x20Machine\x20forwards\x20that\x20need\x20merkle-root\x20verification\x20(shipping,\x20lost,\x20returns,\x20etc.)\x20—\x20the\x20verifier\x20just\x20submits\x20the\x20relevant\x20Proof\x20+\x20Order\x20each\x20time.','Condition\x20(1)\x20Signer==proof.signer\x20suppresses\x20R-C3-01\x20(submission\x20not\x20bound\x20to\x20Signer).\x20Condition\x20(3)\x20order.service==service\x20suppresses\x20R-C3-05\x20(cross-project\x20submission\x20bypass).'],'example_use_case':'MyShop\x20e-commerce:\x20after\x20delivering\x20shipping\x20details\x20/\x20return\x20addresses\x20via\x20Messenger\x20(privacy\x20info\x20not\x20suitable\x20for\x20on-chain\x20publication),\x20'+'the\x20provider\x20generates\x20a\x20Proof\x20via\x20submitChainProof\x20and\x20submits\x20it\x20with\x20the\x20Order\x20address\x20to\x20advance\x20the\x20Machine\x20forward.\x20'+'The\x20Guard\x20verifies\x20the\x20submitter\x20is\x20the\x20Proof\x27s\x20signer,\x20the\x20Proof\x20was\x20created\x20after\x20the\x20order,\x20and\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_submission_signer_binding','scene_id':'progress_submission_guard','name':'Submission\x20data\x20signer\x20binding\x20validation','description':'Verifies\x20that\x20the\x20user\x20submitting\x20the\x20data\x20is\x20a\x20legitimate\x20Progress\x20participant\x20and\x20that\x20the\x20submitted\x20value\x20matches\x20expectations.','recommended_patterns':['P08','P15'],'parameters':[{'name':'expected_value','type':'string','description':'Expected\x20submitted\x20value\x20(e.g.\x20node\x20name,\x20status\x20code)','required':!![]},{'name':'provider_address','type':'address','description':'Service\x20provider\x20address\x20(used\x20for\x20identity\x20verification)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'String','name':'User-submitted\x20operation\x20type\x20(e.g.\x20\x27return\x27\x20/\x20\x27damage\x27)','binding_constraint':'Must\x20be\x20one\x20of\x20the\x20predefined\x20operation\x20types'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${provider_address}','name':'Service\x20provider\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'String','value':'${expected_value}','name':'Expected\x20submitted\x20value'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['rental','ecommerce','education','travel'],'relevant_risks':['R-C3-01','R-C3-03','R-X1-12'],'creation_notes':['submission\x20guard\x20cannot\x20be\x20modified\x20after\x20binding','The\x20name\x20of\x20b_submission=true\x20entries\x20must\x20be\x20a\x20complete\x20natural-language\x20description\x20(≥10\x20characters)','Providing\x20a\x20binding_constraint\x20field\x20describing\x20value\x20rules\x20is\x20recommended\x20(R-X1-12)'],'example_use_case':'On\x20equipment\x20return,\x20the\x20user\x20submits\x20the\x20\x27return\x27\x20operation;\x20the\x20Guard\x20verifies\x20that\x20the\x20submitter\x20is\x20the\x20service\x20provider\x20and\x20that\x20the\x20operation\x20type\x20is\x20correct.','verifier_constraint_level':'level1_strict'},{'id':'tpl_reward_one_time_claim','scene_id':'reward_guard','name':'One-time\x20reward\x20claim\x20validation','description':'Verifies\x20that\x20the\x20user\x20is\x20claiming\x20the\x20reward\x20for\x20the\x20first\x20time,\x20preventing\x20duplicate\x20claims.\x20Implemented\x20by\x20querying\x20the\x20historical\x20record\x20count\x20via\x20Repository.','recommended_patterns':['P07','P13'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address\x20(stores\x20claim\x20records)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Reward\x20claim\x20record\x20Repository','object_type':'Repository'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'0','name':'First-claim\x20threshold\x20(record_count\x20==\x200)'}],'example_root':{'type':'logic_equal','left':{'type':'query','query':'repository.data','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-03','R-X1-01','R-X1-10'],'creation_notes':['Repository\x20with\x20quote_guard:\x20rigid\x20verification\x20—\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard\x20(see\x20R-X1-10,\x20pattern.repository_quote_guard_subscription)','repository.data\x20query\x20returns\x20U64\x20(record\x20count),\x20compared\x20with\x20identifier[1]\x20(value\x200)','Reward\x20guard\x20is\x20iterable;\x20duplicate-claim\x20protection\x20requires\x20rebuilding\x20the\x20Guard\x20to\x20update\x20the\x20Repository\x20address'],'example_use_case':'New-user\x20first-order\x20reward:\x20query\x20the\x20user\x27s\x20historical\x20order\x20count\x20via\x20Repository;\x20allow\x20claim\x20only\x20when\x20record_count==0.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_write_guard_type_check','scene_id':'repository_write_guard','name':'Storage\x20write\x20type\x20validation','description':'Verifies\x20that\x20the\x20data\x20type\x20written\x20to\x20the\x20Repository\x20matches\x20the\x20declaration\x20and\x20that\x20the\x20writer\x27s\x20identity\x20is\x20legitimate.','recommended_patterns':['P08','P11'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':!![],'constraint':'Must\x20be\x20the\x20address\x20of\x20an\x20already-published\x20Repository'},{'name':'entity_registrar','type':'address','description':'EntityRegistrar\x20address\x20(fixed\x200xaab)','required':![],'default':'0xaab'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Writer\x20address\x20(submitted\x20by\x20caller)','binding_constraint':'Must\x20be\x20a\x20valid\x20Entity\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'String','name':'Write\x20data\x20key\x20name\x20(submitted\x20by\x20caller)','binding_constraint':'Key\x20name\x20format\x20must\x20be\x20\x27category:key\x27'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${entity_registrar}','name':'EntityRegistrar\x20system\x20address','is_system_address':!![]}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},{'type':'logic_not_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-02','R-C3-03','R-C3-04'],'creation_notes':['id_from_submission\x20in\x20write_guard\x20must\x20be\x20of\x20Address\x20type','data_from_submission\x20must\x20match\x20the\x20Repository\x20value_type','EntityRegistrar\x20(0xaab)\x20and\x20EntityLinker\x20(0xaaa)\x20are\x20fixed\x20system\x20addresses'],'example_use_case':'E-commerce\x20platform\x20merchant\x20writes\x20product\x20review\x20data;\x20the\x20Guard\x20verifies\x20that\x20the\x20writer\x20is\x20a\x20registered\x20Entity\x20and\x20not\x20a\x20system\x20address.','verifier_constraint_level':'level1_strict'},{'id':'tpl_usage_guard_threshold','scene_id':'arbitration_usage_guard','name':'Dispute\x20initiation\x20threshold\x20validation','description':'Verifies\x20that\x20the\x20dispute\x20initiator\x20meets\x20minimum\x20conditions\x20(e.g.\x20order\x20amount,\x20time\x20window),\x20filtering\x20out\x20meaningless\x20disputes.','recommended_patterns':['P02','P10'],'parameters':[{'name':'min_amount','type':'number','description':'Minimum\x20dispute\x20amount\x20threshold','required':!![],'constraint':'A\x20reasonable\x20threshold\x20is\x20recommended;\x20too\x20high\x20hinders\x20user\x20rights\x20protection,\x20too\x20low\x20produces\x20many\x20invalid\x20disputes'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Dispute-related\x20Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${min_amount}','name':'Minimum\x20dispute\x20amount\x20threshold'}],'example_root':{'type':'logic_as_u256_greater_or_equal','left':{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-07','R-C3-03'],'creation_notes':['usage_guard\x20is\x20iterable\x20(Arbitration\x20can\x20be\x20updated)','AND\x20conditions\x20should\x20not\x20be\x20too\x20many\x20(R-X1-07);\x20≤3\x20conditions\x20recommended','When\x20Arbitration\x20bPaused=true,\x20blocking\x20takes\x20priority\x20(checked\x20before\x20Guard)'],'example_use_case':'Rental\x20service\x20dispute:\x20only\x20disputes\x20with\x20order\x20amount\x20≥\x2010\x20WOW\x20are\x20accepted,\x20filtering\x20out\x20small-amount\x20conflicts.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_voting_guard_numeric_weight','scene_id':'arbitration_voting_guard','name':'Numeric\x20voting\x20weight\x20validation','description':'Assigns\x20numeric\x20voting\x20weights\x20based\x20on\x20arbitrator\x20rank;\x20higher-rank\x20arbitrators\x20have\x20greater\x20weight.','recommended_patterns':['P12'],'parameters':[{'name':'arbiter_weights','type':'vec_address','description':'Arbitrator\x20address\x20to\x20weight\x20mapping\x20(address:weight\x20pairs)','required':!![],'constraint':'Weights\x20must\x20be\x20numeric\x20types\x20U8-U256'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Arbitrator\x20address\x20(submitted\x20by\x20caller)','object_type':'Arb'},{'identifier':0x1,'b_submission':![],'value_type':'Vec<Address>','value':'${arbiter_weights}','name':'Authorized\x20arbitrator\x20address\x20list'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x1},'target':{'type':'identifier','identifier':0x0}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-C3-02','R-C2-01','R-C2-02'],'creation_notes':['The\x20GuardIdentifier\x20for\x20voting_guard\x20must\x20be\x20numeric\x20(U8-U256),\x20otherwise\x20E_GUARD_IDENTIFIER_NOT_NUMBER','Weights\x20from\x20submitted\x20data\x20(b_submission=true)\x20carry\x20forgery\x20risk\x20(R-C3-02\x20critical)','Deriving\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20is\x20recommended,\x20rather\x20than\x20submitting\x20them\x20directly'],'example_use_case':'3-person\x20arbitration\x20panel:\x20chief\x20arbitrator\x20weight\x203,\x20regular\x20arbitrators\x20weight\x201,\x20majority\x20vote\x20decision.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_gen_passport_identity','scene_id':'gen_passport_guard','name':'Passport\x20identity\x20credential\x20generation\x20validation','description':'Standalone\x20Guard;\x20after\x20verifying\x20the\x20user\x27s\x20identity,\x20generates\x20a\x20Passport\x20with\x20a\x20credential,\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations.','recommended_patterns':['P03','P14'],'parameters':[{'name':'authorized_address','type':'address','description':'Authorized\x20address\x20(or\x20use\x20Vec<Address>\x20whitelist)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${authorized_address}','name':'Authorized\x20address'}],'example_root':{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-01','R-X1-10','R-X1-13'],'creation_notes':['gen_passport\x20is\x20a\x20standalone\x20Guard;\x20it\x20does\x20not\x20bind\x20a\x20Host\x20Object\x20(host_object:\x20Standalone)','quote_guard\x20is\x20a\x20rigid\x20requirement:\x20if\x20the\x20Guard\x20queries\x20Repository\x20data\x20with\x20quote_guard\x20set,\x20the\x20quote_guard\x20must\x20be\x20verified\x20(see\x20R-X1-10)','The\x20Guard\x20can\x20be\x20depended\x20on\x20by\x20other\x20Guards\x20via\x20rely\x20(requires\x20rep=true)','The\x20generated\x20Passport\x20can\x20be\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations'],'example_use_case':'After\x20the\x20user\x20passes\x20identity\x20verification,\x20a\x20Passport\x20is\x20generated;\x20this\x20Passport\x20is\x20then\x20submitted\x20as\x20an\x20identity\x20credential\x20in\x20subsequent\x20service\x20purchases.','verifier_constraint_level':'level1_strict'},{'id':'tpl_repository_quote_guard_subscription','scene_id':'repository_write','name':'Repository\x20data\x20subscription\x20with\x20payment\x20verification','description':'Repository\x20quote_guard\x20requires\x20payment\x20proof\x20for\x20data\x20access.\x20When\x20any\x20Guard\x20queries\x20this\x20Repository\x27s\x20data\x20(query\x201167),\x20the\x20quote_guard\x20is\x20rigidly\x20verified.\x20Enables\x20data\x20subscription\x20revenue\x20model\x20(e.g.,\x20weather\x20data,\x20market\x20oracle\x20data).','recommended_patterns':['P03','P07'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':!![]},{'name':'subscription_price','type':'number','description':'Subscription\x20payment\x20amount\x20required\x20for\x20data\x20access','required':!![]},{'name':'payment_for_object','type':'address','description':'Payment\x20for_object\x20(Repository\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Repository\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'U256','value':'${subscription_price}','name':'Subscription\x20price'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(for_object\x20verification)'},{'identifier':0x3,'b_submission':!![],'value_type':'U256','name':'Submitted\x20Payment\x20amount'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x2}},{'type':'identifier','identifier':0x0}]},{'type':'logic_as_u256_ge','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x2}},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['subscription','travel','rental','education'],'relevant_risks':['R-X1-10'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20valid\x20Payment\x20via\x20Passport\x20(b_submission=true),\x20quote_guard\x20verifies\x20Payment\x20fields','quote_guard\x20must\x20be\x20is_depended:\x20immutable=true,\x20relies\x20empty,\x20rep=true\x20(guard.move#L133-135)','Repository.owner_receive<T>\x20accepts\x20Payment\x20as\x20subscription\x20revenue\x20(repository.move#L714-717)','Rigid\x20verification:\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard','Two-phase:\x20passport\x20generation\x20scans\x20+\x20prepares,\x20passport\x20verification\x20re-checks\x20+\x20verifies','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.amount\x20(id\x201100,\x20U256)'],'example_use_case':'Weather\x20data\x20provider\x20publishes\x20daily\x20temperature\x20data\x20to\x20Repository.\x20Insurance\x20Machine\x20queries\x20weather\x20data;\x20user\x20must\x20pay\x20subscription\x20(Payment)\x20to\x20access\x20data\x20in\x20their\x20insurance\x20claim\x20flow.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_buy_guard_order_holder','scene_id':'service_buy_guard','name':'Supply\x20chain\x20sub-order\x20purchase\x20verification','description':'Sub-service\x20buy_guard\x20verifies\x20the\x20user\x20owns\x20a\x20main\x20service\x20order.\x20Enables\x20supply\x20chain\x20milestone\x20unlock:\x20each\x20milestone\x20=\x20one\x20sub-order,\x20sub-service\x20only\x20purchasable\x20by\x20users\x20who\x20bought\x20the\x20main\x20service.','recommended_patterns':['P03','P04'],'parameters':[{'name':'main_service_address','type':'address','description':'Main\x20Service\x20object\x20address','required':!![]},{'name':'main_order_address','type':'address','description':'Submitted\x20main\x20Order\x20address\x20(b_submission=true)','required':![],'constraint':'If\x20using\x20P16\x20circular\x20reference,\x20use\x20service\x20name\x20instead\x20of\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${main_service_address}','name':'Main\x20service\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','name':'Submitted\x20main\x20Order\x20(ownership\x20verification)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x1}},{'type':'context','context':'Signer'}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1}},{'type':'identifier','identifier':0x0}]}]},'applicable_industries':['travel','rental','education','freelance'],'relevant_risks':['R-C3-05'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20main\x20Order\x20as\x20evidence\x20(b_submission=true),\x20buy_guard\x20verifies\x20ownership\x20+\x20service\x20match','No\x20parent_order\x20field\x20needed\x20—\x20relationship\x20verified\x20via\x20buy_guard\x20querying\x20submitted\x20Order\x20fields','Each\x20milestone\x20=\x20one\x20sub-order\x20with\x20its\x20own\x20Service\x20+\x20buy_guard','Main\x20flow\x20can\x20branch\x20to\x20different\x20sub-services\x20based\x20on\x20Machine\x20node\x20progression','VERIFIED\x20QUERY\x20NAMES:\x20order.owner\x20(id\x201202,\x20Address),\x20order.service\x20(id\x201203,\x20Address)'],'example_use_case':'Travel\x20package:\x20main\x20service\x20=\x20tour\x20booking.\x20Sub-services\x20=\x20hotel,\x20guide,\x20transfer\x20—\x20each\x20with\x20buy_guard\x20verifying\x20the\x20user\x20purchased\x20the\x20main\x20tour\x20order.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_payment_exception_compensation','scene_id':'machine_forward_guard','name':'Exception\x20branch\x20compensation\x20Payment','description':'Machine\x20forward\x20guard\x20for\x20exception\x20handling:\x20verifies\x20a\x20compensation\x20Payment\x20bound\x20to\x20specific\x20order\x20+\x20guard\x20+\x20unique\x20progress\x20step\x20(history\x20count)\x20+\x20node\x20name.\x20Enables\x20user-friendly\x20exception\x20branches\x20(e.g.,\x20delivery\x20delay\x20>\x2030min\x20triggers\x20auto-compensation).','recommended_patterns':['P03','P07','P09'],'parameters':[{'name':'order_address','type':'address','description':'Order\x20object\x20address\x20(Payment\x20for_object\x20target)','required':!![]},{'name':'this_guard_address','type':'address','description':'This\x20guard\x27s\x20own\x20address\x20(Payment\x20for_guard\x20target)','required':!![]},{'name':'compensation_amount','type':'number','description':'Minimum\x20compensation\x20amount','required':!![]},{'name':'expected_node_name','type':'string','description':'Expected\x20node\x20name\x20(stored\x20in\x20PaymentInfo.remark,\x20compared\x20with\x20progress.current)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${order_address}','name':'Order\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${this_guard_address}','name':'This\x20guard\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'U256','value':'${compensation_amount}','name':'Compensation\x20amount'},{'identifier':0x3,'b_submission':![],'value_type':'String','value':'${expected_node_name}','name':'Expected\x20node\x20name\x20(for\x20remark\x20comparison)'},{'identifier':0x4,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(compensation\x20proof)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x4}},{'type':'identifier','identifier':0x0}]},{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.guard','object':{'identifier':0x4}},{'type':'identifier','identifier':0x1}]},{'type':'logic_as_u256_ge','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x4}},{'type':'identifier','identifier':0x2}]},{'type':'logic_as_u256_equal','nodes':[{'type':'query','query':'payment.info.index','object':{'identifier':0x4}},{'type':'query','query':'progress.history\x20count'}]},{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'payment.info.remark','object':{'identifier':0x4}},{'type':'query','query':'progress.current'}]}]},'applicable_industries':['rental','travel','ecommerce','freelance'],'relevant_risks':[],'creation_notes':['VERIFIED:\x20payment.move#L66-71\x20(PaymentInfo:\x20for_object,\x20for_guard,\x20remark,\x20index),\x20payment.move#L82-86\x20(payment_info_with_guard)','VERIFIED:\x20treasury.move#L249-264\x20(withdraw\x20creates\x20Payment\x20via\x20payment::new_singleton\x20+\x20from_object_set)','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.info.guard\x20(id\x201109,\x20Address),\x20payment.info.index\x20(id\x201111,\x20U64),\x20payment.info.remark\x20(id\x201110,\x20String),\x20payment.amount\x20(id\x201100,\x20U64;\x20logic_as_u256_ge\x20casts\x20U64→U256\x20for\x20comparison)','VERIFIED\x20INDEX:\x20progress.history\x20count\x20(id\x201273,\x20U64)\x20=\x20unique\x20monotonically\x20increasing\x20step\x20index\x20(progress.move\x20L440-441,\x20L475,\x20L482).\x20Even\x20in\x20cycles,\x20each\x20entry\x20has\x20a\x20different\x20count.','VERIFIED\x20NODE\x20NAME:\x20progress.current\x20(id\x201253,\x20String)\x20=\x20current\x20node\x20name.\x20A\x20node\x20can\x20be\x20entered\x20multiple\x20times\x20in\x20cycles,\x20but\x20the\x20history\x20count\x20is\x20unique\x20each\x20time.','DESIGN:\x20payment.info.index\x20stores\x20the\x20step\x20index\x20set\x20by\x20Treasury\x20at\x20creation\x20time;\x20progress.history\x20count\x20provides\x20the\x20current\x20unique\x20step.\x20Comparing\x20them\x20ensures\x20the\x20Payment\x20was\x20created\x20for\x20THIS\x20specific\x20progress\x20step.','DESIGN:\x20payment.info.remark\x20stores\x20the\x20node\x20name;\x20progress.current\x20provides\x20the\x20current\x20node\x20name.\x20Comparing\x20them\x20provides\x20semantic\x20verification\x20of\x20which\x20node\x20triggered\x20the\x20compensation.','ANTI-REUSE:\x204-dimensional\x20binding:\x20for_object\x20(Order)\x20+\x20for_guard\x20(Guard)\x20+\x20index\x20(unique\x20step)\x20+\x20remark\x20(node\x20name).\x20Same\x20Payment\x20cannot\x20be\x20reused\x20in\x20other\x20contexts.','Payment\x20is\x20freeze_object\x20(immutable)\x20—\x20cannot\x20be\x20modified\x20after\x20creation','VERIFIER-EVIDENCE\x20DESIGN:\x20customer\x20submits\x20Payment,\x20guard\x20verifies\x20binding\x20fields\x20match\x20current\x20context','Treasury\x20withdraws\x20compensation\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=history_count_at_creation,\x20remark=node_name)'],'example_use_case':'Food\x20delivery:\x20if\x20delivery\x20delayed\x20>\x2030min\x20at\x20node\x20\x27delayed\x27\x20(history\x20count=5),\x20restaurant\x20Treasury\x20auto-compensates\x20$5\x20to\x20customer\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=5,\x20remark=\x27delayed\x27).\x20Customer\x20submits\x20Payment\x20via\x20Passport,\x20guard\x20verifies\x20index\x20matches\x20current\x20history\x20count\x20AND\x20remark\x20matches\x20current\x20node\x20name.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_content_subscription_deliver','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20delivery\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20delivery\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-delivery\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20author\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Prevents\x20unauthorized\x20parties\x20from\x20publishing\x20content\x20on\x20behalf\x20of\x20the\x20author.\x20'+'Designed\x20for\x20Substack-style\x20content\x20subscription:\x20Paid\x20→\x20ContentPublished\x20→\x20Completed\x20(success\x20path),\x20'+'with\x20Cancelled\x20and\x20Disputed\x20branches\x20using\x20separate\x20guards\x20(tpl_forward_content_subscription_cancel,\x20'+'tpl_forward_content_subscription_refund).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_delivery_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20delivery\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).\x20This\x20is\x20the\x20node\x20from\x20which\x20the\x20\x27Deliver\x27\x20forward\x20advances.'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(author\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'author_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20author\x20role\x20(who\x20can\x20publish\x20content)','required':!![],'default':'1000','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator,\x20reader\x20uses\x20namedOperator=\x27\x27\x20(no\x20specific\x20operator).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20an\x20Order\x20belonging\x20to\x20the\x20bound\x20Service;\x20progress.current\x20must\x20match\x20expected_pre_delivery_node'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_delivery_node}','name':'Expected\x20pre-delivery\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20author\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${author_permission_index}','name':'Author\x20permission\x20index\x20(e.g.\x201000)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String)\x20—\x20current\x20node\x20name;\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index)','SUBSTACK\x20DEPLOYMENT:\x20this\x20guard\x20was\x20used\x20in\x20Substack\x20v2\x20Service.\x20Original\x20v1\x20Service\x20was\x20published\x20without\x20arbitrations\x20—\x20had\x20to\x20be\x20recreated\x20as\x20v2\x20with\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21).','AUTHOR\x20ROLE:\x20permission\x20index\x201000\x20=\x20author\x20(publish\x20+\x20cancel).\x20namedOperator=\x27\x27\x20for\x20reader\x20role\x20(open\x20—\x20any\x20subscriber).\x20Arbitrator\x20uses\x20index\x201500.','FORWARD\x20DESIGN:\x20\x27Deliver\x27\x20forward\x20advances\x20from\x20\x27Ordered\x27\x20→\x20\x27ContentPublished\x27.\x20Threshold=1,\x20weight=1,\x20permissionIndex=1000\x20(author\x20only).','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.\x20Subscribers\x20cannot\x20double-claim\x20by\x20triggering\x20multiple\x20forwards.','IMMUTABILITY:\x20Forward.guard\x20cannot\x20be\x20modified\x20after\x20Machine\x20publish.\x20Verify\x20all\x203\x20guards\x20(deliver/cancel/refund)\x20are\x20correctly\x20bound\x20BEFORE\x20publishing\x20the\x20Machine.','CIRCULAR\x20REF:\x20if\x20Permission\x20is\x20not\x20yet\x20created,\x20use\x20its\x20name\x20(not\x20address)\x20in\x20value\x20field\x20—\x20Guard\x20resolves\x20names\x20at\x20evaluation\x20time,\x20not\x20at\x20creation\x20time.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5/month.\x20Author\x20publishes\x20content\x20→\x20\x27Deliver\x27\x20forward\x20advances\x20Ordered→ContentPublished.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20node\x20(not\x20already\x20delivered),\x20AND\x20(2)\x20Signer\x20holds\x20permission\x20index\x201000\x20on\x20author\x27s\x20Permission\x20object.\x20'+'Prevents\x20a\x20malicious\x20party\x20from\x20publishing\x20fake\x20content.\x20Subscriber\x20cannot\x20trigger\x20\x27Deliver\x27\x20(lacks\x20permission).','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_cancel','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20cancel\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20cancel\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-cancel\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20is\x20the\x20order\x20owner\x20(subscriber).\x20Allows\x20subscriber\x20to\x20cancel\x20within\x20grace\x20period\x20'+'for\x20full\x20refund.\x20Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Cancelled\x20(terminal-cancel),\x20with\x20refund\x20via\x20Allocation\x20template.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_cancel_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20cancel\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_cancel_node}','name':'Expected\x20pre-cancel\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20order.owner\x20(id\x201202,\x20Address)\x20—\x20order\x20holder\x20(subscriber).','SUBSCRIBER-ONLY:\x20only\x20the\x20order\x20owner\x20can\x20cancel\x20—\x20prevents\x20third-party\x20griefing.\x20Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.','GRACE\x20PERIOD:\x20this\x20guard\x20does\x20NOT\x20enforce\x20a\x20time\x20window.\x20If\x20a\x20grace\x20period\x20is\x20needed\x20(e.g.\x20cancel\x20within\x2024h\x20of\x20payment),\x20add\x20a\x20third\x20condition:\x20context(Clock)\x20<=\x20order.time\x20+\x20grace_period.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Cancelled\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5,\x20then\x20changes\x20mind\x20before\x20content\x20is\x20published.\x20\x27Cancel\x27\x20forward\x20advances\x20Ordered→Cancelled.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20(not\x20yet\x20delivered),\x20AND\x20(2)\x20Signer\x20is\x20the\x20order\x20owner.\x20'+'Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.\x20Refund\x20triggers\x20automatically\x20via\x20Allocation\x20on\x20\x27Cancelled\x27\x20node.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_refund','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20refund\x20verification\x20(Substack-style,\x20arbitration-triggered)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20dispute/refund\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-dispute\x20node\x20'+'(e.g.\x20\x27Disputed\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20arbitrator\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Only\x20the\x20arbitrator\x20can\x20advance\x20Disputed→Refunded,\x20ensuring\x20dispute\x20resolution\x20is\x20impartial.\x20'+'Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Disputed\x20→\x20Refunded\x20(terminal-dispute).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_refund_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20refund\x20(e.g.\x20\x27Disputed\x27)','required':!![],'default':'Disputed','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(arbitrator\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'arbitrator_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20arbitrator\x20role\x20(who\x20can\x20resolve\x20disputes)','required':!![],'default':'1500','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator.'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_refund_node}','name':'Expected\x20pre-refund\x20node\x20name\x20(e.g.\x20\x27Disputed\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20arbitrator\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${arbitrator_permission_index}','name':'Arbitrator\x20permission\x20index\x20(e.g.\x201500)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index).','ARBITRATOR-ONLY:\x20only\x20the\x20arbitrator\x20(permission\x20index\x201500)\x20can\x20advance\x20Disputed→Refunded.\x20Neither\x20author\x20nor\x20subscriber\x20can\x20self-resolve.','ARBITRATIONS\x20BINDING:\x20Service\x20MUST\x20have\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21\x20—\x20post-publish\x20immutable).\x20ConfirmGate\x20C-S-19\x20+\x20QS11\x20will\x20warn\x20if\x20publish\x20is\x20attempted\x20without\x20arbitrations.','DISPUTE\x20ENTRY:\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed)\x20is\x20triggered\x20by\x20subscriber\x20(order.owner).\x20After\x20Disputed,\x20only\x20arbitrator\x20can\x20resolve.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Refunded\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Disputed\x27\x20has\x20competing\x20forwards\x20(Resolve-Refund|Resolve-Reject),\x20each\x20with\x20its\x20own\x20guard.\x20First\x20guard\x20to\x20verify\x20wins.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20disputes\x20content\x20quality.\x20Subscriber\x20triggers\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed).\x20'+'Arbitrator\x20reviews\x20evidence\x20and\x20triggers\x20\x27Resolve-Refund\x27\x20forward\x20(Disputed→Refunded).\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Disputed\x27\x20(dispute\x20properly\x20opened),\x20AND\x20(2)\x20Signer\x20holds\x20arbitrator\x20permission\x20index\x201500.\x20'+'Author\x20cannot\x20self-resolve.\x20Subscriber\x20cannot\x20self-refund.','verifier_constraint_level':'level2_identity_set'}];export function getTemplatesByScene(a){return GUARD_TEMPLATES['filter'](b=>b['scene_id']===a);}export function getTemplateById(a){return GUARD_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByIndustry(a){return GUARD_TEMPLATES['filter'](b=>b['applicable_industries']['includes'](a));}export function getTemplatesByPattern(a){return GUARD_TEMPLATES['filter'](b=>b['recommended_patterns']['includes'](a));}export function listGuardTemplates(){return GUARD_TEMPLATES;}export function suggestTemplateForScene(a){return GUARD_TEMPLATES['find'](b=>b['scene_id']===a);}export function getTemplateParameters(a){const b=getTemplateById(a);return b?.['parameters']??[];}export function validateTemplateParams(a,b){const c=getTemplateById(a);if(!c)return{'valid':![],'missing':['template_not_found']};const d=c['parameters']['filter'](e=>e['required']&&!(e['name']in b))['map'](e=>e['name']);return{'valid':d['length']===0x0,'missing':d};}function deepSubstitute(a,b){if(typeof a==='string'){const c=a['match'](/^\$\{(\w+)\}$/);if(c&&c[0x1]in b)return b[c[0x1]];return a['replace'](/\$\{(\w+)\}/g,(d,e)=>e in b?String(b[e]):'${'+e+'}');}if(Array['isArray'](a))return a['map'](d=>deepSubstitute(d,b));if(a&&typeof a==='object'){const d={};for(const [e,f]of Object['entries'](a)){d[e]=deepSubstitute(f,b);}return d;}return a;}export function fillGuardTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20not\x20found:\x20'+a};const {valid:d,missing:e}=validateTemplateParams(a,b);if(!d)return{'ok':![],'error':'Missing\x20required\x20parameters:\x20'+e['join'](',\x20'),'missing':e};const f={...b};for(const j of c['parameters']){!(j['name']in f)&&j['default']!==undefined&&(f[j['name']]=j['default']);}const g=deepSubstitute(c['example_table'],f),h=deepSubstitute(c['example_root'],f),i=JSON['stringify']({'table':g,'root':h})['match'](/\$\{(\w+)\}/);if(i)return{'ok':![],'error':'Unresolved\x20placeholder\x20${'+i[0x1]+'}\x20—\x20not\x20declared\x20in\x20template\x20parameters'};return{'ok':!![],'table':g,'root':h};}export const GUARD_TEMPLATES_VERSION='1.0.0';export const GUARD_TEMPLATES_COUNT=GUARD_TEMPLATES['length'];
1
+ export const GUARD_TEMPLATES=[{'id':'tpl_buy_guard_whitelist','scene_id':'service_buy_guard','name':'Whitelist\x20purchase\x20validation','description':'Only\x20addresses\x20in\x20the\x20whitelist\x20can\x20purchase\x20the\x20service.\x20Suitable\x20for\x20limited-time\x20sales,\x20VIP\x20exclusives,\x20internal\x20testing\x20eligibility,\x20etc.','recommended_patterns':['P04','P03'],'parameters':[{'name':'whitelist','type':'vec_address','description':'List\x20of\x20authorized\x20addresses','required':!![],'constraint':'Each\x20address\x20must\x20be\x20valid\x20and\x20unique'},{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(used\x20for\x20circular\x20references)','required':![],'constraint':'If\x20P16\x20circular\x20reference\x20is\x20used,\x20a\x20name\x20must\x20be\x20provided\x20rather\x20than\x20an\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Vec<Address>','value':'${whitelist}','name':'Authorized\x20purchase\x20whitelist'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x0},'target':{'type':'context','context':'Signer'}},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-01','R-C3-01','R-C4-01'],'creation_notes':['Updating\x20the\x20whitelist\x20requires\x20rebuilding\x20the\x20Guard\x20(buy_guard\x20is\x20iterable)','If\x20the\x20Service\x20is\x20already\x20published,\x20the\x20table\x20can\x20use\x20the\x20address\x20directly;\x20otherwise\x20use\x20the\x20name\x20(P16\x20circular\x20reference)'],'example_use_case':'Internal\x20testing\x20phase\x20for\x20camera\x20equipment\x20rental,\x20allowing\x20only\x20the\x20first\x2050\x20seed\x20users\x20to\x20place\x20rental\x20orders.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_threshold','scene_id':'service_order_allocators_guard','name':'Allocation\x20amount\x20threshold\x20validation','description':'Selects\x20different\x20allocation\x20strategies\x20based\x20on\x20the\x20order\x20amount.\x20When\x20the\x20amount\x20exceeds\x20the\x20threshold,\x20advanced\x20allocation\x20is\x20used;\x20otherwise,\x20default\x20allocation\x20applies.','recommended_patterns':['P02','P10'],'parameters':[{'name':'threshold','type':'number','description':'Allocation\x20threshold\x20(unit:\x20smallest\x20precision)','required':!![],'constraint':'Must\x20be\x20>\x200;\x20a\x20reasonable\x20range\x20is\x20recommended\x20to\x20avoid\x20boundary\x20gaming'},{'name':'service_name','type':'string','description':'Service\x20object\x20name','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${threshold}','name':'Allocation\x20threshold'}],'example_root':{'type':'logic_as_u256_greater','left':{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-05','R-X1-08'],'creation_notes':['order_allocators\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20publish)','First-match-wins\x20mechanism:\x20multiple\x20allocators\x20are\x20matched\x20in\x20order;\x20the\x20first\x20one\x20that\x20passes\x20executes','Threshold\x20boundary\x20must\x20be\x20tested:\x20behavior\x20when\x20exactly\x20equal\x20to\x20the\x20threshold\x20(>\x20vs\x20>=)'],'example_use_case':'E-commerce\x20platform:\x20order\x20amount\x20>\x201000\x20WOW\x20triggers\x203-way\x20allocation\x20(platform\x20+\x20merchant\x20+\x20logistics);\x20otherwise\x202-way\x20allocation\x20(platform\x20+\x20merchant).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_treasury_personal','scene_id':'service_order_allocators_guard','name':'Treasury\x20+\x20personal\x20address\x20allocation\x20(Entity\x20sharing)','description':'2\x20allocators\x20representing\x202\x20merchant\x20collection\x20approaches:\x20(1)\x20named\x20Treasury\x20address\x20for\x20public\x20fund\x20aggregation,\x20(2)\x20fixed\x20personal\x20address.\x20'+'Uses\x20sharing.who=Entity\x20so\x20funds\x20always\x20flow\x20to\x20the\x20legitimate\x20recipient\x20regardless\x20of\x20caller\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20Guard.\x20'+'Guards\x20verify\x20the\x20order\x20is\x20at\x20the\x20Complete\x20node\x20+\x20belongs\x20to\x20the\x20service\x20(project\x20binding).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'},{'name':'complete_node_name','type':'string','description':'Expected\x20node\x20name\x20that\x20triggers\x20allocation\x20(e.g.\x20\x27Complete\x27)','required':!![],'default':'Complete','constraint':'Must\x20exactly\x20match\x20the\x20Machine\x20node\x20name\x20(case-sensitive)'},{'name':'treasury_name','type':'string','description':'Named\x20Treasury\x20object\x20(created\x20with\x20the\x20Service\x27s\x20permission)','required':!![],'constraint':'Treasury\x20must\x20be\x20created\x20before\x20the\x20Service;\x20use\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20for\x20consistency'},{'name':'personal_address','type':'address','description':'Fixed\x20personal\x20collection\x20address\x20(e.g.\x20the\x20permission\x20creator\x27s\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${complete_node_name}','name':'Expected\x20Complete\x20node\x20name\x20(case-sensitive)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['insurance','ecommerce','travel','rental','subscription'],'relevant_risks':['R-C3-05','R-C3-06','R-X1-05','R-X1-01'],'creation_notes':['2\x20Guard\x20objects\x20with\x20IDENTICAL\x20root/table\x20but\x20DIFFERENT\x20descriptions\x20(allocators\x20require\x20unique\x20guard\x20addresses\x20—\x20no\x20two\x20allocators\x20may\x20reference\x20the\x20same\x20Guard).','sharing.who=Entity\x20(Treasury/personal)\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20the\x20Guard\x20(R-C3-06\x20safe).','First-match-wins:\x20only\x20the\x20first\x20allocator\x20(Treasury)\x20executes;\x20the\x20personal\x20allocator\x20is\x20an\x20alternative\x20(swap\x20the\x20allocators\x20order\x20to\x20activate\x20personal\x20collection).','Treasury\x20should\x20be\x20created\x20with\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20(permission\x20consistency\x20—\x20different\x20permissions\x20=\x20minor\x20risk).','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass\x20prevents\x20premature\x20allocation\x20on\x20foreign\x20orders).','order_allocators\x20is\x20immutable\x20after\x20Service\x20publish\x20—\x20verify\x20the\x20Guard\x20logic\x20and\x20sharing\x20config\x20before\x20publishing.'],'example_use_case':'Insurance\x20service:\x20after\x20a\x20claim\x20reaches\x20the\x20Complete\x20node,\x20order\x20funds\x20are\x20allocated\x20to\x20the\x20insurance\x20Treasury\x20'+'(approach\x201,\x20for\x20operational\x20fund\x20aggregation)\x20or\x20to\x20the\x20provider\x27s\x20personal\x20address\x20(approach\x202,\x20for\x20direct\x20income).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_identity_set_order_holder','scene_id':'service_order_allocators_guard','name':'Order-holder\x20identity-set\x20allocation\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding:\x20Signer\x20is\x20order.owner\x20(1562,\x20Address)\x20OR\x20order.agent\x20(1567,\x20Bool\x20with\x20[Signer]\x20param).\x20'+'Demonstrates\x20the\x20mixed\x20return-type\x20construction\x20pattern\x20—\x20Address-returning\x20queries\x20are\x20wrapped\x20in\x20logic_equal,\x20'+'while\x20Bool-returning\x20queries\x20(suffix\x20\x27has\x27)\x20are\x20used\x20directly\x20as\x20logic_or\x20children.\x20'+'Combined\x20with\x20order.service\x20binding\x20(R-C3-05)\x20for\x20cross-service\x20theft\x20prevention.\x20'+'Use\x20when\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20should\x20be\x20able\x20to\x20trigger\x20allocation\x20(e.g.\x20refund\x20to\x20caller).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'order.agent\x20has','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['ecommerce','rental','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['MIXED\x20RETURN-TYPE\x20CONSTRUCTION\x20(key\x20Level\x202\x20pattern):\x20query\x201562\x20(order.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal\x20with\x20context(Signer);\x20query\x201567\x20(order.agent\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning)\x20—\x20this\x20is\x20the\x20recommended\x20Level\x202\x20alternative.','Use\x20this\x20pattern\x20when\x20sharing.who=Signer\x20(funds\x20flow\x20to\x20caller)\x20AND\x20either\x20the\x20owner\x20or\x20an\x20agent\x20should\x20be\x20authorized\x20to\x20trigger\x20allocation.','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass).','If\x20agents\x20are\x20not\x20needed,\x20use\x20the\x20simpler\x20Level\x202\x20dynamic\x20pattern:\x20logic_equal[query(1562),\x20context(Signer)]\x20without\x20logic_or.'],'example_use_case':'Refund\x20allocation:\x20when\x20an\x20order\x20is\x20cancelled,\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20can\x20trigger\x20the\x20refund.\x20'+'The\x20Guard\x20verifies\x20Signer\x20is\x20order.owner\x20OR\x20order.agent,\x20and\x20that\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_identity_set_service_provider_dynamic','scene_id':'service_order_allocators_guard','name':'Service-provider\x20identity-set\x20allocation\x20with\x20dynamic\x20permission\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding\x20with\x20DYNAMIC\x20permission\x20address:\x20Signer\x20is\x20permission.owner\x20(1002,\x20Address)\x20OR\x20'+'has\x20admin\x20(1004,\x20Bool\x20with\x20[Signer]\x20param).\x20The\x20permission\x20address\x20is\x20submitted\x20by\x20the\x20caller\x20and\x20verified\x20'+'against\x20service.permission\x20(1488)\x20—\x20this\x20survives\x20permission\x20rotation\x20without\x20rebuilding\x20the\x20Guard.\x20'+'Use\x20when\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board)\x20and\x20a\x20static\x20permission\x20'+'address\x20would\x20break\x20the\x20Guard.','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','object_type':'Permission','name':'Permission\x20object\x20(submitted\x20by\x20caller\x20—\x20must\x20equal\x20service.permission)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'service.permission','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]},{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'permission.owner','object':{'identifier':0x2},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'permission.admin\x20has','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'}]}]}]},'applicable_industries':['ecommerce','rental','insurance','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['DYNAMIC\x20PERMISSION\x20VERIFICATION\x20(key\x20pattern):\x20caller\x20submits\x20a\x20Permission\x20address\x20(identifier\x202);\x20Guard\x20verifies\x20query(1488:\x20service.permission)\x20==\x20submitted\x20permission,\x20then\x20checks\x201002/1004\x20against\x20the\x20submitted\x20permission.\x20This\x20survives\x20permission\x20rotation\x20—\x20if\x20the\x20Service\x20changes\x20its\x20permission,\x20the\x20Guard\x20still\x20works\x20without\x20rebuilding.','MIXED\x20RETURN-TYPE\x20CONSTRUCTION:\x20query\x201002\x20(permission.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal;\x20query\x201004\x20(permission.admin\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning).','THREE\x20conditions\x20in\x20logic_and:\x20(1)\x20order.service\x20binding\x20(R-C3-05),\x20(2)\x20dynamic\x20permission\x20verification,\x20(3)\x20identity\x20set\x20(owner\x20OR\x20admin).','Static\x20permission\x20alternative\x20(simpler\x20but\x20breaks\x20on\x20rotation):\x20use\x20a\x20table\x20constant\x20for\x20the\x20permission\x20address\x20instead\x20of\x20b_submission=true\x20+\x201488\x20verification.','Repository-based\x20address\x20set\x20(most\x20flexible,\x20most\x20complex):\x20store\x20the\x20permission\x20address\x20set\x20in\x20a\x20Repository\x20and\x20query\x20dynamically\x20—\x20only\x20for\x20extreme\x20flexibility\x20needs.'],'example_use_case':'Merchant\x20allocation:\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board).\x20'+'The\x20caller\x20submits\x20the\x20current\x20permission\x20address;\x20the\x20Guard\x20verifies\x20it\x20matches\x20service.permission\x20(1488),\x20'+'then\x20checks\x20that\x20Signer\x20is\x20the\x20permission\x20owner\x20or\x20has\x20admin\x20rights.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_node_check','scene_id':'machine_forward_guard','name':'Workflow\x20node\x20state\x20validation','description':'Verifies\x20that\x20the\x20order\x20is\x20currently\x20at\x20the\x20correct\x20Machine\x20node\x20before\x20advancing\x20to\x20the\x20next\x20step.\x20Prevents\x20skipping\x20nodes\x20or\x20reverse\x20operations.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_node','type':'string','description':'Expected\x20current\x20node\x20name','required':!![],'constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_node}','name':'Expected\x20current\x20node\x20name'}],'example_root':{'type':'logic_equal','left':{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['Forward.guard\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20Machine\x20publish)','witness\x20100\x20(Order→Progress)\x20is\x20a\x20single\x20hop;\x20no\x20risk\x20of\x20chained-derivation\x20breakage','Node\x20names\x20are\x20case-sensitive;\x20query\x20returns\x20a\x20String\x20type'],'example_use_case':'Camera\x20equipment\x20rental\x20flow:\x20the\x20user\x20must\x20be\x20at\x20the\x20\x27pending\x20return\x27\x20node\x20to\x20perform\x20the\x20return\x20operation.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_privacy_delivery_proof','scene_id':'machine_forward_guard','name':'Privacy-delivery\x20Proof\x20verification\x20(strict\x20mode,\x20Messenger\x20→\x20on-chain\x20Proof)','description':'Strict-mode\x20guard\x20for\x20\x27privacy\x20information\x20delivered\x20via\x20Messenger\x20but\x20not\x20suitable\x20for\x20on-chain\x20publication\x27\x20'+'(e.g.\x20shipping\x20details,\x20return\x20addresses,\x20private\x20credentials).\x20The\x20verifier\x20submits\x20BOTH\x20a\x20Proof\x20object\x20address\x20'+'(generated\x20by\x20messenger.submitChainProof)\x20AND\x20the\x20Order\x20object\x20address.\x20Three\x20conditions\x20verify:\x20'+'(1)\x20Signer\x20==\x20proof.signer\x20(submitter\x20accountability\x20—\x20\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27),\x20'+'(2)\x20proof.time\x20>\x20order.time\x20(proof\x20created\x20after\x20the\x20order\x20—\x20freshness,\x20prevents\x20stale-proof\x20replay),\x20'+'(3)\x20order.service\x20==\x20service\x20(project\x20binding,\x20suppresses\x20R-C3-05\x20cross-project\x20bypass).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility.\x20The\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20'+'Messenger\x20conversation.\x20Broad-mode\x20alternative\x20(verify\x20Merkle\x20Root\x20string\x20length\x20==\x2066\x20via\x20P15)\x20is\x20documented\x20'+'in\x20creation_notes\x20—\x20broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty\x20and\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20'+'arbitration\x20basis\x20rather\x20than\x20a\x20fund-flow\x20gate.','recommended_patterns':['P10','P15'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Proof','name':'proof_object\x20(Proof\x20address\x20generated\x20by\x20messenger.submitChainProof,\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20a\x20Proof\x20object\x20created\x20AFTER\x20the\x20order;\x20signer\x20must\x20equal\x20the\x20transaction\x20Signer'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_object\x20(Order\x20address\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20belong\x20to\x20the\x20service\x20declared\x20in\x20identifier\x202\x20(order.service\x20==\x20service)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'proof.signer','object':{'identifier':0x0},'parameters':[]}]},{'type':'logic_as_u256_greater','nodes':[{'type':'query','query':'proof.time','object':{'identifier':0x0},'parameters':[]},{'type':'query','query':'order.time','object':{'identifier':0x1},'parameters':[]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','logistics','service','privacy\x20delivery'],'relevant_risks':['R-C3-01','R-C3-05','R-X1-12'],'creation_notes':['STRICT\x20MODE\x20(this\x20template):\x20verifier\x20submits\x20Proof\x20+\x20Order\x20addresses.\x20Three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27beneficiary\x20bears\x20burden\x20of\x20proof\x27\x20principle).','BROAD\x20MODE\x20ALTERNATIVE:\x20use\x20P15\x20retained_submission\x20with\x20a\x20String\x20submission\x20(the\x20Merkle\x20Root)\x20and\x20verify\x20calc_string_length\x20==\x2066\x20(0x\x20prefix\x20+\x2064\x20hex\x20chars).\x20Broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20Broad\x20mode\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','Guard\x20table\x20supports\x20MULTIPLE\x20b_submission=true\x20Address\x20identifiers\x20(no\x20submission\x20count\x20limit)\x20—\x20this\x20template\x20uses\x20two:\x20Proof\x20(identifier\x200)\x20and\x20Order\x20(identifier\x201).','submitChainProof(env,\x20peerAddress,\x20description?)\x20sets\x20Proof.about\x20=\x20peerAddress\x20(the\x20counterparty\x27s\x20address).\x20Pass\x20the\x20order_id\x20as\x20a\x20string\x20in\x20the\x20description\x20parameter\x20to\x20associate\x20the\x20Proof\x20with\x20an\x20order\x20(e.g.\x20description:\x20\x27order:0x123...\x27).','Query\x20IDs\x20(all\x20zero-parameter):\x20proof.signer=1958,\x20proof.time=1960\x20(invariant\x20clock_derived,\x20always\x20>0),\x20order.time=1574,\x20order.service=1563.','Forward.guard\x20is\x20immutable\x20after\x20Machine\x20publish\x20—\x20choose\x20broad\x20vs\x20strict\x20before\x20publishing.','The\x20same\x20strict\x20Guard\x20can\x20be\x20reused\x20across\x20ALL\x20Machine\x20forwards\x20that\x20need\x20merkle-root\x20verification\x20(shipping,\x20lost,\x20returns,\x20etc.)\x20—\x20the\x20verifier\x20just\x20submits\x20the\x20relevant\x20Proof\x20+\x20Order\x20each\x20time.','Condition\x20(1)\x20Signer==proof.signer\x20suppresses\x20R-C3-01\x20(submission\x20not\x20bound\x20to\x20Signer).\x20Condition\x20(3)\x20order.service==service\x20suppresses\x20R-C3-05\x20(cross-project\x20submission\x20bypass).'],'example_use_case':'MyShop\x20e-commerce:\x20after\x20delivering\x20shipping\x20details\x20/\x20return\x20addresses\x20via\x20Messenger\x20(privacy\x20info\x20not\x20suitable\x20for\x20on-chain\x20publication),\x20'+'the\x20provider\x20generates\x20a\x20Proof\x20via\x20submitChainProof\x20and\x20submits\x20it\x20with\x20the\x20Order\x20address\x20to\x20advance\x20the\x20Machine\x20forward.\x20'+'The\x20Guard\x20verifies\x20the\x20submitter\x20is\x20the\x20Proof\x27s\x20signer,\x20the\x20Proof\x20was\x20created\x20after\x20the\x20order,\x20and\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_submission_signer_binding','scene_id':'progress_submission_guard','name':'Submission\x20data\x20signer\x20binding\x20validation','description':'Verifies\x20that\x20the\x20user\x20submitting\x20the\x20data\x20is\x20a\x20legitimate\x20Progress\x20participant\x20and\x20that\x20the\x20submitted\x20value\x20matches\x20expectations.','recommended_patterns':['P08','P15'],'parameters':[{'name':'expected_value','type':'string','description':'Expected\x20submitted\x20value\x20(e.g.\x20node\x20name,\x20status\x20code)','required':!![]},{'name':'provider_address','type':'address','description':'Service\x20provider\x20address\x20(used\x20for\x20identity\x20verification)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'String','name':'User-submitted\x20operation\x20type\x20(e.g.\x20\x27return\x27\x20/\x20\x27damage\x27)','binding_constraint':'Must\x20be\x20one\x20of\x20the\x20predefined\x20operation\x20types'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${provider_address}','name':'Service\x20provider\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'String','value':'${expected_value}','name':'Expected\x20submitted\x20value'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['rental','ecommerce','education','travel'],'relevant_risks':['R-C3-01','R-C3-03','R-X1-12'],'creation_notes':['submission\x20guard\x20cannot\x20be\x20modified\x20after\x20binding','The\x20name\x20of\x20b_submission=true\x20entries\x20must\x20be\x20a\x20complete\x20natural-language\x20description\x20(≥10\x20characters)','Providing\x20a\x20binding_constraint\x20field\x20describing\x20value\x20rules\x20is\x20recommended\x20(R-X1-12)'],'example_use_case':'On\x20equipment\x20return,\x20the\x20user\x20submits\x20the\x20\x27return\x27\x20operation;\x20the\x20Guard\x20verifies\x20that\x20the\x20submitter\x20is\x20the\x20service\x20provider\x20and\x20that\x20the\x20operation\x20type\x20is\x20correct.','verifier_constraint_level':'level1_strict'},{'id':'tpl_reward_one_time_claim','scene_id':'reward_claim','name':'One-time\x20reward\x20claim\x20validation','description':'Verifies\x20that\x20the\x20user\x20is\x20claiming\x20the\x20reward\x20for\x20the\x20first\x20time,\x20preventing\x20duplicate\x20claims.\x20Implemented\x20by\x20querying\x20the\x20historical\x20record\x20count\x20via\x20Repository.','recommended_patterns':['P07','P13'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address\x20(stores\x20claim\x20records)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Reward\x20claim\x20record\x20Repository','object_type':'Repository'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'0','name':'First-claim\x20threshold\x20(record_count\x20==\x200)'}],'example_root':{'type':'logic_equal','left':{'type':'query','query':'repository.data','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-03','R-X1-01','R-X1-10'],'creation_notes':['Repository\x20with\x20quote_guard:\x20rigid\x20verification\x20—\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard\x20(see\x20R-X1-10,\x20pattern.repository_quote_guard_subscription)','repository.data\x20query\x20returns\x20U64\x20(record\x20count),\x20compared\x20with\x20identifier[1]\x20(value\x200)','Reward\x20guard\x20is\x20iterable;\x20duplicate-claim\x20protection\x20requires\x20rebuilding\x20the\x20Guard\x20to\x20update\x20the\x20Repository\x20address'],'example_use_case':'New-user\x20first-order\x20reward:\x20query\x20the\x20user\x27s\x20historical\x20order\x20count\x20via\x20Repository;\x20allow\x20claim\x20only\x20when\x20record_count==0.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_write_guard_type_check','scene_id':'repository_write_guard','name':'Storage\x20write\x20type\x20validation','description':'Verifies\x20that\x20the\x20data\x20type\x20written\x20to\x20the\x20Repository\x20matches\x20the\x20declaration\x20and\x20that\x20the\x20writer\x27s\x20identity\x20is\x20legitimate.','recommended_patterns':['P08','P11'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':!![],'constraint':'Must\x20be\x20the\x20address\x20of\x20an\x20already-published\x20Repository'},{'name':'entity_registrar','type':'address','description':'EntityRegistrar\x20address\x20(fixed\x200xaab)','required':![],'default':'0xaab'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Writer\x20address\x20(submitted\x20by\x20caller)','binding_constraint':'Must\x20be\x20a\x20valid\x20Entity\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'String','name':'Write\x20data\x20key\x20name\x20(submitted\x20by\x20caller)','binding_constraint':'Key\x20name\x20format\x20must\x20be\x20\x27category:key\x27'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${entity_registrar}','name':'EntityRegistrar\x20system\x20address','is_system_address':!![]}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},{'type':'logic_not_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-02','R-C3-03','R-C3-04'],'creation_notes':['id_from_submission\x20in\x20write_guard\x20must\x20be\x20of\x20Address\x20type','data_from_submission\x20must\x20match\x20the\x20Repository\x20value_type','EntityRegistrar\x20(0xaab)\x20and\x20EntityLinker\x20(0xaaa)\x20are\x20fixed\x20system\x20addresses'],'example_use_case':'E-commerce\x20platform\x20merchant\x20writes\x20product\x20review\x20data;\x20the\x20Guard\x20verifies\x20that\x20the\x20writer\x20is\x20a\x20registered\x20Entity\x20and\x20not\x20a\x20system\x20address.','verifier_constraint_level':'level1_strict'},{'id':'tpl_usage_guard_threshold','scene_id':'arbitration_usage_guard','name':'Dispute\x20initiation\x20threshold\x20validation','description':'Verifies\x20that\x20the\x20dispute\x20initiator\x20meets\x20minimum\x20conditions\x20(e.g.\x20order\x20amount,\x20time\x20window),\x20filtering\x20out\x20meaningless\x20disputes.','recommended_patterns':['P02','P10'],'parameters':[{'name':'min_amount','type':'number','description':'Minimum\x20dispute\x20amount\x20threshold','required':!![],'constraint':'A\x20reasonable\x20threshold\x20is\x20recommended;\x20too\x20high\x20hinders\x20user\x20rights\x20protection,\x20too\x20low\x20produces\x20many\x20invalid\x20disputes'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Dispute-related\x20Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${min_amount}','name':'Minimum\x20dispute\x20amount\x20threshold'}],'example_root':{'type':'logic_as_u256_greater_or_equal','left':{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-07','R-C3-03'],'creation_notes':['usage_guard\x20is\x20iterable\x20(Arbitration\x20can\x20be\x20updated)','AND\x20conditions\x20should\x20not\x20be\x20too\x20many\x20(R-X1-07);\x20≤3\x20conditions\x20recommended','When\x20Arbitration\x20bPaused=true,\x20blocking\x20takes\x20priority\x20(checked\x20before\x20Guard)'],'example_use_case':'Rental\x20service\x20dispute:\x20only\x20disputes\x20with\x20order\x20amount\x20≥\x2010\x20WOW\x20are\x20accepted,\x20filtering\x20out\x20small-amount\x20conflicts.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_voting_guard_numeric_weight','scene_id':'arbitration_voting_guard','name':'Numeric\x20voting\x20weight\x20validation','description':'Assigns\x20numeric\x20voting\x20weights\x20based\x20on\x20arbitrator\x20rank;\x20higher-rank\x20arbitrators\x20have\x20greater\x20weight.','recommended_patterns':['P12'],'parameters':[{'name':'arbiter_weights','type':'vec_address','description':'Arbitrator\x20address\x20to\x20weight\x20mapping\x20(address:weight\x20pairs)','required':!![],'constraint':'Weights\x20must\x20be\x20numeric\x20types\x20U8-U256'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Arbitrator\x20address\x20(submitted\x20by\x20caller)','object_type':'Arb'},{'identifier':0x1,'b_submission':![],'value_type':'Vec<Address>','value':'${arbiter_weights}','name':'Authorized\x20arbitrator\x20address\x20list'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x1},'target':{'type':'identifier','identifier':0x0}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-C3-02','R-C2-01','R-C2-02'],'creation_notes':['The\x20GuardIdentifier\x20for\x20voting_guard\x20must\x20be\x20numeric\x20(U8-U256),\x20otherwise\x20E_GUARD_IDENTIFIER_NOT_NUMBER','Weights\x20from\x20submitted\x20data\x20(b_submission=true)\x20carry\x20forgery\x20risk\x20(R-C3-02\x20critical)','Deriving\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20is\x20recommended,\x20rather\x20than\x20submitting\x20them\x20directly'],'example_use_case':'3-person\x20arbitration\x20panel:\x20chief\x20arbitrator\x20weight\x203,\x20regular\x20arbitrators\x20weight\x201,\x20majority\x20vote\x20decision.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_gen_passport_identity','scene_id':'gen_passport_guard','name':'Passport\x20identity\x20credential\x20generation\x20validation','description':'Standalone\x20Guard;\x20after\x20verifying\x20the\x20user\x27s\x20identity,\x20generates\x20a\x20Passport\x20with\x20a\x20credential,\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations.','recommended_patterns':['P03','P14'],'parameters':[{'name':'authorized_address','type':'address','description':'Authorized\x20address\x20(or\x20use\x20Vec<Address>\x20whitelist)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${authorized_address}','name':'Authorized\x20address'}],'example_root':{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-01','R-X1-10','R-X1-13'],'creation_notes':['gen_passport\x20is\x20a\x20standalone\x20Guard;\x20it\x20does\x20not\x20bind\x20a\x20Host\x20Object\x20(host_object:\x20Standalone)','quote_guard\x20is\x20a\x20rigid\x20requirement:\x20if\x20the\x20Guard\x20queries\x20Repository\x20data\x20with\x20quote_guard\x20set,\x20the\x20quote_guard\x20must\x20be\x20verified\x20(see\x20R-X1-10)','The\x20Guard\x20can\x20be\x20depended\x20on\x20by\x20other\x20Guards\x20via\x20rely\x20(requires\x20rep=true)','The\x20generated\x20Passport\x20can\x20be\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations'],'example_use_case':'After\x20the\x20user\x20passes\x20identity\x20verification,\x20a\x20Passport\x20is\x20generated;\x20this\x20Passport\x20is\x20then\x20submitted\x20as\x20an\x20identity\x20credential\x20in\x20subsequent\x20service\x20purchases.','verifier_constraint_level':'level1_strict'},{'id':'tpl_repository_quote_guard_subscription','scene_id':'repository_write','name':'Repository\x20data\x20subscription\x20with\x20payment\x20verification','description':'Repository\x20quote_guard\x20requires\x20payment\x20proof\x20for\x20data\x20access.\x20When\x20any\x20Guard\x20queries\x20this\x20Repository\x27s\x20data\x20(query\x201167),\x20the\x20quote_guard\x20is\x20rigidly\x20verified.\x20Enables\x20data\x20subscription\x20revenue\x20model\x20(e.g.,\x20weather\x20data,\x20market\x20oracle\x20data).','recommended_patterns':['P03','P07'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':!![]},{'name':'subscription_price','type':'number','description':'Subscription\x20payment\x20amount\x20required\x20for\x20data\x20access','required':!![]},{'name':'payment_for_object','type':'address','description':'Payment\x20for_object\x20(Repository\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Repository\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'U256','value':'${subscription_price}','name':'Subscription\x20price'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(for_object\x20verification)'},{'identifier':0x3,'b_submission':!![],'value_type':'U256','name':'Submitted\x20Payment\x20amount'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x2}},{'type':'identifier','identifier':0x0}]},{'type':'logic_as_u256_ge','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x2}},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['subscription','travel','rental','education'],'relevant_risks':['R-X1-10'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20valid\x20Payment\x20via\x20Passport\x20(b_submission=true),\x20quote_guard\x20verifies\x20Payment\x20fields','quote_guard\x20must\x20be\x20a\x20standalone\x20repository-backed\x20guard:\x20immutable=true,\x20relies\x20empty,\x20rep=true','Repository.owner_receive<T>\x20accepts\x20Payment\x20as\x20subscription\x20revenue','Rigid\x20verification:\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard','Two-phase:\x20passport\x20generation\x20scans\x20+\x20prepares,\x20passport\x20verification\x20re-checks\x20+\x20verifies','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.amount\x20(id\x201100,\x20U256)'],'example_use_case':'Weather\x20data\x20provider\x20publishes\x20daily\x20temperature\x20data\x20to\x20Repository.\x20Insurance\x20Machine\x20queries\x20weather\x20data;\x20user\x20must\x20pay\x20subscription\x20(Payment)\x20to\x20access\x20data\x20in\x20their\x20insurance\x20claim\x20flow.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_buy_guard_order_holder','scene_id':'service_buy_guard','name':'Supply\x20chain\x20sub-order\x20purchase\x20verification','description':'Sub-service\x20buy_guard\x20verifies\x20the\x20user\x20owns\x20a\x20main\x20service\x20order.\x20Enables\x20supply\x20chain\x20milestone\x20unlock:\x20each\x20milestone\x20=\x20one\x20sub-order,\x20sub-service\x20only\x20purchasable\x20by\x20users\x20who\x20bought\x20the\x20main\x20service.','recommended_patterns':['P03','P04'],'parameters':[{'name':'main_service_address','type':'address','description':'Main\x20Service\x20object\x20address','required':!![]},{'name':'main_order_address','type':'address','description':'Submitted\x20main\x20Order\x20address\x20(b_submission=true)','required':![],'constraint':'If\x20using\x20P16\x20circular\x20reference,\x20use\x20service\x20name\x20instead\x20of\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${main_service_address}','name':'Main\x20service\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','name':'Submitted\x20main\x20Order\x20(ownership\x20verification)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x1}},{'type':'context','context':'Signer'}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1}},{'type':'identifier','identifier':0x0}]}]},'applicable_industries':['travel','rental','education','freelance'],'relevant_risks':['R-C3-05'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20main\x20Order\x20as\x20evidence\x20(b_submission=true),\x20buy_guard\x20verifies\x20ownership\x20+\x20service\x20match','No\x20parent_order\x20field\x20needed\x20—\x20relationship\x20verified\x20via\x20buy_guard\x20querying\x20submitted\x20Order\x20fields','Each\x20milestone\x20=\x20one\x20sub-order\x20with\x20its\x20own\x20Service\x20+\x20buy_guard','Main\x20flow\x20can\x20branch\x20to\x20different\x20sub-services\x20based\x20on\x20Machine\x20node\x20progression','VERIFIED\x20QUERY\x20NAMES:\x20order.owner\x20(id\x201202,\x20Address),\x20order.service\x20(id\x201203,\x20Address)'],'example_use_case':'Travel\x20package:\x20main\x20service\x20=\x20tour\x20booking.\x20Sub-services\x20=\x20hotel,\x20guide,\x20transfer\x20—\x20each\x20with\x20buy_guard\x20verifying\x20the\x20user\x20purchased\x20the\x20main\x20tour\x20order.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_payment_exception_compensation','scene_id':'machine_forward_guard','name':'Exception\x20branch\x20compensation\x20Payment','description':'Machine\x20forward\x20guard\x20for\x20exception\x20handling:\x20verifies\x20a\x20compensation\x20Payment\x20bound\x20to\x20specific\x20order\x20+\x20guard\x20+\x20unique\x20progress\x20step\x20(history\x20count)\x20+\x20node\x20name.\x20Enables\x20user-friendly\x20exception\x20branches\x20(e.g.,\x20delivery\x20delay\x20>\x2030min\x20triggers\x20auto-compensation).','recommended_patterns':['P03','P07','P09'],'parameters':[{'name':'order_address','type':'address','description':'Order\x20object\x20address\x20(Payment\x20for_object\x20target)','required':!![]},{'name':'this_guard_address','type':'address','description':'This\x20guard\x27s\x20own\x20address\x20(Payment\x20for_guard\x20target)','required':!![]},{'name':'compensation_amount','type':'number','description':'Minimum\x20compensation\x20amount','required':!![]},{'name':'expected_node_name','type':'string','description':'Expected\x20node\x20name\x20(stored\x20in\x20PaymentInfo.remark,\x20compared\x20with\x20progress.current)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${order_address}','name':'Order\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${this_guard_address}','name':'This\x20guard\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'U256','value':'${compensation_amount}','name':'Compensation\x20amount'},{'identifier':0x3,'b_submission':![],'value_type':'String','value':'${expected_node_name}','name':'Expected\x20node\x20name\x20(for\x20remark\x20comparison)'},{'identifier':0x4,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(compensation\x20proof)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x4}},{'type':'identifier','identifier':0x0}]},{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.guard','object':{'identifier':0x4}},{'type':'identifier','identifier':0x1}]},{'type':'logic_as_u256_ge','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x4}},{'type':'identifier','identifier':0x2}]},{'type':'logic_as_u256_equal','nodes':[{'type':'query','query':'payment.info.index','object':{'identifier':0x4}},{'type':'query','query':'progress.history\x20count'}]},{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'payment.info.remark','object':{'identifier':0x4}},{'type':'query','query':'progress.current'}]}]},'applicable_industries':['rental','travel','ecommerce','freelance'],'relevant_risks':[],'creation_notes':['VERIFIED:\x20PaymentInfo\x20(for_object,\x20for_guard,\x20remark,\x20index),\x20payment_info_with_guard','VERIFIED:\x20withdraw\x20creates\x20the\x20Payment\x20as\x20a\x20fresh\x20singleton\x20object\x20from\x20the\x20withdrawn\x20object\x20set','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.info.guard\x20(id\x201109,\x20Address),\x20payment.info.index\x20(id\x201111,\x20U64),\x20payment.info.remark\x20(id\x201110,\x20String),\x20payment.amount\x20(id\x201100,\x20U64;\x20logic_as_u256_ge\x20casts\x20U64→U256\x20for\x20comparison)','VERIFIED\x20INDEX:\x20progress.history\x20count\x20(id\x201273,\x20U64)\x20=\x20unique\x20monotonically\x20increasing\x20step\x20index.\x20Even\x20in\x20cycles,\x20each\x20entry\x20has\x20a\x20different\x20count.','VERIFIED\x20NODE\x20NAME:\x20progress.current\x20(id\x201253,\x20String)\x20=\x20current\x20node\x20name.\x20A\x20node\x20can\x20be\x20entered\x20multiple\x20times\x20in\x20cycles,\x20but\x20the\x20history\x20count\x20is\x20unique\x20each\x20time.','DESIGN:\x20payment.info.index\x20stores\x20the\x20step\x20index\x20set\x20by\x20Treasury\x20at\x20creation\x20time;\x20progress.history\x20count\x20provides\x20the\x20current\x20unique\x20step.\x20Comparing\x20them\x20ensures\x20the\x20Payment\x20was\x20created\x20for\x20THIS\x20specific\x20progress\x20step.','DESIGN:\x20payment.info.remark\x20stores\x20the\x20node\x20name;\x20progress.current\x20provides\x20the\x20current\x20node\x20name.\x20Comparing\x20them\x20provides\x20semantic\x20verification\x20of\x20which\x20node\x20triggered\x20the\x20compensation.','ANTI-REUSE:\x204-dimensional\x20binding:\x20for_object\x20(Order)\x20+\x20for_guard\x20(Guard)\x20+\x20index\x20(unique\x20step)\x20+\x20remark\x20(node\x20name).\x20Same\x20Payment\x20cannot\x20be\x20reused\x20in\x20other\x20contexts.','Payment\x20is\x20freeze_object\x20(immutable)\x20—\x20cannot\x20be\x20modified\x20after\x20creation','VERIFIER-EVIDENCE\x20DESIGN:\x20customer\x20submits\x20Payment,\x20guard\x20verifies\x20binding\x20fields\x20match\x20current\x20context','Treasury\x20withdraws\x20compensation\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=history_count_at_creation,\x20remark=node_name)'],'example_use_case':'Food\x20delivery:\x20if\x20delivery\x20delayed\x20>\x2030min\x20at\x20node\x20\x27delayed\x27\x20(history\x20count=5),\x20restaurant\x20Treasury\x20auto-compensates\x20$5\x20to\x20customer\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=5,\x20remark=\x27delayed\x27).\x20Customer\x20submits\x20Payment\x20via\x20Passport,\x20guard\x20verifies\x20index\x20matches\x20current\x20history\x20count\x20AND\x20remark\x20matches\x20current\x20node\x20name.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_content_subscription_deliver','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20delivery\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20delivery\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-delivery\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20author\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Prevents\x20unauthorized\x20parties\x20from\x20publishing\x20content\x20on\x20behalf\x20of\x20the\x20author.\x20'+'Designed\x20for\x20Substack-style\x20content\x20subscription:\x20Paid\x20→\x20ContentPublished\x20→\x20Completed\x20(success\x20path),\x20'+'with\x20Cancelled\x20and\x20Disputed\x20branches\x20using\x20separate\x20guards\x20(tpl_forward_content_subscription_cancel,\x20'+'tpl_forward_content_subscription_refund).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_delivery_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20delivery\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).\x20This\x20is\x20the\x20node\x20from\x20which\x20the\x20\x27Deliver\x27\x20forward\x20advances.'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(author\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'author_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20author\x20role\x20(who\x20can\x20publish\x20content)','required':!![],'default':'1000','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator,\x20reader\x20uses\x20namedOperator=\x27\x27\x20(no\x20specific\x20operator).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20an\x20Order\x20belonging\x20to\x20the\x20bound\x20Service;\x20progress.current\x20must\x20match\x20expected_pre_delivery_node'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_delivery_node}','name':'Expected\x20pre-delivery\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20author\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${author_permission_index}','name':'Author\x20permission\x20index\x20(e.g.\x201000)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String)\x20—\x20current\x20node\x20name;\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index)','SUBSTACK\x20DEPLOYMENT:\x20this\x20guard\x20was\x20used\x20in\x20Substack\x20v2\x20Service.\x20Original\x20v1\x20Service\x20was\x20published\x20without\x20arbitrations\x20—\x20had\x20to\x20be\x20recreated\x20as\x20v2\x20with\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21).','AUTHOR\x20ROLE:\x20permission\x20index\x201000\x20=\x20author\x20(publish\x20+\x20cancel).\x20namedOperator=\x27\x27\x20for\x20reader\x20role\x20(open\x20—\x20any\x20subscriber).\x20Arbitrator\x20uses\x20index\x201500.','FORWARD\x20DESIGN:\x20\x27Deliver\x27\x20forward\x20advances\x20from\x20\x27Ordered\x27\x20→\x20\x27ContentPublished\x27.\x20Threshold=1,\x20weight=1,\x20permissionIndex=1000\x20(author\x20only).','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.\x20Subscribers\x20cannot\x20double-claim\x20by\x20triggering\x20multiple\x20forwards.','IMMUTABILITY:\x20Forward.guard\x20cannot\x20be\x20modified\x20after\x20Machine\x20publish.\x20Verify\x20all\x203\x20guards\x20(deliver/cancel/refund)\x20are\x20correctly\x20bound\x20BEFORE\x20publishing\x20the\x20Machine.','CIRCULAR\x20REF:\x20if\x20Permission\x20is\x20not\x20yet\x20created,\x20use\x20its\x20name\x20(not\x20address)\x20in\x20value\x20field\x20—\x20Guard\x20resolves\x20names\x20at\x20evaluation\x20time,\x20not\x20at\x20creation\x20time.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5/month.\x20Author\x20publishes\x20content\x20→\x20\x27Deliver\x27\x20forward\x20advances\x20Ordered→ContentPublished.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20node\x20(not\x20already\x20delivered),\x20AND\x20(2)\x20Signer\x20holds\x20permission\x20index\x201000\x20on\x20author\x27s\x20Permission\x20object.\x20'+'Prevents\x20a\x20malicious\x20party\x20from\x20publishing\x20fake\x20content.\x20Subscriber\x20cannot\x20trigger\x20\x27Deliver\x27\x20(lacks\x20permission).','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_cancel','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20cancel\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20cancel\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-cancel\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20is\x20the\x20order\x20owner\x20(subscriber).\x20Allows\x20subscriber\x20to\x20cancel\x20within\x20grace\x20period\x20'+'for\x20full\x20refund.\x20Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Cancelled\x20(terminal-cancel),\x20with\x20refund\x20via\x20Allocation\x20template.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_cancel_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20cancel\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_cancel_node}','name':'Expected\x20pre-cancel\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20order.owner\x20(id\x201202,\x20Address)\x20—\x20order\x20holder\x20(subscriber).','SUBSCRIBER-ONLY:\x20only\x20the\x20order\x20owner\x20can\x20cancel\x20—\x20prevents\x20third-party\x20griefing.\x20Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.','GRACE\x20PERIOD:\x20this\x20guard\x20does\x20NOT\x20enforce\x20a\x20time\x20window.\x20If\x20a\x20grace\x20period\x20is\x20needed\x20(e.g.\x20cancel\x20within\x2024h\x20of\x20payment),\x20add\x20a\x20third\x20condition:\x20context(Clock)\x20<=\x20order.time\x20+\x20grace_period.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Cancelled\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5,\x20then\x20changes\x20mind\x20before\x20content\x20is\x20published.\x20\x27Cancel\x27\x20forward\x20advances\x20Ordered→Cancelled.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20(not\x20yet\x20delivered),\x20AND\x20(2)\x20Signer\x20is\x20the\x20order\x20owner.\x20'+'Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.\x20Refund\x20triggers\x20automatically\x20via\x20Allocation\x20on\x20\x27Cancelled\x27\x20node.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_refund','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20refund\x20verification\x20(Substack-style,\x20arbitration-triggered)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20dispute/refund\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-dispute\x20node\x20'+'(e.g.\x20\x27Disputed\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20arbitrator\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Only\x20the\x20arbitrator\x20can\x20advance\x20Disputed→Refunded,\x20ensuring\x20dispute\x20resolution\x20is\x20impartial.\x20'+'Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Disputed\x20→\x20Refunded\x20(terminal-dispute).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_refund_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20refund\x20(e.g.\x20\x27Disputed\x27)','required':!![],'default':'Disputed','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(arbitrator\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'arbitrator_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20arbitrator\x20role\x20(who\x20can\x20resolve\x20disputes)','required':!![],'default':'1500','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator.'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_refund_node}','name':'Expected\x20pre-refund\x20node\x20name\x20(e.g.\x20\x27Disputed\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20arbitrator\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${arbitrator_permission_index}','name':'Arbitrator\x20permission\x20index\x20(e.g.\x201500)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index).','ARBITRATOR-ONLY:\x20only\x20the\x20arbitrator\x20(permission\x20index\x201500)\x20can\x20advance\x20Disputed→Refunded.\x20Neither\x20author\x20nor\x20subscriber\x20can\x20self-resolve.','ARBITRATIONS\x20BINDING:\x20Service\x20MUST\x20have\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21\x20—\x20post-publish\x20immutable).\x20ConfirmGate\x20C-S-19\x20+\x20QS11\x20will\x20warn\x20if\x20publish\x20is\x20attempted\x20without\x20arbitrations.','DISPUTE\x20ENTRY:\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed)\x20is\x20triggered\x20by\x20subscriber\x20(order.owner).\x20After\x20Disputed,\x20only\x20arbitrator\x20can\x20resolve.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Refunded\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Disputed\x27\x20has\x20competing\x20forwards\x20(Resolve-Refund|Resolve-Reject),\x20each\x20with\x20its\x20own\x20guard.\x20First\x20guard\x20to\x20verify\x20wins.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20disputes\x20content\x20quality.\x20Subscriber\x20triggers\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed).\x20'+'Arbitrator\x20reviews\x20evidence\x20and\x20triggers\x20\x27Resolve-Refund\x27\x20forward\x20(Disputed→Refunded).\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Disputed\x27\x20(dispute\x20properly\x20opened),\x20AND\x20(2)\x20Signer\x20holds\x20arbitrator\x20permission\x20index\x201500.\x20'+'Author\x20cannot\x20self-resolve.\x20Subscriber\x20cannot\x20self-refund.','verifier_constraint_level':'level2_identity_set'}];export function getTemplatesByScene(a){return GUARD_TEMPLATES['filter'](b=>b['scene_id']===a);}export function getTemplateById(a){return GUARD_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByIndustry(a){return GUARD_TEMPLATES['filter'](b=>b['applicable_industries']['includes'](a));}export function getTemplatesByPattern(a){return GUARD_TEMPLATES['filter'](b=>b['recommended_patterns']['includes'](a));}export function listGuardTemplates(){return GUARD_TEMPLATES;}export function suggestTemplateForScene(a){return GUARD_TEMPLATES['find'](b=>b['scene_id']===a);}export function getTemplateParameters(a){const b=getTemplateById(a);return b?.['parameters']??[];}export function validateTemplateParams(a,b){const c=getTemplateById(a);if(!c)return{'valid':![],'missing':['template_not_found']};const d=c['parameters']['filter'](e=>e['required']&&!(e['name']in b))['map'](e=>e['name']);return{'valid':d['length']===0x0,'missing':d};}function deepSubstitute(a,b){if(typeof a==='string'){const c=a['match'](/^\$\{(\w+)\}$/);if(c&&c[0x1]in b)return b[c[0x1]];return a['replace'](/\$\{(\w+)\}/g,(d,e)=>e in b?String(b[e]):'${'+e+'}');}if(Array['isArray'](a))return a['map'](d=>deepSubstitute(d,b));if(a&&typeof a==='object'){const d={};for(const [e,f]of Object['entries'](a)){d[e]=deepSubstitute(f,b);}return d;}return a;}export function fillGuardTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20not\x20found:\x20'+a};const {valid:d,missing:e}=validateTemplateParams(a,b);if(!d)return{'ok':![],'error':'Missing\x20required\x20parameters:\x20'+e['join'](',\x20'),'missing':e};const f={...b};for(const j of c['parameters']){!(j['name']in f)&&j['default']!==undefined&&(f[j['name']]=j['default']);}const g=deepSubstitute(c['example_table'],f),h=deepSubstitute(c['example_root'],f),i=JSON['stringify']({'table':g,'root':h})['match'](/\$\{(\w+)\}/);if(i)return{'ok':![],'error':'Unresolved\x20placeholder\x20${'+i[0x1]+'}\x20—\x20not\x20declared\x20in\x20template\x20parameters'};return{'ok':!![],'table':g,'root':h};}export const GUARD_TEMPLATES_VERSION='1.0.0';export const GUARD_TEMPLATES_COUNT=GUARD_TEMPLATES['length'];