@wowok/agent-mcp 3.1.3 → 3.1.4

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 (379) 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-query-impl/index.d.ts +9 -0
  320. package/dist/schema-query-impl/index.js +1 -1
  321. package/dist/schemas/benchmark_migration_operation.output.json +793 -0
  322. package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
  323. package/dist/schemas/bridge_operation.schema.json +5 -5
  324. package/dist/schemas/config_operation.output.json +252 -0
  325. package/dist/schemas/config_operation.schema.json +21 -1
  326. package/dist/schemas/evaluation_operation.output.json +22 -10
  327. package/dist/schemas/goal_operation.schema.json +8 -8
  328. package/dist/schemas/guard2file.schema.json +1 -1
  329. package/dist/schemas/index.json +7 -1
  330. package/dist/schemas/machineNode2file.schema.json +1 -1
  331. package/dist/schemas/messenger_operation.schema.json +24 -12
  332. package/dist/schemas/onchain_events.output.json +1 -1
  333. package/dist/schemas/onchain_operations.output.json +4 -2
  334. package/dist/schemas/onchain_operations.schema.json +189 -139
  335. package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
  336. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
  337. package/dist/schemas/onchain_operations_contact.schema.json +7 -5
  338. package/dist/schemas/onchain_operations_demand.schema.json +7 -5
  339. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
  340. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  341. package/dist/schemas/onchain_operations_guard.schema.json +5 -3
  342. package/dist/schemas/onchain_operations_machine.schema.json +22 -18
  343. package/dist/schemas/onchain_operations_order.schema.json +11 -7
  344. package/dist/schemas/onchain_operations_payment.schema.json +3 -3
  345. package/dist/schemas/onchain_operations_permission.schema.json +19 -11
  346. package/dist/schemas/onchain_operations_personal.schema.json +16 -10
  347. package/dist/schemas/onchain_operations_progress.schema.json +11 -7
  348. package/dist/schemas/onchain_operations_proof.schema.json +5 -3
  349. package/dist/schemas/onchain_operations_repository.schema.json +12 -8
  350. package/dist/schemas/onchain_operations_reward.schema.json +11 -9
  351. package/dist/schemas/onchain_operations_service.schema.json +28 -22
  352. package/dist/schemas/onchain_operations_treasury.schema.json +11 -9
  353. package/dist/schemas/onchain_table_data.output.json +27 -17
  354. package/dist/schemas/persona_operation.output.json +15875 -1
  355. package/dist/schemas/persona_operation.schema.json +3056 -478
  356. package/dist/schemas/query_toolkit.output.json +343 -63
  357. package/dist/schemas/query_toolkit.schema.json +1 -1
  358. package/dist/schemas/workflow_operation.schema.json +4 -2
  359. package/dist/strategy/scorecard.js +1 -1
  360. package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
  361. package/dist/tools/handlers/benchmark-migration.js +1 -0
  362. package/dist/tools/handlers/config.js +1 -1
  363. package/dist/tools/handlers/industry-pack.js +1 -1
  364. package/dist/tools/handlers/onchain.js +1 -1
  365. package/dist/tools/handlers/query.js +1 -1
  366. package/dist/tools/handlers/schema-query.js +1 -1
  367. package/dist/tools/index.js +1 -1
  368. package/dist/tools/move-fn-index.gen.d.ts +3 -0
  369. package/dist/tools/move-fn-index.gen.js +1 -0
  370. package/dist/tools/registry/business.js +1 -1
  371. package/dist/tools/registry/config.js +1 -1
  372. package/dist/tools/registry/evaluation.js +1 -1
  373. package/dist/tools/registry/onchain.js +1 -1
  374. package/dist/tools/sanitize-output.d.ts +3 -0
  375. package/dist/tools/sanitize-output.js +1 -0
  376. package/dist/tools/sanitize-output.spec.d.ts +1 -0
  377. package/dist/tools/sanitize-output.spec.js +1 -0
  378. package/package.json +9 -4
  379. package/dist/knowledge/baselines/evaluation-baselines.json +0 -79
@@ -1 +1 @@
1
- import*as a147a from'fs';import*as a147b from'os';import*as a147c from'path';export const SKILLS_PACKAGE='@wowok/skills';export const SKILLS_INSTALL_COMMAND='npm\x20install\x20-g\x20@wowok/skills';export const SKILLS_DOCTOR_COMMAND='wowok-skills\x20doctor';export const SKILLS_REPAIR_COMMAND='wowok-skills\x20init\x20--force';export const COLD_START_SECONDS=0x14;export const SKILL_ROLES=['wowok-onboard','wowok-provider','wowok-order','wowok-supplier','wowok-collaborator','wowok-machine','wowok-arbitrator','wowok-messenger','wowok-market','wowok-governance','wowok-planner','wowok-auditor','wowok-output'];export const COMMON_GOALS=[{'goal':'Onboard\x20a\x20new\x20merchant\x20and\x20publish\x20a\x20commercial\x20service\x20end-to-end','skills':['wowok-onboard','wowok-provider'],'tools':['goal_operation','onchain_operations','query_toolkit']},{'goal':'Design\x20or\x20modify\x20a\x20Machine\x20workflow\x20(nodes,\x20forwards,\x20guards)','skills':['wowok-machine','wowok-auditor'],'tools':['onchain_operations','machineNode2file','guard2file']},{'goal':'Evaluate\x20or\x20buy\x20a\x20service\x20/\x20handle\x20an\x20in-order\x20customer\x20lifecycle','skills':['wowok-order'],'tools':['query_toolkit','onchain_operations','messenger_operation']},{'goal':'Fulfill\x20a\x20sub-order\x20as\x20a\x20supplier\x20and\x20collect\x20settlement','skills':['wowok-supplier','wowok-collaborator'],'tools':['watch_operation','workflow_operation','keeper_operation']},{'goal':'Operate\x20order\x20workflows\x20/\x20advance\x20progress\x20on\x20behalf\x20of\x20a\x20merchant','skills':['wowok-collaborator'],'tools':['workflow_operation','watch_operation','keeper_operation']},{'goal':'Handle\x20a\x20dispute\x20or\x20run\x20an\x20arbitration\x20service','skills':['wowok-arbitrator','wowok-messenger'],'tools':['evaluation_operation','onchain_operations','messenger_operation']},{'goal':'Govern\x20permissions,\x20treasury\x20funds\x20and\x20the\x20on-chain\x20profile\x20after\x20setup','skills':['wowok-governance'],'tools':['permission_operation','onchain_operations','query_toolkit']},{'goal':'Obtain\x20WOW\x20gas\x20/\x20payment\x20tokens\x20before\x20the\x20first\x20transaction','skills':['wowok-onboard'],'tools':['wowok_buildin_info','bridge_operation','account_operation']}];function candidateSkillRoots(a){const b=a147b['homedir'](),c=[a147c['join'](b,'.claude','skills'),a147c['join'](b,'.agents','skills'),a147c['join'](b,'.codex','skills'),a147c['join'](b,'.cursor','skills'),a147c['join'](b,'.codebuddy','skills'),a147c['join'](b,'.kilo','skills'),a147c['join'](b,'.roo','skills'),a147c['join'](b,'.cline','skills'),a147c['join'](b,'.copilot','skills'),a147c['join'](b,'.codeium','windsurf','skills'),a147a['existsSync'](a147c['join'](b,'.trae-cn','skills'))?a147c['join'](b,'.trae-cn','skills'):a147c['join'](b,'.trae','skills')],d=['.agents/skills','.claude/skills','.cursor/skills','.trae/skills','.codebuddy/skills','.roo/skills','.cline/skills','.kilo/skills','.github/skills']['map'](e=>a147c['resolve'](a,e));return[...new Set([...c,...d])];}function rootHasWowokSkill(a){let b;try{b=a147a['readdirSync'](a,{'withFileTypes':!![]});}catch{return![];}if(b['some'](c=>c['isFile']()&&c['name']==='.wowok-skills.json'))return!![];return b['some'](c=>c['isDirectory']()&&c['name']['startsWith']('wowok-'));}export function detectInstalledSkills(a=process['cwd']()){const b=[];for(const c of candidateSkillRoots(a)){try{if(rootHasWowokSkill(c))b['push'](c);}catch{}}return{'status':b['length']>0x0?'detected':'not_detected','detected_roots':b};}export function getGettingStarted(a=process['cwd']()){return{'skills':{'what':'WoWok\x20Skills\x20are\x20role-based\x20playbooks\x20(SKILL.md\x20files\x20installed\x20into\x20AI\x20clients)\x20that\x20sit\x20on\x20top\x20of\x20this\x20MCP\x20server.\x20The\x20MCP\x20exposes\x20the\x20tools;\x20the\x20skills\x20tell\x20an\x20agent\x20WHEN\x20and\x20in\x20what\x20ORDER\x20to\x20use\x20them\x20for\x20complex\x20goals\x20(onboarding,\x20buying,\x20fulfillment,\x20arbitration,\x20governance),\x20and\x20materially\x20reduce\x20failed\x20calls.\x20This\x20server\x20works\x20without\x20them;\x20with\x20them\x20loaded,\x20agents\x20start\x20from\x20structured\x20guidance\x20instead\x20of\x20discovering\x20sub-tools\x20by\x20trial\x20and\x20error.','package':SKILLS_PACKAGE,'recommended':!![],'install_command':SKILLS_INSTALL_COMMAND,'doctor_command':SKILLS_DOCTOR_COMMAND,'repair_command':SKILLS_REPAIR_COMMAND,'detection':detectInstalledSkills(a),'detection_note':'Best-effort\x20scan\x20of\x20standard\x20client\x20skill\x20roots\x20on\x20this\x20machine.\x20`wowok-skills\x20doctor`\x20is\x20authoritative\x20and\x20also\x20reports\x20MCP\x20registration\x20state\x20per\x20client.\x20If\x20detection\x20says\x20not_detected\x20but\x20skills\x20were\x20installed\x20for\x20a\x20client\x20with\x20a\x20non-standard\x20root,\x20trust\x20doctor.','roles':[...SKILL_ROLES]},'cold_start':{'ready_seconds':COLD_START_SECONDS,'note':'The\x20first\x20call\x20after\x20the\x20server\x20boots\x20can\x20take\x20around\x2020\x20seconds\x20while\x20@wowok/agent-mcp\x20is\x20bootstrapped\x20(especially\x20via\x20npx\x20on\x20Windows).\x20A\x20transport\x20timeout\x20on\x20the\x20FIRST\x20call\x20is\x20startup\x20latency,\x20not\x20a\x20broken\x20server\x20—\x20wait\x20and\x20retry;\x20subsequent\x20calls\x20are\x20fast.\x20Never\x20interpret\x20a\x20delayed\x20first\x20response\x20as\x20a\x20failed\x20on-chain\x20transaction.'},'common_goals':COMMON_GOALS['map'](b=>({...b,'skills':[...b['skills']],'tools':[...b['tools']]})),'first_calls':['wowok_buildin_info\x20info=\x27getting\x20started\x27\x20—\x20this\x20orientation','wowok_buildin_info\x20info=\x27current\x20network\x27\x20—\x20which\x20chain\x20(mainnet/testnet)\x20the\x20SDK\x20defaults\x20to','wowok_buildin_info\x20info=\x27funding\x20guidance\x27\x20—\x20testnet\x20faucet\x20/\x20mainnet\x20bridge\x20/\x20airdrop','wowok_buildin_info\x20info=\x27upgrade_check\x27\x20—\x20whether\x20the\x20MCP\x20server\x20and\x20SDK\x20are\x20current','schema_query\x20action=\x27list\x27\x20—\x20enumerate\x20every\x20sub-tool\x20and\x20fetch\x20its\x20input\x20schema']};}
1
+ import*as a166a from'fs';import*as a166b from'os';import*as a166c from'path';export const SKILLS_PACKAGE='@wowok/skills';export const SKILLS_INSTALL_COMMAND='npm\x20install\x20-g\x20@wowok/skills';export const SKILLS_DOCTOR_COMMAND='wowok-skills\x20doctor';export const SKILLS_REPAIR_COMMAND='wowok-skills\x20init\x20--force';export const COLD_START_SECONDS=0x14;export const SKILL_ROLES=['wowok-onboard','wowok-provider','wowok-order','wowok-supplier','wowok-collaborator','wowok-machine','wowok-arbitrator','wowok-messenger','wowok-market','wowok-governance','wowok-planner','wowok-auditor','wowok-output'];export const COMMON_GOALS=[{'goal':'Onboard\x20a\x20new\x20merchant\x20and\x20publish\x20a\x20commercial\x20service\x20end-to-end','skills':['wowok-onboard','wowok-provider'],'tools':['goal_operation','onchain_operations','query_toolkit']},{'goal':'Design\x20or\x20modify\x20a\x20Machine\x20workflow\x20(nodes,\x20forwards,\x20guards)','skills':['wowok-machine','wowok-auditor'],'tools':['onchain_operations','machineNode2file','guard2file']},{'goal':'Evaluate\x20or\x20buy\x20a\x20service\x20/\x20handle\x20an\x20in-order\x20customer\x20lifecycle','skills':['wowok-order'],'tools':['query_toolkit','onchain_operations','messenger_operation']},{'goal':'Fulfill\x20a\x20sub-order\x20as\x20a\x20supplier\x20and\x20collect\x20settlement','skills':['wowok-supplier','wowok-collaborator'],'tools':['watch_operation','workflow_operation','keeper_operation']},{'goal':'Operate\x20order\x20workflows\x20/\x20advance\x20progress\x20on\x20behalf\x20of\x20a\x20merchant','skills':['wowok-collaborator'],'tools':['workflow_operation','watch_operation','keeper_operation']},{'goal':'Handle\x20a\x20dispute\x20or\x20run\x20an\x20arbitration\x20service','skills':['wowok-arbitrator','wowok-messenger'],'tools':['evaluation_operation','onchain_operations','messenger_operation']},{'goal':'Govern\x20permissions,\x20treasury\x20funds\x20and\x20the\x20on-chain\x20profile\x20after\x20setup','skills':['wowok-governance'],'tools':['permission_operation','onchain_operations','query_toolkit']},{'goal':'Obtain\x20WOW\x20gas\x20/\x20payment\x20tokens\x20before\x20the\x20first\x20transaction','skills':['wowok-onboard'],'tools':['wowok_buildin_info','bridge_operation','account_operation']}];function candidateSkillRoots(a){const b=a166b['homedir'](),c=[a166c['join'](b,'.claude','skills'),a166c['join'](b,'.agents','skills'),a166c['join'](b,'.codex','skills'),a166c['join'](b,'.cursor','skills'),a166c['join'](b,'.codebuddy','skills'),a166c['join'](b,'.kilo','skills'),a166c['join'](b,'.roo','skills'),a166c['join'](b,'.cline','skills'),a166c['join'](b,'.copilot','skills'),a166c['join'](b,'.codeium','windsurf','skills'),a166a['existsSync'](a166c['join'](b,'.trae-cn','skills'))?a166c['join'](b,'.trae-cn','skills'):a166c['join'](b,'.trae','skills')],d=['.agents/skills','.claude/skills','.cursor/skills','.trae/skills','.codebuddy/skills','.roo/skills','.cline/skills','.kilo/skills','.github/skills']['map'](e=>a166c['resolve'](a,e));return[...new Set([...c,...d])];}function rootHasWowokSkill(a){let b;try{b=a166a['readdirSync'](a,{'withFileTypes':!![]});}catch{return![];}if(b['some'](c=>c['isFile']()&&c['name']==='.wowok-skills.json'))return!![];return b['some'](c=>c['isDirectory']()&&c['name']['startsWith']('wowok-'));}export function detectInstalledSkills(a=process['cwd']()){const b=[];for(const c of candidateSkillRoots(a)){try{if(rootHasWowokSkill(c))b['push'](c);}catch{}}return{'status':b['length']>0x0?'detected':'not_detected','detected_roots':b};}export function getGettingStarted(a=process['cwd']()){return{'skills':{'what':'WoWok\x20Skills\x20are\x20role-based\x20playbooks\x20(SKILL.md\x20files\x20installed\x20into\x20AI\x20clients)\x20that\x20sit\x20on\x20top\x20of\x20this\x20MCP\x20server.\x20The\x20MCP\x20exposes\x20the\x20tools;\x20the\x20skills\x20tell\x20an\x20agent\x20WHEN\x20and\x20in\x20what\x20ORDER\x20to\x20use\x20them\x20for\x20complex\x20goals\x20(onboarding,\x20buying,\x20fulfillment,\x20arbitration,\x20governance),\x20and\x20materially\x20reduce\x20failed\x20calls.\x20This\x20server\x20works\x20without\x20them;\x20with\x20them\x20loaded,\x20agents\x20start\x20from\x20structured\x20guidance\x20instead\x20of\x20discovering\x20sub-tools\x20by\x20trial\x20and\x20error.','package':SKILLS_PACKAGE,'recommended':!![],'install_command':SKILLS_INSTALL_COMMAND,'doctor_command':SKILLS_DOCTOR_COMMAND,'repair_command':SKILLS_REPAIR_COMMAND,'detection':detectInstalledSkills(a),'detection_note':'Best-effort\x20scan\x20of\x20standard\x20client\x20skill\x20roots\x20on\x20this\x20machine.\x20`wowok-skills\x20doctor`\x20is\x20authoritative\x20and\x20also\x20reports\x20MCP\x20registration\x20state\x20per\x20client.\x20If\x20detection\x20says\x20not_detected\x20but\x20skills\x20were\x20installed\x20for\x20a\x20client\x20with\x20a\x20non-standard\x20root,\x20trust\x20doctor.','roles':[...SKILL_ROLES]},'cold_start':{'ready_seconds':COLD_START_SECONDS,'note':'The\x20first\x20call\x20after\x20the\x20server\x20boots\x20can\x20take\x20around\x2020\x20seconds\x20while\x20@wowok/agent-mcp\x20is\x20bootstrapped\x20(especially\x20via\x20npx\x20on\x20Windows).\x20A\x20transport\x20timeout\x20on\x20the\x20FIRST\x20call\x20is\x20startup\x20latency,\x20not\x20a\x20broken\x20server\x20—\x20wait\x20and\x20retry;\x20subsequent\x20calls\x20are\x20fast.\x20Never\x20interpret\x20a\x20delayed\x20first\x20response\x20as\x20a\x20failed\x20on-chain\x20transaction.'},'common_goals':COMMON_GOALS['map'](b=>({...b,'skills':[...b['skills']],'tools':[...b['tools']]})),'first_calls':['wowok_buildin_info\x20info=\x27getting\x20started\x27\x20—\x20this\x20orientation','wowok_buildin_info\x20info=\x27current\x20network\x27\x20—\x20which\x20chain\x20(mainnet/testnet)\x20the\x20SDK\x20defaults\x20to','wowok_buildin_info\x20info=\x27funding\x20guidance\x27\x20—\x20testnet\x20faucet\x20/\x20mainnet\x20bridge\x20/\x20airdrop','wowok_buildin_info\x20info=\x27upgrade_check\x27\x20—\x20whether\x20the\x20MCP\x20server\x20and\x20SDK\x20are\x20current','schema_query\x20action=\x27list\x27\x20—\x20enumerate\x20every\x20sub-tool\x20and\x20fetch\x20its\x20input\x20schema']};}
@@ -1 +1 @@
1
- export const GUARD_DESIGN_PATTERNS=[{'id':'pattern.identity_check_single','business_requirement':'Only\x20the\x20author\x20can\x20purchase\x20this\x20service\x20(strict\x20single-identity)','data_source':'SystemContext','host':'service_buy_guard','verifier_level':'level1_strict_single','logic_summary':'logic_equal[context(Signer),\x20identifier[N](fixed_address)]','key_queries':[],'mitigated_risks':['R-C4-04'],'notes':['Maximally\x20secure\x20but\x20maximally\x20inconvenient','If\x20address\x20is\x20unavailable\x20(key\x20loss,\x20rotation),\x20Guard\x20permanently\x20blocks','Avoid\x20unless\x20role\x20is\x20permanently\x20tied\x20to\x20one\x20address']},{'id':'pattern.identity_check_allowlist','business_requirement':'Customer\x20must\x20be\x20in\x20an\x20allowlist\x20to\x20purchase','data_source':'SystemContext','host':'service_buy_guard','verifier_level':'level2_identity_set','logic_summary':'vec_contains_address[identifier[N](allowlist_vec),\x20context(Signer)]','key_queries':[],'mitigated_risks':['R-C4-04'],'notes':['Allowlist\x20stored\x20as\x20Address\x20vector\x20in\x20table\x20constant']},{'id':'pattern.identity_check_order_holder','business_requirement':'Only\x20order\x20owner\x20or\x20agent\x20can\x20perform\x20operation','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'level2_identity_set','logic_summary':'logic_or[logic_equal[query(1562\x20order.owner),\x20context(Signer)],\x20query(1567\x20order.agent\x20has,\x20Signer)]','key_queries':['order.owner','order.agent\x20has'],'mitigated_risks':['R-C4-04','R-C3-06'],'notes':['1562\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal','1567\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child','Recommended\x20Level\x202\x20alternative\x20to\x20Level\x201\x20strict\x20binding']},{'id':'pattern.identity_check_service_provider_dynamic','business_requirement':'Verify\x20caller\x20is\x20service\x27s\x20current\x20permission\x20owner\x20(survives\x20permission\x20rotation)','data_source':'SubmittedObject','host':'machine_forward','verifier_level':'level2_identity_set','logic_summary':'logic_and[logic_equal[query(1488\x20service.permission),\x20identifier[N](submitted_perm)],\x20logic_or[logic_equal[query(1002\x20permission.owner),\x20context(Signer)],\x20query(1004\x20permission.admin\x20has,\x20Signer)]]','key_queries':['service.permission','permission.owner','permission.admin\x20has'],'mitigated_risks':['R-C4-04','R-C3-05'],'notes':['Dynamic\x20permission\x20address\x20(RECOMMENDED)\x20—\x20survives\x20Service\x20permission\x20rotation','Caller\x20submits\x20permission\x20address;\x20Guard\x20verifies\x20match\x20then\x20checks\x20identity','More\x20complex\x20than\x20static\x20but\x20far\x20more\x20robust']},{'id':'pattern.time_lock_progress','business_requirement':'Customer\x20must\x20wait\x20N\x20hours\x20before\x20completing\x20(time-lock)','data_source':'WitnessDerived','host':'machine_forward','verifier_level':'none','logic_summary':'logic_as_u256_ge[context(Clock),\x20calc_number_add[query(1272\x20progress.current_time,\x20witness=OrderProgress),\x20identifier[N](duration_ms)]]','key_queries':['progress.current_time'],'witness_types':['OrderProgress'],'mitigated_risks':[],'notes':['Use\x20convert_witness=100\x20(OrderProgress)\x20to\x20derive\x20Progress\x20from\x20submitted\x20Order\x20ID','Duration\x20in\x20milliseconds\x20—\x20test\x20with\x20small\x20values\x20first']},{'id':'pattern.time_lock_absolute','business_requirement':'Operation\x20allowed\x20only\x20after\x20a\x20fixed\x20timestamp','data_source':'SystemContext','host':'service_buy_guard','verifier_level':'none','logic_summary':'logic_as_u256_ge[context(Clock),\x20identifier[N](release_timestamp)]','key_queries':[],'mitigated_risks':[],'notes':['Useful\x20for\x20pre-sale\x20windows,\x20embargo\x20periods']},{'id':'pattern.repository_data_check','business_requirement':'External\x20data\x20must\x20match\x20expected\x20value\x20(e.g.,\x20weather,\x20price\x20feed)','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'none','logic_summary':'logic_equal[query(1167\x20repository.data,\x20policy,\x20key),\x20identifier[N](expected_value)]','key_queries':['repository.data'],'mitigated_risks':[],'notes':['Repository\x20address\x20declared\x20as\x20table\x20constant','Timestamp\x20keys\x20may\x20need\x20convert_number_address','quote_guard\x20context:\x20fails\x20in\x20gen_passport\x20(impack_list\x20empty),\x20works\x20in\x20on-chain\x20business\x20operations\x20(see\x20R-X1-10)']},{'id':'pattern.repository_quote_guard_subscription','business_requirement':'Repository\x20data\x20access\x20requires\x20payment\x20proof\x20(subscription\x20revenue\x20model)','data_source':'SubmittedObject','host':'repository_write','verifier_level':'level3_scene_combined','logic_summary':'Repository\x20policy\x20sets\x20quote_guard\x20(is_depended:\x20immutable\x20+\x20rep=true).\x20'+'When\x20a\x20Guard\x20queries\x20this\x20Repository\x27s\x20data\x20(query\x201167),\x20check_repository_quote_guard\x20verifies\x20'+'the\x20quote_guard\x20is\x20in\x20impack_list.\x20The\x20quote_guard\x20itself\x20verifies\x20a\x20submitted\x20Payment\x20'+'(payment.info.for\x20matches\x20Repository,\x20payment.amount\x20meets\x20subscription\x20price).\x20'+'User\x20submits\x20Payment\x20via\x20Passport\x20→\x20quote_guard\x20verified\x20→\x20added\x20to\x20impack_list\x20→\x20query\x201167\x20passes.','key_queries':['repository.data','payment.info.for','payment.amount'],'mitigated_risks':['R-X1-10'],'applicable_industries':['subscription','travel','rental','education'],'notes':['VERIFIED:\x20passport.rs#L545-612\x20(check_repository_quote_guard),\x20passport.rs#L758-769\x20(trigger\x20at\x20query_id==1167)','Repository.owner_receive<T>\x20accepts\x20Payment\x20as\x20subscription\x20revenue\x20(repository.move#L714-717)','quote_guard\x20must\x20be\x20is_depended:\x20immutable=true,\x20relies\x20empty,\x20rep=true\x20(guard.move#L133-135)','VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20valid\x20Payment,\x20quote_guard\x20verifies\x20Payment\x20fields\x20—\x20no\x20object-linker\x20binding\x20needed','gen_passport\x20context:\x20quote_guard\x20fails\x20(impack_list\x20empty)\x20—\x20only\x20use\x20for\x20on-chain\x20business\x20operations','Business\x20model:\x20data\x20provider\x20publishes\x20weather/market/oracle\x20data\x20to\x20Repository,\x20'+'users\x20pay\x20subscription\x20to\x20access\x20data\x20in\x20their\x20Machine\x20flows','MODE\x20A\x20(direct\x20payment\x20verify)\x20—\x20four\x20verifiable\x20elements\x20on\x20the\x20submitted\x20Payment:\x20'+'1)\x20amount:\x20logic_as_u256_ge[payment.amount,\x20N]\x20(>=\x20subscription\x20price);\x20'+'2)\x20subscription\x20type:\x20payment.info.remark\x20/\x20payment.info.index\x20encodes\x20the\x20tier/plan;\x20'+'3)\x20fixed\x20recipient:\x20payment.record.recipient\x20must\x20equal\x20the\x20designated\x20payee\x20(Treasury/owner\x20address);\x20'+'4)\x20occurrence\x20time:\x20payment.time\x20within\x20the\x20validity\x20window\x20(logic_as_u256_ge/le\x20vs\x20context(Clock))','Payment\x20is\x20freeze_object\x20after\x20creation\x20—\x20all\x20four\x20elements\x20are\x20tamper-proof\x20evidence','For\x20a\x20LOWER\x20user-cost\x20variant\x20(no\x20per-user\x20payment\x20submission),\x20see\x20pattern.repository_whitelist_sync\x20(Mode\x20B)']},{'id':'pattern.repository_whitelist_sync','business_requirement':'Entitlement\x20check\x20via\x20a\x20synced\x20allowlist\x20Repository\x20instead\x20of\x20per-user\x20payment\x20submission\x20(low-friction\x20entitlements:\x20memberships,\x20authorizations,\x20paid-user\x20lists)','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'none','logic_summary':'Off-chain\x20collector\x20gathers\x20eligible\x20users\x20(transfers\x20/\x20Payments\x20to\x20the\x20designated\x20receiving\x20address\x20or\x20object,\x20'+'Service\x20orders,\x20or\x20any\x20off-chain\x20record)\x20and\x20syncs\x20the\x20list\x20into\x20a\x20dedicated\x20Repository\x20object\x20'+'(entries\x20may\x20carry\x20a\x20validity\x20window,\x20e.g.\x20authorized\x20time\x20period).\x20'+'The\x20consuming\x20Guard\x20checks\x20membership\x20via\x20query\x201166/1167\x20(repository.data)\x20keyed\x20by\x20the\x20caller:\x20'+'vec_contains_address-style\x20logic_or\x20over\x20[repository.data(key=Signer)]\x20or\x20logic_equal[repository.data(...),\x20identifier[N](expected)].\x20'+'Repository\x20writes\x20go\x20through\x20id_data\x20/\x20id_data_add\x20/\x20id_data_remove\x20(batch\x20up\x20to\x20100\x20entries\x20per\x20tx).','key_queries':['repository.data'],'mitigated_risks':['R-X1-10'],'applicable_industries':['subscription','travel','rental','education'],'notes':['MODE\x20B\x20(whitelist\x20sync)\x20—\x20user-cost\x20optimization\x20of\x20Mode\x20A\x20(pattern.repository_quote_guard_subscription):\x20'+'users\x20do\x20NOT\x20submit\x20a\x20Payment\x20at\x20verification\x20time;\x20the\x20operator\x20proves\x20eligibility\x20off-chain\x20and\x20syncs\x20the\x20roster','TRADE-OFF:\x20eventual\x20consistency\x20—\x20the\x20roster\x20updates\x20at\x20the\x20collector\x27s\x20sync\x20frequency\x20(slight\x20delay),\x20'+'vs\x20Mode\x20A\x27s\x20instant\x20per-payment\x20proof.\x20Choose\x20by\x20business:\x20high-frequency\x20low-value\x20→\x20Mode\x20B;\x20'+'high-value\x20instant\x20entitlement\x20→\x20Mode\x20A','Entry\x20shape:\x20key\x20=\x20user\x20address\x20(or\x20derived\x20id),\x20value\x20=\x20expiry\x20timestamp\x20/\x20tier\x20/\x20scope;\x20'+'time-window\x20enforcement\x20compares\x20entry\x20value\x20against\x20context(Clock)\x20in\x20the\x20Guard','VERIFIED:\x20repository.move\x20id_data*\x20(batch\x20≤100),\x20guard-ins.ts\x201166/1167\x20(repository.data\x20queries),\x20'+'guard.move\x20is_depended\x20(1167\x20marks\x20query-only\x20repositories)','The\x20collector\x20can\x20source\x20eligibility\x20from:\x20transfers\x20or\x20Payments\x20to\x20a\x20fixed\x20receiving\x20address/object,\x20'+'Service\x20orders\x20(order.service\x20==\x20designated\x20service),\x20or\x20external\x20off-chain\x20records','Repository\x20access\x20economics\x20stay\x20OUT\x20of\x20this\x20pattern\x20(K3\x2010\x20§5\x20D5\x20ruling:\x20reuse\x20Reward/Allocation\x20'+'outside\x20the\x20Repository\x20for\x20payment;\x20the\x20Repository\x20here\x20is\x20the\x20roster,\x20not\x20the\x20payment\x20rail)']},{'id':'pattern.supply_chain_suborder_verification','business_requirement':'Sub-service\x20purchase\x20requires\x20ownership\x20of\x20main\x20service\x20order\x20(supply\x20chain\x20milestone\x20unlock)','data_source':'SubmittedObject','host':'service_buy_guard','verifier_level':'level2_identity_set','logic_summary':'Sub-service\x20buy_guard\x20verifies\x20submitted\x20main\x20Order:\x20'+'logic_and[logic_equal[query(order.owner),\x20context(Signer)],\x20logic_equal[query(order.service),\x20identifier[N](main_service_address)]].\x20'+'User\x20submits\x20main\x20Order\x20via\x20Passport\x20(b_submission=true),\x20buy_guard\x20verifies\x20ownership\x20+\x20service\x20match.','key_queries':['order.owner','order.service'],'mitigated_risks':['R-C3-05'],'applicable_industries':['travel','rental','education','freelance'],'notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20main\x20Order\x20as\x20evidence,\x20buy_guard\x20verifies\x20order.owner==Signer\x20AND\x20order.service==main_service','Each\x20milestone\x20=\x20one\x20sub-order\x20with\x20its\x20own\x20Service\x20+\x20buy_guard\x20referencing\x20the\x20main\x20order','Main\x20flow\x20can\x20branch\x20to\x20different\x20sub-services\x20based\x20on\x20Machine\x20node\x20progression','No\x20parent_order\x20field\x20needed\x20—\x20relationship\x20verified\x20via\x20buy_guard\x20querying\x20submitted\x20Order\x20fields','Enables\x20supply\x20chain\x20composition:\x20main\x20service\x20→\x20multiple\x20sub-services\x20with\x20conditional\x20access']},{'id':'pattern.payment_exception_compensation','business_requirement':'Exception\x20branch\x20triggers\x20compensation\x20Payment\x20(e.g.,\x20delivery\x20delay\x20>\x2030min\x20auto-compensates\x20customer)','data_source':'SubmittedObject','host':'machine_forward','verifier_level':'level3_scene_combined','logic_summary':'Exception\x20forward\x20guard\x20verifies\x204-dimensional\x20anti-reuse\x20binding:\x20logic_and['+'logic_equal[query(payment.info.for),\x20identifier[N](order_address)],\x20'+'logic_equal[query(payment.info.guard),\x20identifier[N](this_guard_address)],\x20'+'logic_as_u256_ge[query(payment.amount),\x20identifier[N](compensation_amount)],\x20'+'logic_as_u256_equal[query(payment.info.index),\x20query(progress.history\x20count)],\x20'+'logic_string_nocase_equal[query(payment.info.remark),\x20query(progress.current)]].\x20'+'Treasury\x20withdraws\x20to\x20customer\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=history_count_at_creation,\x20remark=node_name).\x20'+'Customer\x20submits\x20Payment\x20via\x20Passport;\x20guard\x20verifies\x20index\x20matches\x20current\x20unique\x20step\x20(progress.history\x20count,\x20U64,\x20monotonically\x20increasing\x20—\x20unique\x20even\x20in\x20cycles)\x20AND\x20remark\x20matches\x20current\x20node\x20name\x20(progress.current,\x20String\x20—\x20may\x20repeat\x20across\x20cycles\x20but\x20bound\x20to\x20this\x20step\x20by\x20index).','key_queries':['payment.info.for','payment.info.guard','payment.info.index','payment.info.remark','payment.amount','progress.history\x20count','progress.current'],'mitigated_risks':[],'applicable_industries':['rental','travel','general','freelance'],'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)','Payment\x20is\x20freeze_object\x20(immutable,\x20payment.move#L160)\x20—\x20cannot\x20be\x20modified\x20after\x20creation','VERIFIED\x20INDEX\x20QUERY:\x20progress.history\x20count\x20(id\x201273,\x20U64)\x20—\x20guard-ins.ts#L1228-1237.\x20From\x20progress.move\x20L440-441\x20(session_accomplish\x20pushes\x20a\x20new\x20History\x20entry)\x20+\x20L475/L482\x20(parent_table_vec::length\x20returns\x20current\x20session\x20id).\x20This\x20count\x20is\x20the\x20unique\x20monotonically\x20increasing\x20step\x20index\x20—\x20even\x20in\x20cycles,\x20each\x20entry\x20has\x20a\x20different\x20count.','VERIFIED\x20NODE\x20NAME\x20QUERY:\x20progress.current\x20(id\x201253,\x20String)\x20—\x20guard-ins.ts#L1025-1032.\x20Returns\x20the\x20current\x20node\x20name.\x20A\x20node\x20CAN\x20be\x20entered\x20multiple\x20times\x20in\x20cycles,\x20so\x20node\x20name\x20alone\x20is\x20NOT\x20unique\x20—\x20it\x20MUST\x20be\x20paired\x20with\x20progress.history\x20count\x20for\x20uniqueness.','DESIGN\x20INTENT\x20(USER):\x20to\x20validate\x20index\x20(U64\x20type),\x20use\x20progress.history\x20count\x20(unique,\x20non-repeating);\x20to\x20validate\x20node\x20name\x20(may\x20repeat\x20in\x20cycles),\x20store\x20it\x20in\x20PaymentInfo.remark\x20and\x20do\x20string\x20comparison\x20with\x20progress.current.','ANTI-REUSE\x204-DIMENSIONAL\x20BINDING:\x20for_object\x20(Order)\x20+\x20for_guard\x20(Guard)\x20+\x20index\x20(unique\x20step\x20via\x20progress.history\x20count)\x20+\x20remark\x20(node\x20name\x20via\x20progress.current).\x20Same\x20Payment\x20cannot\x20be\x20reused\x20in\x20other\x20contexts\x20—\x20at\x20least\x20one\x20field\x20will\x20mismatch.','VERIFIER-EVIDENCE\x20DESIGN:\x20customer\x20submits\x20Payment,\x20guard\x20verifies\x20binding\x20fields\x20match\x20current\x20context','Enables\x20user-friendly\x20exception\x20handling:\x20delay\x20→\x20auto-compensation\x20→\x20friendly\x20branch\x20flow','No\x20object-linker\x20binding\x20registration\x20needed\x20—\x20guard\x20only\x20verifies\x20submitted\x20Payment\x27s\x20field\x20accuracy']},{'id':'pattern.verifier_evidence_philosophy','business_requirement':'Guard\x20design\x20philosophy:\x20verifier\x20provides\x20evidence,\x20guard\x20verifies\x20logic\x20+\x20data\x20accuracy\x20(NOT\x20data\x20discovery)','data_source':'SubmittedObject','host':'gen_passport','verifier_level':'none','logic_summary':'Guard\x20is\x20a\x20PURE\x20VERIFICATION\x20engine.\x20Participants\x20submit\x20evidence\x20(Payment,\x20Order,\x20Proof,\x20etc.)\x20'+'via\x20Passport\x20submissions\x20(b_submission=true).\x20Guard\x20verifies:\x20(1)\x20logic\x20completeness,\x20(2)\x20data\x20usage\x20accuracy.\x20'+'Guard\x20does\x20NOT\x20discover/fetch\x20objects\x20via\x20object-linker\x20binding.\x20object-linker\x20binding\x20is\x20for\x20object\x20lifecycle\x20bookkeeping,\x20'+'NOT\x20for\x20guard\x20data\x20discovery.','key_queries':[],'mitigated_risks':['R-C3-05','R-C3-06'],'notes':['CORE\x20PRINCIPLE:\x20Guard\x20only\x20validates\x20submitted\x20evidence\x20—\x20it\x20never\x20fetches\x20data\x20on\x20its\x20own','For\x20Payment\x20verification:\x20user\x20submits\x20valid\x20Payment\x20→\x20guard\x20checks\x20for_object/for_guard/index\x20match','For\x20multi-order\x20verification:\x20verifier\x20submits\x20Order\x20data\x20→\x20guard\x20checks\x20service/owner\x20relationships','For\x20Repository\x20access:\x20user\x20submits\x20Payment\x20→\x20quote_guard\x20verifies\x20→\x20impack_list\x20updated\x20→\x20data\x20query\x20passes','Type\x203\x20(SubmittedObject)\x20data\x20source\x20class\x20embodies\x20this\x20philosophy\x20—\x20b_submission=true\x20entries','This\x20pattern\x20is\x20foundational\x20for\x20all\x20guard\x20designs\x20—\x20always\x20prefer\x20verifier-evidence\x20over\x20complex\x20object\x20discovery']},{'id':'pattern.progress_state_check','business_requirement':'Specific\x20forward\x20has\x20been\x20accomplished\x20(customer\x20confirms\x20delivery)','data_source':'WitnessDerived','host':'reward_claim','verifier_level':'none','logic_summary':'logic_equal[query_progress_history_find(...).accomplished,\x20identifier[N](true)]','key_queries':['progress.current','progress.current_time'],'witness_types':['OrderProgress'],'mitigated_risks':[],'notes':['Chain\x20query_progress_history_find\x20→\x20query_progress_history_session_forward_find']},{'id':'pattern.reward_one_time_claim','business_requirement':'User\x20can\x20only\x20claim\x20reward\x20once\x20(no\x20prior\x20claims)','data_source':'OnChainConstant','host':'reward_claim','verifier_level':'none','logic_summary':'logic_equal[query_reward_record_count(recipient=Signer),\x20identifier[N](0)]','key_queries':['reward.record_count'],'mitigated_risks':[],'notes':['Record\x20count\x20check\x20prevents\x20double-claim']},{'id':'pattern.reward_multi_condition','business_requirement':'Order\x20payment\x20>\x20threshold\x20AND\x20reached\x20\x27complete\x27\x20to\x20claim\x20reward','data_source':'WitnessDerived','host':'reward_claim','verifier_level':'none','logic_summary':'logic_and[logic_as_u256_gt[query(order.amount),\x20threshold],\x20logic_equal[query(progress.current),\x20\x27complete\x27],\x20logic_equal[query(order.service),\x20identifier[N](expected_service)]]','key_queries':['order.amount','progress.current','order.service'],'witness_types':['OrderProgress'],'mitigated_risks':['R-C3-05'],'notes':['Multi-condition:\x20amount\x20+\x20progress\x20state\x20+\x20service\x20match']},{'id':'pattern.arbitration_voting_weight','business_requirement':'Vote\x20weight\x20equals\x20reputation\x20score\x20(dynamic\x20weight\x20from\x20Passport)','data_source':'SubmittedObject','host':'arbitration_voting','verifier_level':'none','logic_summary':'GuardIdentifier\x20extracts\x20numeric\x20value\x20from\x20Passport\x20submission','key_queries':[],'mitigated_risks':['R-C3-02'],'notes':['Table\x20needs\x20numeric\x20submission\x20entry\x20at\x20referenced\x20index','Weight\x20must\x20come\x20from\x20on-chain\x20EntityRegistrar,\x20not\x20submission','BINDING_01:\x20voting_guard\x20GuardIdentifier\x20must\x20be\x20numeric\x20(U8-U256)','C-9\x20VERIFIED:\x20voting\x20is\x20OPTIONAL\x20—\x20arb.move\x20voting_deadline\x20is\x20Option\x20'+'(None\x20=\x20open-ended\x20voting;\x20arbitration\x20can\x20proceed\x20whenever\x20the\x20arbiter\x20decides).\x20'+'NO\x20minimum\x20voter\x20quorum\x20is\x20required\x20on-chain:\x20the\x20arbiter\x20may\x20rule\x20with\x20any\x20number\x20'+'of\x20votes\x20(including\x20zero).\x20MAX_ARBITRATOR_VOTING=520\x20is\x20only\x20an\x20upper\x20bound.\x20'+'Open\x20voting\x20(empty\x20voting_guard)\x20gives\x20every\x20vote\x20weight\x201\x20(vote_imp\x20asserts\x20empty\x20guard).']},{'id':'pattern.arbitration_membership_check','business_requirement':'Only\x20premium\x20members\x20can\x20file\x20disputes','data_source':'OnChainConstant','host':'arbitration_usage','verifier_level':'none','logic_summary':'logic_and[query(entity\x20exists),\x20logic_as_u256_ge[query(entity\x20tier),\x20identifier[N](premium_tier)]]','key_queries':['entity.registrar','entity.linker'],'mitigated_risks':[],'notes':['ENTITY_REGISTRAR_ADDRESS\x20(0xaab)\x20/\x20ENTITY_LINKER_ADDRESS\x20(0xaaa)\x20must\x20be\x20in\x20table']},{'id':'pattern.scene_allocator_entity_recipient','business_requirement':'Service\x20allocator\x20with\x20sharing.who=Entity\x20—\x20no\x20Signer\x20binding\x20needed','data_source':'OnChainConstant','host':'service_allocator_guard','verifier_level':'level3_scene_combined','logic_summary':'Scene\x20verifies\x20fund\x20flow\x20safety\x20—\x20Guard\x20only\x20validates\x20allocation\x20rules','key_queries':['service.permission','order.amount'],'mitigated_risks':['R-C3-06'],'notes':['Funds\x20flow\x20to\x20fixed\x20Treasury/address\x20regardless\x20of\x20caller','sharing.who=Entity\x20already\x20guarantees\x20recipient\x20safety','No\x20Signer\x20binding\x20required\x20—\x20R-C3-06\x20safe']},{'id':'pattern.scene_machine_forward_operator','business_requirement':'Machine\x20forward\x20with\x20permissionIndex/namedOperator\x20already\x20verifies\x20operator','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'level3_scene_combined','logic_summary':'Forward\x27s\x20permissionIndex/namedOperator\x20verifies\x20operator\x20—\x20Guard\x20only\x20validates\x20submitted\x20data','key_queries':[],'mitigated_risks':[],'notes':['Scene\x20verifies\x20operator\x20permission\x20via\x20permissionIndex/namedOperator','Signer\x20binding\x20only\x20needed\x20if\x20submitted\x20data\x20must\x20belong\x20to\x20operator','Evaluate\x20scene\x20before\x20adding\x20Signer\x20binding']},{'id':'pattern.fund_flow_refund_freeform','business_requirement':'Refund\x20/\x20cancellation\x20fund-release\x20defined\x20purely\x20by\x20game\x20conditions\x20—\x20NOT\x20bound\x20to\x20any\x20Machine\x20node','data_source':'SubmittedObject','host':'service_allocator_guard','verifier_level':'level2_identity_set','logic_summary':'An\x20allocator\x20Guard\x20whose\x20root\x20encodes\x20refund\x20conditions\x20ARBITRARILY:\x20'+'buyer\x20signature\x20(logic_equal[Signer,\x20buyer]),\x20timeout\x20(logic_as_u256_ge[Clock,\x20deadline]),\x20'+'evidence\x20state\x20(query\x20any\x20on-chain\x20object:\x20order\x20fields,\x20repository\x20data,\x20payment\x20proofs),\x20'+'arbitration\x20outcome,\x20or\x20any\x20logic_and/or\x20combination.\x20No\x20progress/current-node\x20query\x20required.','key_queries':['order.owner','order.service','order.amount'],'mitigated_risks':['R-C3-06'],'notes':['C-2\x20RESOLUTION:\x20Machine-node-triggered\x20refund\x20(\x27at\x20cancelled\x20node\x20→\x20release\x27)\x20is\x20only\x20ONE\x20application\x20pattern.\x20'+'Guard+Allocator\x20is\x20a\x20GENERAL\x20game\x20primitive:\x20the\x20refund\x20condition\x20tree\x20is\x20fully\x20free-form.\x20'+'Move\x20layer\x20needs\x20NO\x20change\x20—\x20guard.move\x20roots\x20accept\x20arbitrary\x20logic\x20over\x20any\x20queryable\x20state.','GAME-THEORETIC\x20READING:\x20both\x20parties\x20should\x20evaluate\x20the\x20refund\x20Guard\x20BEFORE\x20transacting\x20—\x20'+'who\x20can\x20trigger\x20it,\x20under\x20which\x20conditions,\x20with\x20what\x20evidence.\x20Use\x20the\x20analyze_guard_semantics\x20'+'query\x20action\x20to\x20render\x20+\x20lint\x20any\x20Guard\x20and\x20reason\x20about\x20each\x20party\x27s\x20leverage.','Condition\x20dimensions\x20freely\x20composable:\x20identity\x20(Signer/Entity),\x20time\x20(Clock),\x20'+'counterparty\x20evidence\x20(submitted\x20Payment/Order/Proof),\x20shared\x20data\x20(Repository),\x20'+'workflow\x20state\x20(Progress\x20—\x20optional,\x20only\x20when\x20a\x20Machine\x20exists)','Multi-tier\x20refund:\x20multiple\x20allocators\x20with\x20first-match-wins\x20order\x20encode\x20graduated\x20policies\x20'+'(full\x20refund\x20pre-delivery,\x20partial\x20refund\x20post-milestone,\x20no\x20refund\x20post-acceptance)\x20as\x20SEPARATE\x20Guards']},{'id':'pattern.fund_flow_profit_share_freeform','business_requirement':'Revenue/profit\x20sharing\x20among\x20partners\x20triggered\x20by\x20verifiable\x20contribution\x20conditions\x20—\x20not\x20by\x20workflow\x20nodes','data_source':'OnChainConstant','host':'service_allocator_guard','verifier_level':'level3_scene_combined','logic_summary':'Allocator\x20sharing\x20(who+ratio)\x20defines\x20the\x20SPLIT;\x20the\x20Guard\x20defines\x20WHEN\x20the\x20split\x20executes.\x20'+'The\x20WHEN\x20is\x20free-form:\x20period\x20boundary\x20(Clock\x20vs\x20interval),\x20contribution\x20proof\x20(submitted\x20evidence),\x20'+'performance\x20threshold\x20(Repository\x20metric),\x20or\x20counterparty\x20co-signature.','key_queries':['repository.data','payment.amount'],'mitigated_risks':['R-C3-06'],'applicable_industries':['freelance','subscription','education'],'notes':['C-2\x20RESOLUTION:\x20profit-sharing\x20is\x20an\x20application\x20pattern\x20of\x20the\x20same\x20Guard+Allocator\x20primitive\x20—\x20'+'the\x20trigger\x20condition\x20tree\x20is\x20arbitrary\x20game\x20logic,\x20not\x20a\x20workflow\x20artifact.','sharing.who=Entity\x20recipients\x20make\x20the\x20split\x20caller-safe\x20(funds\x20flow\x20to\x20fixed\x20addresses)\x20—\x20'+'Guard\x20then\x20only\x20gates\x20TIMING/CONDITIONS,\x20not\x20identity\x20(R-C3-06\x20safe\x20by\x20scene)','Periodic\x20settlement:\x20logic_as_u256_ge[Clock,\x20identifier[N](period_start)]\x20+\x20'+'logic_as_u256_equal[calc_number_mod[Clock,\x20interval],\x200]-style\x20windows,\x20'+'or\x20a\x20Repository-held\x20settlement\x20cursor\x20updated\x20after\x20each\x20allocation\x20run']},{'id':'pattern.permission_guard_entity_time_window','business_requirement':'Delegate\x20a\x20permission\x20index\x20to\x20a\x20Guard\x20object\x20address\x20—\x20authorization\x20that\x20self-enforces\x20and\x20self-expires\x20(time-windowed\x20delegation)','data_source':'SystemContext','host':'machine_forward','verifier_level':'none','logic_summary':'permission.move\x20entity\x20table\x20accepts\x20\x27user/guard\x20address\x20&\x20permission_index\x20list\x27\x20—\x20'+'a\x20Guard\x27s\x20OWN\x20ADDRESS\x20can\x20hold\x20a\x20permission\x20index.\x20The\x20delegated\x20Guard\x20then\x20encodes\x20'+'temporal\x20+\x20contextual\x20conditions:\x20logic_and[logic_as_u256_ge[Clock,\x20valid_from],\x20'+'logic_as_u256_le[Clock,\x20valid_until],\x20<scene\x20conditions>].\x20'+'Callers\x20satisfying\x20the\x20Guard\x20act\x20with\x20the\x20delegated\x20permission\x20index.','key_queries':[],'mitigated_risks':[],'notes':['C-8\x20VERIFIED:\x20permission.move\x20entity\x20table\x20comment\x20—\x20\x27user/guard\x20address\x20&\x20permission_index\x20list\x27\x20'+'(guard\x20addresses\x20are\x20first-class\x20permission\x20entities,\x20same\x20as\x20user\x20addresses)','TIME\x20WINDOW:\x20Guard\x20roots\x20compose\x20context(Clock)\x20freely\x20—\x20valid_from/valid_until\x20bounds,\x20'+'recurring\x20windows\x20(mod\x20arithmetic),\x20or\x20deadline-before\x20(authorize\x20only\x20until\x20expiry)','SELF-EXPIRING\x20DELEGATION:\x20after\x20valid_until\x20the\x20Guard\x20fails\x20for\x20everyone\x20—\x20no\x20on-chain\x20'+'revocation\x20transaction\x20needed,\x20no\x20trust\x20in\x20the\x20delegate\x20to\x20stop\x20acting','SCENARIO\x20COMBINATION\x20(scenario\x20layer):\x20temporary\x20operator\x20(holiday\x20cover),\x20seasonal\x20service\x20window,\x20'+'trial-period\x20customer\x20privileges,\x20contractor\x20time-boxed\x20access,\x20emergency-break-glass\x20with\x20auto-expiry','Design\x20tip:\x20combine\x20with\x20scene\x20conditions\x20(order\x20state,\x20submitted\x20evidence)\x20—\x20'+'time\x20bounds\x20rarely\x20stand\x20alone']}];export const VERIFIER_LEVEL_GUIDANCE=[{'level':'level1_strict_single','pattern':'logic_equal[context(Signer),\x20identifier[N](fixed_address)]','when_to_use':'Role\x20permanently\x20tied\x20to\x20one\x20address\x20AND\x20designer\x20accepts\x20lock-in\x20risk','risk_rules':['R-C4-04'],'recommendation':'avoid'},{'level':'level2_identity_set','pattern':'logic_or\x20of\x20multiple\x20identity\x20checks','when_to_use':'Role-based\x20access\x20—\x20multiple\x20authorized\x20identities','risk_rules':['R-C4-04\x20(suppressed)'],'recommendation':'recommended'},{'level':'level3_scene_combined','pattern':'Scene\x20itself\x20verifies\x20identity\x20—\x20no\x20Signer\x20binding\x20needed','when_to_use':'Scene\x27s\x20host\x20object\x20already\x20verifies\x20operator\x20(e.g.,\x20Machine\x20forward,\x20sharing.who=Entity)','risk_rules':[],'recommendation':'default'},{'level':'none','pattern':'No\x20Signer\x20binding\x20required','when_to_use':'Resource\x20flow\x20matters\x20more\x20than\x20caller\x20identity','risk_rules':[],'recommendation':'default'}];export function getGuardDesignPattern(a){return GUARD_DESIGN_PATTERNS['find'](b=>b['id']===a);}export function searchGuardDesignPatterns(a){const b=a['toLowerCase']();return GUARD_DESIGN_PATTERNS['filter'](c=>{if(c['business_requirement']['toLowerCase']()['includes'](b))return!![];if(c['logic_summary']['toLowerCase']()['includes'](b))return!![];if(c['key_queries']['some'](d=>d['toLowerCase']()['includes'](b)))return!![];return![];});}export function getPatternsByHost(a){return GUARD_DESIGN_PATTERNS['filter'](b=>b['host']===a);}export function getPatternsByIndustry(a){return GUARD_DESIGN_PATTERNS['filter'](b=>b['applicable_industries']?.['includes'](a));}export function getPatternsByDataSourceClass(a){return GUARD_DESIGN_PATTERNS['filter'](b=>b['data_source']===a);}export function getVerifierLevelGuidance(a){return VERIFIER_LEVEL_GUIDANCE['find'](b=>b['level']===a);}export function suggestPatternForRequirement(a){const b=searchGuardDesignPatterns(a);if(b['length']===0x0){const e=GUARD_DESIGN_PATTERNS[0x0];return{'best':e,'alternatives':[]};}const [c,...d]=b;return{'best':c,'alternatives':d};}export const GUARD_DESIGN_PATTERNS_VERSION=0x2;
1
+ export const GUARD_DESIGN_PATTERNS=[{'id':'pattern.identity_check_single','business_requirement':'Only\x20the\x20author\x20can\x20purchase\x20this\x20service\x20(strict\x20single-identity)','data_source':'SystemContext','host':'service_buy_guard','verifier_level':'level1_strict_single','logic_summary':'logic_equal[context(Signer),\x20identifier[N](fixed_address)]','key_queries':[],'mitigated_risks':['R-C4-04'],'notes':['Maximally\x20secure\x20but\x20maximally\x20inconvenient','If\x20address\x20is\x20unavailable\x20(key\x20loss,\x20rotation),\x20Guard\x20permanently\x20blocks','Avoid\x20unless\x20role\x20is\x20permanently\x20tied\x20to\x20one\x20address']},{'id':'pattern.identity_check_allowlist','business_requirement':'Customer\x20must\x20be\x20in\x20an\x20allowlist\x20to\x20purchase','data_source':'SystemContext','host':'service_buy_guard','verifier_level':'level2_identity_set','logic_summary':'vec_contains_address[identifier[N](allowlist_vec),\x20context(Signer)]','key_queries':[],'mitigated_risks':['R-C4-04'],'notes':['Allowlist\x20stored\x20as\x20Address\x20vector\x20in\x20table\x20constant']},{'id':'pattern.identity_check_order_holder','business_requirement':'Only\x20order\x20owner\x20or\x20agent\x20can\x20perform\x20operation','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'level2_identity_set','logic_summary':'logic_or[logic_equal[query(1562\x20order.owner),\x20context(Signer)],\x20query(1567\x20order.agent\x20has,\x20Signer)]','key_queries':['order.owner','order.agent\x20has'],'mitigated_risks':['R-C4-04','R-C3-06'],'notes':['1562\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal','1567\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child','Recommended\x20Level\x202\x20alternative\x20to\x20Level\x201\x20strict\x20binding']},{'id':'pattern.identity_check_service_provider_dynamic','business_requirement':'Verify\x20caller\x20is\x20service\x27s\x20current\x20permission\x20owner\x20(survives\x20permission\x20rotation)','data_source':'SubmittedObject','host':'machine_forward','verifier_level':'level2_identity_set','logic_summary':'logic_and[logic_equal[query(1488\x20service.permission),\x20identifier[N](submitted_perm)],\x20logic_or[logic_equal[query(1002\x20permission.owner),\x20context(Signer)],\x20query(1004\x20permission.admin\x20has,\x20Signer)]]','key_queries':['service.permission','permission.owner','permission.admin\x20has'],'mitigated_risks':['R-C4-04','R-C3-05'],'notes':['Dynamic\x20permission\x20address\x20(RECOMMENDED)\x20—\x20survives\x20Service\x20permission\x20rotation','Caller\x20submits\x20permission\x20address;\x20Guard\x20verifies\x20match\x20then\x20checks\x20identity','More\x20complex\x20than\x20static\x20but\x20far\x20more\x20robust']},{'id':'pattern.time_lock_progress','business_requirement':'Customer\x20must\x20wait\x20N\x20hours\x20before\x20completing\x20(time-lock)','data_source':'WitnessDerived','host':'machine_forward','verifier_level':'none','logic_summary':'logic_as_u256_ge[context(Clock),\x20calc_number_add[query(1272\x20progress.current_time,\x20witness=OrderProgress),\x20identifier[N](duration_ms)]]','key_queries':['progress.current_time'],'witness_types':['OrderProgress'],'mitigated_risks':[],'notes':['Use\x20convert_witness=100\x20(OrderProgress)\x20to\x20derive\x20Progress\x20from\x20submitted\x20Order\x20ID','Duration\x20in\x20milliseconds\x20—\x20test\x20with\x20small\x20values\x20first']},{'id':'pattern.time_lock_absolute','business_requirement':'Operation\x20allowed\x20only\x20after\x20a\x20fixed\x20timestamp','data_source':'SystemContext','host':'service_buy_guard','verifier_level':'none','logic_summary':'logic_as_u256_ge[context(Clock),\x20identifier[N](release_timestamp)]','key_queries':[],'mitigated_risks':[],'notes':['Useful\x20for\x20pre-sale\x20windows,\x20embargo\x20periods']},{'id':'pattern.repository_data_check','business_requirement':'External\x20data\x20must\x20match\x20expected\x20value\x20(e.g.,\x20weather,\x20price\x20feed)','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'none','logic_summary':'logic_equal[query(1167\x20repository.data,\x20policy,\x20key),\x20identifier[N](expected_value)]','key_queries':['repository.data'],'mitigated_risks':[],'notes':['Repository\x20address\x20declared\x20as\x20table\x20constant','Timestamp\x20keys\x20may\x20need\x20convert_number_address','quote_guard\x20context:\x20fails\x20in\x20gen_passport\x20(impack_list\x20empty),\x20works\x20in\x20on-chain\x20business\x20operations\x20(see\x20R-X1-10)']},{'id':'pattern.repository_quote_guard_subscription','business_requirement':'Repository\x20data\x20access\x20requires\x20payment\x20proof\x20(subscription\x20revenue\x20model)','data_source':'SubmittedObject','host':'repository_write','verifier_level':'level3_scene_combined','logic_summary':'Repository\x20policy\x20sets\x20quote_guard\x20(a\x20standalone\x20repository-backed\x20guard:\x20immutable\x20+\x20rep=true).\x20'+'When\x20a\x20Guard\x20queries\x20this\x20Repository\x27s\x20data\x20(query\x201167),\x20check_repository_quote_guard\x20verifies\x20'+'the\x20quote_guard\x20is\x20in\x20impack_list.\x20The\x20quote_guard\x20itself\x20verifies\x20a\x20submitted\x20Payment\x20'+'(payment.info.for\x20matches\x20Repository,\x20payment.amount\x20meets\x20subscription\x20price).\x20'+'User\x20submits\x20Payment\x20via\x20Passport\x20→\x20quote_guard\x20verified\x20→\x20added\x20to\x20impack_list\x20→\x20query\x201167\x20passes.','key_queries':['repository.data','payment.info.for','payment.amount'],'mitigated_risks':['R-X1-10'],'applicable_industries':['subscription','travel','rental','education'],'notes':['VERIFIED:\x20passport.rs#L545-612\x20(check_repository_quote_guard),\x20passport.rs#L758-769\x20(trigger\x20at\x20query_id==1167)','Repository.owner_receive<T>\x20accepts\x20Payment\x20as\x20subscription\x20revenue','quote_guard\x20must\x20be\x20a\x20standalone\x20repository-backed\x20guard:\x20immutable=true,\x20relies\x20empty,\x20rep=true','VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20valid\x20Payment,\x20quote_guard\x20verifies\x20Payment\x20fields\x20—\x20no\x20object-linker\x20binding\x20needed','gen_passport\x20context:\x20quote_guard\x20fails\x20(impack_list\x20empty)\x20—\x20only\x20use\x20for\x20on-chain\x20business\x20operations','Business\x20model:\x20data\x20provider\x20publishes\x20weather/market/oracle\x20data\x20to\x20Repository,\x20'+'users\x20pay\x20subscription\x20to\x20access\x20data\x20in\x20their\x20Machine\x20flows','MODE\x20A\x20(direct\x20payment\x20verify)\x20—\x20four\x20verifiable\x20elements\x20on\x20the\x20submitted\x20Payment:\x20'+'1)\x20amount:\x20logic_as_u256_ge[payment.amount,\x20N]\x20(>=\x20subscription\x20price);\x20'+'2)\x20subscription\x20type:\x20payment.info.remark\x20/\x20payment.info.index\x20encodes\x20the\x20tier/plan;\x20'+'3)\x20fixed\x20recipient:\x20payment.record.recipient\x20must\x20equal\x20the\x20designated\x20payee\x20(Treasury/owner\x20address);\x20'+'4)\x20occurrence\x20time:\x20payment.time\x20within\x20the\x20validity\x20window\x20(logic_as_u256_ge/le\x20vs\x20context(Clock))','Payment\x20is\x20freeze_object\x20after\x20creation\x20—\x20all\x20four\x20elements\x20are\x20tamper-proof\x20evidence','For\x20a\x20LOWER\x20user-cost\x20variant\x20(no\x20per-user\x20payment\x20submission),\x20see\x20pattern.repository_whitelist_sync\x20(Mode\x20B)']},{'id':'pattern.repository_whitelist_sync','business_requirement':'Entitlement\x20check\x20via\x20a\x20synced\x20allowlist\x20Repository\x20instead\x20of\x20per-user\x20payment\x20submission\x20(low-friction\x20entitlements:\x20memberships,\x20authorizations,\x20paid-user\x20lists)','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'none','logic_summary':'Off-chain\x20collector\x20gathers\x20eligible\x20users\x20(transfers\x20/\x20Payments\x20to\x20the\x20designated\x20receiving\x20address\x20or\x20object,\x20'+'Service\x20orders,\x20or\x20any\x20off-chain\x20record)\x20and\x20syncs\x20the\x20list\x20into\x20a\x20dedicated\x20Repository\x20object\x20'+'(entries\x20may\x20carry\x20a\x20validity\x20window,\x20e.g.\x20authorized\x20time\x20period).\x20'+'The\x20consuming\x20Guard\x20checks\x20membership\x20via\x20query\x201166/1167\x20(repository.data)\x20keyed\x20by\x20the\x20caller:\x20'+'vec_contains_address-style\x20logic_or\x20over\x20[repository.data(key=Signer)]\x20or\x20logic_equal[repository.data(...),\x20identifier[N](expected)].\x20'+'Repository\x20writes\x20go\x20through\x20the\x20id-keyed\x20data\x20write\x20operations\x20(batch\x20up\x20to\x20100\x20entries\x20per\x20tx).','key_queries':['repository.data'],'mitigated_risks':['R-X1-10'],'applicable_industries':['subscription','travel','rental','education'],'notes':['MODE\x20B\x20(whitelist\x20sync)\x20—\x20user-cost\x20optimization\x20of\x20Mode\x20A\x20(pattern.repository_quote_guard_subscription):\x20'+'users\x20do\x20NOT\x20submit\x20a\x20Payment\x20at\x20verification\x20time;\x20the\x20operator\x20proves\x20eligibility\x20off-chain\x20and\x20syncs\x20the\x20roster','TRADE-OFF:\x20eventual\x20consistency\x20—\x20the\x20roster\x20updates\x20at\x20the\x20collector\x27s\x20sync\x20frequency\x20(slight\x20delay),\x20'+'vs\x20Mode\x20A\x27s\x20instant\x20per-payment\x20proof.\x20Choose\x20by\x20business:\x20high-frequency\x20low-value\x20→\x20Mode\x20B;\x20'+'high-value\x20instant\x20entitlement\x20→\x20Mode\x20A','Entry\x20shape:\x20key\x20=\x20user\x20address\x20(or\x20derived\x20id),\x20value\x20=\x20expiry\x20timestamp\x20/\x20tier\x20/\x20scope;\x20'+'time-window\x20enforcement\x20compares\x20entry\x20value\x20against\x20context(Clock)\x20in\x20the\x20Guard','VERIFIED:\x20id-keyed\x20data\x20writes\x20(batch\x20≤100),\x20guard-ins.ts\x201166/1167\x20(repository.data\x20queries),\x20'+'standalone-guard\x20marking\x20(1167\x20marks\x20query-only\x20repositories)','The\x20collector\x20can\x20source\x20eligibility\x20from:\x20transfers\x20or\x20Payments\x20to\x20a\x20fixed\x20receiving\x20address/object,\x20'+'Service\x20orders\x20(order.service\x20==\x20designated\x20service),\x20or\x20external\x20off-chain\x20records','Repository\x20access\x20economics\x20stay\x20OUT\x20of\x20this\x20pattern\x20(K3\x2010\x20§5\x20D5\x20ruling:\x20reuse\x20Reward/Allocation\x20'+'outside\x20the\x20Repository\x20for\x20payment;\x20the\x20Repository\x20here\x20is\x20the\x20roster,\x20not\x20the\x20payment\x20rail)']},{'id':'pattern.supply_chain_suborder_verification','business_requirement':'Sub-service\x20purchase\x20requires\x20ownership\x20of\x20main\x20service\x20order\x20(supply\x20chain\x20milestone\x20unlock)','data_source':'SubmittedObject','host':'service_buy_guard','verifier_level':'level2_identity_set','logic_summary':'Sub-service\x20buy_guard\x20verifies\x20submitted\x20main\x20Order:\x20'+'logic_and[logic_equal[query(order.owner),\x20context(Signer)],\x20logic_equal[query(order.service),\x20identifier[N](main_service_address)]].\x20'+'User\x20submits\x20main\x20Order\x20via\x20Passport\x20(b_submission=true),\x20buy_guard\x20verifies\x20ownership\x20+\x20service\x20match.','key_queries':['order.owner','order.service'],'mitigated_risks':['R-C3-05'],'applicable_industries':['travel','rental','education','freelance'],'notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20main\x20Order\x20as\x20evidence,\x20buy_guard\x20verifies\x20order.owner==Signer\x20AND\x20order.service==main_service','Each\x20milestone\x20=\x20one\x20sub-order\x20with\x20its\x20own\x20Service\x20+\x20buy_guard\x20referencing\x20the\x20main\x20order','Main\x20flow\x20can\x20branch\x20to\x20different\x20sub-services\x20based\x20on\x20Machine\x20node\x20progression','No\x20parent_order\x20field\x20needed\x20—\x20relationship\x20verified\x20via\x20buy_guard\x20querying\x20submitted\x20Order\x20fields','Enables\x20supply\x20chain\x20composition:\x20main\x20service\x20→\x20multiple\x20sub-services\x20with\x20conditional\x20access']},{'id':'pattern.payment_exception_compensation','business_requirement':'Exception\x20branch\x20triggers\x20compensation\x20Payment\x20(e.g.,\x20delivery\x20delay\x20>\x2030min\x20auto-compensates\x20customer)','data_source':'SubmittedObject','host':'machine_forward','verifier_level':'level3_scene_combined','logic_summary':'Exception\x20forward\x20guard\x20verifies\x204-dimensional\x20anti-reuse\x20binding:\x20logic_and['+'logic_equal[query(payment.info.for),\x20identifier[N](order_address)],\x20'+'logic_equal[query(payment.info.guard),\x20identifier[N](this_guard_address)],\x20'+'logic_as_u256_ge[query(payment.amount),\x20identifier[N](compensation_amount)],\x20'+'logic_as_u256_equal[query(payment.info.index),\x20query(progress.history\x20count)],\x20'+'logic_string_nocase_equal[query(payment.info.remark),\x20query(progress.current)]].\x20'+'Treasury\x20withdraws\x20to\x20customer\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=history_count_at_creation,\x20remark=node_name).\x20'+'Customer\x20submits\x20Payment\x20via\x20Passport;\x20guard\x20verifies\x20index\x20matches\x20current\x20unique\x20step\x20(progress.history\x20count,\x20U64,\x20monotonically\x20increasing\x20—\x20unique\x20even\x20in\x20cycles)\x20AND\x20remark\x20matches\x20current\x20node\x20name\x20(progress.current,\x20String\x20—\x20may\x20repeat\x20across\x20cycles\x20but\x20bound\x20to\x20this\x20step\x20by\x20index).','key_queries':['payment.info.for','payment.info.guard','payment.info.index','payment.info.remark','payment.amount','progress.history\x20count','progress.current'],'mitigated_risks':[],'applicable_industries':['rental','travel','general','freelance'],'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','Payment\x20is\x20freeze_object\x20(immutable)\x20—\x20cannot\x20be\x20modified\x20after\x20creation','VERIFIED\x20INDEX\x20QUERY:\x20progress.history\x20count\x20(id\x201273,\x20U64)\x20—\x20guard-ins.ts#L1228-1237.\x20Each\x20accomplished\x20forward\x20pushes\x20a\x20new\x20History\x20entry;\x20the\x20history\x20length\x20returns\x20the\x20current\x20session\x20id.\x20This\x20count\x20is\x20the\x20unique\x20monotonically\x20increasing\x20step\x20index\x20—\x20even\x20in\x20cycles,\x20each\x20entry\x20has\x20a\x20different\x20count.','VERIFIED\x20NODE\x20NAME\x20QUERY:\x20progress.current\x20(id\x201253,\x20String)\x20—\x20guard-ins.ts#L1025-1032.\x20Returns\x20the\x20current\x20node\x20name.\x20A\x20node\x20CAN\x20be\x20entered\x20multiple\x20times\x20in\x20cycles,\x20so\x20node\x20name\x20alone\x20is\x20NOT\x20unique\x20—\x20it\x20MUST\x20be\x20paired\x20with\x20progress.history\x20count\x20for\x20uniqueness.','DESIGN\x20INTENT\x20(USER):\x20to\x20validate\x20index\x20(U64\x20type),\x20use\x20progress.history\x20count\x20(unique,\x20non-repeating);\x20to\x20validate\x20node\x20name\x20(may\x20repeat\x20in\x20cycles),\x20store\x20it\x20in\x20PaymentInfo.remark\x20and\x20do\x20string\x20comparison\x20with\x20progress.current.','ANTI-REUSE\x204-DIMENSIONAL\x20BINDING:\x20for_object\x20(Order)\x20+\x20for_guard\x20(Guard)\x20+\x20index\x20(unique\x20step\x20via\x20progress.history\x20count)\x20+\x20remark\x20(node\x20name\x20via\x20progress.current).\x20Same\x20Payment\x20cannot\x20be\x20reused\x20in\x20other\x20contexts\x20—\x20at\x20least\x20one\x20field\x20will\x20mismatch.','VERIFIER-EVIDENCE\x20DESIGN:\x20customer\x20submits\x20Payment,\x20guard\x20verifies\x20binding\x20fields\x20match\x20current\x20context','Enables\x20user-friendly\x20exception\x20handling:\x20delay\x20→\x20auto-compensation\x20→\x20friendly\x20branch\x20flow','No\x20object-linker\x20binding\x20registration\x20needed\x20—\x20guard\x20only\x20verifies\x20submitted\x20Payment\x27s\x20field\x20accuracy']},{'id':'pattern.verifier_evidence_philosophy','business_requirement':'Guard\x20design\x20philosophy:\x20verifier\x20provides\x20evidence,\x20guard\x20verifies\x20logic\x20+\x20data\x20accuracy\x20(NOT\x20data\x20discovery)','data_source':'SubmittedObject','host':'gen_passport','verifier_level':'none','logic_summary':'Guard\x20is\x20a\x20PURE\x20VERIFICATION\x20engine.\x20Participants\x20submit\x20evidence\x20(Payment,\x20Order,\x20Proof,\x20etc.)\x20'+'via\x20Passport\x20submissions\x20(b_submission=true).\x20Guard\x20verifies:\x20(1)\x20logic\x20completeness,\x20(2)\x20data\x20usage\x20accuracy.\x20'+'Guard\x20does\x20NOT\x20discover/fetch\x20objects\x20via\x20object-linker\x20binding.\x20object-linker\x20binding\x20is\x20for\x20object\x20lifecycle\x20bookkeeping,\x20'+'NOT\x20for\x20guard\x20data\x20discovery.','key_queries':[],'mitigated_risks':['R-C3-05','R-C3-06'],'notes':['CORE\x20PRINCIPLE:\x20Guard\x20only\x20validates\x20submitted\x20evidence\x20—\x20it\x20never\x20fetches\x20data\x20on\x20its\x20own','For\x20Payment\x20verification:\x20user\x20submits\x20valid\x20Payment\x20→\x20guard\x20checks\x20for_object/for_guard/index\x20match','For\x20multi-order\x20verification:\x20verifier\x20submits\x20Order\x20data\x20→\x20guard\x20checks\x20service/owner\x20relationships','For\x20Repository\x20access:\x20user\x20submits\x20Payment\x20→\x20quote_guard\x20verifies\x20→\x20impack_list\x20updated\x20→\x20data\x20query\x20passes','Type\x203\x20(SubmittedObject)\x20data\x20source\x20class\x20embodies\x20this\x20philosophy\x20—\x20b_submission=true\x20entries','This\x20pattern\x20is\x20foundational\x20for\x20all\x20guard\x20designs\x20—\x20always\x20prefer\x20verifier-evidence\x20over\x20complex\x20object\x20discovery']},{'id':'pattern.progress_state_check','business_requirement':'Specific\x20forward\x20has\x20been\x20accomplished\x20(customer\x20confirms\x20delivery)','data_source':'WitnessDerived','host':'reward_claim','verifier_level':'none','logic_summary':'logic_equal[query_progress_history_find(...).accomplished,\x20identifier[N](true)]','key_queries':['progress.current','progress.current_time'],'witness_types':['OrderProgress'],'mitigated_risks':[],'notes':['Chain\x20query_progress_history_find\x20→\x20query_progress_history_session_forward_find']},{'id':'pattern.reward_one_time_claim','business_requirement':'User\x20can\x20only\x20claim\x20reward\x20once\x20(no\x20prior\x20claims)','data_source':'OnChainConstant','host':'reward_claim','verifier_level':'none','logic_summary':'logic_equal[query_reward_record_count(recipient=Signer),\x20identifier[N](0)]','key_queries':['reward.record_count'],'mitigated_risks':[],'notes':['Record\x20count\x20check\x20prevents\x20double-claim']},{'id':'pattern.reward_multi_condition','business_requirement':'Order\x20payment\x20>\x20threshold\x20AND\x20reached\x20\x27complete\x27\x20to\x20claim\x20reward','data_source':'WitnessDerived','host':'reward_claim','verifier_level':'none','logic_summary':'logic_and[logic_as_u256_gt[query(order.amount),\x20threshold],\x20logic_equal[query(progress.current),\x20\x27complete\x27],\x20logic_equal[query(order.service),\x20identifier[N](expected_service)]]','key_queries':['order.amount','progress.current','order.service'],'witness_types':['OrderProgress'],'mitigated_risks':['R-C3-05'],'notes':['Multi-condition:\x20amount\x20+\x20progress\x20state\x20+\x20service\x20match']},{'id':'pattern.arbitration_voting_weight','business_requirement':'Vote\x20weight\x20equals\x20reputation\x20score\x20(dynamic\x20weight\x20from\x20Passport)','data_source':'SubmittedObject','host':'arbitration_voting','verifier_level':'none','logic_summary':'GuardIdentifier\x20extracts\x20numeric\x20value\x20from\x20Passport\x20submission','key_queries':[],'mitigated_risks':['R-C3-02'],'notes':['Table\x20needs\x20numeric\x20submission\x20entry\x20at\x20referenced\x20index','Weight\x20must\x20come\x20from\x20on-chain\x20EntityRegistrar,\x20not\x20submission','BINDING_01:\x20voting_guard\x20GuardIdentifier\x20must\x20be\x20numeric\x20(U8-U256)','C-9\x20VERIFIED:\x20voting\x20is\x20OPTIONAL\x20—\x20voting_deadline\x20is\x20Option\x20'+'(None\x20=\x20open-ended\x20voting;\x20arbitration\x20can\x20proceed\x20whenever\x20the\x20arbiter\x20decides).\x20'+'NO\x20minimum\x20voter\x20quorum\x20is\x20required\x20on-chain:\x20the\x20arbiter\x20may\x20rule\x20with\x20any\x20number\x20'+'of\x20votes\x20(including\x20zero).\x20MAX_ARBITRATOR_VOTING=520\x20is\x20only\x20an\x20upper\x20bound.\x20'+'Open\x20voting\x20(empty\x20voting_guard)\x20gives\x20every\x20vote\x20weight\x201\x20(the\x20vote\x20handler\x20asserts\x20the\x20guard\x20is\x20empty).']},{'id':'pattern.arbitration_membership_check','business_requirement':'Only\x20premium\x20members\x20can\x20file\x20disputes','data_source':'OnChainConstant','host':'arbitration_usage','verifier_level':'none','logic_summary':'logic_and[query(entity\x20exists),\x20logic_as_u256_ge[query(entity\x20tier),\x20identifier[N](premium_tier)]]','key_queries':['entity.registrar','entity.linker'],'mitigated_risks':[],'notes':['ENTITY_REGISTRAR_ADDRESS\x20(0xaab)\x20/\x20ENTITY_LINKER_ADDRESS\x20(0xaaa)\x20must\x20be\x20in\x20table']},{'id':'pattern.scene_allocator_entity_recipient','business_requirement':'Service\x20allocator\x20with\x20sharing.who=Entity\x20—\x20no\x20Signer\x20binding\x20needed','data_source':'OnChainConstant','host':'service_allocator_guard','verifier_level':'level3_scene_combined','logic_summary':'Scene\x20verifies\x20fund\x20flow\x20safety\x20—\x20Guard\x20only\x20validates\x20allocation\x20rules','key_queries':['service.permission','order.amount'],'mitigated_risks':['R-C3-06'],'notes':['Funds\x20flow\x20to\x20fixed\x20Treasury/address\x20regardless\x20of\x20caller','sharing.who=Entity\x20already\x20guarantees\x20recipient\x20safety','No\x20Signer\x20binding\x20required\x20—\x20R-C3-06\x20safe']},{'id':'pattern.scene_machine_forward_operator','business_requirement':'Machine\x20forward\x20with\x20permissionIndex/namedOperator\x20already\x20verifies\x20operator','data_source':'OnChainConstant','host':'machine_forward','verifier_level':'level3_scene_combined','logic_summary':'Forward\x27s\x20permissionIndex/namedOperator\x20verifies\x20operator\x20—\x20Guard\x20only\x20validates\x20submitted\x20data','key_queries':[],'mitigated_risks':[],'notes':['Scene\x20verifies\x20operator\x20permission\x20via\x20permissionIndex/namedOperator','Signer\x20binding\x20only\x20needed\x20if\x20submitted\x20data\x20must\x20belong\x20to\x20operator','Evaluate\x20scene\x20before\x20adding\x20Signer\x20binding']},{'id':'pattern.fund_flow_refund_freeform','business_requirement':'Refund\x20/\x20cancellation\x20fund-release\x20defined\x20purely\x20by\x20game\x20conditions\x20—\x20NOT\x20bound\x20to\x20any\x20Machine\x20node','data_source':'SubmittedObject','host':'service_allocator_guard','verifier_level':'level2_identity_set','logic_summary':'An\x20allocator\x20Guard\x20whose\x20root\x20encodes\x20refund\x20conditions\x20ARBITRARILY:\x20'+'buyer\x20signature\x20(logic_equal[Signer,\x20buyer]),\x20timeout\x20(logic_as_u256_ge[Clock,\x20deadline]),\x20'+'evidence\x20state\x20(query\x20any\x20on-chain\x20object:\x20order\x20fields,\x20repository\x20data,\x20payment\x20proofs),\x20'+'arbitration\x20outcome,\x20or\x20any\x20logic_and/or\x20combination.\x20No\x20progress/current-node\x20query\x20required.','key_queries':['order.owner','order.service','order.amount'],'mitigated_risks':['R-C3-06'],'notes':['C-2\x20RESOLUTION:\x20Machine-node-triggered\x20refund\x20(\x27at\x20cancelled\x20node\x20→\x20release\x27)\x20is\x20only\x20ONE\x20application\x20pattern.\x20'+'Guard+Allocator\x20is\x20a\x20GENERAL\x20game\x20primitive:\x20the\x20refund\x20condition\x20tree\x20is\x20fully\x20free-form.\x20'+'Move\x20layer\x20needs\x20NO\x20change\x20—\x20Guard\x20roots\x20accept\x20arbitrary\x20logic\x20over\x20any\x20queryable\x20state.','GAME-THEORETIC\x20READING:\x20both\x20parties\x20should\x20evaluate\x20the\x20refund\x20Guard\x20BEFORE\x20transacting\x20—\x20'+'who\x20can\x20trigger\x20it,\x20under\x20which\x20conditions,\x20with\x20what\x20evidence.\x20Use\x20the\x20analyze_guard_semantics\x20'+'query\x20action\x20to\x20render\x20+\x20lint\x20any\x20Guard\x20and\x20reason\x20about\x20each\x20party\x27s\x20leverage.','Condition\x20dimensions\x20freely\x20composable:\x20identity\x20(Signer/Entity),\x20time\x20(Clock),\x20'+'counterparty\x20evidence\x20(submitted\x20Payment/Order/Proof),\x20shared\x20data\x20(Repository),\x20'+'workflow\x20state\x20(Progress\x20—\x20optional,\x20only\x20when\x20a\x20Machine\x20exists)','Multi-tier\x20refund:\x20multiple\x20allocators\x20with\x20first-match-wins\x20order\x20encode\x20graduated\x20policies\x20'+'(full\x20refund\x20pre-delivery,\x20partial\x20refund\x20post-milestone,\x20no\x20refund\x20post-acceptance)\x20as\x20SEPARATE\x20Guards']},{'id':'pattern.fund_flow_profit_share_freeform','business_requirement':'Revenue/profit\x20sharing\x20among\x20partners\x20triggered\x20by\x20verifiable\x20contribution\x20conditions\x20—\x20not\x20by\x20workflow\x20nodes','data_source':'OnChainConstant','host':'service_allocator_guard','verifier_level':'level3_scene_combined','logic_summary':'Allocator\x20sharing\x20(who+ratio)\x20defines\x20the\x20SPLIT;\x20the\x20Guard\x20defines\x20WHEN\x20the\x20split\x20executes.\x20'+'The\x20WHEN\x20is\x20free-form:\x20period\x20boundary\x20(Clock\x20vs\x20interval),\x20contribution\x20proof\x20(submitted\x20evidence),\x20'+'performance\x20threshold\x20(Repository\x20metric),\x20or\x20counterparty\x20co-signature.','key_queries':['repository.data','payment.amount'],'mitigated_risks':['R-C3-06'],'applicable_industries':['freelance','subscription','education'],'notes':['C-2\x20RESOLUTION:\x20profit-sharing\x20is\x20an\x20application\x20pattern\x20of\x20the\x20same\x20Guard+Allocator\x20primitive\x20—\x20'+'the\x20trigger\x20condition\x20tree\x20is\x20arbitrary\x20game\x20logic,\x20not\x20a\x20workflow\x20artifact.','sharing.who=Entity\x20recipients\x20make\x20the\x20split\x20caller-safe\x20(funds\x20flow\x20to\x20fixed\x20addresses)\x20—\x20'+'Guard\x20then\x20only\x20gates\x20TIMING/CONDITIONS,\x20not\x20identity\x20(R-C3-06\x20safe\x20by\x20scene)','Periodic\x20settlement:\x20logic_as_u256_ge[Clock,\x20identifier[N](period_start)]\x20+\x20'+'logic_as_u256_equal[calc_number_mod[Clock,\x20interval],\x200]-style\x20windows,\x20'+'or\x20a\x20Repository-held\x20settlement\x20cursor\x20updated\x20after\x20each\x20allocation\x20run']},{'id':'pattern.permission_guard_entity_time_window','business_requirement':'Delegate\x20a\x20permission\x20index\x20to\x20a\x20Guard\x20object\x20address\x20—\x20authorization\x20that\x20self-enforces\x20and\x20self-expires\x20(time-windowed\x20delegation)','data_source':'SystemContext','host':'machine_forward','verifier_level':'none','logic_summary':'The\x20entity\x20table\x20accepts\x20\x27user/guard\x20address\x20&\x20permission_index\x20list\x27\x20—\x20'+'a\x20Guard\x27s\x20OWN\x20ADDRESS\x20can\x20hold\x20a\x20permission\x20index.\x20The\x20delegated\x20Guard\x20then\x20encodes\x20'+'temporal\x20+\x20contextual\x20conditions:\x20logic_and[logic_as_u256_ge[Clock,\x20valid_from],\x20'+'logic_as_u256_le[Clock,\x20valid_until],\x20<scene\x20conditions>].\x20'+'Callers\x20satisfying\x20the\x20Guard\x20act\x20with\x20the\x20delegated\x20permission\x20index.','key_queries':[],'mitigated_risks':[],'notes':['C-8\x20VERIFIED:\x20entity\x20table\x20comment\x20—\x20\x27user/guard\x20address\x20&\x20permission_index\x20list\x27\x20'+'(guard\x20addresses\x20are\x20first-class\x20permission\x20entities,\x20same\x20as\x20user\x20addresses)','TIME\x20WINDOW:\x20Guard\x20roots\x20compose\x20context(Clock)\x20freely\x20—\x20valid_from/valid_until\x20bounds,\x20'+'recurring\x20windows\x20(mod\x20arithmetic),\x20or\x20deadline-before\x20(authorize\x20only\x20until\x20expiry)','SELF-EXPIRING\x20DELEGATION:\x20after\x20valid_until\x20the\x20Guard\x20fails\x20for\x20everyone\x20—\x20no\x20on-chain\x20'+'revocation\x20transaction\x20needed,\x20no\x20trust\x20in\x20the\x20delegate\x20to\x20stop\x20acting','SCENARIO\x20COMBINATION\x20(scenario\x20layer):\x20temporary\x20operator\x20(holiday\x20cover),\x20seasonal\x20service\x20window,\x20'+'trial-period\x20customer\x20privileges,\x20contractor\x20time-boxed\x20access,\x20emergency-break-glass\x20with\x20auto-expiry','Design\x20tip:\x20combine\x20with\x20scene\x20conditions\x20(order\x20state,\x20submitted\x20evidence)\x20—\x20'+'time\x20bounds\x20rarely\x20stand\x20alone']}];export const VERIFIER_LEVEL_GUIDANCE=[{'level':'level1_strict_single','pattern':'logic_equal[context(Signer),\x20identifier[N](fixed_address)]','when_to_use':'Role\x20permanently\x20tied\x20to\x20one\x20address\x20AND\x20designer\x20accepts\x20lock-in\x20risk','risk_rules':['R-C4-04'],'recommendation':'avoid'},{'level':'level2_identity_set','pattern':'logic_or\x20of\x20multiple\x20identity\x20checks','when_to_use':'Role-based\x20access\x20—\x20multiple\x20authorized\x20identities','risk_rules':['R-C4-04\x20(suppressed)'],'recommendation':'recommended'},{'level':'level3_scene_combined','pattern':'Scene\x20itself\x20verifies\x20identity\x20—\x20no\x20Signer\x20binding\x20needed','when_to_use':'Scene\x27s\x20host\x20object\x20already\x20verifies\x20operator\x20(e.g.,\x20Machine\x20forward,\x20sharing.who=Entity)','risk_rules':[],'recommendation':'default'},{'level':'none','pattern':'No\x20Signer\x20binding\x20required','when_to_use':'Resource\x20flow\x20matters\x20more\x20than\x20caller\x20identity','risk_rules':[],'recommendation':'default'}];export function getGuardDesignPattern(a){return GUARD_DESIGN_PATTERNS['find'](b=>b['id']===a);}export function searchGuardDesignPatterns(a){const b=a['toLowerCase']();return GUARD_DESIGN_PATTERNS['filter'](c=>{if(c['business_requirement']['toLowerCase']()['includes'](b))return!![];if(c['logic_summary']['toLowerCase']()['includes'](b))return!![];if(c['key_queries']['some'](d=>d['toLowerCase']()['includes'](b)))return!![];return![];});}export function getPatternsByHost(a){return GUARD_DESIGN_PATTERNS['filter'](b=>b['host']===a);}export function getPatternsByIndustry(a){return GUARD_DESIGN_PATTERNS['filter'](b=>b['applicable_industries']?.['includes'](a));}export function getPatternsByDataSourceClass(a){return GUARD_DESIGN_PATTERNS['filter'](b=>b['data_source']===a);}export function getVerifierLevelGuidance(a){return VERIFIER_LEVEL_GUIDANCE['find'](b=>b['level']===a);}export function suggestPatternForRequirement(a){const b=searchGuardDesignPatterns(a);if(b['length']===0x0){const e=GUARD_DESIGN_PATTERNS[0x0];return{'best':e,'alternatives':[]};}const [c,...d]=b;return{'best':c,'alternatives':d};}export const GUARD_DESIGN_PATTERNS_VERSION=0x2;
@@ -24,7 +24,7 @@ export declare const VALUE_ORIGIN_SEMANTICS: Record<ValueOrigin, string>;
24
24
  export declare const GUARD_PASSPORT_DOCTRINE: string[];
25
25
  export declare function guardSitesFor(object: string): GuardFieldSite[];
26
26
  export declare function guardCognitionDoctrine(): string[];
27
- export type RepositoryWriteRoute = "data_when_id_from_set" | "data_when_id_from_set_with_passport" | "data_remove_when_id_from_set" | "data_remove_when_id_from_set_with_passport" | "id_data" | "id_data_with_passport" | "id_data_remove" | "id_data_remove_with_passport" | "id_data_mixed_with_passport" | "id_data_mixed_remove_with_passport";
27
+ export type RepositoryWriteRoute = "auto_id_write" | "auto_id_write_guarded" | "auto_id_remove" | "auto_id_remove_guarded" | "manual_id_write" | "manual_id_write_guarded" | "manual_id_remove" | "manual_id_remove_guarded" | "mixed_id_write_guarded" | "mixed_id_remove_guarded";
28
28
  export type RepositoryIdSource = "clock" | "signer" | "caller" | "submission-if-set-else-caller" | "none-required";
29
29
  export type RepositoryDataSource = "caller" | "submission-if-set-else-caller" | "none";
30
30
  export interface RepositoryRouteRule {
@@ -1 +1 @@
1
- export const GUARD_FIELD_COGNITION_VERSION='1.1.0';const NUMBER='number\x20(common::is_number_type)',U64='u64\x20exactly\x20(common::TYPE_U64)',ADDRESS='address\x20or\x20address-compatible\x20object\x20id';export const GUARD_FIELD_SITES=[{'object':'Treasury','field':'external_withdraw_guard[]\x20(AmountFromWithdrawGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount)','meaning':'Exact\x20withdraw\x20amount\x20moved\x20out\x20of\x20the\x20treasury\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'external_withdraw_guard_add:\x20get_submission_value_type\x20must\x20be\x20Some\x20+\x20is_number_type\x20(E_IDENTIFIER_NOT_NUMBER_TYPE)','runtimeFallback':'submission_get\x20falls\x20back\x20to\x20the\x20fixed\x20table\x20value;\x20if\x20neither\x20exists\x20the\x20tx\x20aborts\x20(E_SUBMISSION_ID_NOT_FOUND)','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20chooses\x20the\x20amount;\x20only\x20the\x20balance\x20check\x20(E_WITHDRAW_BALANCE_INSUFFICIENT)\x20bounds\x20it','fixed\x20origin\x20=\x20same\x20amount\x20every\x20withdrawal;\x20safe\x20default\x20for\x20allowance-style\x20guards','query\x20origin\x20is\x20impossible\x20for\x20this\x20slot\x20—\x20a\x20query\x20can\x20only\x20gate,\x20never\x20supply\x20the\x20amount']},{'name':'store_from_id\x20(optional)','meaning':'Secondary\x20slot\x20decoded\x20as\x20address;\x20recorded\x20in\x20Treasury\x20history\x20Record\x20for\x20traceability','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'is_identifier_address_compatible\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20Record.store_from_id\x20=\x20none','riskNotes':['Bookkeeping\x20only;\x20never\x20used\x20as\x20the\x20withdrawal\x20recipient']}],'gateBehavior':'passport::result_for_guard\x20must\x20pass\x20AND\x20the\x20guard\x20address\x20must\x20be\x20registered\x20in\x20external_withdraw_guard\x20(E_EXTERNAL_WITHDRAW_GUARD_NOT_FOUND)','setterChecklist':['Decide\x20who\x20builds\x20passports\x20against\x20this\x20guard\x20—\x20that\x20party\x20controls\x20a\x20submission-origin\x20amount','Prefer\x20a\x20fixed\x20amount\x20for\x20allowance\x20guards;\x20reserve\x20submission\x20amounts\x20for\x20flows\x20where\x20the\x20passport\x20builder\x20is\x20trusted\x20or\x20the\x20amount\x20is\x20re-verified\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20against\x20order.amount\x20via\x20query\x201561)','The\x20RECIPIENT\x20is\x20tx-supplied,\x20not\x20from\x20the\x20guard\x20—\x20constrain\x20it\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20a\x20submitted\x20address\x20against\x20an\x20expected\x20one)\x20if\x20destination\x20matters','Check\x20guard\x20is_depended\x20status\x20only\x20matters\x20if\x20this\x20guard\x20will\x20rely\x20on\x20others\x20(relies\x20<=\x204,\x20added\x20first)'],'auditorChecklist':['For\x20each\x20registered\x20guard:\x20classify\x20amount\x20slot\x20as\x20fixed\x20or\x20submission\x20(read\x20b_submission\x20in\x20the\x20table)','If\x20submission:\x20who\x20can\x20hold/build\x20a\x20passport\x20with\x20this\x20guard?\x20Can\x20a\x20stranger\x20drain\x20the\x20treasury\x20up\x20to\x20its\x20balance?','Does\x20the\x20guard\x20expression\x20bind\x20the\x20submission\x20to\x20on-chain\x20state\x20(order,\x20repository\x20data)\x20or\x20is\x20it\x20free-form?','Is\x20the\x20withdrawal\x20recipient\x20constrained\x20anywhere?']},{'object':'Treasury','field':'external_deposit_guard[]\x20(AmountFromDepositGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount,\x20Option)','meaning':'When\x20Some:\x20exact\x20deposit\x20amount\x20split\x20from\x20the\x20coin\x20(remainder\x20returned\x20to\x20caller).\x20When\x20None:\x20whole\x20coin\x20deposited','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'same\x20as\x20withdraw:\x20is_number_type\x20when\x20Some','runtimeFallback':'None\x20->\x20entire\x20coin\x20deposited;\x20Some\x20->\x20coin::split\x20to\x20`value`,\x20remainder\x20transferred\x20back\x20to\x20sender','riskNotes':['A\x20submission-origin\x20amount\x20below\x20the\x20coin\x20total\x20silently\x20returns\x20the\x20difference\x20to\x20the\x20caller\x20—\x20intended\x20for\x20partial\x20deposits','Deposits\x20cannot\x20steal\x20funds;\x20the\x20risk\x20direction\x20is\x20mis-recorded\x20history\x20only']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20on\x20the\x20deposit\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'is_identifier_address_compatible','runtimeFallback':'None\x20->\x20none','riskNotes':['Traceability\x20only']}],'gateBehavior':'result_for_guard\x20+\x20guard\x20must\x20be\x20registered\x20(E_EXTERNAL_DEPOSIT_GUARD_NOT_FOUND)','setterChecklist':['None\x20identifier\x20=\x20whole-coin\x20deposit;\x20Some\x20=\x20exact-amount\x20deposit\x20with\x20refund\x20of\x20the\x20remainder'],'auditorChecklist':['Confirm\x20the\x20amount\x20slot\x20origin\x20matches\x20the\x20intended\x20deposit\x20UX\x20(whole\x20vs\x20exact)']},{'object':'Reward','field':'guards[]\x20(RewardGuard)','mode':'gate+source','extraction':[{'name':'recipient\x20(Recipient::GuardIdentifier)','meaning':'Claim\x20payout\x20destination\x20address','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'is_identifier_address\x20(E_RECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20variants\x20bypass\x20extraction\x20entirely','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20redirects\x20the\x20payout\x20to\x20any\x20address\x20it\x20names']},{'name':'amount\x20(Amount::GuardU64Identifier)','meaning':'Claim\x20size\x20paid\x20from\x20the\x20Reward\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':U64,'configCheck':'get_submission_value_type\x20==\x20TYPE_U64\x20(E_AMOUNT_NOT_U64)','runtimeFallback':'Fixed(u64)\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20decides\x20the\x20claim\x20size;\x20only\x20balance\x20and\x20per-recipient\x20record\x20bound\x20it']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20in\x20the\x20per-recipient\x20claim\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'is_identifier_address_compatible\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20none','riskNotes':['Traceability\x20only']}],'gateBehavior':'claim:\x20result_for_guard\x20+\x20expiration_time\x20check\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND);\x20guard_not_added_expiration_time\x20freezes\x20the\x20guard\x20set','setterChecklist':['Recipient+amount\x20both\x20submission\x20=\x20the\x20passport\x20builder\x20fully\x20controls\x20who\x20gets\x20paid\x20how\x20much\x20—\x20acceptable\x20only\x20for\x20self-service\x20claim\x20flows\x20where\x20the\x20builder\x20IS\x20the\x20beneficiary','expiration_time\x20on\x20the\x20RewardGuard\x20bounds\x20the\x20window\x20(E_GUARD_EXPIRED)'],'auditorChecklist':['For\x20each\x20guard:\x20are\x20recipient/amount\x20fixed\x20or\x20submission?','If\x20submission:\x20does\x20the\x20guard\x20expression\x20bind\x20them\x20to\x20repository\x20data\x20(1167)\x20or\x20an\x20order\x20so\x20the\x20claim\x20is\x20justified?','Is\x20there\x20a\x20per-recipient\x20cap?\x20(Only\x20the\x20historical\x20record\x20total\x20accumulates;\x20there\x20is\x20no\x20per-claim\x20limit.)']},{'object':'Repository','field':'policies[].write_guard[]\x20(PolicyGuard)','mode':'gate+source','extraction':[{'name':'id_from_submission\x20(Option<u8>)','meaning':'Data-record\x20key\x20(address)\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'is_identifier_address_compatible\x20(E_INVALID_ID_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20id\x20comes\x20from\x20the\x20caller\x20vector\x20or\x20gen_id\x20(clock/signer)','riskNotes':['Policy-level\x20conflicts:\x20id_from\x20=\x20Clock/Signer\x20FORBIDS\x20id_from_submission\x20(E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN);\x20id_from\x20=\x20None\x20REQUIRES\x20a\x20non-empty\x20write_guard\x20(E_POLICY_WRITE_GUARD_REQUIRED)']},{'name':'data_from_submission\x20(Option<u8>)','meaning':'Data\x20payload\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':'any\x20repository-supported\x20value\x20type\x20(first\x20byte\x20=\x20value_type)','configCheck':'has_identifier\x20(E_INVALID_DATA_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20data\x20comes\x20from\x20the\x20caller\x20vector','riskNotes':['Entry-point\x20routing\x20differs:\x20data_when_id_from_set_with_passport\x20consumes\x20data_from_submission;\x20id_data_with_passport\x20REJECTS\x20both\x20extraction\x20slots\x20(E_GUARD_SPECIFIED_ID_FROM_SUBMISSION);\x20id_data_mixed_with_passport\x20mixes\x20per-guard\x20extraction\x20with\x20caller\x20vectors','Setting\x20an\x20extraction\x20slot\x20on\x20a\x20guard\x20that\x20is\x20only\x20ever\x20used\x20via\x20id_data_with_passport\x20silently\x20means\x20\x27unused\x20config\x27\x20—\x20route\x20must\x20match']}],'gateBehavior':'write\x20path\x20must\x20find\x20the\x20guard\x20in\x20the\x20policy\x20(E_GUARD_SPECIFIED_NOT_IN_POLICY)\x20and\x20pass\x20result_for_guard\x20or\x20result_for_permission\x20(impack\x20membership)','setterChecklist':['Match\x20the\x20policy\x20id_from\x20with\x20the\x20guard\x20slots\x20(see\x20conflicts\x20above)','Pick\x20the\x20write\x20entry\x20point\x20first,\x20then\x20decide\x20which\x20extraction\x20slots\x20that\x20entry\x20point\x20actually\x20honors'],'auditorChecklist':['For\x20each\x20write_guard:\x20which\x20entry\x20points\x20can\x20reach\x20it\x20and\x20which\x20slots\x20do\x20those\x20entry\x20points\x20consume?','A\x20policy\x20with\x20write_guard\x20but\x20id_from=None\x20and\x20no\x20extraction\x20slots\x20still\x20gates\x20writes\x20—\x20verify\x20the\x20guard\x20expression\x20actually\x20restricts\x20who\x20can\x20write']},{'object':'Repository','field':'policies[].quote_guard\x20(Option<address>)','mode':'source','extraction':[{'name':'repository.data\x20(query\x201167\x20params:\x20key,\x20id)','meaning':'Read\x20authorization\x20for\x20private\x20repository\x20data\x20inside\x20guard\x20expressions','allowedOrigins':['query'],'typeConstraint':'(String\x20key,\x20Address\x20id)\x20pair','configCheck':'policy_quote_guard_set:\x20guard::is_depended\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep\x20true,\x20E_NEED_DEPENDENT_GUARD)','runtimeFallback':'None\x20->\x201167\x20queries\x20abort\x20(GUARD_QUERY_OBJECT_INVALID\x20/\x20quote_guard\x20check)','riskNotes':['Runtime\x20check\x20is\x20hardcoded\x20in\x20passport.rs:\x20the\x20querying\x20guard\x20must\x20be\x20a\x20member\x20of\x20the\x20passport\x20impack\x20list','rep\x20flag\x20comes\x20from\x20the\x20native\x20parse\x20at\x20guard\x20creation\x20—\x20a\x20guard\x20that\x20fails\x20rep\x20cannot\x20serve\x20as\x20quote_guard']}],'gateBehavior':'No\x20direct\x20gate\x20—\x20this\x20guard\x20authorizes\x20DATA\x20READS\x20performed\x20by\x20other\x20guards','setterChecklist':['Only\x20a\x20fresh,\x20immutable,\x20reliance-free\x20guard\x20(is_depended)\x20qualifies','Register\x20it\x20on\x20the\x20same\x20Repository\x20whose\x20data\x20will\x20be\x20quoted'],'auditorChecklist':['Which\x20guards\x20rely\x20on\x20/\x20are\x20bundled\x20with\x20this\x20quote_guard\x20in\x20passports?\x20(impack\x20membership\x20decides)','Is\x20the\x20quoted\x20(key,id)\x20scoped\x20narrowly\x20enough,\x20or\x20does\x20one\x20quote_guard\x20open\x20the\x20whole\x20policy?']},{'object':'Arbitration','field':'voting_guard[]\x20(VotingGuard)','mode':'gate+source','extraction':[{'name':'vote_weight\x20(VoteValue::GuardIdentifier)','meaning':'Voter\x27s\x20weighted\x20voting\x20power','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER+',\x20value\x20<=\x20u32\x20max\x20(E_GUARD_IDENTIFIER_NUMBER_INVALID)','configCheck':'is_number_type\x20(E_GUARD_IDENTIFIER_NOT_NUMBER)','runtimeFallback':'FixedValue\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20assigns\x20its\x20own\x20voting\x20weight\x20—\x20dangerous\x20unless\x20the\x20guard\x20expression\x20derives\x20the\x20weight\x20from\x20trusted\x20state\x20(e.g.\x20repository\x20holdings\x20via\x201167)']}],'gateBehavior':'vote_with_voting_guard:\x20result_for_guard\x20+\x20guard\x20registered\x20(E_VOTING_GUARD_NOT_FOUND)','setterChecklist':['Empty\x20voting_guard\x20=\x20open\x20voting\x20(everybody);\x20non-empty\x20=\x20only\x20listed\x20guards\x20may\x20vote','FixedValue\x20for\x20equal-weight\x20votes;\x20GuardIdentifier\x20only\x20when\x20the\x20expression\x20can\x20justify\x20the\x20weight'],'auditorChecklist':['If\x20GuardIdentifier:\x20can\x20a\x20voter\x20self-assign\x20a\x20maximal\x20weight\x20by\x20building\x20the\x20passport\x20alone?']},{'object':'Arbitration','field':'usage_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'dispute_with_passport:\x20result_for_guard;\x20dispute()\x20without\x20a\x20passport\x20aborts\x20when\x20usage_guard\x20is\x20set\x20(E_NEED_PASSPORT).\x20Set\x20=\x20guarded\x20entry\x20to\x20filing\x20disputes','setterChecklist':['Set\x20to\x20restrict\x20who\x20can\x20open\x20disputes;\x20none\x20=\x20anyone\x20can\x20dispute'],'auditorChecklist':['Check\x20whether\x20disputing\x20requires\x20passing\x20this\x20guard\x20and\x20who\x20can\x20pass\x20it']},{'object':'Service','field':'buy_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'buy_with_passport:\x20result_for_guard;\x20buy()\x20without\x20a\x20passport\x20aborts\x20when\x20set\x20(E_BUY_GUARD_PASSPORT_REQUIRED)','setterChecklist':['Pure\x20purchase\x20gate:\x20membership/whitelist/KYC\x20style;\x20no\x20slots\x20are\x20extracted'],'auditorChecklist':['Who\x20can\x20pass\x20it;\x20does\x20it\x20gate\x20every\x20sale\x20item\x20equally\x20(it\x20is\x20service-wide,\x20not\x20per-sale)']},{'object':'Demand','field':'guards[]\x20(ServiceGuard)','mode':'gate+source','extraction':[{'name':'service_identifier\x20(Option<u8>)','meaning':'Presented\x20Service\x20address;\x20overrides\x20the\x20caller-supplied\x20service\x20in\x20present_service','allowedOrigins':['submission','fixed'],'typeConstraint':'address\x20slot\x20whose\x20object\x20type\x20must\x20be\x20Service\x20(get_submission_object_type\x20at\x20guard_add)','configCheck':'object\x20type\x20check\x20against\x20the\x20guard\x20validated\x20table\x20(E_GUARD_IDS_TYPE_ERROR\x20at\x20verify)','runtimeFallback':'None\x20->\x20caller\x20names\x20the\x20presented\x20service\x20directly','riskNotes':['fixed\x20origin\x20hard-pins\x20which\x20Service\x20may\x20answer\x20this\x20Demand\x20through\x20this\x20guard','submission\x20origin\x20lets\x20the\x20passport\x20builder\x20pick\x20any\x20Service\x20—\x20verify\x20the\x20guard\x20expression\x20restricts\x20it']}],'gateBehavior':'present_with_passport:\x20result_for_guard\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND)','setterChecklist':['Set\x20service_identifier\x20to\x20pin\x20the\x20answering\x20service;\x20leave\x20None\x20for\x20open\x20presentation'],'auditorChecklist':['Origin\x20of\x20service_identifier;\x20if\x20submission,\x20who\x20can\x20present\x20what']},{'object':'Machine','field':'node.pair.forward.guard\x20(ForwardGuard)','mode':'gate+source','extraction':[{'name':'retained_submission\x20(vector<u8>\x20identifiers)','meaning':'Submission\x20values\x20retained\x20into\x20Progress\x20Holder.retained_submission\x20(e.g.\x20sub-order\x20/\x20procured-service\x20evidence)\x20when\x20the\x20forward\x20executes','allowedOrigins':['submission'],'typeConstraint':'identifiers\x20must\x20exist\x20as\x20submission\x20slots\x20(has_submissions,\x20E_RETAINED_SUBMISSION_ERROR)','configCheck':'forward_with_guard\x20validates\x20the\x20identifiers\x20against\x20the\x20guard\x20table','runtimeFallback':'empty\x20list\x20->\x20gate\x20only,\x20nothing\x20retained;\x20non-empty\x20->\x20passport::submissions_get\x20copies\x20the\x20values\x20into\x20the\x20session\x20history','riskNotes':['This\x20is\x20the\x20mechanism\x20that\x20carries\x20sub-order\x20data\x20from\x20an\x20operator\x27s\x20passport\x20into\x20the\x20order\x27s\x20Progress\x20history\x20—\x20downstream\x20analyzers\x20read\x20it\x20(queries\x201266-1268,\x201279)']}],'gateBehavior':'Progress.next_with_passport:\x20guard\x20is\x20the\x20optional\x20pre/post\x20verification\x20layer\x20for\x20advancing\x20a\x20node;\x20namedOperator/permissionIndex\x20can\x20be\x20replaced\x20by\x20a\x20guard','setterChecklist':['Choose\x20which\x20submission\x20slots\x20are\x20worth\x20retaining\x20as\x20durable\x20evidence','Remember\x20the\x20order\x20of\x20verification:\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first'],'auditorChecklist':['For\x20each\x20guarded\x20forward:\x20does\x20the\x20retained\x20data\x20actually\x20prove\x20the\x20transition\x20claim\x20(sub-order\x20id,\x20amount)?']},{'object':'Allocation','field':'allocators[].guard\x20(Allocator)','mode':'gate+source','extraction':[{'name':'sharing\x20Recipient::GuardIdentifier','meaning':'Payout\x20recipient\x20address\x20for\x20that\x20sharing\x20line','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'is_identifier_address\x20(ERECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20sharing\x20variants\x20bypass\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20decides\x20the\x20split\x20destination\x20at\x20alloc()\x20time\x20—\x20the\x20ALC1\x20audit\x20treats\x20an\x20unbound\x20recipient\x20as\x20a\x20redirect\x20risk','for_object\x20anchor\x20(protocol\x20139):\x20when\x20the\x20Allocation\x27s\x20payment_info.for_object\x20is\x20Some,\x20alloc()\x20enforces\x20submitted\x20address\x20==\x20for_object\x20and\x20aborts\x20with\x20ERECIPIENT_NOT_FOR_OBJECT\x20(15)\x20on\x20mismatch\x20—\x20the\x20anchor\x20is\x20mechanism-enforced,\x20not\x20advisory','for_object\x20=\x20None\x20carries\x20NO\x20anchor:\x20nothing\x20is\x20enforced\x20on-chain\x20and\x20the\x20recipient\x20semantics\x20are\x20entirely\x20the\x20creator\x27s\x20business\x20(Allocation\x20is\x20a\x20generic\x20component;\x20only\x20host\x20flows\x20that\x20declare\x20a\x20binding\x20get\x20the\x20anchor)']}],'gateBehavior':'alloc:\x20the\x20passed\x20guard\x20address\x20must\x20equal\x20the\x20registered\x20allocator\x20guard;\x20result_for_guard\x20must\x20pass;\x20AllocationEvent\x20records\x20which\x20guard\x20ran','setterChecklist':['Bind\x20recipient\x20slots\x20inside\x20the\x20guard\x20expression\x20(signer\x20==\x20authorized\x20party,\x20state\x20==\x20expected\x20scope)\x20exactly\x20as\x20ALC1\x20expects','A\x20submission\x20slot\x20with\x20NO\x20scope\x20binding\x20=\x20HIGH\x20severity\x20finding','When\x20setting\x20payment_info:\x20for_object\x20=\x20Some\x20turns\x20it\x20into\x20an\x20enforced\x20anchor\x20—\x20every\x20GuardIdentifier\x20recipient\x20submission\x20must\x20equal\x20that\x20address\x20or\x20alloc()\x20aborts\x20(code\x2015);\x20verify\x20the\x20anchor\x20matches\x20the\x20intended\x20recipient\x20flow\x20BEFORE\x20create\x20(payment_info\x20is\x20immutable\x20after\x20create)','for_object\x20=\x20None\x20is\x20legal:\x20no\x20on-chain\x20anchor,\x20recipient\x20routing\x20is\x20then\x20purely\x20the\x20creator\x27s\x20design\x20—\x20flag\x20this\x20explicitly\x20in\x20the\x20plan\x20so\x20the\x20user\x20decides'],'auditorChecklist':['Cross-scenario\x20settlement\x20residual:\x20a\x20guard\x20bound\x20to\x20one\x20host\x20but\x20reusable\x20across\x20unrelated\x20callers\x20of\x20other\x20hosts','Every\x20submission\x20recipient\x20slot\x20must\x20have\x20a\x20scope\x20binding\x20(guard\x20expression\x20or\x20payment_info.for_object\x20anchor)\x20—\x20otherwise\x20funds\x20can\x20be\x20redirected','Check\x20payment_info.for_object:\x20Some\x20=\x20confirmed\x20enforced\x20anchor\x20(compare\x20against\x20intended\x20recipients);\x20None\x20=\x20trust-on-creator,\x20no\x20on-chain\x20enforcement\x20of\x20the\x20GuardIdentifier\x20destination']},{'object':'Payment','field':'info.for_guard\x20(PaymentInfo)','mode':'source','extraction':[{'name':'for_guard','meaning':'Provenance:\x20records\x20which\x20guard\x20context\x20produced\x20this\x20payment;\x20creates\x20an\x20object-linker\x20affiliation','allowedOrigins':['fixed'],'typeConstraint':'guard\x20address\x20(set\x20at\x20payment_info2_with_guard\x20/\x20payment_info_with_guard)','configCheck':'n/a\x20—\x20plain\x20address\x20copy','runtimeFallback':'None\x20->\x20no\x20provenance','riskNotes':['Not\x20a\x20gate,\x20not\x20a\x20submission\x20slot\x20—\x20pure\x20traceability\x20(queries\x201057/1058,\x201108/1109)']}],'gateBehavior':'None','setterChecklist':['Attach\x20for_guard\x20when\x20the\x20payment\x20originates\x20from\x20a\x20guarded\x20flow'],'auditorChecklist':['Use\x20it\x20to\x20trace\x20payment\x20history\x20back\x20to\x20the\x20guarding\x20decision']},{'object':'Permission','field':'table\x20keys\x20(guard\x20addresses\x20as\x20permission\x20subjects)','mode':'gate','extraction':[],'gateBehavior':'A\x20guard\x20ADDRESS\x20can\x20be\x20granted\x20permission\x20indexes\x20like\x20a\x20user.\x20assert_with_passport\x20collects\x20the\x20passport\x20impack\x20guard\x20list\x20and\x20checks\x20has_permission\x20against\x20it:\x20a\x20passing\x20guard\x20can\x20therefore\x20carry\x20authorization\x20for\x20the\x20whole\x20transaction','setterChecklist':['Granting\x20an\x20index\x20to\x20a\x20guard\x20address\x20delegates\x20that\x20authority\x20to\x20anyone\x20who\x20can\x20pass\x20the\x20guard\x20—\x20treat\x20like\x20a\x20role\x20grant'],'auditorChecklist':['List\x20permission\x20subjects\x20that\x20are\x20guard\x20addresses;\x20evaluate\x20who\x20can\x20pass\x20those\x20guards\x20(they\x20inherit\x20the\x20permission)']}];export const VALUE_ORIGIN_SEMANTICS={'fixed':'Value\x20baked\x20into\x20the\x20guard\x20table\x20(b_submission=false).\x20Deterministic\x20on\x20every\x20use;\x20frozen\x20after\x20create;\x20submission_get\x20falls\x20back\x20to\x20it\x20when\x20no\x20submission\x20is\x20supplied.','submission':'Value\x20supplied\x20by\x20the\x20passport\x20builder\x20at\x20guard_add\x20time\x20(b_submission=true),\x20type-checked\x20against\x20the\x20table.\x20Whoever\x20builds\x20the\x20passport\x20controls\x20the\x20value\x20—\x20always\x20ask\x20who\x20that\x20is.','query':'Value\x20that\x20exists\x20only\x20inside\x20the\x20guard\x20input\x20expression\x20(native\x20query\x20opcodes\x201xxx).\x20It\x20constrains\x20verification\x20(state\x20coupling)\x20but\x20is\x20never\x20extractable;\x20extraction\x20slots\x20must\x20be\x20fixed\x20or\x20submission.'};export const GUARD_PASSPORT_DOCTRINE=['submission_get\x20resolution\x20order:\x20passport\x20submission\x20value\x20->\x20fixed\x20guard\x20table\x20value\x20->\x20abort\x20(E_SUBMISSION_ID_NOT_FOUND).\x20A\x20slot\x20with\x20no\x20submission\x20and\x20no\x20fixed\x20value\x20aborts\x20the\x20host\x20call.','A\x20guard\x20only\x20participates\x20if\x20passport.result_for_guard\x20passes\x20for\x20it,\x20and\x20it\x20must\x20be\x20marked\x20impack\x20when\x20the\x20host\x20extracts\x20data\x20from\x20it\x20(result_for_permission\x20returns\x20impack\x20guards\x20only).','The\x20impack\x20list\x20is\x20snapshotted\x20before\x20verify()\x20runs;\x201167\x20quote_guard\x20membership\x20is\x20checked\x20against\x20this\x20snapshot\x20inside\x20the\x20native\x20verifier.','relies:\x20a\x20guard\x20may\x20depend\x20on\x20at\x20most\x204\x20other\x20guards\x20(MAX_DEPENDED_COUNT),\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first,\x20and\x20the\x20combine\x20logic\x20is\x20relies_logic_and\x20(AND\x20default,\x20OR\x20optional).','is_depended(guard)\x20=\x20relies\x20empty\x20AND\x20immutable\x20AND\x20rep\x20—\x20the\x20only\x20shape\x20accepted\x20as\x20a\x20repository\x20quote_guard\x20or\x20as\x20a\x20relied-upon\x20guard.','Guards\x20are\x20frozen\x20on\x20create\x20(immutable=true);\x20changing\x20a\x20fixed\x20value\x20means\x20deploying\x20a\x20new\x20guard\x20and\x20re-registering\x20it\x20on\x20every\x20host\x20object.','Type\x20checks\x20happen\x20at\x20config\x20time\x20(get_submission_value_type\x20/\x20is_identifier_address\x20/\x20is_identifier_address_compatible)\x20and\x20at\x20passport\x20build\x20time\x20(make_submissions\x20compares\x20the\x20first\x20type\x20byte);\x20runtime\x20aborts\x20are\x20the\x20last\x20resort.','Allocation\x20for_object\x20anchor\x20(protocol\x20139):\x20the\x20Allocation\x27s\x20payment_info.for_object,\x20when\x20Some,\x20is\x20enforced\x20inside\x20alloc()\x20—\x20every\x20Recipient::GuardIdentifier\x20submission\x20must\x20equal\x20that\x20address\x20(abort\x20ERECIPIENT_NOT_FOR_OBJECT\x2015).\x20When\x20None,\x20no\x20anchor\x20exists\x20and\x20the\x20GuardIdentifier\x20destination\x20is\x20whoever\x20builds\x20the\x20passport\x27s\x20choice:\x20entirely\x20the\x20creator\x27s\x20business.\x20Allocation\x20is\x20a\x20generic\x20component\x20—\x20the\x20anchor\x20is\x20opt-in\x20per\x20instance,\x20not\x20a\x20host-flow\x20constant.'];export function guardSitesFor(a){return GUARD_FIELD_SITES['filter'](b=>b['object']['toLowerCase']()===a['toLowerCase']());}export function guardCognitionDoctrine(){return['Classify\x20the\x20mode\x20first:\x20pure\x20gate\x20(authorization\x20only),\x20pure\x20source\x20(data\x20only),\x20or\x20gate+source\x20(most\x20money\x20fields).','For\x20every\x20extracted\x20slot,\x20name\x20its\x20origin\x20(fixed\x20/\x20submission\x20/\x20query)\x20before\x20judging\x20safety.','For\x20submission\x20slots,\x20identify\x20the\x20passport\x20builder:\x20that\x20party\x20chooses\x20the\x20value.\x20Trace\x20what\x20constrains\x20it\x20(guard\x20expression,\x20host-side\x20balance/authorization\x20checks).','For\x20fixed\x20slots,\x20remember\x20immutability:\x20the\x20value\x20is\x20policy,\x20changed\x20only\x20by\x20re-issuing\x20the\x20guard.','For\x20query-coupled\x20guards,\x20map\x20each\x20query\x20id\x20to\x20its\x20data\x20dependency\x20(which\x20object,\x20which\x20field)\x20—\x20the\x20guard\x20is\x20only\x20as\x20fresh\x20as\x20the\x20queried\x20state.','Check\x20config-time\x20invariants:\x20type\x20of\x20each\x20slot,\x20registration\x20limits\x20(treasury\x20100\x20deposit\x20/\x20200\x20withdraw\x20/\x20reward\x20200\x20/\x20arbitration\x2050\x20/\x20repository\x2010\x20write\x20guards\x20per\x20policy),\x20relies\x20<=\x204,\x20submission\x20size\x20<=\x20256\x20bytes.','Report\x20any\x20submission\x20slot\x20that\x20decides\x20money\x20destination\x20or\x20amount\x20without\x20a\x20scope\x20binding\x20as\x20a\x20HIGH-severity\x20redirect\x20risk.'];}export const REPOSITORY_WRITE_ROUTE_MATRIX=[{'route':'data_when_id_from_set','purpose':'Unguarded\x20auto-id\x20write:\x20policy\x20has\x20NO\x20write\x20guards\x20and\x20id_from\x20is\x20Clock/Signer.','idSource':'clock','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'data_remove_when_id_from_set'},{'route':'data_when_id_from_set_with_passport','purpose':'Guarded\x20auto-id\x20write:\x20id\x20auto-generated;\x20the\x20guard\x20authorizes\x20AND\x20may\x20supply\x20the\x20data\x20payload\x20via\x20data_from_submission.','idSource':'clock','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':!![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'data_remove_when_id_from_set_with_passport'},{'route':'id_data','purpose':'Unguarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20policy\x20must\x20have\x20no\x20write\x20guards.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'id_data_remove'},{'route':'id_data_with_passport','purpose':'Guarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20the\x20guard\x20authorizes\x20only.\x20Extraction\x20slots\x20must\x20be\x20None.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![],'removeRoute':'id_data_remove_with_passport'},{'route':'id_data_mixed_with_passport','purpose':'Mixed\x20write:\x20per\x20specified\x20guard,\x20id\x20comes\x20from\x20id_from_submission\x20(else\x20caller\x20vector)\x20and\x20data\x20from\x20data_from_submission\x20(else\x20caller\x20vector).\x20Requires\x20policy\x20id_from\x20==\x20NONE.','idSource':'submission-if-set-else-caller','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':!![],'honorsDataFromSubmission':!![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'id_data_mixed_remove_with_passport'},{'route':'id_data_mixed_remove_with_passport','purpose':'Mixed\x20removal:\x20deletes\x20the\x20record\x20whose\x20id\x20is\x20extracted\x20from\x20id_from_submission.\x20Requires\x20the\x20slot\x20to\x20be\x20SET.','idSource':'submission-if-set-else-caller','dataSource':'none','honorsIdFromSubmission':!![],'honorsDataFromSubmission':![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![]}];export function repositoryRouteSlotConflicts(a){const b=[],{idFrom:c,writeGuardCount:d,idFromSubmissionSet:e,dataFromSubmissionSet:f,intendedRoute:g}=a;return c==='none'&&d===0x0&&b['push']('E_POLICY_WRITE_GUARD_REQUIRED:\x20id_from=NONE\x20with\x20an\x20empty\x20write_guard\x20lets\x20anyone\x20mutate\x20the\x20policy\x20data'),c!=='none'&&e&&b['push']('E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN:\x20id\x20is\x20auto-generated\x20(clock/signer);\x20id_from_submission\x20can\x20never\x20fire'),(g==='id_data_with_passport'||g==='id_data_remove_with_passport')&&((e||f)&&b['push']('E_GUARD_SPECIFIED_ID_FROM_SUBMISSION:\x20the\x20chosen\x20route\x20rejects\x20every\x20extraction\x20slot;\x20use\x20id_data_mixed_with_passport\x20or\x20data_when_id_from_set_with_passport\x20instead')),g==='data_when_id_from_set_with_passport'&&e&&b['push']('id_from_submission\x20is\x20never\x20consumed\x20by\x20data_when_id_from_set_with_passport\x20(id\x20is\x20auto-generated);\x20the\x20slot\x20is\x20dead\x20config'),g==='id_data_mixed_with_passport'&&c!=='none'&&b['push']('E_POLICY_ID_FROM_NONE:\x20id_data_mixed_with_passport\x20requires\x20policy\x20id_from=NONE'),g==='id_data_mixed_remove_with_passport'&&!e&&b['push']('E_GUARD_NOT_SPECIFIED_ID_FROM_SUBMISSION:\x20mixed\x20removal\x20has\x20no\x20id\x20source;\x20set\x20id_from_submission\x20or\x20use\x20id_data_remove_with_passport'),b;}
1
+ export const GUARD_FIELD_COGNITION_VERSION='1.1.0';const NUMBER='number\x20(numeric\x20value\x20type)',U64='u64\x20exactly\x20(common::TYPE_U64)',ADDRESS='address\x20or\x20address-compatible\x20object\x20id';export const GUARD_FIELD_SITES=[{'object':'Treasury','field':'external_withdraw_guard[]\x20(AmountFromWithdrawGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount)','meaning':'Exact\x20withdraw\x20amount\x20moved\x20out\x20of\x20the\x20treasury\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'configuring\x20the\x20external-withdraw\x20guard:\x20the\x20amount\x20slot\x20must\x20carry\x20a\x20declared\x20submission\x20value\x20type\x20and\x20it\x20must\x20be\x20numeric\x20(E_IDENTIFIER_NOT_NUMBER_TYPE)','runtimeFallback':'falls\x20back\x20to\x20the\x20fixed\x20table\x20value\x20when\x20no\x20submission\x20is\x20supplied;\x20if\x20neither\x20exists\x20the\x20tx\x20aborts\x20(E_SUBMISSION_ID_NOT_FOUND)','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20chooses\x20the\x20amount;\x20only\x20the\x20balance\x20check\x20(E_WITHDRAW_BALANCE_INSUFFICIENT)\x20bounds\x20it','fixed\x20origin\x20=\x20same\x20amount\x20every\x20withdrawal;\x20safe\x20default\x20for\x20allowance-style\x20guards','query\x20origin\x20is\x20impossible\x20for\x20this\x20slot\x20—\x20a\x20query\x20can\x20only\x20gate,\x20never\x20supply\x20the\x20amount']},{'name':'store_from_id\x20(optional)','meaning':'Secondary\x20slot\x20decoded\x20as\x20address;\x20recorded\x20in\x20Treasury\x20history\x20Record\x20for\x20traceability','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20on\x20the\x20recorded\x20slot\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20Record.store_from_id\x20=\x20none','riskNotes':['Bookkeeping\x20only;\x20never\x20used\x20as\x20the\x20withdrawal\x20recipient']}],'gateBehavior':'the\x20passport\x20verification\x20against\x20this\x20guard\x20must\x20pass\x20AND\x20the\x20guard\x20address\x20must\x20be\x20registered\x20in\x20the\x20external-withdraw\x20guard\x20list\x20(E_EXTERNAL_WITHDRAW_GUARD_NOT_FOUND)','setterChecklist':['Decide\x20who\x20builds\x20passports\x20against\x20this\x20guard\x20—\x20that\x20party\x20controls\x20a\x20submission-origin\x20amount','Prefer\x20a\x20fixed\x20amount\x20for\x20allowance\x20guards;\x20reserve\x20submission\x20amounts\x20for\x20flows\x20where\x20the\x20passport\x20builder\x20is\x20trusted\x20or\x20the\x20amount\x20is\x20re-verified\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20against\x20order.amount\x20via\x20query\x201561)','The\x20RECIPIENT\x20is\x20tx-supplied,\x20not\x20from\x20the\x20guard\x20—\x20constrain\x20it\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20a\x20submitted\x20address\x20against\x20an\x20expected\x20one)\x20if\x20destination\x20matters','Check\x20the\x20guard\x27s\x20dependency-eligibility\x20status\x20only\x20matters\x20if\x20this\x20guard\x20will\x20rely\x20on\x20others\x20(relies\x20<=\x204,\x20added\x20first)'],'auditorChecklist':['For\x20each\x20registered\x20guard:\x20classify\x20amount\x20slot\x20as\x20fixed\x20or\x20submission\x20(read\x20b_submission\x20in\x20the\x20table)','If\x20submission:\x20who\x20can\x20hold/build\x20a\x20passport\x20with\x20this\x20guard?\x20Can\x20a\x20stranger\x20drain\x20the\x20treasury\x20up\x20to\x20its\x20balance?','Does\x20the\x20guard\x20expression\x20bind\x20the\x20submission\x20to\x20on-chain\x20state\x20(order,\x20repository\x20data)\x20or\x20is\x20it\x20free-form?','Is\x20the\x20withdrawal\x20recipient\x20constrained\x20anywhere?']},{'object':'Treasury','field':'external_deposit_guard[]\x20(AmountFromDepositGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount,\x20Option)','meaning':'When\x20Some:\x20exact\x20deposit\x20amount\x20split\x20from\x20the\x20coin\x20(remainder\x20returned\x20to\x20caller).\x20When\x20None:\x20whole\x20coin\x20deposited','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'same\x20as\x20withdraw:\x20value\x20type\x20must\x20be\x20numeric\x20when\x20Some','runtimeFallback':'None\x20->\x20entire\x20coin\x20deposited;\x20Some\x20->\x20coin::split\x20to\x20`value`,\x20remainder\x20transferred\x20back\x20to\x20sender','riskNotes':['A\x20submission-origin\x20amount\x20below\x20the\x20coin\x20total\x20silently\x20returns\x20the\x20difference\x20to\x20the\x20caller\x20—\x20intended\x20for\x20partial\x20deposits','Deposits\x20cannot\x20steal\x20funds;\x20the\x20risk\x20direction\x20is\x20mis-recorded\x20history\x20only']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20on\x20the\x20deposit\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check','runtimeFallback':'None\x20->\x20none','riskNotes':['Traceability\x20only']}],'gateBehavior':'passport\x20verification\x20against\x20the\x20guard\x20must\x20pass\x20+\x20guard\x20must\x20be\x20registered\x20(E_EXTERNAL_DEPOSIT_GUARD_NOT_FOUND)','setterChecklist':['None\x20identifier\x20=\x20whole-coin\x20deposit;\x20Some\x20=\x20exact-amount\x20deposit\x20with\x20refund\x20of\x20the\x20remainder'],'auditorChecklist':['Confirm\x20the\x20amount\x20slot\x20origin\x20matches\x20the\x20intended\x20deposit\x20UX\x20(whole\x20vs\x20exact)']},{'object':'Reward','field':'guards[]\x20(RewardGuard)','mode':'gate+source','extraction':[{'name':'recipient\x20(Recipient::GuardIdentifier)','meaning':'Claim\x20payout\x20destination\x20address','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'recipient\x20must\x20be\x20a\x20valid\x20address\x20(E_RECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20variants\x20bypass\x20extraction\x20entirely','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20redirects\x20the\x20payout\x20to\x20any\x20address\x20it\x20names']},{'name':'amount\x20(Amount::GuardU64Identifier)','meaning':'Claim\x20size\x20paid\x20from\x20the\x20Reward\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':U64,'configCheck':'submission\x20value\x20type\x20must\x20be\x20u64\x20(E_AMOUNT_NOT_U64)','runtimeFallback':'Fixed(u64)\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20decides\x20the\x20claim\x20size;\x20only\x20balance\x20and\x20per-recipient\x20record\x20bound\x20it']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20in\x20the\x20per-recipient\x20claim\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20none','riskNotes':['Traceability\x20only']}],'gateBehavior':'claim:\x20passport\x20verification\x20against\x20the\x20guard\x20must\x20pass\x20+\x20expiration_time\x20check\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND);\x20guard_not_added_expiration_time\x20freezes\x20the\x20guard\x20set','setterChecklist':['Recipient+amount\x20both\x20submission\x20=\x20the\x20passport\x20builder\x20fully\x20controls\x20who\x20gets\x20paid\x20how\x20much\x20—\x20acceptable\x20only\x20for\x20self-service\x20claim\x20flows\x20where\x20the\x20builder\x20IS\x20the\x20beneficiary','expiration_time\x20on\x20the\x20RewardGuard\x20bounds\x20the\x20window\x20(E_GUARD_EXPIRED)'],'auditorChecklist':['For\x20each\x20guard:\x20are\x20recipient/amount\x20fixed\x20or\x20submission?','If\x20submission:\x20does\x20the\x20guard\x20expression\x20bind\x20them\x20to\x20repository\x20data\x20(1167)\x20or\x20an\x20order\x20so\x20the\x20claim\x20is\x20justified?','Is\x20there\x20a\x20per-recipient\x20cap?\x20(Only\x20the\x20historical\x20record\x20total\x20accumulates;\x20there\x20is\x20no\x20per-claim\x20limit.)']},{'object':'Repository','field':'policies[].write_guard[]\x20(PolicyGuard)','mode':'gate+source','extraction':[{'name':'id_from_submission\x20(Option<u8>)','meaning':'Data-record\x20key\x20(address)\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20(E_INVALID_ID_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20id\x20comes\x20from\x20the\x20caller\x20vector\x20or\x20is\x20auto-generated\x20(clock/signer)','riskNotes':['Policy-level\x20conflicts:\x20id_from\x20=\x20Clock/Signer\x20FORBIDS\x20id_from_submission\x20(E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN);\x20id_from\x20=\x20None\x20REQUIRES\x20a\x20non-empty\x20write_guard\x20(E_POLICY_WRITE_GUARD_REQUIRED)']},{'name':'data_from_submission\x20(Option<u8>)','meaning':'Data\x20payload\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':'any\x20repository-supported\x20value\x20type\x20(first\x20byte\x20=\x20value_type)','configCheck':'identifier\x20presence\x20check\x20(E_INVALID_DATA_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20data\x20comes\x20from\x20the\x20caller\x20vector','riskNotes':['Entry-point\x20routing\x20differs:\x20the\x20guarded\x20auto-id\x20write\x20consumes\x20data_from_submission;\x20the\x20guarded\x20manual\x20write\x20REJECTS\x20both\x20extraction\x20slots\x20(E_GUARD_SPECIFIED_ID_FROM_SUBMISSION);\x20the\x20mixed\x20guarded\x20write\x20mixes\x20per-guard\x20extraction\x20with\x20caller\x20vectors','Setting\x20an\x20extraction\x20slot\x20on\x20a\x20guard\x20that\x20is\x20only\x20ever\x20used\x20via\x20the\x20guarded\x20manual\x20write\x20silently\x20means\x20\x27unused\x20config\x27\x20—\x20route\x20must\x20match']}],'gateBehavior':'write\x20path\x20must\x20find\x20the\x20guard\x20in\x20the\x20policy\x20(E_GUARD_SPECIFIED_NOT_IN_POLICY)\x20and\x20pass\x20the\x20passport\x20verification\x20or\x20the\x20permission-based\x20verification\x20(impack\x20membership)','setterChecklist':['Match\x20the\x20policy\x20id_from\x20with\x20the\x20guard\x20slots\x20(see\x20conflicts\x20above)','Pick\x20the\x20write\x20entry\x20point\x20first,\x20then\x20decide\x20which\x20extraction\x20slots\x20that\x20entry\x20point\x20actually\x20honors'],'auditorChecklist':['For\x20each\x20write_guard:\x20which\x20entry\x20points\x20can\x20reach\x20it\x20and\x20which\x20slots\x20do\x20those\x20entry\x20points\x20consume?','A\x20policy\x20with\x20write_guard\x20but\x20id_from=None\x20and\x20no\x20extraction\x20slots\x20still\x20gates\x20writes\x20—\x20verify\x20the\x20guard\x20expression\x20actually\x20restricts\x20who\x20can\x20write']},{'object':'Repository','field':'policies[].quote_guard\x20(Option<address>)','mode':'source','extraction':[{'name':'repository.data\x20(query\x201167\x20params:\x20key,\x20id)','meaning':'Read\x20authorization\x20for\x20private\x20repository\x20data\x20inside\x20guard\x20expressions','allowedOrigins':['query'],'typeConstraint':'(String\x20key,\x20Address\x20id)\x20pair','configCheck':'setting\x20the\x20policy\x20quote\x20guard:\x20the\x20guard\x20must\x20be\x20dependency-eligible\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep\x20true,\x20E_NEED_DEPENDENT_GUARD)','runtimeFallback':'None\x20->\x201167\x20queries\x20abort\x20(GUARD_QUERY_OBJECT_INVALID\x20/\x20quote_guard\x20check)','riskNotes':['Runtime\x20check\x20is\x20hardcoded\x20in\x20passport.rs:\x20the\x20querying\x20guard\x20must\x20be\x20a\x20member\x20of\x20the\x20passport\x20impack\x20list','rep\x20flag\x20comes\x20from\x20the\x20native\x20parse\x20at\x20guard\x20creation\x20—\x20a\x20guard\x20that\x20fails\x20rep\x20cannot\x20serve\x20as\x20quote_guard']}],'gateBehavior':'No\x20direct\x20gate\x20—\x20this\x20guard\x20authorizes\x20DATA\x20READS\x20performed\x20by\x20other\x20guards','setterChecklist':['Only\x20a\x20fresh,\x20immutable,\x20reliance-free\x20guard\x20(meets\x20the\x20dependency-eligibility\x20shape)\x20qualifies','Register\x20it\x20on\x20the\x20same\x20Repository\x20whose\x20data\x20will\x20be\x20quoted'],'auditorChecklist':['Which\x20guards\x20rely\x20on\x20/\x20are\x20bundled\x20with\x20this\x20quote_guard\x20in\x20passports?\x20(impack\x20membership\x20decides)','Is\x20the\x20quoted\x20(key,id)\x20scoped\x20narrowly\x20enough,\x20or\x20does\x20one\x20quote_guard\x20open\x20the\x20whole\x20policy?']},{'object':'Arbitration','field':'voting_guard[]\x20(VotingGuard)','mode':'gate+source','extraction':[{'name':'vote_weight\x20(VoteValue::GuardIdentifier)','meaning':'Voter\x27s\x20weighted\x20voting\x20power','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER+',\x20value\x20<=\x20u32\x20max\x20(E_GUARD_IDENTIFIER_NUMBER_INVALID)','configCheck':'value\x20type\x20must\x20be\x20numeric\x20(E_GUARD_IDENTIFIER_NOT_NUMBER)','runtimeFallback':'FixedValue\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20assigns\x20its\x20own\x20voting\x20weight\x20—\x20dangerous\x20unless\x20the\x20guard\x20expression\x20derives\x20the\x20weight\x20from\x20trusted\x20state\x20(e.g.\x20repository\x20holdings\x20via\x201167)']}],'gateBehavior':'voting\x20through\x20the\x20voting\x20guard:\x20passport\x20verification\x20must\x20pass\x20+\x20guard\x20registered\x20(E_VOTING_GUARD_NOT_FOUND)','setterChecklist':['Empty\x20voting_guard\x20=\x20open\x20voting\x20(everybody);\x20non-empty\x20=\x20only\x20listed\x20guards\x20may\x20vote','FixedValue\x20for\x20equal-weight\x20votes;\x20GuardIdentifier\x20only\x20when\x20the\x20expression\x20can\x20justify\x20the\x20weight'],'auditorChecklist':['If\x20GuardIdentifier:\x20can\x20a\x20voter\x20self-assign\x20a\x20maximal\x20weight\x20by\x20building\x20the\x20passport\x20alone?']},{'object':'Arbitration','field':'usage_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'passport-guarded\x20dispute\x20filing:\x20the\x20passport\x20verification\x20must\x20pass;\x20dispute()\x20without\x20a\x20passport\x20aborts\x20when\x20usage_guard\x20is\x20set\x20(E_NEED_PASSPORT).\x20Set\x20=\x20guarded\x20entry\x20to\x20filing\x20disputes','setterChecklist':['Set\x20to\x20restrict\x20who\x20can\x20open\x20disputes;\x20none\x20=\x20anyone\x20can\x20dispute'],'auditorChecklist':['Check\x20whether\x20disputing\x20requires\x20passing\x20this\x20guard\x20and\x20who\x20can\x20pass\x20it']},{'object':'Service','field':'buy_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'passport-guarded\x20purchase:\x20the\x20passport\x20verification\x20must\x20pass;\x20buy()\x20without\x20a\x20passport\x20aborts\x20when\x20set\x20(E_BUY_GUARD_PASSPORT_REQUIRED)','setterChecklist':['Pure\x20purchase\x20gate:\x20membership/whitelist/KYC\x20style;\x20no\x20slots\x20are\x20extracted'],'auditorChecklist':['Who\x20can\x20pass\x20it;\x20does\x20it\x20gate\x20every\x20sale\x20item\x20equally\x20(it\x20is\x20service-wide,\x20not\x20per-sale)']},{'object':'Demand','field':'guards[]\x20(ServiceGuard)','mode':'gate+source','extraction':[{'name':'service_identifier\x20(Option<u8>)','meaning':'Presented\x20Service\x20address;\x20overrides\x20the\x20caller-supplied\x20service\x20when\x20presenting','allowedOrigins':['submission','fixed'],'typeConstraint':'address\x20slot\x20whose\x20object\x20type\x20must\x20be\x20Service\x20(submission\x20object\x20type\x20validated\x20at\x20guard_add)','configCheck':'object\x20type\x20check\x20against\x20the\x20guard\x20validated\x20table\x20(E_GUARD_IDS_TYPE_ERROR\x20at\x20verify)','runtimeFallback':'None\x20->\x20caller\x20names\x20the\x20presented\x20service\x20directly','riskNotes':['fixed\x20origin\x20hard-pins\x20which\x20Service\x20may\x20answer\x20this\x20Demand\x20through\x20this\x20guard','submission\x20origin\x20lets\x20the\x20passport\x20builder\x20pick\x20any\x20Service\x20—\x20verify\x20the\x20guard\x20expression\x20restricts\x20it']}],'gateBehavior':'presenting\x20with\x20a\x20passport:\x20passport\x20verification\x20must\x20pass\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND)','setterChecklist':['Set\x20service_identifier\x20to\x20pin\x20the\x20answering\x20service;\x20leave\x20None\x20for\x20open\x20presentation'],'auditorChecklist':['Origin\x20of\x20service_identifier;\x20if\x20submission,\x20who\x20can\x20present\x20what']},{'object':'Machine','field':'node.pair.forward.guard\x20(ForwardGuard)','mode':'gate+source','extraction':[{'name':'retained_submission\x20(vector<u8>\x20identifiers)','meaning':'Submission\x20values\x20retained\x20into\x20Progress\x20Holder.retained_submission\x20(e.g.\x20sub-order\x20/\x20procured-service\x20evidence)\x20when\x20the\x20forward\x20executes','allowedOrigins':['submission'],'typeConstraint':'identifiers\x20must\x20exist\x20as\x20submission\x20slots\x20(existence\x20check,\x20E_RETAINED_SUBMISSION_ERROR)','configCheck':'configuring\x20the\x20guarded\x20forward\x20validates\x20the\x20identifiers\x20against\x20the\x20guard\x20table','runtimeFallback':'empty\x20list\x20->\x20gate\x20only,\x20nothing\x20retained;\x20non-empty\x20->\x20the\x20submitted\x20values\x20are\x20copied\x20into\x20the\x20session\x20history','riskNotes':['This\x20is\x20the\x20mechanism\x20that\x20carries\x20sub-order\x20data\x20from\x20an\x20operator\x27s\x20passport\x20into\x20the\x20order\x27s\x20Progress\x20history\x20—\x20downstream\x20analyzers\x20read\x20it\x20(queries\x201266-1268,\x201279)']}],'gateBehavior':'progress\x20node\x20advancement\x20with\x20a\x20passport:\x20guard\x20is\x20the\x20optional\x20pre/post\x20verification\x20layer\x20for\x20advancing\x20a\x20node;\x20namedOperator/permissionIndex\x20can\x20be\x20replaced\x20by\x20a\x20guard','setterChecklist':['Choose\x20which\x20submission\x20slots\x20are\x20worth\x20retaining\x20as\x20durable\x20evidence','Remember\x20the\x20order\x20of\x20verification:\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first'],'auditorChecklist':['For\x20each\x20guarded\x20forward:\x20does\x20the\x20retained\x20data\x20actually\x20prove\x20the\x20transition\x20claim\x20(sub-order\x20id,\x20amount)?']},{'object':'Allocation','field':'allocators[].guard\x20(Allocator)','mode':'gate+source','extraction':[{'name':'sharing\x20Recipient::GuardIdentifier','meaning':'Payout\x20recipient\x20address\x20for\x20that\x20sharing\x20line','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'recipient\x20must\x20be\x20a\x20valid\x20address\x20(ERECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20sharing\x20variants\x20bypass\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20decides\x20the\x20split\x20destination\x20at\x20alloc()\x20time\x20—\x20the\x20ALC1\x20audit\x20treats\x20an\x20unbound\x20recipient\x20as\x20a\x20redirect\x20risk','for_object\x20anchor\x20(protocol\x20139):\x20when\x20the\x20Allocation\x27s\x20payment_info.for_object\x20is\x20Some,\x20alloc()\x20enforces\x20submitted\x20address\x20==\x20for_object\x20and\x20aborts\x20with\x20ERECIPIENT_NOT_FOR_OBJECT\x20(15)\x20on\x20mismatch\x20—\x20the\x20anchor\x20is\x20mechanism-enforced,\x20not\x20advisory','for_object\x20=\x20None\x20carries\x20NO\x20anchor:\x20nothing\x20is\x20enforced\x20on-chain\x20and\x20the\x20recipient\x20semantics\x20are\x20entirely\x20the\x20creator\x27s\x20business\x20(Allocation\x20is\x20a\x20generic\x20component;\x20only\x20host\x20flows\x20that\x20declare\x20a\x20binding\x20get\x20the\x20anchor)']}],'gateBehavior':'alloc:\x20the\x20passed\x20guard\x20address\x20must\x20equal\x20the\x20registered\x20allocator\x20guard;\x20the\x20passport\x20verification\x20must\x20pass;\x20AllocationEvent\x20records\x20which\x20guard\x20ran','setterChecklist':['Bind\x20recipient\x20slots\x20inside\x20the\x20guard\x20expression\x20(signer\x20==\x20authorized\x20party,\x20state\x20==\x20expected\x20scope)\x20exactly\x20as\x20ALC1\x20expects','A\x20submission\x20slot\x20with\x20NO\x20scope\x20binding\x20=\x20HIGH\x20severity\x20finding','When\x20setting\x20payment_info:\x20for_object\x20=\x20Some\x20turns\x20it\x20into\x20an\x20enforced\x20anchor\x20—\x20every\x20GuardIdentifier\x20recipient\x20submission\x20must\x20equal\x20that\x20address\x20or\x20alloc()\x20aborts\x20(code\x2015);\x20verify\x20the\x20anchor\x20matches\x20the\x20intended\x20recipient\x20flow\x20BEFORE\x20create\x20(payment_info\x20is\x20immutable\x20after\x20create)','for_object\x20=\x20None\x20is\x20legal:\x20no\x20on-chain\x20anchor,\x20recipient\x20routing\x20is\x20then\x20purely\x20the\x20creator\x27s\x20design\x20—\x20flag\x20this\x20explicitly\x20in\x20the\x20plan\x20so\x20the\x20user\x20decides'],'auditorChecklist':['Cross-scenario\x20settlement\x20residual:\x20a\x20guard\x20bound\x20to\x20one\x20host\x20but\x20reusable\x20across\x20unrelated\x20callers\x20of\x20other\x20hosts','Every\x20submission\x20recipient\x20slot\x20must\x20have\x20a\x20scope\x20binding\x20(guard\x20expression\x20or\x20payment_info.for_object\x20anchor)\x20—\x20otherwise\x20funds\x20can\x20be\x20redirected','Check\x20payment_info.for_object:\x20Some\x20=\x20confirmed\x20enforced\x20anchor\x20(compare\x20against\x20intended\x20recipients);\x20None\x20=\x20trust-on-creator,\x20no\x20on-chain\x20enforcement\x20of\x20the\x20GuardIdentifier\x20destination']},{'object':'Payment','field':'info.for_guard\x20(PaymentInfo)','mode':'source','extraction':[{'name':'for_guard','meaning':'Provenance:\x20records\x20which\x20guard\x20context\x20produced\x20this\x20payment;\x20creates\x20an\x20object-linker\x20affiliation','allowedOrigins':['fixed'],'typeConstraint':'guard\x20address\x20(set\x20when\x20the\x20payment\x20info\x20is\x20created\x20with\x20a\x20guard\x20attached\x20—\x20the\x20payment_info_with_guard\x20variants)','configCheck':'n/a\x20—\x20plain\x20address\x20copy','runtimeFallback':'None\x20->\x20no\x20provenance','riskNotes':['Not\x20a\x20gate,\x20not\x20a\x20submission\x20slot\x20—\x20pure\x20traceability\x20(queries\x201057/1058,\x201108/1109)']}],'gateBehavior':'None','setterChecklist':['Attach\x20for_guard\x20when\x20the\x20payment\x20originates\x20from\x20a\x20guarded\x20flow'],'auditorChecklist':['Use\x20it\x20to\x20trace\x20payment\x20history\x20back\x20to\x20the\x20guarding\x20decision']},{'object':'Permission','field':'table\x20keys\x20(guard\x20addresses\x20as\x20permission\x20subjects)','mode':'gate','extraction':[],'gateBehavior':'A\x20guard\x20ADDRESS\x20can\x20be\x20granted\x20permission\x20indexes\x20like\x20a\x20user.\x20A\x20passport-asserted\x20operation\x20collects\x20the\x20passport\x20impack\x20guard\x20list\x20and\x20checks\x20permission\x20indexes\x20against\x20it:\x20a\x20passing\x20guard\x20can\x20therefore\x20carry\x20authorization\x20for\x20the\x20whole\x20transaction','setterChecklist':['Granting\x20an\x20index\x20to\x20a\x20guard\x20address\x20delegates\x20that\x20authority\x20to\x20anyone\x20who\x20can\x20pass\x20the\x20guard\x20—\x20treat\x20like\x20a\x20role\x20grant'],'auditorChecklist':['List\x20permission\x20subjects\x20that\x20are\x20guard\x20addresses;\x20evaluate\x20who\x20can\x20pass\x20those\x20guards\x20(they\x20inherit\x20the\x20permission)']}];export const VALUE_ORIGIN_SEMANTICS={'fixed':'Value\x20baked\x20into\x20the\x20guard\x20table\x20(b_submission=false).\x20Deterministic\x20on\x20every\x20use;\x20frozen\x20after\x20create;\x20used\x20as\x20the\x20fallback\x20when\x20no\x20submission\x20is\x20supplied.','submission':'Value\x20supplied\x20by\x20the\x20passport\x20builder\x20at\x20guard_add\x20time\x20(b_submission=true),\x20type-checked\x20against\x20the\x20table.\x20Whoever\x20builds\x20the\x20passport\x20controls\x20the\x20value\x20—\x20always\x20ask\x20who\x20that\x20is.','query':'Value\x20that\x20exists\x20only\x20inside\x20the\x20guard\x20input\x20expression\x20(native\x20query\x20opcodes\x201xxx).\x20It\x20constrains\x20verification\x20(state\x20coupling)\x20but\x20is\x20never\x20extractable;\x20extraction\x20slots\x20must\x20be\x20fixed\x20or\x20submission.'};export const GUARD_PASSPORT_DOCTRINE=['Slot\x20value\x20resolution\x20order:\x20passport\x20submission\x20value\x20->\x20fixed\x20guard\x20table\x20value\x20->\x20abort\x20(E_SUBMISSION_ID_NOT_FOUND).\x20A\x20slot\x20with\x20no\x20submission\x20and\x20no\x20fixed\x20value\x20aborts\x20the\x20host\x20call.','A\x20guard\x20only\x20participates\x20if\x20its\x20passport\x20verification\x20passes,\x20and\x20it\x20must\x20be\x20marked\x20impack\x20when\x20the\x20host\x20extracts\x20data\x20from\x20it\x20(result_for_permission\x20returns\x20impack\x20guards\x20only).','The\x20impack\x20list\x20is\x20snapshotted\x20before\x20verify()\x20runs;\x201167\x20quote_guard\x20membership\x20is\x20checked\x20against\x20this\x20snapshot\x20inside\x20the\x20native\x20verifier.','relies:\x20a\x20guard\x20may\x20depend\x20on\x20at\x20most\x204\x20other\x20guards\x20(MAX_DEPENDED_COUNT),\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first,\x20and\x20the\x20combine\x20logic\x20is\x20relies_logic_and\x20(AND\x20default,\x20OR\x20optional).','Dependency\x20eligibility\x20of\x20a\x20guard\x20=\x20relies\x20empty\x20AND\x20immutable\x20AND\x20rep\x20—\x20the\x20only\x20shape\x20accepted\x20as\x20a\x20repository\x20quote_guard\x20or\x20as\x20a\x20relied-upon\x20guard.','Guards\x20are\x20frozen\x20on\x20create\x20(immutable=true);\x20changing\x20a\x20fixed\x20value\x20means\x20deploying\x20a\x20new\x20guard\x20and\x20re-registering\x20it\x20on\x20every\x20host\x20object.','Type\x20checks\x20happen\x20at\x20config\x20time\x20(submission\x20value\x20type\x20/\x20address\x20format\x20/\x20address\x20compatibility)\x20and\x20at\x20passport\x20build\x20time\x20(the\x20first\x20type\x20byte\x20of\x20each\x20submitted\x20value\x20is\x20compared\x20against\x20the\x20table);\x20runtime\x20aborts\x20are\x20the\x20last\x20resort.','Allocation\x20for_object\x20anchor\x20(protocol\x20139):\x20the\x20Allocation\x27s\x20payment_info.for_object,\x20when\x20Some,\x20is\x20enforced\x20inside\x20alloc()\x20—\x20every\x20Recipient::GuardIdentifier\x20submission\x20must\x20equal\x20that\x20address\x20(abort\x20ERECIPIENT_NOT_FOR_OBJECT\x2015).\x20When\x20None,\x20no\x20anchor\x20exists\x20and\x20the\x20GuardIdentifier\x20destination\x20is\x20whoever\x20builds\x20the\x20passport\x27s\x20choice:\x20entirely\x20the\x20creator\x27s\x20business.\x20Allocation\x20is\x20a\x20generic\x20component\x20—\x20the\x20anchor\x20is\x20opt-in\x20per\x20instance,\x20not\x20a\x20host-flow\x20constant.'];export function guardSitesFor(a){return GUARD_FIELD_SITES['filter'](b=>b['object']['toLowerCase']()===a['toLowerCase']());}export function guardCognitionDoctrine(){return['Classify\x20the\x20mode\x20first:\x20pure\x20gate\x20(authorization\x20only),\x20pure\x20source\x20(data\x20only),\x20or\x20gate+source\x20(most\x20money\x20fields).','For\x20every\x20extracted\x20slot,\x20name\x20its\x20origin\x20(fixed\x20/\x20submission\x20/\x20query)\x20before\x20judging\x20safety.','For\x20submission\x20slots,\x20identify\x20the\x20passport\x20builder:\x20that\x20party\x20chooses\x20the\x20value.\x20Trace\x20what\x20constrains\x20it\x20(guard\x20expression,\x20host-side\x20balance/authorization\x20checks).','For\x20fixed\x20slots,\x20remember\x20immutability:\x20the\x20value\x20is\x20policy,\x20changed\x20only\x20by\x20re-issuing\x20the\x20guard.','For\x20query-coupled\x20guards,\x20map\x20each\x20query\x20id\x20to\x20its\x20data\x20dependency\x20(which\x20object,\x20which\x20field)\x20—\x20the\x20guard\x20is\x20only\x20as\x20fresh\x20as\x20the\x20queried\x20state.','Check\x20config-time\x20invariants:\x20type\x20of\x20each\x20slot,\x20registration\x20limits\x20(treasury\x20100\x20deposit\x20/\x20200\x20withdraw\x20/\x20reward\x20200\x20/\x20arbitration\x2050\x20/\x20repository\x2010\x20write\x20guards\x20per\x20policy),\x20relies\x20<=\x204,\x20submission\x20size\x20<=\x20256\x20bytes.','Report\x20any\x20submission\x20slot\x20that\x20decides\x20money\x20destination\x20or\x20amount\x20without\x20a\x20scope\x20binding\x20as\x20a\x20HIGH-severity\x20redirect\x20risk.'];}export const REPOSITORY_WRITE_ROUTE_MATRIX=[{'route':'auto_id_write','purpose':'Unguarded\x20auto-id\x20write:\x20policy\x20has\x20NO\x20write\x20guards\x20and\x20id_from\x20is\x20Clock/Signer.','idSource':'clock','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'auto_id_remove'},{'route':'auto_id_write_guarded','purpose':'Guarded\x20auto-id\x20write:\x20id\x20auto-generated;\x20the\x20guard\x20authorizes\x20AND\x20may\x20supply\x20the\x20data\x20payload\x20via\x20data_from_submission.','idSource':'clock','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':!![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'auto_id_remove_guarded'},{'route':'manual_id_write','purpose':'Unguarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20policy\x20must\x20have\x20no\x20write\x20guards.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'manual_id_remove'},{'route':'manual_id_write_guarded','purpose':'Guarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20the\x20guard\x20authorizes\x20only.\x20Extraction\x20slots\x20must\x20be\x20None.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![],'removeRoute':'manual_id_remove_guarded'},{'route':'mixed_id_write_guarded','purpose':'Mixed\x20write:\x20per\x20specified\x20guard,\x20id\x20comes\x20from\x20id_from_submission\x20(else\x20caller\x20vector)\x20and\x20data\x20from\x20data_from_submission\x20(else\x20caller\x20vector).\x20Requires\x20policy\x20id_from\x20==\x20NONE.','idSource':'submission-if-set-else-caller','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':!![],'honorsDataFromSubmission':!![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'mixed_id_remove_guarded'},{'route':'mixed_id_remove_guarded','purpose':'Mixed\x20removal:\x20deletes\x20the\x20record\x20whose\x20id\x20is\x20extracted\x20from\x20id_from_submission.\x20Requires\x20the\x20slot\x20to\x20be\x20SET.','idSource':'submission-if-set-else-caller','dataSource':'none','honorsIdFromSubmission':!![],'honorsDataFromSubmission':![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![]}];export function repositoryRouteSlotConflicts(a){const b=[],{idFrom:c,writeGuardCount:d,idFromSubmissionSet:e,dataFromSubmissionSet:f,intendedRoute:g}=a;return c==='none'&&d===0x0&&b['push']('E_POLICY_WRITE_GUARD_REQUIRED:\x20id_from=NONE\x20with\x20an\x20empty\x20write_guard\x20lets\x20anyone\x20mutate\x20the\x20policy\x20data'),c!=='none'&&e&&b['push']('E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN:\x20id\x20is\x20auto-generated\x20(clock/signer);\x20id_from_submission\x20can\x20never\x20fire'),(g==='manual_id_write_guarded'||g==='manual_id_remove_guarded')&&((e||f)&&b['push']('E_GUARD_SPECIFIED_ID_FROM_SUBMISSION:\x20the\x20chosen\x20route\x20rejects\x20every\x20extraction\x20slot;\x20use\x20the\x20mixed\x20guarded\x20write\x20or\x20the\x20guarded\x20auto-id\x20write\x20instead')),g==='auto_id_write_guarded'&&e&&b['push']('id_from_submission\x20is\x20never\x20consumed\x20by\x20the\x20guarded\x20auto-id\x20write\x20(id\x20is\x20auto-generated);\x20the\x20slot\x20is\x20dead\x20config'),g==='mixed_id_write_guarded'&&c!=='none'&&b['push']('E_POLICY_ID_FROM_NONE:\x20the\x20mixed\x20guarded\x20write\x20requires\x20policy\x20id_from=NONE'),g==='mixed_id_remove_guarded'&&!e&&b['push']('E_GUARD_NOT_SPECIFIED_ID_FROM_SUBMISSION:\x20mixed\x20removal\x20has\x20no\x20id\x20source;\x20set\x20id_from_submission\x20or\x20use\x20the\x20guarded\x20manual\x20removal\x20route'),b;}
@@ -1 +1 @@
1
- export const GUARD_SCENES=[{'id':'service_buy_guard','name':'Service\x20purchase\x20validation\x20(buy_guard)','host_object':'Service','binding_field':'buy_guard','validation_scene':'When\x20a\x20customer\x20places\x20an\x20order\x20to\x20purchase\x20a\x20service,\x20the\x20Guard\x20validates\x20whether\x20the\x20customer\x20is\x20eligible\x20to\x20purchase\x20(identity/permission/condition)','pass_result':'Create\x20the\x20Order\x20object;\x20the\x20customer\x20enters\x20the\x20payment\x20flow','fail_result':'Transaction\x20rejected;\x20Order\x20is\x20not\x20created;\x20the\x20customer\x20cannot\x20purchase','submission_source':'Customer\x20(signer\x20address,\x20credentials,\x20Passport,\x20etc.)','special_constraints':['The\x20Guard\x20table\x20must\x20declare\x20all\x20data\x20the\x20customer\x20needs\x20to\x20submit','The\x20name\x20of\x20b_submission=true\x20entries\x20must\x20be\x20a\x20natural-language\x20description\x20(the\x20contract\x20the\x20customer\x20sees)','If\x20the\x20Guard\x20references\x20the\x20Service\x20itself,\x20use\x20the\x20circular\x20reference\x20pattern\x20(CREATE\x20Service\x20→\x20CREATE\x20Guard\x20→\x20MODIFY\x20Service)','buy_guard\x20can\x20still\x20be\x20modified\x20after\x20Service\x20is\x20published\x20(via\x20MODIFY\x20Service)','Reentrancy:\x20LOW\x20—\x20Each\x20purchase\x20creates\x20a\x20fresh\x20Order;\x20no\x20existing\x20Order\x20state\x20is\x20modified.\x20Default:\x20no\x20reentrancy\x20risk.\x20IF\x20business\x20intent\x20is\x20\x27limit\x20one\x20purchase\x20per\x20user\x27\x20(limited-edition\x20goods,\x20whitelist\x20single-buy),\x20an\x20anti-reentrancy\x20check\x20is\x20REQUIRED\x20but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists\x20for\x20per-user\x20purchase\x20history\x20—\x20use\x20a\x20Repository\x20to\x20record\x20prior\x20purchases\x20and\x20add\x20`repository.data\x20has`\x20(query\x201166)\x20+\x20`logic_not`\x20to\x20root,\x20or\x20revoke\x20EntityRegistrar\x20membership\x20after\x20first\x20buy'],'common_patterns':['Identity\x20check:\x20context(Signer)\x20+\x20logic_equal\x20(single\x20address)\x20/\x20vec_contains_address\x20(whitelist)','Membership\x20validation:\x20query\x20EntityRegistrar(0xaab)\x20+\x20logic_and\x20combination','Time\x20limit:\x20context(Clock)\x20+\x20logic_as_u256_greater_or_equal','Multi-condition:\x20logic_and\x20combining\x20multiple\x20checks'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R7','R9']},{'id':'service_order_allocators_guard','name':'Allocation\x20strategy\x20selection\x20validation\x20(order_allocators[].guard)','host_object':'Service','binding_field':'order_allocators','validation_scene':'When\x20an\x20order\x20is\x20completed\x20or\x20allocation\x20conditions\x20are\x20met,\x20the\x20system\x20evaluates\x20each\x20Allocator\x27s\x20Guard\x20in\x20order_allocators\x20order.\x20'+'The\x20first\x20Allocator\x20whose\x20Guard\x20passes\x20executes\x20the\x20allocation','pass_result':'Execute\x20that\x20Allocator\x27s\x20allocation\x20strategy\x20(distribute\x20funds\x20by\x20ratio/condition)','fail_result':'Skip\x20this\x20Allocator\x20and\x20try\x20the\x20next\x20(first-match-wins).\x20If\x20all\x20Allocators\x20fail,\x20funds\x20are\x20not\x20distributed','submission_source':'System\x20auto-derives\x20from\x20Progress\x20state\x20(no\x20explicit\x20customer\x20submission\x20needed)','special_constraints':['order_allocators\x20is\x20order-sensitive:\x20the\x20first\x20Allocator\x20whose\x20Guard\x20passes\x20executes\x20allocation','order_allocators\x20cannot\x20be\x20modified\x20after\x20Service\x20is\x20published\x20(immutable)','Guard\x20usually\x20queries\x20Order/Progress\x20state\x20to\x20determine\x20allocation\x20conditions','Common\x20queries:\x20order.amount,\x20progress.current_node,\x20order.completed,\x20etc.','GuardIdentifier\x20can\x20be\x20used\x20for\x20dynamic\x20amounts\x20(extract\x20u64\x20value\x20from\x20table\x20as\x20allocation\x20ratio)','Guard+sharing\x20coupling:\x20Guard\x20determines\x20IF\x20allocation\x20happens;\x20sharing.who\x20determines\x20WHERE\x20funds\x20go.\x20If\x20sharing.who=Signer,\x20the\x20caller\x20receives\x20funds\x20—\x20the\x20Guard\x20MUST\x20bind\x20Signer\x20(context(Signer)==authorized)\x20to\x20prevent\x20theft.\x20PREFERRED:\x20use\x20sharing.who=Entity\x20(Treasury\x20or\x20fixed\x20address)\x20so\x20funds\x20always\x20go\x20to\x20the\x20legitimate\x20recipient\x20regardless\x20of\x20caller.','allocators\x20require\x20unique\x20guard\x20addresses:\x20no\x20two\x20allocators\x20may\x20reference\x20the\x20same\x20Guard\x20object\x20(create\x20separate\x20Guard\x20objects\x20with\x20identical\x20root/table\x20but\x20different\x20descriptions\x20if\x20needed).','First-match-wins:\x20only\x20the\x20first\x20allocator\x20whose\x20Guard\x20passes\x20executes;\x20subsequent\x20allocators\x20are\x20skipped.\x20Multiple\x20allocators\x20represent\x20alternative\x20strategies,\x20not\x20a\x20simultaneous\x20split.','If\x20sharing.who=Entity\x20references\x20a\x20Treasury\x20object,\x20verify\x20the\x20Treasury\x27s\x20permission\x20is\x20consistent\x20with\x20the\x20Service\x27s\x20permission\x20(different\x20permissions\x20=\x20different\x20permission\x20organizations\x20=\x20minor\x20risk).','Reentrancy:\x20LOW\x20—\x20Protocol-level\x20protection:\x20order::on_allocation\x20(order.move\x20L116-119)\x20asserts\x20`allocation`\x20field\x20is\x20None\x20(E_ALLOCATION_ALREADY_SPECIFIED),\x20enforcing\x20ONE\x20Allocation\x20object\x20per\x20Order,\x20ever.\x20After\x20alloc()\x20executes,\x20typical\x20Rate-mode\x20allocators\x20(sum=10000,\x20validated\x20at\x20allocation.move\x20L162-163)\x20and\x20any\x20Surplus-mode\x20allocator\x20drain\x20balance\x20to\x200\x20via\x20balance::withdraw_all\x20(L254),\x20making\x20a\x20second\x20alloc()\x20fail\x20at\x20`assert!(balance\x20>=\x20threshold)`\x20(L193).\x20EDGE\x20CASE:\x20Amount-mode-only\x20allocators\x20(no\x20Surplus,\x20total\x20<\x20full\x20balance)\x20leave\x20remainder;\x20a\x20second\x20alloc()\x20could\x20extract\x20more\x20—\x20mitigated\x20by\x20preferring\x20Rate/Surplus\x20modes.\x20External\x20deposit\x20via\x20receive()\x20(L291)\x20is\x20possible\x20but\x20irrational\x20(attacker\x20funds\x20the\x20Allocation\x20they\x20attack).\x20Optional\x20anti-reentrancy\x20primitive:\x20`order.allocation\x20some`\x20(query\x201568)\x20+\x20logic_not'],'common_patterns':['Node\x20state\x20check:\x20query(Progress.current_node)\x20+\x20logic_equal(\x27Completed\x27)','Amount\x20threshold:\x20query(Order.amount)\x20+\x20logic_as_u256_greater_or_equal(threshold)','Multi-condition\x20combination:\x20logic_and\x20(node\x20state\x20+\x20amount\x20+\x20time)','GuardIdentifier\x20dynamic\x20ratio:\x20table[u64]\x20extracts\x20allocation\x20ratio','Treasury+personal\x202-allocator\x20pattern:\x202\x20Guard\x20objects\x20(identical\x20root/table,\x20different\x20descriptions)\x20+\x202\x20allocators\x20(sharing.who=Entity\x20Treasury\x20/\x20Entity\x20personal)\x20—\x202\x20alternative\x20merchant\x20collection\x20approaches;\x20first-match-wins\x20means\x20only\x20the\x20first\x20executes.'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7']},{'id':'machine_forward_guard','name':'Workflow\x20node\x20advancement\x20validation\x20(Forward.guard)','host_object':'Machine','binding_field':'Forward.guard','validation_scene':'When\x20a\x20customer\x20or\x20provider\x20executes\x20a\x20Forward\x20operation\x20to\x20advance\x20the\x20workflow,\x20the\x20Guard\x20validates\x20whether\x20advancement\x20to\x20the\x20next\x20node\x20is\x20allowed','pass_result':'Progress\x20advances\x20to\x20next_node;\x20session\x20accumulates\x20weight','fail_result':'Forward\x20is\x20blocked;\x20Progress\x20stays\x20at\x20the\x20current\x20node.\x20Optional\x20retained_submission\x20retains\x20audit\x20data','submission_source':'The\x20party\x20executing\x20Forward\x20(Customer\x20or\x20Provider,\x20depending\x20on\x20Forward\x20configuration)','special_constraints':['Forward.guard\x20cannot\x20be\x20modified\x20after\x20Machine\x20is\x20published\x20(a\x20new\x20Machine\x20must\x20be\x20created)','Optional\x20retained_submission:\x20stores\x20submission\x20data\x20in\x20Progress\x20for\x20later\x20audit','retained_submission\x20indices\x20must\x20correspond\x20to\x20the\x20Guard\x20table','Common\x20queries:\x20progress.current_node,\x20progress.session_forward,\x20order.service,\x20etc.','Time\x20lock:\x20context(Clock)\x20+\x20calc_number_add(progress.entry_time,\x20duration)\x20tested\x20with\x201000ms','Reentrancy:\x20ALLOWED\x20—\x20By\x20design,\x20Forward\x20moves\x20progress.current_node\x20to\x20next_node\x20(progress.move\x20L443),\x20naturally\x20invalidating\x20the\x20Guard\x20at\x20the\x20old\x20node.\x20Re-submission\x20at\x20the\x20SAME\x20node\x20(before\x20forward\x20completes)\x20is\x20intentional:\x20users\x20may\x20fix\x20prior\x20submission\x20data\x20or\x20accumulate\x20session\x20weight\x20toward\x20threshold.\x20No\x20anti-reentrancy\x20primitive\x20needed.\x20Optional\x20observability\x20queries:\x20`progress.session_forward`\x20(1262),\x20`progress.history`\x20(1273),\x20`query_progress_history_find`\x20(1274)'],'common_patterns':['Identity\x20check:\x20context(Signer)\x20+\x20logic_equal\x20(only\x20specific\x20parties\x20can\x20advance)','Time\x20lock:\x20context(Clock)\x20+\x20calc_number_add\x20+\x20logic_as_u256_greater_or_equal','Prior\x20Forward\x20completion:\x20query_progress_history_find\x20+\x20logic_equal(accomplished=true)','Submission\x20data\x20validation:\x20identifier(submission)\x20+\x20logic_equal(expected_value)','Cross-object\x20query:\x20convert_witness=TypeOrderProgress(100)\x20queries\x20Progress\x20from\x20Order'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7','R8','R9']},{'id':'progress_submission_guard','name':'Progress\x20submission\x20data\x20validation\x20(submission\x20guard)','host_object':'Progress','binding_field':'submission','validation_scene':'Whether\x20the\x20data\x20(e.g.\x20signature,\x20credential,\x20confirmation)\x20submitted\x20during\x20Forward\x20execution\x20satisfies\x20the\x20Guard\x20condition','pass_result':'Forward\x20completes;\x20node\x20advances\x20after\x20session\x20accumulates\x20weight\x20to\x20threshold','fail_result':'Forward\x20does\x20not\x20complete;\x20waits\x20for\x20resubmission\x20or\x20condition\x20satisfaction','submission_source':'The\x20party\x20submitting\x20data\x20(Customer\x20or\x20Provider)','special_constraints':['Works\x20in\x20concert\x20with\x20Forward.guard:\x20Forward.guard\x20validates\x20eligibility,\x20submission\x20guard\x20validates\x20data','retained_submission\x20stores\x20submission\x20data\x20in\x20Progress\x20session\x20for\x20audit','Common\x20queries:\x20progress.session_forward,\x20progress.session_weight,\x20etc.','Reentrancy:\x20ALLOWED\x20—\x20Multiple\x20submissions\x20accumulate\x20session\x20weight\x20toward\x20threshold\x20by\x20design\x20(progress.move\x20session_accomplish_imp).\x20Re-submission\x20is\x20the\x20intended\x20mechanism\x20for\x20reaching\x20threshold;\x20no\x20anti-reentrancy\x20primitive\x20needed'],'common_patterns':['Signature\x20validation:\x20identifier(signature_submission)\x20+\x20logic_equal(expected)','Credential\x20validation:\x20query(Repository.data)\x20+\x20logic_equal(submission_proof)','Confirmation\x20validation:\x20identifier(confirm_submission)\x20+\x20logic_equal(true)'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R8']},{'id':'reward_guard','name':'Reward\x20claim\x20validation\x20(Reward.guard)','host_object':'Reward','binding_field':'guard','validation_scene':'When\x20a\x20user\x20claims\x20from\x20a\x20reward\x20pool,\x20the\x20Guard\x20validates\x20eligibility\x20to\x20claim','pass_result':'Reward\x20is\x20distributed\x20to\x20the\x20Claimant\x20and\x20recorded\x20in\x20reward_record','fail_result':'Claim\x20rejected;\x20reward\x20is\x20not\x20distributed','submission_source':'Claimant\x20(address,\x20credentials,\x20Passport)','special_constraints':['Common\x20query_reward_record_count\x20prevents\x20duplicate\x20claims\x20(one-time\x20claim)','Guard\x20usually\x20queries\x20history\x20records\x20+\x20time\x20conditions\x20+\x20identity\x20validation','If\x20the\x20Reward\x20references\x20a\x20Service,\x20use\x20the\x20circular\x20reference\x20pattern','Reentrancy:\x20CRITICAL\x20—\x20Guard\x20pass\x20distributes\x20reward\x20funds\x20to\x20the\x20Claimant\x20AND\x20creates\x20a\x20reward_record,\x20but\x20the\x20Guard\x20conditions\x20(identity,\x20time,\x20node\x20state)\x20do\x20NOT\x20naturally\x20invalidate\x20after\x20a\x20claim.\x20Without\x20an\x20explicit\x20anti-reentrancy\x20primitive,\x20the\x20same\x20Claimant\x20can\x20repeatedly\x20pass\x20the\x20Guard\x20and\x20DRAIN\x20THE\x20ENTIRE\x20POOL.\x20This\x20is\x20the\x20most\x20severe\x20reentrancy\x20scene.\x20REQUIRED\x20anti-reentrancy\x20primitive\x20(any\x20one):\x20`reward.record\x20has`\x20(query\x201613,\x20Bool)\x20+\x20`logic_not`;\x20OR\x20`reward.record\x20count`\x20(query\x201612,\x20U64)\x20+\x20`logic_equal(0)`;\x20OR\x20`reward.record.find_first`\x20(query\x201626,\x20U64)\x20+\x20`logic_not`/`logic_equal(0)`.\x20Reference\x20template:\x20MyShop_Advanced\x20Guard\x207\x20condition\x204\x20—\x20`logic_not(query_reward_record_exists(where.storeFromId=order_id))`'],'common_patterns':['One-time\x20claim:\x20query_reward_record_count(recipient)\x20+\x20logic_equal(0)','Time\x20window:\x20context(Clock)\x20+\x20logic_as_u256_greater_or_equal(start_time)','Identity\x20validation:\x20context(Signer)\x20+\x20vec_contains_address(allowlist)','Multi-condition:\x20logic_and\x20(identity\x20+\x20time\x20+\x20not\x20claimed\x20before)'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R7','R8','R9']},{'id':'repository_write_guard','name':'Repository\x20write\x20validation\x20(write_guard)','host_object':'Repository','binding_field':'write_guard','validation_scene':'When\x20writing\x20to\x20on-chain\x20storage,\x20the\x20Guard\x20validates\x20write\x20eligibility\x20and\x20optionally\x20extracts\x20data','pass_result':'Write\x20succeeds;\x20optional\x20id_from_submission\x20extracts\x20the\x20entity\x20ID,\x20data_from_submission\x20extracts\x20the\x20data\x20value','fail_result':'Write\x20rejected','submission_source':'Writer/Reader','special_constraints':['The\x20table\x20entry\x20referenced\x20by\x20id_from_submission\x20must\x20be\x20of\x20Address\x20type','The\x20table\x20entry\x20referenced\x20by\x20data_from_submission\x20must\x20match\x20the\x20Repository\x27s\x20value_type','Type\x20mismatch\x20leads\x20to\x20write\x20failure\x20or\x20data\x20corruption','Commonly\x20used\x20for\x20oracle\x20data\x20writes,\x20third-party\x20credential\x20attestation,\x20etc.','Reentrancy:\x20LOW\x20—\x20Default\x20writes\x20are\x20idempotent\x20(same\x20ID\x20overwrites,\x20different\x20ID\x20appends);\x20no\x20fund\x20flow.\x20IF\x20business\x20intent\x20is\x20\x27one\x20write\x20per\x20ID\x27\x20(e.g.\x20voting,\x20immutable\x20credential,\x20single-attestation),\x20an\x20anti-reentrancy\x20check\x20is\x20needed.\x20Optional\x20primitive:\x20`repository.data\x20has`\x20(query\x201166,\x20Bool)\x20+\x20`logic_not`'],'common_patterns':['Authorized\x20writer:\x20context(Signer)\x20+\x20vec_contains_address(authorized_writers)','Data\x20format\x20validation:\x20identifier(data_submission)\x20+\x20logic_string_contains(expected_prefix)','ID\x20extraction:\x20id_from_submission\x20+\x20data_from_submission\x20combination'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7']},{'id':'arbitration_usage_guard','name':'Dispute\x20initiation\x20validation\x20(usage_guard)','host_object':'Arbitration','binding_field':'usage_guard','validation_scene':'When\x20a\x20customer\x20initiates\x20a\x20dispute\x20against\x20an\x20order,\x20the\x20Guard\x20validates\x20whether\x20the\x20customer\x20is\x20eligible\x20to\x20initiate\x20the\x20dispute','pass_result':'Create\x20an\x20Arb\x20case\x20and\x20enter\x20the\x20arbitration\x20flow','fail_result':'Dispute\x20rejected;\x20Arb\x20is\x20not\x20created','submission_source':'Customer\x20(Passport\x20credential)','special_constraints':['When\x20Arbitration\x20bPaused=true,\x20it\x20blocks\x20first\x20(before\x20the\x20Guard\x20check)','The\x20customer\x20must\x20first\x20generate\x20a\x20Passport\x20(gen_passport\x20passes\x20usage_guard)','Common\x20queries:\x20order.completed,\x20order.service,\x20entity.has,\x20etc.','Guard\x20validates\x20customer\x20identity\x20+\x20order\x20status\x20+\x20dispute\x20eligibility','Reentrancy:\x20HIGH\x20—\x20Guard\x20pass\x20creates\x20a\x20new\x20Arb\x20case.\x20Without\x20anti-reentrancy,\x20a\x20customer\x20can\x20create\x20multiple\x20Arb\x20cases\x20for\x20the\x20SAME\x20Order\x20(up\x20to\x20MAX_DISPUTE_COUNT=10\x20per\x20order.move\x20L96),\x20harassing\x20the\x20counterparty\x20and\x20inflating\x20arbitration\x20system\x20load.\x20Not\x20direct\x20fund\x20loss,\x20but\x20severe\x20system\x20abuse.\x20Note:\x20order::dispute\x20(order.move\x20L93-99)\x20deduplicates\x20by\x20Arb\x20address\x20but\x20does\x20NOT\x20prevent\x20multiple\x20distinct\x20Arbs\x20for\x20the\x20same\x20Order.\x20REQUIRED\x20anti-reentrancy\x20primitive\x20(any\x20one):\x20`order.dispute\x20has`\x20(query\x201565,\x20Bool,\x20per-Arb\x20check)\x20+\x20`logic_not`;\x20OR\x20`order.dispute\x20count`\x20(query\x201564,\x20U64)\x20+\x20`logic_equal(0)`\x20(strict:\x20block\x20any\x20prior\x20dispute)\x20or\x20`logic_as_u256_less_or_equal(N)`\x20(lenient:\x20allow\x20up\x20to\x20N\x20disputes)'],'common_patterns':['Order\x20status\x20validation:\x20query(Order.status)\x20+\x20logic_equal(\x27completed\x27)','Membership\x20validation:\x20query(EntityRegistrar)\x20+\x20logic_and','Time\x20window:\x20query(Order.time)\x20+\x20calc_number_add\x20+\x20context(Clock)','Passport\x20credential:\x20identifier(passport_submission)\x20+\x20context(Signer)'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R7','R8','R9']},{'id':'arbitration_voting_guard','name':'Arbitration\x20voting\x20weight\x20validation\x20(voting_guard[])','host_object':'Arbitration','binding_field':'voting_guard','validation_scene':'When\x20an\x20arbitrator\x20votes,\x20the\x20Guard\x20validates\x20voting\x20eligibility\x20and\x20extracts\x20the\x20voting\x20weight\x20(u32)\x20from\x20GuardIdentifier','pass_result':'Vote\x20is\x20counted;\x20weight\x20is\x20the\x20value\x20extracted\x20by\x20GuardIdentifier','fail_result':'Vote\x20rejected','submission_source':'Voter\x20(Passport\x20credential\x20with\x20weight\x20data)','special_constraints':['The\x20table\x20entry\x20referenced\x20by\x20GuardIdentifier\x20must\x20be\x20of\x20a\x20numeric\x20type\x20(U8-U256),\x20cast\x20to\x20u32','Non-numeric\x20types\x20cause\x20E_GUARD_IDENTIFIER_NOT_NUMBER\x20error','b_submission\x20must\x20be\x20true\x20(weight\x20is\x20submitted\x20at\x20runtime\x20by\x20the\x20voter)','Multiple\x20voting_guards\x20can\x20be\x20configured,\x20each\x20corresponding\x20to\x20a\x20different\x20voter\x20group','When\x20Arbitration\x20bPaused=true,\x20voting\x20is\x20blocked','Reentrancy:\x20CRITICAL\x20—\x20Guard\x20pass\x20counts\x20the\x20vote\x20with\x20the\x20extracted\x20weight.\x20Without\x20anti-reentrancy,\x20the\x20same\x20voter\x20can\x20vote\x20MULTIPLE\x20times,\x20multiplying\x20their\x20weight\x20and\x20skewing\x20the\x20arbitration\x20result\x20(which\x20directly\x20determines\x20fund\x20ownership\x20via\x20compensation).\x20The\x20voter\x27s\x20eligibility\x20(identity,\x20reputation)\x20does\x20NOT\x20naturally\x20invalidate\x20after\x20voting.\x20REQUIRED\x20anti-reentrancy\x20primitive\x20(any\x20one):\x20`arb.voted\x20has`\x20(query\x201404,\x20Bool,\x20per-voter)\x20+\x20`logic_not`;\x20OR\x20`arb.voted.agree\x20has`\x20(query\x201406,\x20Bool,\x20per-voter-per-proposition)\x20+\x20`logic_not`;\x20OR\x20`arb.voted.agree\x20count`\x20(query\x201405,\x20U64,\x20per-voter)\x20+\x20`logic_equal(0)`.\x20Note:\x20`arb.voted_count`\x20(1403)\x20is\x20total\x20voter\x20count\x20(NOT\x20per-voter)\x20and\x20does\x20NOT\x20serve\x20as\x20an\x20anti-reentrancy\x20primitive\x20for\x20individual\x20voters'],'common_patterns':['Reputation\x20score\x20weight:\x20query(EntityRegistrar.records[reputation])\x20+\x20GuardIdentifier(u64)','Fixed\x20weight:\x20identifier(constant_weight)\x20+\x20GuardIdentifier','Multi-tier\x20voting:\x20different\x20voting_guards\x20correspond\x20to\x20different\x20weight\x20tiers','Eligibility\x20+\x20weight:\x20logic_and\x20(eligibility\x20check\x20+\x20GuardIdentifier\x20extracts\x20weight)'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7','R8','R9']},{'id':'gen_passport_guard','name':'Passport\x20credential\x20generation\x20validation\x20(gen_passport)','host_object':'Standalone','binding_field':'none','validation_scene':'When\x20a\x20user\x20calls\x20gen_passport,\x20the\x20Guard\x20validates\x20user\x20eligibility\x20and\x20generates\x20a\x20Passport\x20with\x20credentials','pass_result':'Passport\x20is\x20generated,\x20containing\x20credentials\x20validated\x20by\x20the\x20Guard','fail_result':'Passport\x20generation\x20fails;\x20the\x20user\x20did\x20not\x20pass\x20validation','submission_source':'Passport\x20applicant\x20(signer\x20+\x20credentials)','special_constraints':['quote_guard\x20is\x20a\x20RIGID\x20verification\x20requirement\x20when\x20querying\x20Repository\x20data\x20(query\x201167)','Two-phase:\x20passport\x20generation\x20scans\x20guard\x20+\x20prepares\x20quote_guard,\x20passport\x20verification\x20re-checks\x20+\x20verifies','If\x20quote_guard==None:\x20Repository\x20data\x20is\x20freely\x20queryable\x20(no\x20access\x20control)','Guard\x20can\x20be\x20created\x20standalone\x20(not\x20bound\x20to\x20a\x20specific\x20Host\x20Object)','Guard\x20can\x20be\x20depended\x20on\x20by\x20other\x20Guards\x20via\x20rely\x20(requires\x20rep=true)','The\x20Passport\x20generated\x20by\x20gen_passport\x20can\x20be\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations','Reentrancy:\x20LOW\x20—\x20Each\x20gen_passport\x20call\x20generates\x20an\x20independent\x20Passport\x20(one\x20Passport\x20per\x20operation).\x20Multiple\x20Passports\x20for\x20the\x20same\x20user\x20are\x20usually\x20valid\x20(each\x20serves\x20a\x20different\x20subsequent\x20operation).\x20IF\x20business\x20intent\x20is\x20\x27one\x20active\x20Passport\x20per\x20user\x27,\x20an\x20anti-reentrancy\x20check\x20is\x20needed\x20but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists\x20—\x20use\x20off-chain\x20tracking\x20or\x20a\x20Repository\x20to\x20record\x20issued\x20Passport\x20IDs'],'common_patterns':['Identity\x20validation:\x20context(Signer)\x20+\x20logic_equal\x20(single\x20address/whitelist)','Membership\x20eligibility:\x20query(EntityRegistrar)\x20+\x20logic_equal','Reputation\x20threshold:\x20query(EntityRegistrar.records[reputation])\x20+\x20logic_as_u256_greater_or_equal','Multi-condition\x20combination:\x20logic_and\x20(identity\x20+\x20eligibility\x20+\x20reputation)'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7']}];export function findScene(a,b){return GUARD_SCENES['find'](c=>c['host_object']===a&&c['binding_field']===b);}export function inferSceneFromAction(a){const b={'buy':'service_buy_guard','forward':'machine_forward_guard','allocate':'service_order_allocators_guard','claim_reward':'reward_guard','vote':'arbitration_voting_guard','dispute':'arbitration_usage_guard','write_repository':'repository_write_guard','submit_progress':'progress_submission_guard','gen_passport':'gen_passport_guard'},c=b[a];return GUARD_SCENES['find'](d=>d['id']===c);}export function getImmutableScenes(){return GUARD_SCENES['filter'](a=>!a['mutable_after_publish']);}export function getNumericIdentifierScenes(){return GUARD_SCENES['filter'](a=>a['special_constraints']['some'](b=>b['includes']('numeric')||b['includes']('GuardIdentifier')));}
1
+ export const GUARD_SCENES=[{'id':'service_buy_guard','name':'Service\x20purchase\x20validation\x20(buy_guard)','host_object':'Service','binding_field':'buy_guard','validation_scene':'When\x20a\x20customer\x20places\x20an\x20order\x20to\x20purchase\x20a\x20service,\x20the\x20Guard\x20validates\x20whether\x20the\x20customer\x20is\x20eligible\x20to\x20purchase\x20(identity/permission/condition)','pass_result':'Create\x20the\x20Order\x20object;\x20the\x20customer\x20enters\x20the\x20payment\x20flow','fail_result':'Transaction\x20rejected;\x20Order\x20is\x20not\x20created;\x20the\x20customer\x20cannot\x20purchase','submission_source':'Customer\x20(signer\x20address,\x20credentials,\x20Passport,\x20etc.)','special_constraints':['The\x20Guard\x20table\x20must\x20declare\x20all\x20data\x20the\x20customer\x20needs\x20to\x20submit','The\x20name\x20of\x20b_submission=true\x20entries\x20must\x20be\x20a\x20natural-language\x20description\x20(the\x20contract\x20the\x20customer\x20sees)','If\x20the\x20Guard\x20references\x20the\x20Service\x20itself,\x20use\x20the\x20circular\x20reference\x20pattern\x20(CREATE\x20Service\x20→\x20CREATE\x20Guard\x20→\x20MODIFY\x20Service)','buy_guard\x20can\x20still\x20be\x20modified\x20after\x20Service\x20is\x20published\x20(via\x20MODIFY\x20Service)','Reentrancy:\x20LOW\x20—\x20Each\x20purchase\x20creates\x20a\x20fresh\x20Order;\x20no\x20existing\x20Order\x20state\x20is\x20modified.\x20Default:\x20no\x20reentrancy\x20risk.\x20IF\x20business\x20intent\x20is\x20\x27limit\x20one\x20purchase\x20per\x20user\x27\x20(limited-edition\x20goods,\x20whitelist\x20single-buy),\x20an\x20anti-reentrancy\x20check\x20is\x20REQUIRED\x20but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists\x20for\x20per-user\x20purchase\x20history\x20—\x20use\x20a\x20Repository\x20to\x20record\x20prior\x20purchases\x20and\x20add\x20`repository.data\x20has`\x20(query\x201166)\x20+\x20`logic_not`\x20to\x20root,\x20or\x20revoke\x20EntityRegistrar\x20membership\x20after\x20first\x20buy'],'common_patterns':['Identity\x20check:\x20context(Signer)\x20+\x20logic_equal\x20(single\x20address)\x20/\x20vec_contains_address\x20(whitelist)','Membership\x20validation:\x20query\x20EntityRegistrar(0xaab)\x20+\x20logic_and\x20combination','Time\x20limit:\x20context(Clock)\x20+\x20logic_as_u256_greater_or_equal','Multi-condition:\x20logic_and\x20combining\x20multiple\x20checks'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R7','R9']},{'id':'service_order_allocators_guard','name':'Allocation\x20strategy\x20selection\x20validation\x20(order_allocators[].guard)','host_object':'Service','binding_field':'order_allocators','validation_scene':'When\x20an\x20order\x20is\x20completed\x20or\x20allocation\x20conditions\x20are\x20met,\x20the\x20system\x20evaluates\x20each\x20Allocator\x27s\x20Guard\x20in\x20order_allocators\x20order.\x20'+'The\x20first\x20Allocator\x20whose\x20Guard\x20passes\x20executes\x20the\x20allocation','pass_result':'Execute\x20that\x20Allocator\x27s\x20allocation\x20strategy\x20(distribute\x20funds\x20by\x20ratio/condition)','fail_result':'Skip\x20this\x20Allocator\x20and\x20try\x20the\x20next\x20(first-match-wins).\x20If\x20all\x20Allocators\x20fail,\x20funds\x20are\x20not\x20distributed','submission_source':'System\x20auto-derives\x20from\x20Progress\x20state\x20(no\x20explicit\x20customer\x20submission\x20needed)','special_constraints':['order_allocators\x20is\x20order-sensitive:\x20the\x20first\x20Allocator\x20whose\x20Guard\x20passes\x20executes\x20allocation','order_allocators\x20cannot\x20be\x20modified\x20after\x20Service\x20is\x20published\x20(immutable)','Guard\x20usually\x20queries\x20Order/Progress\x20state\x20to\x20determine\x20allocation\x20conditions','Common\x20queries:\x20order.amount,\x20progress.current_node,\x20order.completed,\x20etc.','GuardIdentifier\x20can\x20be\x20used\x20for\x20dynamic\x20amounts\x20(extract\x20u64\x20value\x20from\x20table\x20as\x20allocation\x20ratio)','Guard+sharing\x20coupling:\x20Guard\x20determines\x20IF\x20allocation\x20happens;\x20sharing.who\x20determines\x20WHERE\x20funds\x20go.\x20If\x20sharing.who=Signer,\x20the\x20caller\x20receives\x20funds\x20—\x20the\x20Guard\x20MUST\x20bind\x20Signer\x20(context(Signer)==authorized)\x20to\x20prevent\x20theft.\x20PREFERRED:\x20use\x20sharing.who=Entity\x20(Treasury\x20or\x20fixed\x20address)\x20so\x20funds\x20always\x20go\x20to\x20the\x20legitimate\x20recipient\x20regardless\x20of\x20caller.','allocators\x20require\x20unique\x20guard\x20addresses:\x20no\x20two\x20allocators\x20may\x20reference\x20the\x20same\x20Guard\x20object\x20(create\x20separate\x20Guard\x20objects\x20with\x20identical\x20root/table\x20but\x20different\x20descriptions\x20if\x20needed).','First-match-wins:\x20only\x20the\x20first\x20allocator\x20whose\x20Guard\x20passes\x20executes;\x20subsequent\x20allocators\x20are\x20skipped.\x20Multiple\x20allocators\x20represent\x20alternative\x20strategies,\x20not\x20a\x20simultaneous\x20split.','If\x20sharing.who=Entity\x20references\x20a\x20Treasury\x20object,\x20verify\x20the\x20Treasury\x27s\x20permission\x20is\x20consistent\x20with\x20the\x20Service\x27s\x20permission\x20(different\x20permissions\x20=\x20different\x20permission\x20organizations\x20=\x20minor\x20risk).','Reentrancy:\x20LOW\x20—\x20Protocol-level\x20protection:\x20the\x20Order\x20layer\x20asserts\x20the\x20`allocation`\x20field\x20is\x20None\x20(E_ALLOCATION_ALREADY_SPECIFIED),\x20enforcing\x20ONE\x20Allocation\x20object\x20per\x20Order,\x20ever.\x20After\x20alloc()\x20executes,\x20typical\x20Rate-mode\x20allocators\x20(sum=10000)\x20and\x20any\x20Surplus-mode\x20allocator\x20drain\x20balance\x20to\x200\x20via\x20balance::withdraw_all,\x20making\x20a\x20second\x20alloc()\x20fail\x20at\x20`assert!(balance\x20>=\x20threshold)`.\x20EDGE\x20CASE:\x20Amount-mode-only\x20allocators\x20(no\x20Surplus,\x20total\x20<\x20full\x20balance)\x20leave\x20remainder;\x20a\x20second\x20alloc()\x20could\x20extract\x20more\x20—\x20mitigated\x20by\x20preferring\x20Rate/Surplus\x20modes.\x20External\x20deposit\x20via\x20receive()\x20is\x20possible\x20but\x20irrational\x20(attacker\x20funds\x20the\x20Allocation\x20they\x20attack).\x20Optional\x20anti-reentrancy\x20primitive:\x20`order.allocation\x20some`\x20(query\x201568)\x20+\x20logic_not'],'common_patterns':['Node\x20state\x20check:\x20query(Progress.current_node)\x20+\x20logic_equal(\x27Completed\x27)','Amount\x20threshold:\x20query(Order.amount)\x20+\x20logic_as_u256_greater_or_equal(threshold)','Multi-condition\x20combination:\x20logic_and\x20(node\x20state\x20+\x20amount\x20+\x20time)','GuardIdentifier\x20dynamic\x20ratio:\x20table[u64]\x20extracts\x20allocation\x20ratio','Treasury+personal\x202-allocator\x20pattern:\x202\x20Guard\x20objects\x20(identical\x20root/table,\x20different\x20descriptions)\x20+\x202\x20allocators\x20(sharing.who=Entity\x20Treasury\x20/\x20Entity\x20personal)\x20—\x202\x20alternative\x20merchant\x20collection\x20approaches;\x20first-match-wins\x20means\x20only\x20the\x20first\x20executes.'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7']},{'id':'machine_forward_guard','name':'Workflow\x20node\x20advancement\x20validation\x20(Forward.guard)','host_object':'Machine','binding_field':'Forward.guard','validation_scene':'When\x20a\x20customer\x20or\x20provider\x20executes\x20a\x20Forward\x20operation\x20to\x20advance\x20the\x20workflow,\x20the\x20Guard\x20validates\x20whether\x20advancement\x20to\x20the\x20next\x20node\x20is\x20allowed','pass_result':'Progress\x20advances\x20to\x20next_node;\x20session\x20accumulates\x20weight','fail_result':'Forward\x20is\x20blocked;\x20Progress\x20stays\x20at\x20the\x20current\x20node.\x20Optional\x20retained_submission\x20retains\x20audit\x20data','submission_source':'The\x20party\x20executing\x20Forward\x20(Customer\x20or\x20Provider,\x20depending\x20on\x20Forward\x20configuration)','special_constraints':['Forward.guard\x20cannot\x20be\x20modified\x20after\x20Machine\x20is\x20published\x20(a\x20new\x20Machine\x20must\x20be\x20created)','Optional\x20retained_submission:\x20stores\x20submission\x20data\x20in\x20Progress\x20for\x20later\x20audit','retained_submission\x20indices\x20must\x20correspond\x20to\x20the\x20Guard\x20table','Common\x20queries:\x20progress.current_node,\x20progress.session_forward,\x20order.service,\x20etc.','Time\x20lock:\x20context(Clock)\x20+\x20calc_number_add(progress.entry_time,\x20duration)\x20tested\x20with\x201000ms','Reentrancy:\x20ALLOWED\x20—\x20By\x20design,\x20Forward\x20moves\x20progress.current_node\x20to\x20next_node,\x20naturally\x20invalidating\x20the\x20Guard\x20at\x20the\x20old\x20node.\x20Re-submission\x20at\x20the\x20SAME\x20node\x20(before\x20forward\x20completes)\x20is\x20intentional:\x20users\x20may\x20fix\x20prior\x20submission\x20data\x20or\x20accumulate\x20session\x20weight\x20toward\x20threshold.\x20No\x20anti-reentrancy\x20primitive\x20needed.\x20Optional\x20observability\x20queries:\x20`progress.session_forward`\x20(1262),\x20`progress.history`\x20(1273),\x20`query_progress_history_find`\x20(1274)'],'common_patterns':['Identity\x20check:\x20context(Signer)\x20+\x20logic_equal\x20(only\x20specific\x20parties\x20can\x20advance)','Time\x20lock:\x20context(Clock)\x20+\x20calc_number_add\x20+\x20logic_as_u256_greater_or_equal','Prior\x20Forward\x20completion:\x20query_progress_history_find\x20+\x20logic_equal(accomplished=true)','Submission\x20data\x20validation:\x20identifier(submission)\x20+\x20logic_equal(expected_value)','Cross-object\x20query:\x20convert_witness=TypeOrderProgress(100)\x20queries\x20Progress\x20from\x20Order'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7','R8','R9']},{'id':'progress_submission_guard','name':'Progress\x20submission\x20data\x20validation\x20(submission\x20guard)','host_object':'Progress','binding_field':'submission','validation_scene':'Whether\x20the\x20data\x20(e.g.\x20signature,\x20credential,\x20confirmation)\x20submitted\x20during\x20Forward\x20execution\x20satisfies\x20the\x20Guard\x20condition','pass_result':'Forward\x20completes;\x20node\x20advances\x20after\x20session\x20accumulates\x20weight\x20to\x20threshold','fail_result':'Forward\x20does\x20not\x20complete;\x20waits\x20for\x20resubmission\x20or\x20condition\x20satisfaction','submission_source':'The\x20party\x20submitting\x20data\x20(Customer\x20or\x20Provider)','special_constraints':['Works\x20in\x20concert\x20with\x20Forward.guard:\x20Forward.guard\x20validates\x20eligibility,\x20submission\x20guard\x20validates\x20data','retained_submission\x20stores\x20submission\x20data\x20in\x20Progress\x20session\x20for\x20audit','Common\x20queries:\x20progress.session_forward,\x20progress.session_weight,\x20etc.','Reentrancy:\x20ALLOWED\x20—\x20Multiple\x20submissions\x20accumulate\x20session\x20weight\x20toward\x20threshold\x20by\x20design.\x20Re-submission\x20is\x20the\x20intended\x20mechanism\x20for\x20reaching\x20threshold;\x20no\x20anti-reentrancy\x20primitive\x20needed'],'common_patterns':['Signature\x20validation:\x20identifier(signature_submission)\x20+\x20logic_equal(expected)','Credential\x20validation:\x20query(Repository.data)\x20+\x20logic_equal(submission_proof)','Confirmation\x20validation:\x20identifier(confirm_submission)\x20+\x20logic_equal(true)'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R8']},{'id':'reward_claim','name':'Reward\x20claim\x20validation\x20(Reward.guard)','host_object':'Reward','binding_field':'guard','validation_scene':'When\x20a\x20user\x20claims\x20from\x20a\x20reward\x20pool,\x20the\x20Guard\x20validates\x20eligibility\x20to\x20claim','pass_result':'Reward\x20is\x20distributed\x20to\x20the\x20Claimant\x20and\x20recorded\x20in\x20reward_record','fail_result':'Claim\x20rejected;\x20reward\x20is\x20not\x20distributed','submission_source':'Claimant\x20(address,\x20credentials,\x20Passport)','special_constraints':['Common\x20query_reward_record_count\x20prevents\x20duplicate\x20claims\x20(one-time\x20claim)','Guard\x20usually\x20queries\x20history\x20records\x20+\x20time\x20conditions\x20+\x20identity\x20validation','If\x20the\x20Reward\x20references\x20a\x20Service,\x20use\x20the\x20circular\x20reference\x20pattern','Reentrancy:\x20CRITICAL\x20—\x20Guard\x20pass\x20distributes\x20reward\x20funds\x20to\x20the\x20Claimant\x20AND\x20creates\x20a\x20reward_record,\x20but\x20the\x20Guard\x20conditions\x20(identity,\x20time,\x20node\x20state)\x20do\x20NOT\x20naturally\x20invalidate\x20after\x20a\x20claim.\x20Without\x20an\x20explicit\x20anti-reentrancy\x20primitive,\x20the\x20same\x20Claimant\x20can\x20repeatedly\x20pass\x20the\x20Guard\x20and\x20DRAIN\x20THE\x20ENTIRE\x20POOL.\x20This\x20is\x20the\x20most\x20severe\x20reentrancy\x20scene.\x20REQUIRED\x20anti-reentrancy\x20primitive\x20(any\x20one):\x20`reward.record\x20has`\x20(query\x201613,\x20Bool)\x20+\x20`logic_not`;\x20OR\x20`reward.record\x20count`\x20(query\x201612,\x20U64)\x20+\x20`logic_equal(0)`;\x20OR\x20`reward.record.find_first`\x20(query\x201626,\x20U64)\x20+\x20`logic_not`/`logic_equal(0)`.\x20Reference\x20template:\x20MyShop_Advanced\x20Guard\x207\x20condition\x204\x20—\x20`logic_not(query_reward_record_exists(where.storeFromId=order_id))`'],'common_patterns':['One-time\x20claim:\x20query_reward_record_count(recipient)\x20+\x20logic_equal(0)','Time\x20window:\x20context(Clock)\x20+\x20logic_as_u256_greater_or_equal(start_time)','Identity\x20validation:\x20context(Signer)\x20+\x20vec_contains_address(allowlist)','Multi-condition:\x20logic_and\x20(identity\x20+\x20time\x20+\x20not\x20claimed\x20before)'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R7','R8','R9']},{'id':'repository_write_guard','name':'Repository\x20write\x20validation\x20(write_guard)','host_object':'Repository','binding_field':'write_guard','validation_scene':'When\x20writing\x20to\x20on-chain\x20storage,\x20the\x20Guard\x20validates\x20write\x20eligibility\x20and\x20optionally\x20extracts\x20data','pass_result':'Write\x20succeeds;\x20optional\x20id_from_submission\x20extracts\x20the\x20entity\x20ID,\x20data_from_submission\x20extracts\x20the\x20data\x20value','fail_result':'Write\x20rejected','submission_source':'Writer/Reader','special_constraints':['The\x20table\x20entry\x20referenced\x20by\x20id_from_submission\x20must\x20be\x20of\x20Address\x20type','The\x20table\x20entry\x20referenced\x20by\x20data_from_submission\x20must\x20match\x20the\x20Repository\x27s\x20value_type','Type\x20mismatch\x20leads\x20to\x20write\x20failure\x20or\x20data\x20corruption','Commonly\x20used\x20for\x20oracle\x20data\x20writes,\x20third-party\x20credential\x20attestation,\x20etc.','Reentrancy:\x20LOW\x20—\x20Default\x20writes\x20are\x20idempotent\x20(same\x20ID\x20overwrites,\x20different\x20ID\x20appends);\x20no\x20fund\x20flow.\x20IF\x20business\x20intent\x20is\x20\x27one\x20write\x20per\x20ID\x27\x20(e.g.\x20voting,\x20immutable\x20credential,\x20single-attestation),\x20an\x20anti-reentrancy\x20check\x20is\x20needed.\x20Optional\x20primitive:\x20`repository.data\x20has`\x20(query\x201166,\x20Bool)\x20+\x20`logic_not`'],'common_patterns':['Authorized\x20writer:\x20context(Signer)\x20+\x20vec_contains_address(authorized_writers)','Data\x20format\x20validation:\x20identifier(data_submission)\x20+\x20logic_string_contains(expected_prefix)','ID\x20extraction:\x20id_from_submission\x20+\x20data_from_submission\x20combination'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7']},{'id':'arbitration_usage_guard','name':'Dispute\x20initiation\x20validation\x20(usage_guard)','host_object':'Arbitration','binding_field':'usage_guard','validation_scene':'When\x20a\x20customer\x20initiates\x20a\x20dispute\x20against\x20an\x20order,\x20the\x20Guard\x20validates\x20whether\x20the\x20customer\x20is\x20eligible\x20to\x20initiate\x20the\x20dispute','pass_result':'Create\x20an\x20Arb\x20case\x20and\x20enter\x20the\x20arbitration\x20flow','fail_result':'Dispute\x20rejected;\x20Arb\x20is\x20not\x20created','submission_source':'Customer\x20(Passport\x20credential)','special_constraints':['When\x20Arbitration\x20bPaused=true,\x20it\x20blocks\x20first\x20(before\x20the\x20Guard\x20check)','The\x20customer\x20must\x20first\x20generate\x20a\x20Passport\x20(gen_passport\x20passes\x20usage_guard)','Common\x20queries:\x20order.completed,\x20order.service,\x20entity.has,\x20etc.','Guard\x20validates\x20customer\x20identity\x20+\x20order\x20status\x20+\x20dispute\x20eligibility','Reentrancy:\x20HIGH\x20—\x20Guard\x20pass\x20creates\x20a\x20new\x20Arb\x20case.\x20Without\x20anti-reentrancy,\x20a\x20customer\x20can\x20create\x20multiple\x20Arb\x20cases\x20for\x20the\x20SAME\x20Order\x20(up\x20to\x20MAX_DISPUTE_COUNT=10),\x20harassing\x20the\x20counterparty\x20and\x20inflating\x20arbitration\x20system\x20load.\x20Not\x20direct\x20fund\x20loss,\x20but\x20severe\x20system\x20abuse.\x20Note:\x20the\x20dispute\x20entry\x20point\x20deduplicates\x20by\x20Arb\x20address\x20but\x20does\x20NOT\x20prevent\x20multiple\x20distinct\x20Arbs\x20for\x20the\x20same\x20Order.\x20REQUIRED\x20anti-reentrancy\x20primitive\x20(any\x20one):\x20`order.dispute\x20has`\x20(query\x201565,\x20Bool,\x20per-Arb\x20check)\x20+\x20`logic_not`;\x20OR\x20`order.dispute\x20count`\x20(query\x201564,\x20U64)\x20+\x20`logic_equal(0)`\x20(strict:\x20block\x20any\x20prior\x20dispute)\x20or\x20`logic_as_u256_less_or_equal(N)`\x20(lenient:\x20allow\x20up\x20to\x20N\x20disputes)'],'common_patterns':['Order\x20status\x20validation:\x20query(Order.status)\x20+\x20logic_equal(\x27completed\x27)','Membership\x20validation:\x20query(EntityRegistrar)\x20+\x20logic_and','Time\x20window:\x20query(Order.time)\x20+\x20calc_number_add\x20+\x20context(Clock)','Passport\x20credential:\x20identifier(passport_submission)\x20+\x20context(Signer)'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R7','R8','R9']},{'id':'arbitration_voting_guard','name':'Arbitration\x20voting\x20weight\x20validation\x20(voting_guard[])','host_object':'Arbitration','binding_field':'voting_guard','validation_scene':'When\x20an\x20arbitrator\x20votes,\x20the\x20Guard\x20validates\x20voting\x20eligibility\x20and\x20extracts\x20the\x20voting\x20weight\x20(u32)\x20from\x20GuardIdentifier','pass_result':'Vote\x20is\x20counted;\x20weight\x20is\x20the\x20value\x20extracted\x20by\x20GuardIdentifier','fail_result':'Vote\x20rejected','submission_source':'Voter\x20(Passport\x20credential\x20with\x20weight\x20data)','special_constraints':['The\x20table\x20entry\x20referenced\x20by\x20GuardIdentifier\x20must\x20be\x20of\x20a\x20numeric\x20type\x20(U8-U256),\x20cast\x20to\x20u32','Non-numeric\x20types\x20cause\x20E_GUARD_IDENTIFIER_NOT_NUMBER\x20error','b_submission\x20must\x20be\x20true\x20(weight\x20is\x20submitted\x20at\x20runtime\x20by\x20the\x20voter)','Multiple\x20voting_guards\x20can\x20be\x20configured,\x20each\x20corresponding\x20to\x20a\x20different\x20voter\x20group','When\x20Arbitration\x20bPaused=true,\x20voting\x20is\x20blocked','Reentrancy:\x20CRITICAL\x20—\x20Guard\x20pass\x20counts\x20the\x20vote\x20with\x20the\x20extracted\x20weight.\x20Without\x20anti-reentrancy,\x20the\x20same\x20voter\x20can\x20vote\x20MULTIPLE\x20times,\x20multiplying\x20their\x20weight\x20and\x20skewing\x20the\x20arbitration\x20result\x20(which\x20directly\x20determines\x20fund\x20ownership\x20via\x20compensation).\x20The\x20voter\x27s\x20eligibility\x20(identity,\x20reputation)\x20does\x20NOT\x20naturally\x20invalidate\x20after\x20voting.\x20REQUIRED\x20anti-reentrancy\x20primitive\x20(any\x20one):\x20`arb.voted\x20has`\x20(query\x201404,\x20Bool,\x20per-voter)\x20+\x20`logic_not`;\x20OR\x20`arb.voted.agree\x20has`\x20(query\x201406,\x20Bool,\x20per-voter-per-proposition)\x20+\x20`logic_not`;\x20OR\x20`arb.voted.agree\x20count`\x20(query\x201405,\x20U64,\x20per-voter)\x20+\x20`logic_equal(0)`.\x20Note:\x20`arb.voted_count`\x20(1403)\x20is\x20total\x20voter\x20count\x20(NOT\x20per-voter)\x20and\x20does\x20NOT\x20serve\x20as\x20an\x20anti-reentrancy\x20primitive\x20for\x20individual\x20voters'],'common_patterns':['Reputation\x20score\x20weight:\x20query(EntityRegistrar.records[reputation])\x20+\x20GuardIdentifier(u64)','Fixed\x20weight:\x20identifier(constant_weight)\x20+\x20GuardIdentifier','Multi-tier\x20voting:\x20different\x20voting_guards\x20correspond\x20to\x20different\x20weight\x20tiers','Eligibility\x20+\x20weight:\x20logic_and\x20(eligibility\x20check\x20+\x20GuardIdentifier\x20extracts\x20weight)'],'mutable_after_publish':!![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7','R8','R9']},{'id':'gen_passport_guard','name':'Passport\x20credential\x20generation\x20validation\x20(gen_passport)','host_object':'Standalone','binding_field':'none','validation_scene':'When\x20a\x20user\x20calls\x20gen_passport,\x20the\x20Guard\x20validates\x20user\x20eligibility\x20and\x20generates\x20a\x20Passport\x20with\x20credentials','pass_result':'Passport\x20is\x20generated,\x20containing\x20credentials\x20validated\x20by\x20the\x20Guard','fail_result':'Passport\x20generation\x20fails;\x20the\x20user\x20did\x20not\x20pass\x20validation','submission_source':'Passport\x20applicant\x20(signer\x20+\x20credentials)','special_constraints':['quote_guard\x20is\x20a\x20RIGID\x20verification\x20requirement\x20when\x20querying\x20Repository\x20data\x20(query\x201167)','Two-phase:\x20passport\x20generation\x20scans\x20guard\x20+\x20prepares\x20quote_guard,\x20passport\x20verification\x20re-checks\x20+\x20verifies','If\x20quote_guard==None:\x20Repository\x20data\x20is\x20freely\x20queryable\x20(no\x20access\x20control)','Guard\x20can\x20be\x20created\x20standalone\x20(not\x20bound\x20to\x20a\x20specific\x20Host\x20Object)','Guard\x20can\x20be\x20depended\x20on\x20by\x20other\x20Guards\x20via\x20rely\x20(requires\x20rep=true)','The\x20Passport\x20generated\x20by\x20gen_passport\x20can\x20be\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations','Reentrancy:\x20LOW\x20—\x20Each\x20gen_passport\x20call\x20generates\x20an\x20independent\x20Passport\x20(one\x20Passport\x20per\x20operation).\x20Multiple\x20Passports\x20for\x20the\x20same\x20user\x20are\x20usually\x20valid\x20(each\x20serves\x20a\x20different\x20subsequent\x20operation).\x20IF\x20business\x20intent\x20is\x20\x27one\x20active\x20Passport\x20per\x20user\x27,\x20an\x20anti-reentrancy\x20check\x20is\x20needed\x20but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists\x20—\x20use\x20off-chain\x20tracking\x20or\x20a\x20Repository\x20to\x20record\x20issued\x20Passport\x20IDs'],'common_patterns':['Identity\x20validation:\x20context(Signer)\x20+\x20logic_equal\x20(single\x20address/whitelist)','Membership\x20eligibility:\x20query(EntityRegistrar)\x20+\x20logic_equal','Reputation\x20threshold:\x20query(EntityRegistrar.records[reputation])\x20+\x20logic_as_u256_greater_or_equal','Multi-condition\x20combination:\x20logic_and\x20(identity\x20+\x20eligibility\x20+\x20reputation)'],'mutable_after_publish':![],'r_rounds_focus':['R1','R2','R3','R5','R6','R7']}];export function findScene(a,b){return GUARD_SCENES['find'](c=>c['host_object']===a&&c['binding_field']===b);}export function inferSceneFromAction(a){const b={'buy':'service_buy_guard','forward':'machine_forward_guard','allocate':'service_order_allocators_guard','claim_reward':'reward_claim','vote':'arbitration_voting_guard','dispute':'arbitration_usage_guard','write_repository':'repository_write_guard','submit_progress':'progress_submission_guard','gen_passport':'gen_passport_guard'},c=b[a];return GUARD_SCENES['find'](d=>d['id']===c);}export function getImmutableScenes(){return GUARD_SCENES['filter'](a=>!a['mutable_after_publish']);}export function getNumericIdentifierScenes(){return GUARD_SCENES['filter'](a=>a['special_constraints']['some'](b=>b['includes']('numeric')||b['includes']('GuardIdentifier')));}
@@ -1,4 +1,5 @@
1
1
  import type { GuardScene } from "./guard-ledger.js";
2
+ import { type Facts, type FindingExposure } from "../config/rule-engine.js";
2
3
  export type GuardStakeholder = "customer" | "provider" | "arbitrator" | "claimant" | "system";
3
4
  export type RiskLevel = "critical" | "high" | "medium" | "low";
4
5
  export type DataSourceClass = "type1_onchain_constant" | "type2_witness_derived" | "type3_submitted_object" | "type4_system_context" | "cross_type";
@@ -14,6 +15,7 @@ export interface GuardRisk {
14
15
  scenario: string;
15
16
  mitigation: string;
16
17
  evidence?: string;
18
+ exposure?: FindingExposure;
17
19
  }
18
20
  export interface GuardRiskAssessment {
19
21
  guard_summary: string;
@@ -48,7 +50,7 @@ export interface RiskCheckContext {
48
50
  operation_type?: string;
49
51
  sharing_recipients?: ("Signer" | "Entity" | "GuardIdentifier")[];
50
52
  }
51
- export declare const RISK_RULES: RiskRule[];
53
+ export declare function guardRiskFacts(ctx: RiskCheckContext): Facts;
52
54
  export declare function runGuardRulePack(ctx: RiskCheckContext): GuardRisk[];
53
55
  export declare function assembleGuardAssessment(params: {
54
56
  table: RiskCheckContext["table"];
@@ -65,3 +67,4 @@ export declare function getRiskSummary(assessment: GuardRiskAssessment): {
65
67
  top_risks: string[];
66
68
  };
67
69
  export declare function getRiskRulesCount(): number;
70
+ export declare const RISK_RULES: RiskRule[];