@wowok/agent-mcp 3.3.1 → 3.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/chain-semantics/field-capability.js +1 -1
  2. package/dist/chain-semantics/freeze-map.js +1 -1
  3. package/dist/chain-semantics/fund-flow.js +1 -1
  4. package/dist/chain-semantics/guard-verbs.js +1 -1
  5. package/dist/chain-semantics/object-graph.js +1 -1
  6. package/dist/composition/audit.d.ts +5 -0
  7. package/dist/composition/audit.js +1 -1
  8. package/dist/composition/blueprint-view.d.ts +0 -1
  9. package/dist/composition/blueprint-view.js +1 -1
  10. package/dist/composition/compile.d.ts +5 -3
  11. package/dist/composition/compile.js +1 -1
  12. package/dist/composition/inflight.d.ts +32 -4
  13. package/dist/composition/inflight.js +1 -1
  14. package/dist/config/judgment.d.ts +111 -1
  15. package/dist/config/judgment.js +1 -1
  16. package/dist/customer/industry-risks.js +1 -1
  17. package/dist/customer/user-preferences.js +1 -1
  18. package/dist/evaluation/arbitration-game.d.ts +4 -0
  19. package/dist/evaluation/arbitration-game.js +1 -1
  20. package/dist/evaluation/builtins/graph-service.js +1 -1
  21. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  22. package/dist/evaluation/game-strategy.d.ts +6 -0
  23. package/dist/evaluation/game-strategy.js +1 -1
  24. package/dist/evaluation/node-game.d.ts +4 -0
  25. package/dist/evaluation/node-game.js +1 -1
  26. package/dist/evaluation/value-risk.d.ts +8 -0
  27. package/dist/evaluation/value-risk.js +1 -0
  28. package/dist/experience/realtime-feedback.js +1 -1
  29. package/dist/extensions/business-modules.d.ts +7 -2
  30. package/dist/extensions/business-modules.js +1 -1
  31. package/dist/extensions/industry-audit.spec.js +1 -1
  32. package/dist/extensions/industry-pack.d.ts +3 -2
  33. package/dist/extensions/industry-pack.js +1 -1
  34. package/dist/extensions/modes.js +1 -1
  35. package/dist/graph/onchain/analyze.js +1 -1
  36. package/dist/graph/onchain/analyze.spec.js +1 -1
  37. package/dist/graph/onchain/expand.js +1 -1
  38. package/dist/graph/onchain/exposure.js +1 -1
  39. package/dist/graph/onchain/facet-projection.js +1 -1
  40. package/dist/graph/onchain/facet-projection.spec.js +1 -1
  41. package/dist/graph/onchain/facts.d.ts +20 -0
  42. package/dist/graph/onchain/facts.js +1 -1
  43. package/dist/graph/onchain/facts.spec.js +1 -1
  44. package/dist/graph/onchain/object-held-receipts.d.ts +20 -0
  45. package/dist/graph/onchain/object-held-receipts.js +1 -0
  46. package/dist/graph/onchain/object-held-receipts.spec.d.ts +1 -0
  47. package/dist/graph/onchain/object-held-receipts.spec.js +1 -0
  48. package/dist/graph/onchain/project-relationship.js +1 -1
  49. package/dist/graph/onchain/sdk-batch.d.ts +1 -0
  50. package/dist/graph/onchain/sdk-batch.js +1 -1
  51. package/dist/harness/index.d.ts +1 -0
  52. package/dist/harness/recover.d.ts +2 -1
  53. package/dist/harness/recover.js +1 -1
  54. package/dist/knowledge/acquisition-flywheel.js +1 -1
  55. package/dist/knowledge/allocation-ledger.d.ts +3 -1
  56. package/dist/knowledge/allocation-ledger.js +1 -1
  57. package/dist/knowledge/allocation-puzzle.d.ts +1 -0
  58. package/dist/knowledge/allocation-puzzle.js +1 -1
  59. package/dist/knowledge/allocation-risk.d.ts +1 -1
  60. package/dist/knowledge/allocation-risk.js +1 -1
  61. package/dist/knowledge/arb-fund-facts.d.ts +12 -0
  62. package/dist/knowledge/arb-fund-facts.js +1 -1
  63. package/dist/knowledge/audit-rules.d.ts +4 -3
  64. package/dist/knowledge/audit-rules.js +1 -1
  65. package/dist/knowledge/baselines/judgment-baselines.json +502 -81
  66. package/dist/knowledge/baselines/rules/allocation.json +0 -14
  67. package/dist/knowledge/baselines/rules/graph.json +4 -4
  68. package/dist/knowledge/baselines/rules/plan.json +81 -5
  69. package/dist/knowledge/baselines/rules/reward.json +1 -1
  70. package/dist/knowledge/builtin-templates.d.ts +9 -1
  71. package/dist/knowledge/builtin-templates.js +1 -1
  72. package/dist/knowledge/discount-threshold.js +1 -1
  73. package/dist/knowledge/event-semantics.js +1 -1
  74. package/dist/knowledge/game-scenarios.d.ts +21 -0
  75. package/dist/knowledge/game-scenarios.js +1 -0
  76. package/dist/knowledge/getting-started.js +1 -1
  77. package/dist/knowledge/guard-bindings.js +1 -1
  78. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  79. package/dist/knowledge/guard-design-patterns.js +1 -1
  80. package/dist/knowledge/guard-field-cognition.js +1 -1
  81. package/dist/knowledge/guard-leg-map.d.ts +5 -0
  82. package/dist/knowledge/guard-leg-map.js +1 -0
  83. package/dist/knowledge/guard-lint.js +1 -1
  84. package/dist/knowledge/guard-puzzle.js +1 -1
  85. package/dist/knowledge/guard-render.js +1 -1
  86. package/dist/knowledge/guard-risk.js +1 -1
  87. package/dist/knowledge/guard-submission-brief.d.ts +5 -0
  88. package/dist/knowledge/guard-submission-brief.js +1 -1
  89. package/dist/knowledge/guard-submission-prompt.d.ts +2 -1
  90. package/dist/knowledge/guard-submission-prompt.js +1 -1
  91. package/dist/knowledge/guard-templates.d.ts +1 -1
  92. package/dist/knowledge/guard-templates.js +1 -1
  93. package/dist/knowledge/guard-translation.js +1 -1
  94. package/dist/knowledge/index.js +1 -1
  95. package/dist/knowledge/industry-generalizer.js +1 -1
  96. package/dist/knowledge/industry-registry.js +1 -1
  97. package/dist/knowledge/industry-strategy.js +1 -1
  98. package/dist/knowledge/jsonrpc-enum.js +1 -1
  99. package/dist/knowledge/onchain-constants.d.ts +4 -2
  100. package/dist/knowledge/onchain-constants.js +1 -1
  101. package/dist/knowledge/order-ledger.d.ts +1 -1
  102. package/dist/knowledge/order-ledger.js +1 -1
  103. package/dist/knowledge/order-puzzle.d.ts +3 -0
  104. package/dist/knowledge/order-risk.d.ts +1 -1
  105. package/dist/knowledge/passport-ledger.d.ts +12 -0
  106. package/dist/knowledge/passport-ledger.js +1 -1
  107. package/dist/knowledge/payment-tracker.js +1 -1
  108. package/dist/knowledge/protocol-facts.d.ts +1 -0
  109. package/dist/knowledge/protocol-facts.js +1 -1
  110. package/dist/knowledge/repository-write-semantics.d.ts +1 -1
  111. package/dist/knowledge/repository-write-semantics.js +1 -1
  112. package/dist/knowledge/reward-ledger.js +1 -1
  113. package/dist/knowledge/reward-puzzle.d.ts +1 -1
  114. package/dist/knowledge/reward-risk.d.ts +1 -1
  115. package/dist/knowledge/scenario-modes.d.ts +2 -2
  116. package/dist/knowledge/scenario-modes.js +1 -1
  117. package/dist/knowledge/scenario-topology.js +1 -1
  118. package/dist/knowledge/service-ledger.d.ts +14 -0
  119. package/dist/knowledge/service-ledger.js +1 -1
  120. package/dist/knowledge/strategy-manuals.js +1 -1
  121. package/dist/knowledge/template-index.d.ts +19 -0
  122. package/dist/knowledge/template-index.js +1 -0
  123. package/dist/knowledge/template-loader.d.ts +36 -0
  124. package/dist/knowledge/template-loader.js +1 -1
  125. package/dist/knowledge/template-registry.js +1 -1
  126. package/dist/knowledge/template-scanner.d.ts +11 -0
  127. package/dist/knowledge/template-scanner.js +1 -1
  128. package/dist/knowledge/tool-constraints.js +1 -1
  129. package/dist/knowledge/workflow-guidance.d.ts +2 -0
  130. package/dist/knowledge/workflow-guidance.js +1 -1
  131. package/dist/monitor/MonitorLoop.js +1 -1
  132. package/dist/participation/allocation-advice.d.ts +8 -1
  133. package/dist/participation/allocation-advice.js +1 -1
  134. package/dist/participation/game-context.d.ts +25 -0
  135. package/dist/participation/game-context.js +1 -0
  136. package/dist/participation/node-action-advisor.d.ts +64 -0
  137. package/dist/participation/node-action-advisor.js +1 -0
  138. package/dist/participation/radar-core.d.ts +1 -0
  139. package/dist/participation/radar-core.js +1 -1
  140. package/dist/persona/defaults.js +1 -1
  141. package/dist/persona/topology-focus.js +1 -1
  142. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  143. package/dist/playbooks/service-build/game-theory.d.ts +4 -1
  144. package/dist/playbooks/service-build/game-theory.js +1 -1
  145. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  146. package/dist/playbooks/service-build/merchant-guide.d.ts +26 -1
  147. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  148. package/dist/playbooks/service-build/migration-planner.d.ts +2 -2
  149. package/dist/playbooks/service-build/migration-planner.js +1 -1
  150. package/dist/playbooks/service-build/object-panorama.d.ts +13 -1
  151. package/dist/playbooks/service-build/object-panorama.js +1 -1
  152. package/dist/playbooks/service-build/participation-radar.js +1 -1
  153. package/dist/playbooks/service-build/pipeline-actions.d.ts +4 -1
  154. package/dist/playbooks/service-build/pipeline-actions.js +1 -1
  155. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  156. package/dist/playbooks/service-build/service-panorama.d.ts +12 -0
  157. package/dist/playbooks/service-build/service-panorama.js +1 -1
  158. package/dist/playbooks/service-build/service-quote.js +1 -1
  159. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  160. package/dist/relationship/derivation.d.ts +1 -1
  161. package/dist/review/index.js +1 -1
  162. package/dist/review/repository.js +1 -1
  163. package/dist/role/intent.d.ts +23 -0
  164. package/dist/role/intent.js +1 -0
  165. package/dist/safety/confirm-gate.js +1 -1
  166. package/dist/schema/benchmark-migration/index.d.ts +39 -0
  167. package/dist/schema/benchmark-migration/index.js +1 -1
  168. package/dist/schema/call/allocation.d.ts +49 -3
  169. package/dist/schema/call/allocation.js +1 -1
  170. package/dist/schema/call/arbitration.js +1 -1
  171. package/dist/schema/call/base.d.ts +52 -0
  172. package/dist/schema/call/base.js +1 -1
  173. package/dist/schema/call/bridge.d.ts +3 -0
  174. package/dist/schema/call/contact.js +1 -1
  175. package/dist/schema/call/error-codes.d.ts +1 -1
  176. package/dist/schema/call/error-codes.js +1 -1
  177. package/dist/schema/call/guard.js +1 -1
  178. package/dist/schema/call/handler.js +1 -1
  179. package/dist/schema/call/machine.d.ts +10 -0
  180. package/dist/schema/call/machine.js +1 -1
  181. package/dist/schema/call/order.d.ts +2 -0
  182. package/dist/schema/call/order.js +1 -1
  183. package/dist/schema/call/progress.d.ts +6 -3
  184. package/dist/schema/call/progress.js +1 -1
  185. package/dist/schema/call/repository.d.ts +4 -0
  186. package/dist/schema/call/repository.js +1 -1
  187. package/dist/schema/call/reward.d.ts +2 -2
  188. package/dist/schema/call/reward.js +1 -1
  189. package/dist/schema/call/semantic.d.ts +6 -0
  190. package/dist/schema/call/semantic.js +1 -1
  191. package/dist/schema/call/service.d.ts +42 -4
  192. package/dist/schema/call/service.js +1 -1
  193. package/dist/schema/common/index.js +1 -1
  194. package/dist/schema/goal/index.d.ts +54 -0
  195. package/dist/schema/goal/planning.d.ts +86 -0
  196. package/dist/schema/goal/planning.js +1 -1
  197. package/dist/schema/keeper/index.d.ts +2 -0
  198. package/dist/schema/local/index.d.ts +72 -0
  199. package/dist/schema/local/index.js +1 -1
  200. package/dist/schema/messenger/index.d.ts +2 -0
  201. package/dist/schema/operations.d.ts +46 -5
  202. package/dist/schema/operations.js +1 -1
  203. package/dist/schema/persona/index.d.ts +484 -0
  204. package/dist/schema/query/bi.d.ts +4 -0
  205. package/dist/schema/query/bi.js +1 -1
  206. package/dist/schema/query/index.d.ts +84 -60
  207. package/dist/schema/query/index.js +1 -1
  208. package/dist/schema/schema-version.d.ts +1 -1
  209. package/dist/schema/schema-version.js +1 -1
  210. package/dist/schema-query-impl/index.js +1 -1
  211. package/dist/schemas/account_operation.output.json +41 -10
  212. package/dist/schemas/account_operation.schema.json +1 -1
  213. package/dist/schemas/benchmark_migration_operation.output.json +8 -5
  214. package/dist/schemas/benchmark_migration_operation.schema.json +91 -3
  215. package/dist/schemas/bridge_operation.output.json +13 -7
  216. package/dist/schemas/goal_operation.schema.json +94 -0
  217. package/dist/schemas/index.json +1 -1
  218. package/dist/schemas/keeper_operation.output.json +12 -7
  219. package/dist/schemas/local_cache_operation.output.json +34 -7
  220. package/dist/schemas/local_cache_operation.schema.json +16 -1
  221. package/dist/schemas/local_history_operation.output.json +13 -7
  222. package/dist/schemas/local_info_operation.output.json +13 -7
  223. package/dist/schemas/local_info_operation.schema.json +5 -1
  224. package/dist/schemas/local_mark_operation.output.json +13 -7
  225. package/dist/schemas/messenger_operation.output.json +12 -7
  226. package/dist/schemas/monitor_events.output.json +12 -7
  227. package/dist/schemas/monitor_subscription.output.json +12 -7
  228. package/dist/schemas/onchain_events.output.json +67 -18
  229. package/dist/schemas/onchain_events.schema.json +4 -0
  230. package/dist/schemas/onchain_operations.output.json +81 -24
  231. package/dist/schemas/onchain_operations.schema.json +531 -126
  232. package/dist/schemas/onchain_operations_allocation.schema.json +294 -6
  233. package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
  234. package/dist/schemas/onchain_operations_contact.schema.json +2 -2
  235. package/dist/schemas/onchain_operations_demand.schema.json +3 -3
  236. package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -1
  237. package/dist/schemas/onchain_operations_guard.schema.json +99 -63
  238. package/dist/schemas/onchain_operations_machine.schema.json +10 -1
  239. package/dist/schemas/onchain_operations_order.schema.json +8 -4
  240. package/dist/schemas/onchain_operations_progress.schema.json +8 -4
  241. package/dist/schemas/onchain_operations_proof.schema.json +1 -1
  242. package/dist/schemas/onchain_operations_repository.schema.json +6 -2
  243. package/dist/schemas/onchain_operations_reward.schema.json +8 -8
  244. package/dist/schemas/onchain_operations_service.schema.json +81 -21
  245. package/dist/schemas/onchain_operations_treasury.schema.json +7 -7
  246. package/dist/schemas/onchain_table_data.output.json +16 -7
  247. package/dist/schemas/persona_operation.output.json +1387 -0
  248. package/dist/schemas/persona_operation.schema.json +219 -0
  249. package/dist/schemas/query_toolkit.output.json +115 -64
  250. package/dist/schemas/query_toolkit.schema.json +8 -0
  251. package/dist/schemas/workflow_operation.schema.json +1 -1
  252. package/dist/tools/handlers/benchmark-migration.js +1 -1
  253. package/dist/tools/handlers/bridge.js +1 -1
  254. package/dist/tools/handlers/config.js +1 -1
  255. package/dist/tools/handlers/dispatch-expectations.js +1 -1
  256. package/dist/tools/handlers/file-export.js +1 -1
  257. package/dist/tools/handlers/industry-pack.d.ts +1 -0
  258. package/dist/tools/handlers/industry-pack.js +1 -1
  259. package/dist/tools/handlers/local.js +1 -1
  260. package/dist/tools/handlers/messenger.js +1 -1
  261. package/dist/tools/handlers/onchain-name-registration.d.ts +11 -0
  262. package/dist/tools/handlers/onchain-name-registration.js +1 -1
  263. package/dist/tools/handlers/onchain.d.ts +28 -0
  264. package/dist/tools/handlers/onchain.js +1 -1
  265. package/dist/tools/handlers/query.js +1 -1
  266. package/dist/tools/handlers/review-chain.d.ts +1 -1
  267. package/dist/tools/handlers/review-chain.js +1 -1
  268. package/dist/tools/handlers/schema-query.js +1 -1
  269. package/dist/tools/handlers/workflow.js +1 -1
  270. package/dist/tools/move-fn-index.gen.js +1 -1
  271. package/dist/tools/registry/agent.js +1 -1
  272. package/dist/tools/registry/local.js +1 -1
  273. package/dist/tools/registry/onchain.js +1 -1
  274. package/dist/tools/registry/query.js +1 -1
  275. package/dist/tools/wip-deploy-assist.js +1 -1
  276. package/dist/tools/wrap.js +1 -1
  277. package/package.json +3 -3
@@ -90,7 +90,7 @@
90
90
  "type": "integer",
91
91
  "minimum": 0,
92
92
  "maximum": 255,
93
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
93
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
94
94
  }
95
95
  },
96
96
  "required": [
@@ -150,7 +150,7 @@
150
150
  "type": "string"
151
151
  }
152
152
  ],
153
- "description": "Allocation value. SEMANTICS DEPEND ON `mode`:\n• mode='Amount': absolute amount in smallest unit (e.g., '750000000' for 0.75 WOW, '250000000' for 0.25 WOW). Allocated first; sum of Amount items cached as `fix`.\n• mode='Rate' (NET): basis-points rate off the post-fix base (balance - fix, or max - fix), 10000 = 100% (e.g., '7500' for 75%, '2500' for 25%). When no Surplus in same Allocator, sum MUST == 10000; when Surplus present, sum MUST <= 10000.\n• mode='RateGross': basis-points rate off the FULL pool (balance) or the `max` cap — the fixed Amount total is NOT subtracted, 10000 = 100%. sum MUST <= 10000 (and, with `max` set, fix×10000 + sum×max <= max×10000). Cannot be mixed with mode='Rate' in the same Allocator while a fixed Amount total is present.\n• mode='Surplus': IGNORED (contract forces to 0). Set to '0' for clarity. Receives remaining balance after Amount + Rate/RateGross allocations.\n⚠️ T1 LOSSY POINT (B-2): the value is PRE-CONFIGURED and STATIC. A continuous/conditional amount (e.g. 'pay exactly the assessed loss amount') CANNOT be expressed — there is no runtime formula field. Model variable payouts as (a) a fixed-tier Allocator list guarded by distinct Guards, or (b) an Amount with a `max` cap — both are finite configurations, not free-form formulas."
153
+ "description": "Allocation value. SEMANTICS DEPEND ON `mode`:\n• mode='Amount': absolute amount in smallest unit (e.g., '750000000' for 0.75 WOW, '250000000' for 0.25 WOW). Allocated first; sum of Amount items cached as `fix`.\n• mode='Rate' (NET): basis-points rate off the post-fix base (balance - fix, or max - fix), 10000 = 100% (e.g., '7500' for 75%, '2500' for 25%). When no Surplus in same Allocator, sum MUST == 10000; when Surplus present, sum MUST <= 10000.\n• mode='RateGross': basis-points rate off the FULL pool (balance) or the `max` cap — the fixed Amount total is NOT subtracted, 10000 = 100%. sum MUST <= 10000 (and, with `max` set, fix×10000 + sum×max <= max×10000). Cannot be mixed with mode='Rate' in the same Allocator while a fixed Amount total is present.\n• mode='Surplus': IGNORED (contract forces to 0). Set to '0' for clarity. Receives remaining balance after Amount + Rate/RateGross allocations.\n• mode='Formula': basis-points COEFFICIENT (MUST be <= 10000) of a RUNTIME repository scalar — payout = clamp(coefficient × scalar / 10000, 0, headroom). Does NOT join any rate sum (its base is the queried scalar, not the pool) and skips the Amount>=threshold declaration check. Bind the slot's data source via allocation formula_spec_set, else the scalar reads 0.\n⚠️ T1 LOSSY POINT (B-2): Amount/Rate/RateGross/Surplus values are PRE-CONFIGURED and STATIC — a free-form continuous amount still cannot be expressed with them. Formula mode covers the bounded case: a coefficient (<= 10000 bps) of an attested repository aggregate (record count / value sum) — use it for runtime-proportional payouts; for anything richer, model (a) a fixed-tier Allocator list guarded by distinct Guards, or (b) an Amount with a `max` cap — both are finite configurations."
154
154
  },
155
155
  "mode": {
156
156
  "anyOf": [
@@ -160,12 +160,13 @@
160
160
  "Amount",
161
161
  "Rate",
162
162
  "Surplus",
163
- "RateGross"
163
+ "RateGross",
164
+ "Formula"
164
165
  ]
165
166
  },
166
167
  {}
167
168
  ],
168
- "description": "Allocation mode — determines how the `sharing` field is interpreted. Four modes can be used individually OR combined within a single Allocator; when combined, allocation order is strictly: Amount first, then Rate/RateGross, then Surplus. Understanding these modes allows modeling almost any fund distribution pattern.\n• Amount (0): `sharing` is a FIXED amount in smallest unit (e.g., '750000000' = 0.75 WOW). Allocated FIRST; sum of all Amount items is cached as `fix` by the contract. Validation: when no Rate and no Surplus items exist, sum of Amount items must be >= allocators.threshold (EAMOUNT_BELOW_THRESHOLD=12); when `max` is set, sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13).\n• Rate (1): `sharing` is a NET basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance - fix (or max - fix if `max` is set) — the cached fixed Amount total IS subtracted. Validation: when no Surplus items exist, sum of all Rate items must be EXACTLY 10000 (ERATE_NOT_10000=4); when Surplus items exist, sum of all Rate items must be <= 10000 (ERATE_EXCEEDS_10000=6).\n• RateGross (3): `sharing` is a GROSS basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance (the full pool) or the `max` cap when set — the fixed Amount total is NOT subtracted, so fixed Amount entries and percentage-of-total rates coexist exactly. Validation: sum of all RateGross items must be <= 10000 (ERATE_EXCEEDS_10000=6); when `max` is set, fix×10000 + sum(rate)×max <= max×10000 must hold (6); with no `max` and a fixed total > 0, sum of RateGross items must be < 10000 (6). RateGross cannot be mixed with NET Rate entries in the same Allocator while a fixed Amount total is present (EMIXED_RATE_BASES=17).\n• Surplus (2): `sharing` is IGNORED (contract forces it to 0). Allocated LAST; receives the remaining balance after Amount + Rate allocations. Validation: MAX ONE Surplus item per Allocator (EMULTIPLE_SURPLUS=5). When Surplus exists, Rate sum constraint relaxes from == 10000 to <= 10000.\nALLOCATION ORDER (strict): Amount items (fixed, cached as fix) → Rate/RateGross items → Surplus item (remaining).\nRECOMMENDATION: Use Amount mode for known fixed amounts (clearer, no sum constraint). Use Rate mode for proportional splits off the post-fix remainder (requires sum == 10000 unless Surplus present). Use RateGross mode for a percentage of the FULL pool/`max` that must coexist with fixed Amount entries. Use Surplus to capture remainder (e.g., platform fee + host gets rest). Accepts string ('Amount'/'Rate'/'Surplus'/'RateGross', recommended) or number (0/1/2/3)."
169
+ "description": "Allocation mode — determines how the `sharing` field is interpreted. Modes can be used individually OR combined within a single Allocator; when combined, allocation order is strictly: Amount first, then Rate/RateGross, then Formula scalar legs, then Surplus. Understanding these modes allows modeling almost any fund distribution pattern.\n• Amount (0): `sharing` is a FIXED amount in smallest unit (e.g., '750000000' = 0.75 WOW). Allocated FIRST; sum of all Amount items is cached as `fix` by the contract. Validation: when no Rate and no Surplus items exist, sum of Amount items must be >= allocators.threshold (EAMOUNT_BELOW_THRESHOLD=12); when `max` is set, sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13).\n• Rate (1): `sharing` is a NET basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance - fix (or max - fix if `max` is set) — the cached fixed Amount total IS subtracted. Validation: when no Surplus items exist, sum of all Rate items must be EXACTLY 10000 (ERATE_NOT_10000=4); when Surplus items exist, sum of all Rate items must be <= 10000 (ERATE_EXCEEDS_10000=6).\n• RateGross (3): `sharing` is a GROSS basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance (the full pool) or the `max` cap when set — the fixed Amount total is NOT subtracted, so fixed Amount entries and percentage-of-total rates coexist exactly. Validation: sum of all RateGross items must be <= 10000 (ERATE_EXCEEDS_10000=6); when `max` is set, fix×10000 + sum(rate)×max <= max×10000 must hold (6); with no `max` and a fixed total > 0, sum of RateGross items must be < 10000 (6). RateGross cannot be mixed with NET Rate entries in the same Allocator while a fixed Amount total is present (EMIXED_RATE_BASES=17).\n• Surplus (2): `sharing` is IGNORED (contract forces it to 0). Allocated LAST; receives the remaining balance after Amount + Rate allocations. Validation: MAX ONE Surplus item per Allocator (EMULTIPLE_SURPLUS=5). When Surplus exists, Rate sum constraint relaxes from == 10000 to <= 10000.\n• Formula (4): `sharing` is a basis-points COEFFICIENT (<= 10000, ERATE_EXCEEDS_10000=6) applied to a RUNTIME scalar queried from a Repository at alloc() time — amount = clamp(coefficient × scalar / 10000, 0, headroom). The scalar comes from the slot's bound FormulaSpec (record-count or value-sum over a repository policy key, predicate wire identical to the 1173/1174 count/sum-where guard queries; explicit candidate ids, max 100, empty list = zero hits = scalar 0). A Formula leg does NOT join total_rate (its base is the queried scalar, not the pool) and its presence SKIPS the Amount-sum >= threshold declaration check (payout is runtime-defined). Requires a spec bound via allocation formula_spec_set — an unbound Formula slot prices its scalar as 0. binding a malformed spec aborts (EFORMULA_SPEC_INVALID=24).\nALLOCATION ORDER (strict): Amount items (fixed, cached as fix) → Rate/RateGross items → Formula scalar legs → Surplus item (remaining).\nRECOMMENDATION: Use Amount mode for known fixed amounts (clearer, no sum constraint). Use Rate mode for proportional splits off the post-fix remainder (requires sum == 10000 unless Surplus present). Use RateGross mode for a percentage of the FULL pool/`max` that must coexist with fixed Amount entries. Use Surplus to capture remainder (e.g., platform fee + host gets rest). Use Formula for payouts proportional to an attested on-chain aggregate (e.g. N records served, total value logged in a Repository) that cannot be known at configuration time. Accepts string ('Amount'/'Rate'/'Surplus'/'RateGross'/'Formula', recommended) or number (0/1/2/3/4)."
169
170
  }
170
171
  },
171
172
  "required": [
@@ -176,7 +177,7 @@
176
177
  "additionalProperties": false,
177
178
  "description": "Fund allocation item — one recipient's share of the Allocation balance. The `sharing` value's meaning depends on `mode` (see AllocationModeSchema). Multiple items in the same Allocator are evaluated together: Amount items first, Rate/RateGross items second, Surplus last."
178
179
  },
179
- "description": "Fund allocation item list. Each item specifies a recipient (who), a value (sharing), and a mode. Items can mix modes (Amount + Rate/RateGross + Surplus) within the same Allocator. RECIPIENT SEMANTICS: the Guard constrains what each submission slot may be; a recipient's safety follows from the sufficiency of those constraints (run the recipient constraint audit). Canonical order pattern: recipient = the single submitted Order — funds land at that object and are receivable only by its owner. ALLOCATION ORDER: Amount items first (cached as fix) → Rate items (proportional to balance - fix; RateGross proportional to the full pool) → Surplus item (remaining). CONSTRAINTS: max ONE Surplus item per Allocator; NET Rate sum must == 10000 (no Surplus) or <= 10000 (with Surplus); RateGross sum must <= 10000 (never mixed with NET Rate while a fixed total is present); Amount sum must >= threshold (no Rate and no Surplus) and <= max (if max set)."
180
+ "description": "Fund allocation item list. Each item specifies a recipient (who), a value (sharing), and a mode. Items can mix modes (Amount + Rate/RateGross + Formula + Surplus) within the same Allocator. RECIPIENT SEMANTICS: the Guard constrains what each submission slot may be; a recipient's safety follows from the sufficiency of those constraints (run the recipient constraint audit). Canonical order pattern: recipient = the single submitted Order — funds land at that object and are receivable only by its owner. ALLOCATION ORDER: Amount items first (cached as fix) → Rate items (proportional to balance - fix; RateGross proportional to the full pool) → Formula legs (coefficient of the runtime repository scalar) → Surplus item (remaining). CONSTRAINTS: max ONE Surplus item per Allocator; NET Rate sum must == 10000 (no Surplus) or <= 10000 (with Surplus); RateGross sum must <= 10000 (never mixed with NET Rate while a fixed total is present); each Formula leg's coefficient must <= 10000 but does NOT count into any rate sum; Amount sum must >= threshold (no Rate, no RateGross and no Formula present — a Formula leg skips this floor since its payout is runtime-defined) and <= max (if max set)."
180
181
  },
181
182
  "fix": {
182
183
  "description": "OUTPUT-ONLY (query result). Cached sum of all Amount-mode `sharing` values in this Allocator. Computed by the contract when the allocator is added — DO NOT set this field at creation. Used internally to compute `total_rates = balance - fix` for NET Rate allocation (RateGross ignores fix and uses the full pool/`max`).",
@@ -421,6 +422,293 @@
421
422
  "alloc_by_guard": {
422
423
  "description": "Verify the specified Guard and execute the corresponding fund distribution. GENERIC SEMANTICS: an Allocation distributes whatever balance it holds — order funds, payroll, dividends, bounties. It defines no scenario-specific rule: eligibility (including issuer identity for standalone use, e.g. an org admin) and differentiation inputs are expressed as Guard constraints, all public and auditable. RECIPIENT RESOLUTION (Recipient enum): Entity → fixed address; Signer → transaction sender; GuardIdentifier n → the address submitted for identifier n (resolved from the passport's submission record). ORDER PATTERN (canonical): the Guard table needs ONE submitted Order, constrained by the Guard (e.g. order.service == host service, progress at a qualifying node, signer == order.owner); that order submission IS the recipient slot. Whoever triggers the distribution, funds necessarily land at an Order OBJECT; delivered CoinWrappers are owned by the order and can be extracted only by the Order object itself (Wow ownership) — the coins then go to the order's current owner. Object receipt = owner receipt. POST-DISTRIBUTION CLAIM (required step): each recipient gets a CoinWrapper (not spendable coins) — EOA wallet → operation_type='payment' RECEIVE mode {object:'<coinwrapper_id>', receive:true}; Order object → operation_type='order' {object:'<order_id>', receive:'recently'}; Treasury object → treasury receive. Find pending CoinWrappers via query_toolkit query_type='onchain_received'; verify via the immutable Payment object (allocation.payment array). RISK: safety follows from the sufficiency of the Guard constraints, not the recipient form — analyze the recipient constraint audit before publish; structural residuals (unavoidable): permissionless alloc allows forced settlement timing, the submitted order is not bound to the settled allocation, and allocators/guards are immutable after publish.",
423
424
  "type": "string"
425
+ },
426
+ "acknowledge_dual_payout": {
427
+ "description": "A-1 (amz9-ln-261023) explicit opt-in for a KNOWN double payout: when a submitted order already received arbitration compensation (order.claimed_by set) and this call would ALSO release its escrow (refund track), the call is REFUSED unless this flag is true. The two payout tracks are independent by design — the chain will not stop the second payout, so the operator must state it deliberately. Buyer NET view: total received = compensation + escrow refund. Leave unset for normal refunds of un-awarded orders.",
428
+ "type": "boolean"
429
+ },
430
+ "formula_spec_set": {
431
+ "description": "Bind (or replace) the runtime pricing spec of ONE Formula sharing slot of this Allocation — no re-declaration of the allocator plan, no fund movement. Only the DATA SOURCE (which repository aggregate prices the slot) is set here; the slot itself must already be declared as a Formula leg (mode 4). An unbound Formula slot prices its scalar as 0.",
432
+ "type": "object",
433
+ "properties": {
434
+ "allocator_index": {
435
+ "type": "integer",
436
+ "minimum": 0,
437
+ "maximum": 9007199254740991,
438
+ "description": "Index of the allocator within allocators.allocators (0-based). Must address an EXISTING allocator, else refused on-chain (EFORMULA_SPEC_INVALID=24)."
439
+ },
440
+ "slot_index": {
441
+ "type": "integer",
442
+ "minimum": 0,
443
+ "maximum": 9007199254740991,
444
+ "description": "Index of the sharing row within that allocator's sharing[] (0-based). Must address a slot whose mode is Formula, else refused on-chain (EFORMULA_SPEC_INVALID=24)."
445
+ },
446
+ "spec": {
447
+ "type": "object",
448
+ "properties": {
449
+ "repo": {
450
+ "type": "string",
451
+ "description": "Repository object (ID or LocalMark name) whose policy-key data table is scanned at alloc() time to produce the scalar. Resolved to an address before the call."
452
+ },
453
+ "key": {
454
+ "type": "string",
455
+ "description": "Policy key (String) inside that Repository whose data rows are the candidate set. Max 64 bytes."
456
+ },
457
+ "selector": {
458
+ "anyOf": [
459
+ {
460
+ "type": "number",
461
+ "const": 0
462
+ },
463
+ {
464
+ "type": "number",
465
+ "const": 1
466
+ }
467
+ ],
468
+ "description": "Which aggregate produces the scalar: 0 = RECORD COUNT (u64 — how many candidate rows match the predicate), 1 = VALUE SUM (u256 — sum of the matching rows' numeric payloads, overflow-safe). Any other value is refused on-chain (EFORMULA_SPEC_INVALID=24)."
469
+ },
470
+ "predicate": {
471
+ "oneOf": [
472
+ {
473
+ "type": "object",
474
+ "properties": {
475
+ "kind": {
476
+ "type": "string",
477
+ "const": "range"
478
+ },
479
+ "valueMin": {
480
+ "description": "Optional lower bound (inclusive unless minInclusive=false). Plain number string (U256 semantics).",
481
+ "type": "string"
482
+ },
483
+ "valueMax": {
484
+ "description": "Optional upper bound (inclusive unless maxInclusive=false). Plain number string (U256 semantics).",
485
+ "type": "string"
486
+ },
487
+ "minInclusive": {
488
+ "description": "Default true. false makes the lower bound exclusive.",
489
+ "type": "boolean"
490
+ },
491
+ "maxInclusive": {
492
+ "description": "Default true. false makes the upper bound exclusive.",
493
+ "type": "boolean"
494
+ }
495
+ },
496
+ "required": [
497
+ "kind"
498
+ ],
499
+ "additionalProperties": false,
500
+ "description": "Numeric closed/open range. min=max inclusive is an equality match. At least one bound required."
501
+ },
502
+ {
503
+ "type": "object",
504
+ "properties": {
505
+ "kind": {
506
+ "type": "string",
507
+ "const": "numEq"
508
+ },
509
+ "value": {
510
+ "type": "string",
511
+ "description": "Exact numeric match. Plain number string (U256 semantics)."
512
+ }
513
+ },
514
+ "required": [
515
+ "kind",
516
+ "value"
517
+ ],
518
+ "additionalProperties": false
519
+ },
520
+ {
521
+ "type": "object",
522
+ "properties": {
523
+ "kind": {
524
+ "type": "string",
525
+ "const": "gt"
526
+ },
527
+ "value": {
528
+ "type": "string",
529
+ "description": "Greater than. Plain number string (U256 semantics)."
530
+ }
531
+ },
532
+ "required": [
533
+ "kind",
534
+ "value"
535
+ ],
536
+ "additionalProperties": false
537
+ },
538
+ {
539
+ "type": "object",
540
+ "properties": {
541
+ "kind": {
542
+ "type": "string",
543
+ "const": "gte"
544
+ },
545
+ "value": {
546
+ "type": "string",
547
+ "description": "Greater than or equal. Plain number string (U256 semantics)."
548
+ }
549
+ },
550
+ "required": [
551
+ "kind",
552
+ "value"
553
+ ],
554
+ "additionalProperties": false
555
+ },
556
+ {
557
+ "type": "object",
558
+ "properties": {
559
+ "kind": {
560
+ "type": "string",
561
+ "const": "lt"
562
+ },
563
+ "value": {
564
+ "type": "string",
565
+ "description": "Less than. Plain number string (U256 semantics)."
566
+ }
567
+ },
568
+ "required": [
569
+ "kind",
570
+ "value"
571
+ ],
572
+ "additionalProperties": false
573
+ },
574
+ {
575
+ "type": "object",
576
+ "properties": {
577
+ "kind": {
578
+ "type": "string",
579
+ "const": "lte"
580
+ },
581
+ "value": {
582
+ "type": "string",
583
+ "description": "Less than or equal. Plain number string (U256 semantics)."
584
+ }
585
+ },
586
+ "required": [
587
+ "kind",
588
+ "value"
589
+ ],
590
+ "additionalProperties": false
591
+ },
592
+ {
593
+ "type": "object",
594
+ "properties": {
595
+ "kind": {
596
+ "type": "string",
597
+ "const": "addressEq"
598
+ },
599
+ "identifier": {
600
+ "type": "integer",
601
+ "minimum": 0,
602
+ "maximum": 255,
603
+ "description": "Identifier of the Address-type table entry to compare against."
604
+ }
605
+ },
606
+ "required": [
607
+ "kind",
608
+ "identifier"
609
+ ],
610
+ "additionalProperties": false
611
+ },
612
+ {
613
+ "type": "object",
614
+ "properties": {
615
+ "kind": {
616
+ "type": "string",
617
+ "const": "stringEq"
618
+ },
619
+ "value": {
620
+ "type": "string",
621
+ "description": "Exact string match (byte equality, UTF-8)."
622
+ }
623
+ },
624
+ "required": [
625
+ "kind",
626
+ "value"
627
+ ],
628
+ "additionalProperties": false
629
+ },
630
+ {
631
+ "type": "object",
632
+ "properties": {
633
+ "kind": {
634
+ "type": "string",
635
+ "const": "stringContains"
636
+ },
637
+ "value": {
638
+ "type": "string",
639
+ "description": "Substring match, case-sensitive."
640
+ }
641
+ },
642
+ "required": [
643
+ "kind",
644
+ "value"
645
+ ],
646
+ "additionalProperties": false
647
+ },
648
+ {
649
+ "type": "object",
650
+ "properties": {
651
+ "kind": {
652
+ "type": "string",
653
+ "const": "stringNoCaseContains"
654
+ },
655
+ "value": {
656
+ "type": "string",
657
+ "description": "Substring match, case-insensitive."
658
+ }
659
+ },
660
+ "required": [
661
+ "kind",
662
+ "value"
663
+ ],
664
+ "additionalProperties": false
665
+ },
666
+ {
667
+ "type": "object",
668
+ "properties": {
669
+ "kind": {
670
+ "type": "string",
671
+ "const": "boolEq"
672
+ },
673
+ "value": {
674
+ "type": "boolean",
675
+ "description": "Boolean equality."
676
+ }
677
+ },
678
+ "required": [
679
+ "kind",
680
+ "value"
681
+ ],
682
+ "additionalProperties": false
683
+ }
684
+ ],
685
+ "description": "Predicate filter applied to each candidate's stored value — SAME wire format as the repository count/sum-where guard queries (1173/1174). kind must match the policy value type; mismatching entries are skipped honestly (never an error)."
686
+ },
687
+ "ids": {
688
+ "type": "array",
689
+ "items": {
690
+ "type": "string"
691
+ },
692
+ "description": "EXPLICIT candidate object IDs (vector<address>) to scan. Duplicates are deduped; max 100 candidates; an EMPTY list matches no records (scalar 0) — there is no 'all objects' wildcard."
693
+ }
694
+ },
695
+ "required": [
696
+ "repo",
697
+ "key",
698
+ "selector",
699
+ "predicate",
700
+ "ids"
701
+ ],
702
+ "additionalProperties": false,
703
+ "description": "Runtime pricing spec for one Formula sharing slot (FormulaSpec). Payout for that leg = clamp(sharing_coefficient_bps × scalar / 10000, 0, headroom), where scalar = the selected aggregate over the Repository rows. Binding REPLACES any previous spec for the slot; the plan shape itself (which slots are Formula, coefficients) is immutable and was fixed when the allocator was declared."
704
+ }
705
+ },
706
+ "required": [
707
+ "allocator_index",
708
+ "slot_index",
709
+ "spec"
710
+ ],
711
+ "additionalProperties": false
424
712
  }
425
713
  },
426
714
  "required": [
@@ -570,7 +858,7 @@
570
858
  "type": "integer",
571
859
  "minimum": 0,
572
860
  "maximum": 255,
573
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
861
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
574
862
  },
575
863
  "b_submission": {
576
864
  "type": "boolean",
@@ -95,7 +95,7 @@
95
95
  "description": "Two ways to specify an object: (1) STRING - Reference an EXISTING object by name or ID; (2) OBJECT - CREATE a NEW object with full configuration including name, tags, description, token type for payments, and Permission-based access control. The object format is used when you need both token specification AND permission management."
96
96
  },
97
97
  "dispute": {
98
- "description": "Create a new Arb object for the order; the case lands directly in state 1 (Arbitrator_confirming) — the customer does not confirm at filing time. FILING IS SERVICE-BOUND: the SDK resolves the order's Service and files through its Service-side dispute entry points, which enforce the merchant's arbitrator allowlist, the service-arbitration neutrality rule and the order binding before the case is minted (venues gated by a usage_guard require the passport path, verified in the same transaction). Direct calls to the removed arbitration-side dispute entries abort with arbitration:10",
98
+ "description": "Create a new Arb object for the order; the case lands directly in state 1 (Arbitrator_confirming) — the customer does not confirm at filing time. FILING IS SERVICE-BOUND: the SDK resolves the order's Service and files through its Service-side dispute entry points, which enforce the merchant's arbitrator allowlist, the service-arbitration neutrality rule and the order binding before the case is minted (venues gated by a usage_guard require the passport path, verified in the same transaction). The arbitration-side filing entries are package-internal and cannot be called directly",
99
99
  "type": "object",
100
100
  "properties": {
101
101
  "order": {
@@ -493,7 +493,7 @@
493
493
  "type": "integer",
494
494
  "minimum": 0,
495
495
  "maximum": 255,
496
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
496
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
497
497
  }
498
498
  },
499
499
  "required": [
@@ -853,7 +853,7 @@
853
853
  "type": "integer",
854
854
  "minimum": 0,
855
855
  "maximum": 255,
856
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
856
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
857
857
  },
858
858
  "b_submission": {
859
859
  "type": "boolean",
@@ -99,7 +99,7 @@
99
99
  "type": "string"
100
100
  },
101
101
  "ims": {
102
- "description": "IM contact list operation: add, set, remove, or clear instant messaging contacts",
102
+ "description": "IM contact list operation: add/set/remove/clear. Entry shape is {at: address-or-name, description?} ONLY (KLM-FIND-11, klook-mn 261019) — there is NO 'remark' field and NO per-contact 'status' field: on-chain Im.status is self-declared, your own status rides data.my_status. The array key inside add/set is 'im'.",
103
103
  "oneOf": [
104
104
  {
105
105
  "type": "object",
@@ -486,7 +486,7 @@
486
486
  "type": "integer",
487
487
  "minimum": 0,
488
488
  "maximum": 255,
489
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
489
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
490
490
  },
491
491
  "b_submission": {
492
492
  "type": "boolean",
@@ -250,7 +250,7 @@
250
250
  "type": "integer",
251
251
  "minimum": 0,
252
252
  "maximum": 255,
253
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
253
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
254
254
  },
255
255
  {
256
256
  "type": "null"
@@ -296,7 +296,7 @@
296
296
  "type": "integer",
297
297
  "minimum": 0,
298
298
  "maximum": 255,
299
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
299
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
300
300
  },
301
301
  {
302
302
  "type": "null"
@@ -636,7 +636,7 @@
636
636
  "type": "integer",
637
637
  "minimum": 0,
638
638
  "maximum": 255,
639
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
639
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
640
640
  },
641
641
  "b_submission": {
642
642
  "type": "boolean",
@@ -73,7 +73,7 @@
73
73
  "type": "integer",
74
74
  "minimum": 0,
75
75
  "maximum": 255,
76
- "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
76
+ "description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
77
77
  },
78
78
  "b_submission": {
79
79
  "type": "boolean",