@wowok/agent-mcp 3.2.7 → 3.2.9

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 (185) hide show
  1. package/dist/chain-semantics/field-capability.js +1 -1
  2. package/dist/chain-semantics/fund-flow.js +1 -1
  3. package/dist/chain-semantics/guard-verbs.js +1 -1
  4. package/dist/chain-semantics/object-graph.js +1 -1
  5. package/dist/composition/audit.js +1 -1
  6. package/dist/composition/compile.js +1 -1
  7. package/dist/composition/inflight.d.ts +10 -0
  8. package/dist/composition/inflight.js +1 -1
  9. package/dist/extensions/business-modules.d.ts +1 -1
  10. package/dist/extensions/business-modules.js +1 -1
  11. package/dist/graph/onchain/edge-schema.js +1 -1
  12. package/dist/harness/index.d.ts +1 -0
  13. package/dist/harness/index.js +1 -1
  14. package/dist/harness/operation-id.d.ts +1 -0
  15. package/dist/harness/operation-id.js +1 -0
  16. package/dist/harness/recover.js +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/knowledge/arbitration-ledger.js +1 -1
  19. package/dist/knowledge/audit-rules.js +1 -1
  20. package/dist/knowledge/baselines/rules/guard.json +96 -1
  21. package/dist/knowledge/baselines/rules/plan.json +30 -7
  22. package/dist/knowledge/baselines/semantic-facts.js +1 -1
  23. package/dist/knowledge/builtin-templates.d.ts +1 -1
  24. package/dist/knowledge/builtin-templates.js +1 -1
  25. package/dist/knowledge/discount-threshold.d.ts +11 -0
  26. package/dist/knowledge/discount-threshold.js +1 -1
  27. package/dist/knowledge/fund-layer.js +1 -1
  28. package/dist/knowledge/getting-started.js +1 -1
  29. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  30. package/dist/knowledge/guard-design-patterns.js +1 -1
  31. package/dist/knowledge/guard-field-cognition.js +1 -1
  32. package/dist/knowledge/guard-ledger.js +1 -1
  33. package/dist/knowledge/guard-lint.js +1 -1
  34. package/dist/knowledge/guard-render.js +1 -1
  35. package/dist/knowledge/guard-risk.d.ts +1 -0
  36. package/dist/knowledge/guard-risk.js +1 -1
  37. package/dist/knowledge/guard-submission-brief.d.ts +6 -0
  38. package/dist/knowledge/guard-submission-brief.js +1 -1
  39. package/dist/knowledge/guard-templates.d.ts +2 -2
  40. package/dist/knowledge/guard-templates.js +1 -1
  41. package/dist/knowledge/index.js +1 -1
  42. package/dist/knowledge/industry-registry.js +1 -1
  43. package/dist/knowledge/jsonrpc-enum.js +1 -1
  44. package/dist/knowledge/order-ledger.js +1 -1
  45. package/dist/knowledge/reward-ledger.js +1 -1
  46. package/dist/knowledge/safety-rules.js +1 -1
  47. package/dist/knowledge/template-loader.js +1 -1
  48. package/dist/knowledge/template-registry.js +1 -1
  49. package/dist/knowledge/template-scanner.d.ts +2 -0
  50. package/dist/knowledge/template-scanner.js +1 -1
  51. package/dist/knowledge/tool-constraints.js +1 -1
  52. package/dist/knowledge/workflow-guidance.d.ts +7 -3
  53. package/dist/knowledge/workflow-guidance.js +1 -1
  54. package/dist/monitor/MonitorLoop.js +1 -1
  55. package/dist/participation/radar-core.d.ts +1 -1
  56. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  57. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  58. package/dist/playbooks/service-build/merchant-guide.d.ts +8 -0
  59. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  60. package/dist/playbooks/service-build/object-panorama.d.ts +28 -1
  61. package/dist/playbooks/service-build/object-panorama.js +1 -1
  62. package/dist/playbooks/service-build/participation-radar.d.ts +2 -0
  63. package/dist/playbooks/service-build/participation-radar.js +1 -1
  64. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  65. package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +1 -1
  66. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  67. package/dist/playbooks/service-build/service-panorama.js +1 -1
  68. package/dist/playbooks/service-build/service-quote.js +1 -1
  69. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  70. package/dist/review/index.js +1 -1
  71. package/dist/safety/confirm-gate.js +1 -1
  72. package/dist/safety/preview.d.ts +1 -0
  73. package/dist/safety/preview.js +1 -1
  74. package/dist/schema/benchmark-migration/index.d.ts +14 -0
  75. package/dist/schema/benchmark-migration/index.js +1 -1
  76. package/dist/schema/call/allocation.d.ts +1 -1
  77. package/dist/schema/call/arbitration.d.ts +4 -4
  78. package/dist/schema/call/arbitration.js +1 -1
  79. package/dist/schema/call/base.d.ts +13 -5
  80. package/dist/schema/call/base.js +1 -1
  81. package/dist/schema/call/bridge.d.ts +2 -0
  82. package/dist/schema/call/contact.d.ts +1 -1
  83. package/dist/schema/call/demand.d.ts +1 -1
  84. package/dist/schema/call/error-codes.d.ts +1 -1
  85. package/dist/schema/call/error-codes.js +1 -1
  86. package/dist/schema/call/guard.d.ts +3 -3
  87. package/dist/schema/call/guard.js +1 -1
  88. package/dist/schema/call/handler.js +1 -1
  89. package/dist/schema/call/machine.d.ts +1 -1
  90. package/dist/schema/call/machine.js +1 -1
  91. package/dist/schema/call/order.d.ts +1 -1
  92. package/dist/schema/call/order.js +1 -1
  93. package/dist/schema/call/permission.d.ts +1 -1
  94. package/dist/schema/call/personal.d.ts +4 -4
  95. package/dist/schema/call/progress.d.ts +1 -1
  96. package/dist/schema/call/progress.js +1 -1
  97. package/dist/schema/call/proof.js +1 -1
  98. package/dist/schema/call/repository.d.ts +5 -5
  99. package/dist/schema/call/repository.js +1 -1
  100. package/dist/schema/call/reward.d.ts +1 -1
  101. package/dist/schema/call/reward.js +1 -1
  102. package/dist/schema/call/semantic.js +1 -1
  103. package/dist/schema/call/service.d.ts +4 -1
  104. package/dist/schema/call/service.js +1 -1
  105. package/dist/schema/call/treasury.d.ts +1 -1
  106. package/dist/schema/common/index.d.ts +4 -4
  107. package/dist/schema/common/index.js +1 -1
  108. package/dist/schema/goal/index.d.ts +12 -0
  109. package/dist/schema/goal/planning.d.ts +18 -0
  110. package/dist/schema/goal/planning.js +1 -1
  111. package/dist/schema/local/index.d.ts +21 -0
  112. package/dist/schema/local/index.js +1 -1
  113. package/dist/schema/messenger/index.js +1 -1
  114. package/dist/schema/operations.d.ts +22 -21
  115. package/dist/schema/query/bi.d.ts +6 -6
  116. package/dist/schema/query/bi.js +1 -1
  117. package/dist/schema/query/index.d.ts +112 -54
  118. package/dist/schema/query/index.js +1 -1
  119. package/dist/schema/schema-query/index.d.ts +1 -0
  120. package/dist/schema/schema-query/index.js +1 -1
  121. package/dist/schema/schema-version.js +1 -1
  122. package/dist/schema/utils/permission-machine-check.d.ts +2 -0
  123. package/dist/schema/utils/permission-machine-check.js +1 -1
  124. package/dist/schema/workflow/index.d.ts +1 -1
  125. package/dist/schema-query-impl/index.js +1 -1
  126. package/dist/schemas/account_operation.output.json +2 -0
  127. package/dist/schemas/account_operation.schema.json +3 -3
  128. package/dist/schemas/benchmark_migration_operation.output.json +42 -0
  129. package/dist/schemas/benchmark_migration_operation.schema.json +13 -0
  130. package/dist/schemas/bridge_operation.output.json +2 -0
  131. package/dist/schemas/goal_operation.schema.json +26 -0
  132. package/dist/schemas/index.json +1 -1
  133. package/dist/schemas/local_cache_operation.output.json +2 -0
  134. package/dist/schemas/local_history_operation.output.json +2 -0
  135. package/dist/schemas/local_info_operation.output.json +2 -0
  136. package/dist/schemas/local_mark_operation.output.json +2 -0
  137. package/dist/schemas/messenger_operation.schema.json +4 -4
  138. package/dist/schemas/onchain_operations.output.json +7 -5
  139. package/dist/schemas/onchain_operations.schema.json +108 -92
  140. package/dist/schemas/onchain_operations_allocation.schema.json +5 -5
  141. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
  142. package/dist/schemas/onchain_operations_contact.schema.json +6 -5
  143. package/dist/schemas/onchain_operations_demand.schema.json +6 -5
  144. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -5
  145. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  146. package/dist/schemas/onchain_operations_guard.schema.json +4 -4
  147. package/dist/schemas/onchain_operations_machine.schema.json +7 -6
  148. package/dist/schemas/onchain_operations_order.schema.json +8 -7
  149. package/dist/schemas/onchain_operations_permission.schema.json +1 -0
  150. package/dist/schemas/onchain_operations_personal.schema.json +2 -2
  151. package/dist/schemas/onchain_operations_progress.schema.json +8 -7
  152. package/dist/schemas/onchain_operations_proof.schema.json +6 -6
  153. package/dist/schemas/onchain_operations_repository.schema.json +10 -9
  154. package/dist/schemas/onchain_operations_reward.schema.json +8 -7
  155. package/dist/schemas/onchain_operations_service.schema.json +16 -11
  156. package/dist/schemas/onchain_operations_treasury.schema.json +6 -5
  157. package/dist/schemas/onchain_table_data.output.json +7 -7
  158. package/dist/schemas/query_toolkit.output.json +31 -30
  159. package/dist/schemas/query_toolkit.schema.json +1 -1
  160. package/dist/schemas/schema_query.schema.json +4 -0
  161. package/dist/schemas/workflow_operation.schema.json +5 -5
  162. package/dist/schemas/wowok_buildin_info.output.json +140 -3
  163. package/dist/schemas/wowok_buildin_info.schema.json +2 -2
  164. package/dist/tools/handlers/benchmark-migration.d.ts +22 -1
  165. package/dist/tools/handlers/benchmark-migration.js +1 -1
  166. package/dist/tools/handlers/config.js +1 -1
  167. package/dist/tools/handlers/dispatch-expectations.d.ts +0 -1
  168. package/dist/tools/handlers/dispatch-expectations.js +1 -1
  169. package/dist/tools/handlers/local.js +1 -1
  170. package/dist/tools/handlers/onchain.js +1 -1
  171. package/dist/tools/handlers/query.d.ts +1 -0
  172. package/dist/tools/handlers/query.js +1 -1
  173. package/dist/tools/handlers/review-chain.js +1 -1
  174. package/dist/tools/handlers/schema-query.js +1 -1
  175. package/dist/tools/index.js +1 -1
  176. package/dist/tools/move-fn-index.gen.js +1 -1
  177. package/dist/tools/registry/files.js +1 -1
  178. package/dist/tools/registry/query.js +1 -1
  179. package/dist/tools/rules-hook.js +1 -1
  180. package/dist/tools/upgrade-check.d.ts +23 -0
  181. package/dist/tools/upgrade-check.js +1 -1
  182. package/dist/tools/wip-deploy-assist.d.ts +6 -0
  183. package/dist/tools/wip-deploy-assist.js +1 -1
  184. package/dist/tools/wrap.js +1 -1
  185. package/package.json +2 -2
@@ -1 +1 @@
1
- export const CORE_BUSINESS_MODULES=[{'id':'milestone_escrow','name':'Milestone\x20Escrow','description':'Funds\x20held\x20in\x20Order\x20and\x20released\x20per\x20milestone\x20completion.\x20Protects\x20both\x20merchant\x20and\x20user.','objectTypes':['service','machine','order','allocation'],'templateRefs':[{'template_id':'freelance-machine','object_type':'machine','purpose':'Milestone\x20workflow\x20with\x20accept/reject\x20nodes'},{'template_id':'milestone-allocation','object_type':'allocation','purpose':'Per-milestone\x20fund\x20release'}],'requiredConstraints':[{'constraint_id':'order_allocators_bound','description':'Order\x20must\x20have\x20allocators\x20bound\x20before\x20publish','level':'hard','blocking':!![]},{'constraint_id':'machine_published','description':'Machine\x20must\x20be\x20published\x20and\x20bound\x20to\x20Service','level':'hard','blocking':!![]},{'constraint_id':'milestone_forward_guarded','description':'Each\x20milestone\x20forward\x20must\x20have\x20a\x20guard','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'boost','description':'Escrow\x20ensures\x20funds\x20not\x20released\x20until\x20verification'},{'dimension':'escrow_quality','effect':'required','description':'Module\x20requires\x20proper\x20escrow\x20configuration'},{'dimension':'operational_risk','effect':'boost','description':'Milestones\x20reduce\x20single-point\x20delivery\x20risk'}],'industryFit':{'freelance':0x5f,'education':0x50,'rental':0x3c,'retail':0x28,'subscription':0x1e,'travel':0x32,'general':0x46},'addressesPainPoints':['Client\x20never\x20approves\x20deliverables','Merchant\x20delivers\x20but\x20cannot\x20get\x20paid','Full\x20upfront\x20payment\x20with\x20no\x20delivery\x20guarantee'],'userProtections':['Funds\x20held\x20in\x20escrow\x20until\x20milestone\x20verified','Can\x20reject\x20substandard\x20deliverables','Refund\x20for\x20unstarted\x20milestones'],'merchantObligations':['Must\x20deliver\x20each\x20milestone\x20to\x20defined\x20acceptance\x20criteria','Must\x20configure\x20Machine\x20with\x20proper\x20forward\x20guards'],'requiresKeeper':!![],'keeperHint':'Keeper\x20must\x20monitor\x20Machine\x20node\x20timeouts\x20and\x20trigger\x20adminUnhold\x20if\x20user\x20does\x20not\x20respond'},{'id':'independent_arbitration','name':'Independent\x20Arbitration','description':'Third-party\x20arbitration\x20with\x20Guard-weighted\x20voting.\x20Arbitration\x20Permission\x20MUST\x20differ\x20from\x20Service\x20Permission\x20(contract-enforced).','objectTypes':['arb','permission','guard'],'templateRefs':[{'template_id':'arbitration-3-voters','object_type':'arb','purpose':'3-voter\x20arbitration\x20with\x20weighted\x20voting'},{'template_id':'voting-guard-weighted','object_type':'guard','purpose':'Vote\x20weight\x20from\x20Guard\x20config'}],'requiredConstraints':[{'constraint_id':'arbitration_permission_independent','description':'Arbitration.permission\x20!=\x20Service.permission','level':'hard','blocking':!![]},{'constraint_id':'voting_guard_configured','description':'At\x20least\x20one\x20voting_guard\x20must\x20be\x20configured','level':'soft','blocking':![]},{'constraint_id':'arbitration_bound_to_service','description':'Arbitration\x20must\x20be\x20in\x20Service.arbitrations\x20list','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'arbitration_coverage','effect':'required','description':'Module\x20requires\x20arbitration\x20configuration'},{'dimension':'arbitration_fairness','effect':'required','description':'Independent\x20permission\x20ensures\x20neutrality'},{'dimension':'governance_risk','effect':'boost','description':'Reduces\x20platform-as-judge\x20risk'}],'industryFit':{'freelance':0x5a,'education':0x4b,'rental':0x55,'retail':0x4b,'subscription':0x3c,'travel':0x50,'general':0x46},'addressesPainPoints':['Platform\x20acts\x20as\x20both\x20judge\x20and\x20party','Arbitration\x20fees\x20too\x20high\x20for\x20small\x20claims','No\x20binding\x20dispute\x20resolution'],'userProtections':['Independent\x20arbitrators\x20(not\x20merchant\x20or\x20platform)','Guard-weighted\x20voting\x20prevents\x20Sybil\x20attacks','Micro-arbitration:\x20no\x20per-case\x20fees'],'merchantObligations':['Must\x20accept\x20arbitration\x20verdict','Must\x20maintain\x20compensation_fund\x20for\x20indemnities'],'requiresKeeper':![]},{'id':'wip_provenance','name':'WIP\x20Provenance','description':'Work-in-progress\x20hash\x20commitments\x20on-chain\x20via\x20Repository.\x20Prevents\x20tampering\x20of\x20delivery\x20evidence.','objectTypes':['repository','guard','proof'],'templateRefs':[{'template_id':'wip-hash-guard','object_type':'guard','purpose':'Verify\x20WIP\x20hash\x20matches\x20commitment'},{'template_id':'delivery-proof','object_type':'proof','purpose':'On-chain\x20delivery\x20confirmation'}],'requiredConstraints':[{'constraint_id':'repository_published','description':'Repository\x20must\x20be\x20published','level':'hard','blocking':!![]},{'constraint_id':'wip_hash_before_delivery','description':'WIP\x20hash\x20must\x20be\x20committed\x20before\x20delivery','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'proof_integrity','effect':'required','description':'WIP\x20hash\x20provides\x20tamper-proof\x20evidence'},{'dimension':'transparency','effect':'boost','description':'On-chain\x20commitment\x20is\x20publicly\x20verifiable'}],'industryFit':{'freelance':0x5a,'education':0x55,'rental':0x5f,'retail':0x46,'subscription':0x3c,'travel':0x46,'general':0x4b},'addressesPainPoints':['Evidence\x20stored\x20on\x20platform\x20servers\x20can\x20be\x20tampered','No\x20proof\x20of\x20pre-delivery\x20state\x20(e.g.\x20rental\x20condition)','Dispute\x20resolution\x20relies\x20on\x20trust\x20in\x20platform'],'userProtections':['WIP\x20hash\x20commitment\x20is\x20immutable\x20on-chain','Guard\x20automatically\x20verifies\x20hash\x20match','Repository\x20history\x20is\x20auditable'],'merchantObligations':['Must\x20commit\x20WIP\x20hash\x20at\x20defined\x20checkpoints','Must\x20use\x20Repository\x20for\x20evidence\x20storage'],'requiresKeeper':![]},{'id':'multi_tier_allocation','name':'Multi-Tier\x20Allocation','description':'Order\x20funds\x20automatically\x20split\x20among\x20multiple\x20recipients.\x20Fully\x20transparent\x20on-chain.','objectTypes':['allocation','treasury','payment'],'templateRefs':[{'template_id':'multi-tier-allocation','object_type':'allocation','purpose':'Waterfall\x20fund\x20distribution'},{'template_id':'supplier-waterfall','object_type':'allocation','purpose':'Supplier\x20payment\x20tiers'}],'requiredConstraints':[{'constraint_id':'allocators_configured','description':'Allocators\x20must\x20be\x20configured\x20with\x20recipients','level':'hard','blocking':!![]},{'constraint_id':'sharing_sum_100','description':'Allocation\x20percentages\x20must\x20sum\x20to\x20100%','level':'hard','blocking':!![]},{'constraint_id':'platform_fee_zero','description':'Platform\x20fee\x20should\x20be\x200\x20or\x20user-defined','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fee_transparency','effect':'required','description':'All\x20allocations\x20visible\x20on-chain'},{'dimension':'supplier_visibility','effect':'boost','description':'Supplier\x20payments\x20are\x20auditable'}],'industryFit':{'freelance':0x3c,'education':0x32,'rental':0x28,'retail':0x50,'subscription':0x46,'travel':0x5f,'general':0x46},'addressesPainPoints':['Multi-layer\x20commission\x20hidden\x20from\x20users','Suppliers\x20paid\x20opaquely','Platform\x20takes\x20undisclosed\x20FX\x20spread'],'userProtections':['Full\x20allocation\x20waterfall\x20visible\x20on-chain','No\x20hidden\x20fees','Can\x20verify\x20supplier\x20payments'],'merchantObligations':['Must\x20declare\x20all\x20allocation\x20recipients\x20upfront','Cannot\x20change\x20allocation\x20after\x20publish'],'requiresKeeper':![]},{'id':'subscription_with_proof','name':'Subscription\x20with\x20Delivery\x20Proof','description':'Each\x20billing\x20cycle\x20requires\x20proof\x20of\x20content\x20delivery\x20before\x20charging.\x20Prevents\x20creator\x20abandonment.','objectTypes':['service','guard','repository','progress'],'templateRefs':[{'template_id':'subscription-machine','object_type':'machine','purpose':'Cycle-based\x20workflow'},{'template_id':'delivery-guard-cycle','object_type':'guard','purpose':'Verify\x20content\x20delivery\x20per\x20cycle'}],'requiredConstraints':[{'constraint_id':'delivery_guard_per_cycle','description':'Each\x20cycle\x20must\x20have\x20a\x20delivery\x20guard','level':'hard','blocking':!![]},{'constraint_id':'repository_updated','description':'Repository\x20must\x20be\x20updated\x20with\x20cycle\x20content\x20hash','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'content_commitment','effect':'required','description':'Delivery\x20proof\x20required\x20before\x20each\x20charge'},{'dimension':'timeout_protection','effect':'boost','description':'Cycles\x20enforce\x20regular\x20delivery'}],'industryFit':{'freelance':0x28,'education':0x55,'rental':0x1e,'retail':0x14,'subscription':0x62,'travel':0x1e,'general':0x32},'addressesPainPoints':['Creator\x20abandons\x20after\x20collecting\x20subscriptions','Silent\x20auto-renewal\x20with\x20no\x20delivery\x20proof','No\x20mechanism\x20to\x20hold\x20creators\x20accountable'],'userProtections':['Payment\x20only\x20after\x20delivery\x20proof\x20verified','Can\x20cancel\x20if\x20delivery\x20guard\x20fails','Cycle\x20history\x20on-chain'],'merchantObligations':['Must\x20deliver\x20content\x20and\x20commit\x20hash\x20each\x20cycle','Must\x20configure\x20delivery_guard\x20per\x20cycle'],'requiresKeeper':!![],'keeperHint':'Keeper\x20triggers\x20cycle\x20transitions\x20and\x20verifies\x20delivery_guard\x20conditions'},{'id':'accept_timeout_protection','name':'Accept\x20Timeout\x20Protection','description':'If\x20user\x20does\x20not\x20accept/reject\x20within\x20N\x20days,\x20auto-accept\x20advances\x20the\x20Machine.\x20Protects\x20merchant\x20from\x20indefinite\x20stalls.','objectTypes':['machine','guard'],'templateRefs':[{'template_id':'timeout-forward','object_type':'machine','purpose':'Forward\x20with\x20time_guard\x20+\x20adminUnhold\x20fallback'}],'requiredConstraints':[{'constraint_id':'time_guard_configured','description':'time_guard\x20must\x20be\x20set\x20on\x20accept\x20forward','level':'hard','blocking':!![]},{'constraint_id':'adminUnhold_permission','description':'Admin\x20must\x20have\x20PROGRESS_UNHOLD\x20(224)\x20permission','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'timeout_protection','effect':'required','description':'Auto-advance\x20prevents\x20indefinite\x20user\x20stalls'},{'dimension':'operational_risk','effect':'boost','description':'Reduces\x20delivery\x20timeline\x20uncertainty'}],'industryFit':{'freelance':0x5f,'education':0x46,'rental':0x50,'retail':0x3c,'subscription':0x28,'travel':0x3c,'general':0x4b},'addressesPainPoints':['Buyer\x20never\x20approves\x20deliverables\x20(common\x20on\x20incumbent\x20talent\x20marketplaces)','Merchant\x20cash\x20flow\x20blocked\x20by\x20inactive\x20buyer','Infinite\x20revision\x20loops\x20without\x20resolution'],'userProtections':['Still\x20has\x20full\x20N\x20days\x20to\x20review\x20and\x20reject','Rejection\x20triggers\x20arbitration\x20if\x20configured'],'merchantObligations':['Must\x20configure\x20time_guard\x20on\x20forward','Timeout\x20value\x20comes\x20from\x20the\x20template\x27s\x20window\x20fee_params\x20(e.g.\x20escrow_release_days;\x20override\x20per\x20build\x20via\x20fee_overrides)\x20—\x20never\x20a\x20hardcoded\x20number'],'requiresKeeper':!![],'keeperHint':'Keeper\x20monitors\x20time_guard\x20deadlines\x20and\x20advances\x20the\x20timeout\x20forward\x20when\x20the\x20window\x20elapses\x20(adminUnhold\x20is\x20only\x20the\x20hold-release\x20escape\x20hatch,\x20never\x20the\x20timeout\x20path)'},{'id':'refund_guarantee','name':'Refund\x20Guarantee','description':'Service\x20maintains\x20compensation_fund\x20for\x20refunds.\x20Refund_guard\x20validates\x20eligibility\x20and\x20transfers\x20funds\x20back\x20to\x20Order.','objectTypes':['service','guard','order'],'templateRefs':[{'template_id':'refund-guard','object_type':'guard','purpose':'Validate\x20refund\x20eligibility'}],'requiredConstraints':[{'constraint_id':'compensation_fund_positive','description':'compensation_fund_add\x20>\x200','level':'hard','blocking':!![]},{'constraint_id':'refund_guard_configured','description':'Service\x20must\x20have\x20refund_guard','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'boost','description':'Compensation\x20fund\x20backs\x20refund\x20promise'},{'dimension':'consumer_diligence','effect':'boost','description':'Shows\x20merchant\x20confidence\x20in\x20service\x20quality'}],'industryFit':{'freelance':0x46,'education':0x55,'rental':0x5a,'retail':0x5f,'subscription':0x50,'travel':0x55,'general':0x50},'addressesPainPoints':['Refund\x20trapped\x20in\x20incumbent\x20platform\x20balance','No\x20refund\x20mechanism\x20for\x20service\x20failure','Refund\x20decision\x20centralized\x20at\x20platform'],'userProtections':['Refund\x20goes\x20back\x20to\x20Order\x20(not\x20platform\x20balance)','Guard\x20validates\x20eligibility\x20(not\x20platform\x20discretion)','Compensation\x20fund\x20guarantees\x20liquidity'],'merchantObligations':['Must\x20maintain\x20compensation_fund\x20>\x200','Must\x20configure\x20refund_guard\x20rules'],'requiresKeeper':![]},{'id':'reputation_on_chain','name':'On-Chain\x20Reputation','description':'Merchant\x20and\x20user\x20behavior\x20permanently\x20recorded\x20on\x20Registrar.\x20Evaluations,\x20completions,\x20and\x20disputes\x20contribute\x20to\x20reputation\x20score.','objectTypes':['service','order','arb'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'service_published','description':'Service\x20must\x20be\x20published\x20to\x20accumulate\x20reputation','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'reputation_verifiability','effect':'required','description':'On-chain\x20history\x20is\x20tamper-proof'},{'dimension':'trust','effect':'boost','description':'Reputation\x20signals\x20reduce\x20information\x20asymmetry'}],'industryFit':{'freelance':0x5a,'education':0x50,'rental':0x55,'retail':0x5a,'subscription':0x55,'travel':0x50,'general':0x55},'addressesPainPoints':['Fake\x20reviews\x20and\x20rating\x20manipulation','No\x20cross-platform\x20reputation\x20portability','Platform\x20can\x20delete\x20negative\x20reviews'],'userProtections':['Reputation\x20is\x20on-chain\x20and\x20immutable','Can\x20verify\x20merchant\x27s\x20complete\x20transaction\x20history','Dispute\x20outcomes\x20affect\x20reputation\x20permanently'],'merchantObligations':['All\x20service\x20interactions\x20become\x20part\x20of\x20permanent\x20record','Cannot\x20hide\x20negative\x20outcomes'],'requiresKeeper':![]},{'id':'supplier_collaboration','name':'Supplier\x20Collaboration','description':'Enable\x20merchant\x20to\x20delegate\x20sub-services\x20to\x20suppliers\x20with\x20transparent\x20payment\x20splitting.\x20No\x20platform\x20intermediary.','objectTypes':['service','allocation','demand'],'templateRefs':[{'template_id':'supplier-demand','object_type':'demand','purpose':'Create\x20sub-service\x20demand\x20for\x20suppliers'},{'template_id':'supplier-allocation','object_type':'allocation','purpose':'Split\x20order\x20payment\x20with\x20suppliers'}],'requiredConstraints':[{'constraint_id':'demand_configured','description':'Demand\x20must\x20reference\x20main\x20Service','level':'soft','blocking':![]},{'constraint_id':'allocation_sharing_configured','description':'Allocation\x20sharing\x20must\x20include\x20suppliers','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'supplier_visibility','effect':'required','description':'Supplier\x20payments\x20transparent\x20on-chain'},{'dimension':'governance_risk','effect':'boost','description':'No\x20platform\x20controls\x20supplier\x20relationships'}],'industryFit':{'freelance':0x3c,'education':0x46,'rental':0x28,'retail':0x55,'subscription':0x32,'travel':0x5a,'general':0x3c},'addressesPainPoints':['Supplier\x20payments\x20opaque\x20to\x20end\x20user','Platform\x20controls\x20supplier\x20relationships','No\x20direct\x20merchant-supplier\x20collaboration'],'userProtections':['Can\x20see\x20all\x20suppliers\x20involved\x20in\x20service','Supplier\x20payments\x20are\x20on-chain\x20auditable','Merchant\x20remains\x20accountable\x20for\x20supplier\x20quality'],'merchantObligations':['Must\x20declare\x20all\x20suppliers\x20upfront','Must\x20ensure\x20supplier\x20deliverables\x20meet\x20criteria'],'requiresKeeper':![]},{'id':'damage_attestation','name':'Damage\x20Attestation','description':'Rental-specific:\x20pre/post\x20condition\x20photos\x20hashed\x20to\x20Repository.\x20Guard\x20compares\x20hashes\x20to\x20automatically\x20enforce\x20damage\x20deductions.','objectTypes':['repository','guard','service'],'templateRefs':[{'template_id':'rental-condition-guard','object_type':'guard','purpose':'Compare\x20pre/post\x20rental\x20condition\x20hashes'},{'template_id':'condition-repository','object_type':'repository','purpose':'Store\x20rental\x20condition\x20evidence'}],'requiredConstraints':[{'constraint_id':'pre_rental_hash','description':'Pre-rental\x20condition\x20hash\x20must\x20be\x20committed','level':'hard','blocking':!![]},{'constraint_id':'post_rental_hash','description':'Post-rental\x20condition\x20hash\x20must\x20be\x20committed','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'proof_integrity','effect':'required','description':'Condition\x20hashes\x20prevent\x20tampering'},{'dimension':'arbitration_fairness','effect':'boost','description':'Objective\x20evidence\x20reduces\x20dispute\x20bias'}],'industryFit':{'freelance':0x14,'education':0x1e,'rental':0x62,'retail':0x28,'subscription':0x14,'travel':0x3c,'general':0x28},'addressesPainPoints':['Landlord\x20claims\x20damage\x20without\x20proof\x20(common\x20on\x20incumbent\x20short-stay\x20platforms)','No\x20mandatory\x20pre-rental\x20photo\x20(vehicle-rental\x20damage\x20claims\x20denied)','Platform\x20arbitrates\x20damage\x20disputes\x20opaquely'],'userProtections':['Pre-rental\x20hash\x20commits\x20baseline\x20condition','Guard\x20automatically\x20compares\x20post-rental\x20state','Cannot\x20be\x20charged\x20for\x20pre-existing\x20damage'],'merchantObligations':['Must\x20commit\x20pre-rental\x20condition\x20hash','Must\x20commit\x20post-rental\x20condition\x20hash','Must\x20use\x20Repository\x20for\x20evidence\x20storage'],'requiresKeeper':!![],'keeperHint':'Keeper\x20triggers\x20post-rental\x20hash\x20collection\x20and\x20initiates\x20damage\x20Guard\x20comparison'}];export function getBusinessModule(a){return CORE_BUSINESS_MODULES['find'](b=>b['id']===a);}export function getModulesForIndustry(a){return[...CORE_BUSINESS_MODULES]['sort']((c,d)=>(d['industryFit'][a]??0x0)-(c['industryFit'][a]??0x0));}export function recommendModules(a,b,c){const d=c?.['minFit']??0x32,e=c?.['maxModules']??0x5,f=CORE_BUSINESS_MODULES['map'](g=>{let h=g['industryFit'][a]??0x32;const i=b['toLowerCase']();for(const j of g['addressesPainPoints']){const k=j['toLowerCase']()['split'](/\s+/),l=k['filter'](n=>i['includes'](n))['length'];h+=l*0x5;}return{'module':g,'score':Math['min'](h,0x64)};});return f['filter'](g=>g['score']>=d)['sort']((g,h)=>h['score']-g['score'])['slice'](0x0,e)['map'](g=>g['module']);}export function checkModuleConstraints(a,b){const c=a['requiredConstraints']['filter'](f=>f['blocking']&&!b['has'](f['constraint_id']))['map'](f=>f['constraint_id']),d=c['length']===0x0,e=a['evaluationImpact']['filter'](f=>f['effect']==='boost'||f['effect']==='required')['reduce']((f,g)=>f+(g['effect']==='required'?0xf:0x8),0x0);return{'module':a['id'],'adopted':d,'reason':d?undefined:'Missing\x20required\x20constraints:\x20'+c['join'](',\x20'),'missingConstraints':c['length']>0x0?c:undefined,'estimatedScoreBoost':Math['min'](e,0x64)};}export function calculateModuleScoreBoost(a){const b={};for(const c of a){for(const d of c['evaluationImpact']){const e=d['effect']==='required'?0xf:d['effect']==='boost'?0x8:0x3;b[d['dimension']]=(b[d['dimension']]??0x0)+e;}}return b;}
1
+ export const CORE_BUSINESS_MODULES=[{'id':'milestone_escrow','name':'Milestone\x20Escrow','description':'Funds\x20held\x20in\x20Order\x20and\x20released\x20per\x20milestone\x20completion.\x20Protects\x20both\x20merchant\x20and\x20user.','objectTypes':['service','machine','order','allocation'],'templateRefs':[{'template_id':'freelance-machine','object_type':'machine','purpose':'Milestone\x20workflow\x20with\x20accept/reject\x20nodes'},{'template_id':'milestone-allocation','object_type':'allocation','purpose':'Per-milestone\x20fund\x20release'}],'requiredConstraints':[{'constraint_id':'order_allocators_bound','description':'Order\x20must\x20have\x20allocators\x20bound\x20before\x20publish','level':'hard','blocking':!![]},{'constraint_id':'machine_published','description':'Machine\x20must\x20be\x20published\x20and\x20bound\x20to\x20Service','level':'hard','blocking':!![]},{'constraint_id':'milestone_forward_guarded','description':'Each\x20milestone\x20forward\x20must\x20have\x20a\x20guard','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'boost','description':'Escrow\x20ensures\x20funds\x20not\x20released\x20until\x20verification'},{'dimension':'escrow_quality','effect':'required','description':'Module\x20requires\x20proper\x20escrow\x20configuration'},{'dimension':'operational_risk','effect':'boost','description':'Milestones\x20reduce\x20single-point\x20delivery\x20risk'}],'industryFit':{'freelance':0x5f,'education':0x50,'rental':0x3c,'retail':0x28,'subscription':0x1e,'travel':0x32,'general':0x46},'addressesPainPoints':['Client\x20never\x20approves\x20deliverables','Merchant\x20delivers\x20but\x20cannot\x20get\x20paid','Full\x20upfront\x20payment\x20with\x20no\x20delivery\x20guarantee'],'userProtections':['Funds\x20held\x20in\x20escrow\x20until\x20milestone\x20verified','Can\x20reject\x20substandard\x20deliverables','Refund\x20for\x20unstarted\x20milestones'],'merchantObligations':['Must\x20deliver\x20each\x20milestone\x20to\x20defined\x20acceptance\x20criteria','Must\x20configure\x20Machine\x20with\x20proper\x20forward\x20guards'],'requiresKeeper':!![],'keeperHint':'Keeper\x20must\x20monitor\x20Machine\x20node\x20timeouts\x20and\x20trigger\x20adminUnhold\x20if\x20user\x20does\x20not\x20respond'},{'id':'independent_arbitration','name':'Independent\x20Arbitration','description':'Third-party\x20arbitration\x20with\x20Guard-weighted\x20voting.\x20Arbitration\x20Permission\x20MUST\x20differ\x20from\x20Service\x20Permission\x20(contract-enforced).','objectTypes':['arb','permission','guard'],'templateRefs':[{'template_id':'arbitration-3-voters','object_type':'arb','purpose':'3-voter\x20arbitration\x20with\x20weighted\x20voting'},{'template_id':'voting-guard-weighted','object_type':'guard','purpose':'Vote\x20weight\x20from\x20Guard\x20config'}],'requiredConstraints':[{'constraint_id':'arbitration_permission_independent','description':'Arbitration.permission\x20!=\x20Service.permission','level':'hard','blocking':!![]},{'constraint_id':'voting_guard_configured','description':'At\x20least\x20one\x20voting_guard\x20must\x20be\x20configured','level':'soft','blocking':![]},{'constraint_id':'arbitration_bound_to_service','description':'Arbitration\x20must\x20be\x20in\x20Service.arbitrations\x20list','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'arbitration_coverage','effect':'required','description':'Module\x20requires\x20arbitration\x20configuration'},{'dimension':'arbitration_fairness','effect':'required','description':'Independent\x20permission\x20ensures\x20neutrality'},{'dimension':'governance_risk','effect':'boost','description':'Reduces\x20platform-as-judge\x20risk'}],'industryFit':{'freelance':0x5a,'education':0x4b,'rental':0x55,'retail':0x4b,'subscription':0x3c,'travel':0x50,'general':0x46},'addressesPainPoints':['Platform\x20acts\x20as\x20both\x20judge\x20and\x20party','Arbitration\x20fees\x20too\x20high\x20for\x20small\x20claims','No\x20binding\x20dispute\x20resolution'],'userProtections':['Independent\x20arbitrators\x20(not\x20merchant\x20or\x20platform)','Guard-weighted\x20voting\x20prevents\x20Sybil\x20attacks','Micro-arbitration:\x20no\x20per-case\x20fees'],'merchantObligations':['Must\x20accept\x20arbitration\x20verdict','Must\x20maintain\x20compensation_fund\x20for\x20indemnities'],'requiresKeeper':![]},{'id':'wip_provenance','name':'WIP\x20Provenance','description':'Work-in-progress\x20hash\x20commitments\x20on-chain\x20via\x20Repository.\x20Prevents\x20tampering\x20of\x20delivery\x20evidence.','objectTypes':['repository','guard','proof'],'templateRefs':[{'template_id':'wip-hash-guard','object_type':'guard','purpose':'Verify\x20WIP\x20hash\x20matches\x20commitment'},{'template_id':'delivery-proof','object_type':'proof','purpose':'On-chain\x20delivery\x20confirmation'}],'requiredConstraints':[{'constraint_id':'repository_published','description':'Repository\x20must\x20be\x20published','level':'hard','blocking':!![]},{'constraint_id':'wip_hash_before_delivery','description':'WIP\x20hash\x20must\x20be\x20committed\x20before\x20delivery','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'proof_integrity','effect':'required','description':'WIP\x20hash\x20provides\x20tamper-proof\x20evidence'},{'dimension':'transparency','effect':'boost','description':'On-chain\x20commitment\x20is\x20publicly\x20verifiable'}],'industryFit':{'freelance':0x5a,'education':0x55,'rental':0x5f,'retail':0x46,'subscription':0x3c,'travel':0x46,'general':0x4b},'addressesPainPoints':['Evidence\x20stored\x20on\x20platform\x20servers\x20can\x20be\x20tampered','No\x20proof\x20of\x20pre-delivery\x20state\x20(e.g.\x20rental\x20condition)','Dispute\x20resolution\x20relies\x20on\x20trust\x20in\x20platform'],'userProtections':['WIP\x20hash\x20commitment\x20is\x20immutable\x20on-chain','Guard\x20automatically\x20verifies\x20hash\x20match','Repository\x20history\x20is\x20auditable'],'merchantObligations':['Must\x20commit\x20WIP\x20hash\x20at\x20defined\x20checkpoints','Must\x20use\x20Repository\x20for\x20evidence\x20storage'],'requiresKeeper':![]},{'id':'multi_tier_allocation','name':'Multi-Tier\x20Allocation','description':'Order\x20funds\x20automatically\x20split\x20among\x20multiple\x20recipients.\x20Fully\x20transparent\x20on-chain.','objectTypes':['allocation','treasury','payment'],'templateRefs':[{'template_id':'multi-tier-allocation','object_type':'allocation','purpose':'Waterfall\x20fund\x20distribution'},{'template_id':'supplier-waterfall','object_type':'allocation','purpose':'Supplier\x20payment\x20tiers'}],'requiredConstraints':[{'constraint_id':'allocators_configured','description':'Allocators\x20must\x20be\x20configured\x20with\x20recipients','level':'hard','blocking':!![]},{'constraint_id':'sharing_sum_100','description':'Allocation\x20percentages\x20must\x20sum\x20to\x20100%','level':'hard','blocking':!![]},{'constraint_id':'platform_fee_zero','description':'Platform\x20fee\x20should\x20be\x200\x20or\x20user-defined','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fee_transparency','effect':'required','description':'All\x20allocations\x20visible\x20on-chain'},{'dimension':'supplier_visibility','effect':'boost','description':'Supplier\x20payments\x20are\x20auditable'}],'industryFit':{'freelance':0x3c,'education':0x32,'rental':0x28,'retail':0x50,'subscription':0x46,'travel':0x5f,'general':0x46},'addressesPainPoints':['Multi-layer\x20commission\x20hidden\x20from\x20users','Suppliers\x20paid\x20opaquely','Platform\x20takes\x20undisclosed\x20FX\x20spread'],'userProtections':['Full\x20allocation\x20waterfall\x20visible\x20on-chain','No\x20hidden\x20fees','Can\x20verify\x20supplier\x20payments'],'merchantObligations':['Must\x20declare\x20all\x20allocation\x20recipients\x20upfront','Cannot\x20change\x20allocation\x20after\x20publish'],'requiresKeeper':![]},{'id':'subscription_with_proof','name':'Subscription\x20with\x20Delivery\x20Proof','description':'Each\x20billing\x20cycle\x20requires\x20proof\x20of\x20content\x20delivery\x20before\x20charging.\x20Prevents\x20creator\x20abandonment.','objectTypes':['service','guard','repository','progress'],'templateRefs':[{'template_id':'subscription-machine','object_type':'machine','purpose':'Cycle-based\x20workflow'},{'template_id':'delivery-guard-cycle','object_type':'guard','purpose':'Verify\x20content\x20delivery\x20per\x20cycle'}],'requiredConstraints':[{'constraint_id':'delivery_guard_per_cycle','description':'Each\x20cycle\x20must\x20have\x20a\x20delivery\x20guard','level':'hard','blocking':!![]},{'constraint_id':'repository_updated','description':'Repository\x20must\x20be\x20updated\x20with\x20cycle\x20content\x20hash','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'content_commitment','effect':'required','description':'Delivery\x20proof\x20required\x20before\x20each\x20charge'},{'dimension':'timeout_protection','effect':'boost','description':'Cycles\x20enforce\x20regular\x20delivery'}],'industryFit':{'freelance':0x28,'education':0x55,'rental':0x1e,'retail':0x14,'subscription':0x62,'travel':0x1e,'general':0x32},'addressesPainPoints':['Creator\x20abandons\x20after\x20collecting\x20subscriptions','Silent\x20auto-renewal\x20with\x20no\x20delivery\x20proof','No\x20mechanism\x20to\x20hold\x20creators\x20accountable'],'userProtections':['Payment\x20only\x20after\x20delivery\x20proof\x20verified','Can\x20cancel\x20if\x20delivery\x20guard\x20fails','Cycle\x20history\x20on-chain'],'merchantObligations':['Must\x20deliver\x20content\x20and\x20commit\x20hash\x20each\x20cycle','Must\x20configure\x20delivery_guard\x20per\x20cycle'],'requiresKeeper':!![],'keeperHint':'Keeper\x20triggers\x20cycle\x20transitions\x20and\x20verifies\x20delivery_guard\x20conditions'},{'id':'accept_timeout_protection','name':'Accept\x20Timeout\x20Protection','description':'If\x20user\x20does\x20not\x20accept/reject\x20within\x20N\x20days,\x20auto-accept\x20advances\x20the\x20Machine.\x20Protects\x20merchant\x20from\x20indefinite\x20stalls.','objectTypes':['machine','guard'],'templateRefs':[{'template_id':'timeout-forward','object_type':'machine','purpose':'Forward\x20with\x20time_guard\x20+\x20adminUnhold\x20fallback'}],'requiredConstraints':[{'constraint_id':'time_guard_configured','description':'time_guard\x20must\x20be\x20set\x20on\x20accept\x20forward','level':'hard','blocking':!![]},{'constraint_id':'adminUnhold_permission','description':'Admin\x20must\x20have\x20PROGRESS_UNHOLD\x20(224)\x20permission','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'timeout_protection','effect':'required','description':'Auto-advance\x20prevents\x20indefinite\x20user\x20stalls'},{'dimension':'operational_risk','effect':'boost','description':'Reduces\x20delivery\x20timeline\x20uncertainty'}],'industryFit':{'freelance':0x5f,'education':0x46,'rental':0x50,'retail':0x3c,'subscription':0x28,'travel':0x3c,'general':0x4b},'addressesPainPoints':['Buyer\x20never\x20approves\x20deliverables\x20(common\x20on\x20incumbent\x20talent\x20marketplaces)','Merchant\x20cash\x20flow\x20blocked\x20by\x20inactive\x20buyer','Infinite\x20revision\x20loops\x20without\x20resolution'],'userProtections':['Still\x20has\x20full\x20N\x20days\x20to\x20review\x20and\x20reject','Rejection\x20triggers\x20arbitration\x20if\x20configured'],'merchantObligations':['Must\x20configure\x20time_guard\x20on\x20forward','Timeout\x20value\x20comes\x20from\x20the\x20template\x27s\x20window\x20fee_params\x20(e.g.\x20escrow_release_days;\x20override\x20per\x20build\x20via\x20fee_overrides)\x20—\x20never\x20a\x20hardcoded\x20number'],'requiresKeeper':!![],'keeperHint':'Keeper\x20monitors\x20time_guard\x20deadlines\x20and\x20advances\x20the\x20timeout\x20forward\x20when\x20the\x20window\x20elapses\x20(adminUnhold\x20is\x20only\x20the\x20hold-release\x20escape\x20hatch,\x20never\x20the\x20timeout\x20path)'},{'id':'refund_guarantee','name':'Refund\x20Guarantee','description':'Service\x20maintains\x20compensation_fund\x20for\x20refunds.\x20Refund_guard\x20validates\x20eligibility\x20and\x20transfers\x20funds\x20back\x20to\x20Order.','objectTypes':['service','guard','order'],'templateRefs':[{'template_id':'refund-guard','object_type':'guard','purpose':'Validate\x20refund\x20eligibility'}],'requiredConstraints':[{'constraint_id':'compensation_fund_positive','description':'compensation_fund_add\x20>\x200','level':'hard','blocking':!![]},{'constraint_id':'refund_guard_configured','description':'Service\x20must\x20have\x20refund_guard','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'boost','description':'Compensation\x20fund\x20backs\x20refund\x20promise'},{'dimension':'consumer_diligence','effect':'boost','description':'Shows\x20merchant\x20confidence\x20in\x20service\x20quality'}],'industryFit':{'freelance':0x46,'education':0x55,'rental':0x5a,'retail':0x5f,'subscription':0x50,'travel':0x55,'general':0x50},'addressesPainPoints':['Refund\x20trapped\x20in\x20incumbent\x20platform\x20balance','No\x20refund\x20mechanism\x20for\x20service\x20failure','Refund\x20decision\x20centralized\x20at\x20platform'],'userProtections':['Refund\x20goes\x20back\x20to\x20Order\x20(not\x20platform\x20balance)','Guard\x20validates\x20eligibility\x20(not\x20platform\x20discretion)','Compensation\x20fund\x20guarantees\x20liquidity'],'merchantObligations':['Must\x20maintain\x20compensation_fund\x20>\x200','Must\x20configure\x20refund_guard\x20rules'],'requiresKeeper':![]},{'id':'reputation_on_chain','name':'On-Chain\x20Reputation','description':'Merchant\x20and\x20user\x20behavior\x20permanently\x20recorded\x20on\x20Registrar.\x20Evaluations,\x20completions,\x20and\x20disputes\x20contribute\x20to\x20reputation\x20score.','objectTypes':['service','order','arb'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'service_published','description':'Service\x20must\x20be\x20published\x20to\x20accumulate\x20reputation','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'reputation_verifiability','effect':'required','description':'On-chain\x20history\x20is\x20tamper-proof'},{'dimension':'trust','effect':'boost','description':'Reputation\x20signals\x20reduce\x20information\x20asymmetry'}],'industryFit':{'freelance':0x5a,'education':0x50,'rental':0x55,'retail':0x5a,'subscription':0x55,'travel':0x50,'general':0x55},'addressesPainPoints':['Fake\x20reviews\x20and\x20rating\x20manipulation','No\x20cross-platform\x20reputation\x20portability','Platform\x20can\x20delete\x20negative\x20reviews'],'userProtections':['Reputation\x20is\x20on-chain\x20and\x20immutable','Can\x20verify\x20merchant\x27s\x20complete\x20transaction\x20history','Dispute\x20outcomes\x20affect\x20reputation\x20permanently'],'merchantObligations':['All\x20service\x20interactions\x20become\x20part\x20of\x20permanent\x20record','Cannot\x20hide\x20negative\x20outcomes'],'requiresKeeper':![]},{'id':'supplier_collaboration','name':'Supplier\x20Collaboration','description':'Enable\x20merchant\x20to\x20delegate\x20sub-services\x20to\x20suppliers\x20with\x20transparent\x20payment\x20splitting.\x20No\x20platform\x20intermediary.','objectTypes':['service','allocation','demand'],'templateRefs':[{'template_id':'supplier-demand','object_type':'demand','purpose':'Create\x20sub-service\x20demand\x20for\x20suppliers'},{'template_id':'supplier-allocation','object_type':'allocation','purpose':'Split\x20order\x20payment\x20with\x20suppliers'}],'requiredConstraints':[{'constraint_id':'demand_configured','description':'Demand\x20must\x20reference\x20main\x20Service','level':'soft','blocking':![]},{'constraint_id':'allocation_sharing_configured','description':'Allocation\x20sharing\x20must\x20include\x20suppliers','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'supplier_visibility','effect':'required','description':'Supplier\x20payments\x20transparent\x20on-chain'},{'dimension':'governance_risk','effect':'boost','description':'No\x20platform\x20controls\x20supplier\x20relationships'}],'industryFit':{'freelance':0x3c,'education':0x46,'rental':0x28,'retail':0x55,'subscription':0x32,'travel':0x5a,'general':0x3c},'addressesPainPoints':['Supplier\x20payments\x20opaque\x20to\x20end\x20user','Platform\x20controls\x20supplier\x20relationships','No\x20direct\x20merchant-supplier\x20collaboration'],'userProtections':['Can\x20see\x20all\x20suppliers\x20involved\x20in\x20service','Supplier\x20payments\x20are\x20on-chain\x20auditable','Merchant\x20remains\x20accountable\x20for\x20supplier\x20quality'],'merchantObligations':['Must\x20declare\x20all\x20suppliers\x20upfront','Must\x20ensure\x20supplier\x20deliverables\x20meet\x20criteria'],'requiresKeeper':![]},{'id':'damage_attestation','name':'Damage\x20Attestation','description':'Rental-specific:\x20pre/post\x20condition\x20photos\x20hashed\x20to\x20Repository.\x20Guard\x20compares\x20hashes\x20to\x20automatically\x20enforce\x20damage\x20deductions.','objectTypes':['repository','guard','service'],'templateRefs':[{'template_id':'rental-condition-guard','object_type':'guard','purpose':'Compare\x20pre/post\x20rental\x20condition\x20hashes'},{'template_id':'condition-repository','object_type':'repository','purpose':'Store\x20rental\x20condition\x20evidence'}],'requiredConstraints':[{'constraint_id':'pre_rental_hash','description':'Pre-rental\x20condition\x20hash\x20must\x20be\x20committed','level':'hard','blocking':!![]},{'constraint_id':'post_rental_hash','description':'Post-rental\x20condition\x20hash\x20must\x20be\x20committed','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'proof_integrity','effect':'required','description':'Condition\x20hashes\x20prevent\x20tampering'},{'dimension':'arbitration_fairness','effect':'boost','description':'Objective\x20evidence\x20reduces\x20dispute\x20bias'}],'industryFit':{'freelance':0x14,'education':0x1e,'rental':0x62,'retail':0x28,'subscription':0x14,'travel':0x3c,'general':0x28},'addressesPainPoints':['Landlord\x20claims\x20damage\x20without\x20proof\x20(common\x20on\x20incumbent\x20short-stay\x20platforms)','No\x20mandatory\x20pre-rental\x20photo\x20(vehicle-rental\x20damage\x20claims\x20denied)','Platform\x20arbitrates\x20damage\x20disputes\x20opaquely'],'userProtections':['Pre-rental\x20hash\x20commits\x20baseline\x20condition','Guard\x20automatically\x20compares\x20post-rental\x20state','Cannot\x20be\x20charged\x20for\x20pre-existing\x20damage'],'merchantObligations':['Must\x20commit\x20pre-rental\x20condition\x20hash','Must\x20commit\x20post-rental\x20condition\x20hash','Must\x20use\x20Repository\x20for\x20evidence\x20storage'],'requiresKeeper':!![],'keeperHint':'Keeper\x20triggers\x20post-rental\x20hash\x20collection\x20and\x20initiates\x20damage\x20Guard\x20comparison'},{'id':'discount_lifecycle','name':'Discount\x20Lifecycle','description':'Coupon\x20promotions\x20bound\x20to\x20a\x20Service\x20(percentage\x20or\x20fixed-amount\x20off):\x20minted\x20to\x20recipients,\x20redeemed\x20automatically\x20at\x20buy,\x20burned\x20on\x20use.\x20Chain\x20truth:\x20a\x20redeemed\x20coupon\x27s\x20balance\x20decrements\x20PERMANENTLY\x20(no\x20restock,\x20no\x20revert),\x20and\x20standing\x20renewal\x20discounts\x20are\x20NOT\x20constructible\x20(the\x20renew\x20path\x20has\x20no\x20discount\x20hook\x20—\x20every\x20renewal\x20re-prices\x20from\x20the\x20SKU\x20price).','objectTypes':['service'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'discount_budget_planned','description':'Total\x20discount\x20budget\x20(max_uses\x20x\x20discount_value)\x20planned\x20before\x20minting\x20—\x20the\x20burn\x20is\x20irreversible','level':'hard','blocking':!![]},{'constraint_id':'discount_burn_disclosed','description':'Burn-on-use\x20semantics\x20(permanent\x20decrement,\x20no\x20revert)\x20disclosed\x20in\x20the\x20promotion\x20terms','level':'hard','blocking':!![]},{'constraint_id':'discount_renewal_disclosed','description':'\x27First\x20period\x20X%\x20off,\x20then\x20standard\x27\x20disclosed\x20in\x20the\x20listing/WIP\x20BEFORE\x20purchase\x20(renewals\x20re-price\x20from\x20the\x20SKU\x20price\x20—\x20anti-dark-pattern)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'promotion_integrity','effect':'required','description':'Coupon\x20budget\x20and\x20burn\x20semantics\x20are\x20planned\x20and\x20disclosed,\x20never\x20improvised'},{'dimension':'fee_transparency','effect':'boost','description':'The\x20discounted\x20price\x20at\x20redemption\x20is\x20computed\x20by\x20the\x20chain,\x20not\x20asserted\x20by\x20prose'}],'industryFit':{'freelance':0x2d,'education':0x46,'rental':0x32,'retail':0x5f,'subscription':0x55,'travel':0x50,'general':0x46},'addressesPainPoints':['Coupon\x20systems\x20locked\x20inside\x20incumbent\x20platforms','Promotions\x20improvised\x20after\x20publish\x20with\x20no\x20budget\x20plan','Discount\x20promises\x20that\x20silently\x20change\x20at\x20renewal'],'userProtections':['Redemption\x20is\x20computed\x20on-chain\x20at\x20buy\x20(no\x20manual\x20discount\x20approval)','Renewal\x20price\x20is\x20the\x20SKU\x20price\x20—\x20a\x20first-period\x20coupon\x20cannot\x20silently\x20renew\x20at\x20the\x20discounted\x20price','Expired\x20coupons\x20cannot\x20redeem'],'merchantObligations':['Plan\x20the\x20total\x20discount\x20budget\x20(max_uses\x20x\x20value)\x20before\x20minting','Disclose\x20burn-on-use\x20and\x20renewal\x20re-pricing\x20in\x20the\x20promotion\x20terms','Never\x20promise\x20a\x20standing\x20renewal\x20discount\x20(not\x20constructible\x20on-chain)'],'requiresKeeper':![]},{'id':'praise_incentive','name':'Review\x20Praise\x20Incentive','description':'Sale-time-planned\x20claim\x20Reward\x20for\x20buyer\x20reviews\x20(template\x20review_mode\x20\x27review_reward\x27):\x20the\x20build\x20emits\x20the\x20Reward\x20object,\x20attaches\x20the\x20replay-armed\x20claim\x20guard,\x20binds\x20it\x20to\x20the\x20Service,\x20and\x20funds\x20it\x20via\x20the\x20reward_funding\x20input\x20—\x20so\x20the\x20incentive\x20is\x20perceivable\x20by\x20the\x20buyer\x20BEFORE\x20ordering,\x20and\x20an\x20unfunded\x20or\x20unguarded\x20incentive\x20promise\x20must\x20not\x20publish.','objectTypes':['service','reward','guard'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'reward_pool_funded','description':'reward_funding\x20input\x20present\x20at\x20build\x20(an\x20unfunded\x20incentive\x20promise\x20must\x20not\x20publish)','level':'hard','blocking':!![]},{'constraint_id':'reward_claim_replay_armed','description':'Claim\x20guard\x20carries\x20the\x20record-gate\x20idempotency\x20leg\x20(replay-drain\x20target\x20otherwise)','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'trust','effect':'boost','description':'Funded,\x20perceivable\x20review\x20incentives\x20raise\x20honest\x20review\x20volume'},{'dimension':'promotion_integrity','effect':'required','description':'Incentive\x20terms\x20are\x20chain-enforced\x20(funded\x20pool\x20+\x20guarded\x20claim),\x20not\x20prose\x20promises'}],'industryFit':{'freelance':0x4b,'education':0x41,'rental':0x2d,'retail':0x55,'subscription':0x4b,'travel':0x41,'general':0x41},'addressesPainPoints':['No\x20mechanism\x20to\x20incentivize\x20honest\x20buyer\x20reviews','Review\x20rewards\x20locked\x20inside\x20incumbent\x20platforms','Incentive\x20promises\x20that\x20evaporate\x20after\x20purchase'],'userProtections':['Incentive\x20perceivable\x20BEFORE\x20ordering\x20(funded\x20at\x20build,\x20not\x20after)','Claim\x20terms\x20chain-enforced\x20with\x20replay\x20protection','Rating\x20polarity\x20recorded\x20as\x20range-queryable\x20on-chain\x20rows\x20(1-5\x20rating\x20column)'],'merchantObligations':['Fund\x20the\x20reward\x20pool\x20at\x20build\x20time\x20(reward_funding)','Keep\x20the\x20claim\x20guard\x20replay-armed\x20(record-gate\x20leg)','Disclose\x20claim\x20terms\x20in\x20the\x20listing/WIP\x20promise'],'requiresKeeper':![]}];export function getBusinessModule(a){return CORE_BUSINESS_MODULES['find'](b=>b['id']===a);}export function getModulesForIndustry(a){return[...CORE_BUSINESS_MODULES]['sort']((c,d)=>(d['industryFit'][a]??0x0)-(c['industryFit'][a]??0x0));}export function recommendModules(a,b,c){const d=c?.['minFit']??0x32,e=c?.['maxModules']??0x5,f=CORE_BUSINESS_MODULES['map'](g=>{let h=g['industryFit'][a]??0x32;const i=b['toLowerCase']();for(const j of g['addressesPainPoints']){const k=j['toLowerCase']()['split'](/\s+/),l=k['filter'](n=>i['includes'](n))['length'];h+=l*0x5;}return{'module':g,'score':Math['min'](h,0x64)};});return f['filter'](g=>g['score']>=d)['sort']((g,h)=>h['score']-g['score'])['slice'](0x0,e)['map'](g=>g['module']);}export function checkModuleConstraints(a,b){const c=a['requiredConstraints']['filter'](f=>f['blocking']&&!b['has'](f['constraint_id']))['map'](f=>f['constraint_id']),d=c['length']===0x0,e=a['evaluationImpact']['filter'](f=>f['effect']==='boost'||f['effect']==='required')['reduce']((f,g)=>f+(g['effect']==='required'?0xf:0x8),0x0);return{'module':a['id'],'adopted':d,'reason':d?undefined:'Missing\x20required\x20constraints:\x20'+c['join'](',\x20'),'missingConstraints':c['length']>0x0?c:undefined,'estimatedScoreBoost':Math['min'](e,0x64)};}export function calculateModuleScoreBoost(a){const b={};for(const c of a){for(const d of c['evaluationImpact']){const e=d['effect']==='required'?0xf:d['effect']==='boost'?0x8:0x3;b[d['dimension']]=(b[d['dimension']]??0x0)+e;}}return b;}
@@ -1 +1 @@
1
- import{PackageAddress,WOW_SINGLETON_IDS}from'@wowok/wowok';const EOA='EOA',ANY='ANY';export const EDGE_ID_REPOSITORY_POLICY_GUARD='repository.policy_guard';const F_EDGES=[{'id':'service.permission','family':'F','source':'Service','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b06','b09'],'label':'Permission\x20group\x20governing\x20who\x20may\x20operate\x20the\x20service\x20(must\x20differ\x20from\x20the\x20arbitration\x20permission,\x20E33\x20recusal\x20rule)'},{'id':'service.machine','family':'F','source':'Service','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'after\x20publish','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'service.move\x20machine_set_imp\x20/\x20machine_none_imp\x20(assert!(!bPublished))'},'label':'Workflow\x20template\x20the\x20shop\x20fulfills\x20orders\x20through\x20(chosen\x20at\x20publish,\x20permanently\x20frozen)'},{'id':'service.buy_guard','family':'F','source':'Service','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'buy_guard'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b01','b10'],'contract':{'field':'buy_guard','frozenWhen':null,'forbiddenActions':[],'allowedActions':['set','remove'],'unfreeze':null,'moveAnchor':'service.move\x20buy_guard_set_imp\x20/\x20buy_guard_none_imp\x20(no\x20assert!(!bPublished))'},'label':'Gate\x20every\x20buyer\x20must\x20pass\x20before\x20an\x20order\x20can\x20be\x20created'},{'id':'service.arbitration','family':'F','source':'Service','target':'Arbitration','cardinality':'N','read':{'kind':'fields','path':'arbitrations'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b06'],'contract':{'field':'arbitrations','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20arbitration_remove_imp\x20/\x20arbitration_clear_imp\x20(assert_not_published)'},'label':'Dispute\x20venues\x20the\x20shop\x20designates\x20for\x20order\x20arbitration\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.reward','family':'F','source':'Service','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b07'],'contract':{'field':'rewards','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20reward_remove_imp\x20/\x20reward_clear_imp\x20(assert_not_published)'},'label':'Reward\x20pools\x20funding\x20the\x20shop\x27s\x20promotions\x20and\x20rebates\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.repository','family':'F','source':'Service','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'repositories'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤100)','bridgeIds':['b02'],'contract':{'field':'repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'service.move\x20repository_remove_imp\x20/\x20repository_clear_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20the\x20shop\x20stores\x20fulfillment\x20proofs\x20in\x20(up\x20to\x20100;\x20freely\x20editable\x20after\x20publish)'},{'id':'service.um','family':'F','source':'Service','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b11'],'label':'Shop\x20membership\x20book\x20—\x20the\x20roster\x20deciding\x20who\x20counts\x20as\x20a\x20shop\x20member\x20(messaging\x20and\x20member-gate\x20flows)'},{'id':'service.order_allocator_guard','family':'F','source':'Service','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['order_allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'service.move\x20L175-194;\x20allocation.move\x20L194-200','bridgeIds':['b05'],'label':'Guards\x20gating\x20how\x20incoming\x20orders\x20split\x20across\x20allocation\x20pools\x20(order-allocator\x20triggers)'},{'id':'order.builder','family':'F','source':'Order','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'builder'},'retention':'complete','evidence':'order.move\x20L60-75\x20(owner;\x20SDK\x20builder)','bridgeIds':['b01'],'label':'Buyer\x20who\x20owns\x20the\x20order\x20(payer-side\x20principal;\x20SDK\x20names\x20the\x20field\x20builder)'},{'id':'order.agent','family':'F','source':'Order','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'agent'},'retention':'complete','evidence':'order.move\x20L60-75,L179\x20(≤10)','label':'Merchant\x20agents\x20authorized\x20by\x20the\x20buyer\x20(<=10,\x20buyer\x20calls\x20agent_set)'},{'id':'order.service','family':'F','source':'Order','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Shop\x20fulfilling\x20this\x20order\x20(frozen\x20purchase\x20snapshot\x20of\x20what\x20was\x20bought\x20and\x20from\x20whom)'},{'id':'order.machine','family':'F','source':'Order','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'order.move\x20L130\x20(machine⇒progress)','bridgeIds':['b01','b04'],'label':'Workflow\x20the\x20order\x20advances\x20through\x20(snapshot\x20of\x20the\x20shop\x27s\x20template\x20at\x20purchase\x20time)'},{'id':'order.progress','family':'F','source':'Order','target':'Progress','cardinality':'0..1','read':{'kind':'field','path':'progress'},'retention':'complete','evidence':'order.move\x20L130','bridgeIds':['b04'],'label':'Live\x20fulfillment\x20state\x20of\x20the\x20order\x20(which\x20workflow\x20node\x20it\x20currently\x20sits\x20at)'},{'id':'order.allocation','family':'F','source':'Order','target':'Allocation','cardinality':'0..1','read':{'kind':'field','path':'allocation'},'retention':'complete','evidence':'order.move\x20L130\x20(amount>0⇒allocation)','bridgeIds':['b05'],'label':'Allocation\x20pool\x20routing\x20this\x20order\x27s\x20payouts\x20(present\x20when\x20the\x20order\x20amount\x20>\x200)'},{'id':'order.discount','family':'F','source':'Order','target':'Discount','cardinality':'0..1','read':{'kind':'field','path':'discount'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Discount\x20the\x20shop\x20granted\x20on\x20this\x20order\x20(price\x20concession\x20of\x20record)'},{'id':'order.dispute','family':'F','source':'Order','target':'Arb','cardinality':'N','read':{'kind':'fields','path':'dispute'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b06'],'label':'Dispute\x20cases\x20raised\x20over\x20this\x20order\x20(each\x20case\x20may\x20claw\x20back\x20compensation)'},{'id':'order.claimed_by','family':'F','source':'Order','target':EOA,'cardinality':'0..1','read':{'kind':'field','path':'claimed_by'},'retention':'complete','evidence':'order.move\x20L86-96\x20(single-use)','bridgeIds':['b06'],'label':'Compensation\x20claimant\x20on\x20this\x20order\x20(single-use\x20slot;\x20marks\x20the\x20payout\x20as\x20consumed)'},{'id':'order.required_info','family':'F','source':'Order','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'required_info'},'retention':'complete','evidence':'order.move\x20L73,L77-80\x20(Option<address>\x20im_or_proof:\x20the\x20merchant\x27s\x20IM\x20user\x20address\x20from\x20the\x20Service\x27s\x20Contact,\x20or\x20an\x20on-chain\x20WTS\x20Proof\x20object\x20address)','bridgeIds':['b11','b12'],'label':'Information\x20credential\x20the\x20shop\x20requires\x20after\x20the\x20order\x20(merchant\x20IM\x20address\x20or\x20WTS\x20proof)'},{'id':'discount.service','family':'F','source':'Discount','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'service.move\x20L109-119\x20(service\x20L117)','bridgeIds':['b01'],'label':'Shop\x20that\x20issued\x20the\x20discount\x20(the\x20party\x20honoring\x20the\x20concession)'},{'id':'progress.machine','family':'F','source':'Progress','target':'Machine','cardinality':0x1,'read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'bound\x20at\x20creation','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20new_imp\x20(machine\x20bound\x20at\x20creation;\x20no\x20mutation\x20entry)'},'label':'Workflow\x20the\x20progress\x20executes\x20(fixed\x20at\x20creation;\x20determines\x20the\x20node\x20graph)'},{'id':'progress.task','family':'F','source':'Progress','target':'Order','cardinality':'0..1','read':{'kind':'field','path':'task'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'task','frozenWhen':'after\x20task_set','forbiddenActions':['set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20task_set_imp\x20(assert!\x20option::is_none\x20→\x20E_TASK_ALREADY_SET)'},'label':'Order\x20this\x20progress\x20fulfills\x20(set\x20once;\x20a\x20progress\x20serves\x20at\x20most\x20one\x20order)'},{'id':'progress.named_operator','family':'F','source':'Progress','target':EOA,'cardinality':'N','read':{'kind':'deep','segments':['namedOperator','operators'],'field':''},'retention':'complete','evidence':'progress.move\x20L76-86\x20(≤80)','bridgeIds':['b04'],'label':'Named\x20operators\x20allowed\x20to\x20advance\x20this\x20progress\x20(up\x20to\x2080;\x20runtime-delegated)'},{'id':'progress.context_repository','family':'F','source':'Progress','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'context_repositories'},'retention':'complete','evidence':'progress.move\x20L79,L199-208\x20(MAX_CONTEXT_REPOSITORY_COUNT)','bridgeIds':['b02','b04'],'label':'Runtime\x20evidence\x20repositories\x20consulted\x20while\x20fulfilling\x20the\x20order'},{'id':'machine.permission','family':'F','source':'Machine','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20run\x20and\x20advance\x20the\x20workflow'},{'id':'machine.consensus_repository','family':'F','source':'Machine','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'consensus_repositories'},'retention':'complete','evidence':'machine.move\x20L299-308','contract':{'field':'consensus_repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'machine.move\x20consensus_repositories_remove_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20nodes\x20consult\x20to\x20reach\x20execution\x20consensus'},{'id':'machine.um','family':'F','source':'Machine','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b11'],'label':'Workflow\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20participates\x20in\x20running\x20the\x20workflow'},{'id':'allocation.guard','family':'F','source':'Allocation','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'allocation.move\x20L194-200','bridgeIds':['b05'],'contract':{'field':'allocators','frozenWhen':'after\x20create\x20(share)','forbiddenActions':['add','remove','clear','set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'allocation.move\x20create\x20(bound\x20via\x20new_with_balance;\x20no\x20mutation\x20entry)'},'label':'Guards\x20gating\x20each\x20payout\x20segment\x20of\x20the\x20pool\x20(release\x20conditions\x20per\x20allocator)'},{'id':'allocation.payment','family':'F','source':'Allocation','target':'Payment','cardinality':'N','read':{'kind':'fields','path':'payment'},'retention':'complete','evidence':'allocation.move\x20L196-202,L307-316','bridgeIds':['b05','b08'],'label':'Payment\x20receipts\x20emitted\x20by\x20this\x20allocation\x20pool'},{'id':'arbitration.permission','family':'F','source':'Arbitration','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b09'],'label':'Arbitration\x20service\x20permission\x20group\x20(must\x20differ\x20from\x20the\x20shop\x20permission,\x20E33)'},{'id':'arbitration.voting_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'voting_guard','field':'guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Arbitration\x20voting\x20Guards\x20(empty\x20=\x20open\x20to\x20all\x20members)'},{'id':'arbitration.usage_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'usage_guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Gate\x20a\x20party\x20must\x20pass\x20before\x20opening\x20a\x20case\x20at\x20this\x20arbitration\x20service'},{'id':'arbitration.um','family':'F','source':'Arbitration','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b11'],'label':'Arbitration\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20vote\x20on\x20dispute\x20cases\x20(open\x20voting)'},{'id':'arb.order','family':'F','source':'Arb','target':'Order','cardinality':0x1,'read':{'kind':'field','path':'order'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Order\x20the\x20arbitration\x20case\x20is\x20about'},{'id':'arb.arbitration_service','family':'F','source':'Arb','target':'Arbitration','cardinality':'0..1','read':{'kind':'field','path':'arbitration'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Arbitration\x20service\x20applied\x20to\x20the\x20case'},{'id':'arb.voter','family':'S','source':'Arb','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'voted','field':'voter'},'retention':'complete','evidence':'arb.move\x20L96-111\x20(voted≤520)','bridgeIds':['b06'],'label':'Actual\x20case\x20voters\x20and\x20weights\x20(<=520)'},{'id':'demand.permission','family':'F','source':'Demand','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b09'],'label':'Demand\x20permission\x20group\x20(the\x20demanding\x20side)'},{'id':'demand.guard','family':'F','source':'Demand','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b03','b10'],'label':'Demand\x20acceptance\x20Guards\x20(must\x20be\x20empty\x20for\x20a\x20bare\x20present)'},{'id':'demand.reward','family':'F','source':'Demand','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b07'],'label':'Escrowed\x20reward\x20pools\x20of\x20the\x20demand'},{'id':'demand.um','family':'F','source':'Demand','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b11'],'label':'Demand\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20act\x20on\x20the\x20demanding\x20side'},{'id':'reward.permission','family':'F','source':'Reward','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20configure\x20the\x20reward\x20pool'},{'id':'reward.guard','family':'F','source':'Reward','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b07'],'label':'Guards\x20a\x20claimant\x20must\x20pass\x20before\x20drawing\x20from\x20the\x20pool'},{'id':'reward.um','family':'F','source':'Reward','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b11'],'label':'Reward\x20membership\x20book\x20—\x20roster\x20of\x20members\x20eligible\x20under\x20member-gated\x20claim\x20rules'},{'id':'repository.permission','family':'F','source':'Repository','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b02','b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20manage\x20the\x20repository'},{'id':'repository.reward','family':'F','source':'Repository','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b07'],'label':'Reward\x20pools\x20held\x20by\x20the\x20repository'},{'id':'repository.um','family':'F','source':'Repository','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'repository.move\x20L461-468,L471-480','bridgeIds':['b11'],'label':'Repository\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20read\x20or\x20write\x20under\x20member\x20policies'},{'id':EDGE_ID_REPOSITORY_POLICY_GUARD,'family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies','write_guard'],'field':'guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.write_guard),L516-570','bridgeIds':['b02','b10'],'label':'Write-policy\x20Guards\x20gating\x20evidence\x20writes\x20under\x20each\x20repository\x20policy'},{'id':'repository.quote_guard','family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies'],'field':'quote_guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.quote_guard),L421-428','bridgeIds':['b02','b10'],'label':'Quote/read-policy\x20Guards\x20gating\x20evidence\x20reads\x20under\x20each\x20repository\x20policy'},{'id':'contact.permission','family':'F','source':'Contact','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'contact.move\x20L25-31','bridgeIds':['b09','b11'],'label':'Permission\x20group\x20governing\x20the\x20contact\x20book'},{'id':'contact.im','family':'F','source':'Contact','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'ims','field':'at'},'retention':'membership','evidence':'contact.move\x20L15,L18-29,L85-105\x20(MAX_IM_COUNT=200)','bridgeIds':['b11'],'contract':{'field':'ims','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear','update'],'unfreeze':null,'moveAnchor':'contact.move\x20im_add_imp\x20/\x20im_remove_imp\x20(roster\x20membership;\x20status/description\x20updatable)'},'label':'IM\x20member\x20entities\x20of\x20the\x20contact\x20book\x20(<=200;\x20membership\x20roster\x20carrying\x20status\x20and\x20join\x20time)'},{'id':'permission.admin','family':'F','source':'Permission','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'admin'},'retention':'complete','evidence':'permission.move\x20L34-42\x20(admin\x20vector)','bridgeIds':['b09'],'label':'Admin\x20EOAs\x20who\x20can\x20mutate\x20the\x20permission\x20group\x27s\x20roles\x20(below\x20the\x20owner)'},{'id':'permission.owner','family':'F','source':'Permission','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'owner'},'retention':'complete','evidence':'permission.move\x20L34-42,L537-543','bridgeIds':['b09'],'contract':{'field':'owner','frozenWhen':null,'forbiddenActions':['add','remove','clear'],'allowedActions':['update'],'unfreeze':null,'moveAnchor':'permission.move\x20transfer\x20(assert_owner;\x20ownership\x20role\x20moves\x20with\x20it)'},'label':'Ultimate\x20owner\x20EOA\x20of\x20the\x20permission\x20group\x20(control-chain\x20root;\x20can\x20transfer\x20the\x20group)'},{'id':'permission.um','family':'F','source':'Permission','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'permission.move\x20L41,L562-571','bridgeIds':['b11'],'label':'Permission\x20group\x27s\x20membership\x20book\x20(who\x20receives\x20the\x20group\x27s\x20messages\x20and\x20notifications)'},{'id':'guard.relies','family':'F','source':'Guard','target':'Guard','cardinality':'N','read':{'kind':'fields','path':'relies'},'retention':'complete','evidence':'guard.move\x20L85-95\x20(≤4,\x20one\x20level)','bridgeIds':['b10'],'maxHops':0x1,'label':'Sub-Guards\x20the\x20Guard\x20relies\x20on\x20(<=4,\x20one\x20level;\x20relied\x20guards\x27\x20own\x20relies\x20are\x20not\x20consulted)'},{'id':'passport.signer','family':'F','source':'Passport','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'passport.move\x20L41-49,L94-98','bridgeIds':['b12'],'label':'Identity\x20that\x20verified\x20this\x20passport\x20(credential\x20consumed\x20per\x20transaction)'},{'id':'passport.guard','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guard','field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-47','bridgeIds':['b10','b12'],'label':'Verification\x20tickets\x20the\x20passport\x20carries\x20(each\x20proving\x20a\x20Guard\x20passed)'},{'id':'passport.ticket_relies','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['guard','relies'],'field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-38,L114-151','bridgeIds':['b10','b12'],'label':'Sub-Guards\x20a\x20verification\x20ticket\x20actually\x20evaluated\x20(ticket-level\x20dependency\x20fanout)'},{'id':'passport.impack','family':'F','source':'Passport','target':ANY,'cardinality':'N','read':{'kind':'fields','path':'impack'},'retention':'complete','evidence':'passport.move\x20L29,L46,L227-242','bridgeIds':['b12'],'label':'Business\x20objects\x20packed\x20into\x20the\x20passport\x20verification\x20context'},{'id':'proof.signer','family':'F','source':'Proof','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'Party\x20who\x20signed\x20the\x20WTS\x20evidence\x20(accountability\x20for\x20the\x20claim)'},{'id':'proof.about','family':'F','source':'Proof','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'about'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'Object\x20the\x20evidence\x20attests\x20to\x20(the\x20subject\x20of\x20the\x20WTS\x20claim)'},{'id':'treasury.permission','family':'F','source':'Treasury','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'treasury.move\x20L73-83','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20move\x20treasury\x20funds'},{'id':'treasury.um','family':'F','source':'Treasury','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'treasury.move\x20L82,L86-95,L504-510','bridgeIds':['b11'],'label':'Treasury\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20operate\x20treasury\x20flows\x20under\x20member\x20roles'},{'id':'treasury.deposit_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_deposit_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L61-65,L78,L138-194','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20release\x20external\x20deposits\x20into\x20the\x20treasury\x20(carries\x20identifier/store_from_id\x20slots)'},{'id':'treasury.withdraw_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_withdraw_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L67-71,L79,L197-250','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20pay\x20external\x20withdrawals\x20out\x20of\x20the\x20treasury\x20(pays\x20the\x20tx\x20sender\x20only;\x20carries\x20identifier/store_from_id\x20slots)'},{'id':'payment.signer','family':'F','source':'Payment','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'payment.move\x20L93-101,L111','bridgeIds':['b08'],'contract':{'field':'signer','frozenWhen':'after\x20create','forbiddenActions':['set','update','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'payment.move\x20new\x20(signer\x20=\x20tx_context::sender\x20at\x20creation)'},'label':'EOA\x20that\x20submitted\x20the\x20payment\x20(payer\x20of\x20record)'}],R_EDGES=[{'id':'eoa.permission','family':'R','source':EOA,'target':'Permission','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityPermission']},'retention':'membership','evidence':'entity_permission.move\x20L32\x20(bits\x201/2/4)','bridgeIds':['b09'],'label':'Permission\x20groups\x20the\x20account\x20currently\x20belongs\x20to\x20(membership;\x20disappears\x20on\x20removal)'},{'id':'eoa.order','family':'R','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityOrder']},'retention':'bounded_window','evidence':'entity_order.move\x20L31\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20account\x20joined\x20as\x20buyer/agent\x20(buyer\x20view,\x20FIFO\x205200)'},{'id':'eoa.contact','family':'R','source':EOA,'target':'Contact','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityContact']},'retention':'membership','evidence':'entity_contact.move\x20L24','bridgeIds':['b11'],'label':'Contact\x20books\x20the\x20account\x20currently\x20joined'},{'id':'permission.core_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerCore']},'retention':'bounded_exact','evidence':'object_linker.move\x20L37,L88\x20(≤5200\x20aborts)','bridgeIds':['b09'],'label':'Business\x20objects\x20this\x20permission\x20group\x20governs\x20(Service/Demand/Machine/...;\x20exact\x20registry,\x20no\x20eviction)'},{'id':'permission.tx_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx']},'retention':'bounded_window','evidence':'object_linker.move\x20L43\x20(FIFO\x205200\x20operational)','bridgeIds':['b09'],'label':'Objects\x20this\x20permission\x20group\x20has\x20acted\x20on\x20at\x20runtime\x20(FIFO\x205200;\x20oldest\x20evicted)'},{'id':'service.order','family':'R','source':'Service','target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx'],'filterType':'Order'},'retention':'bounded_window','evidence':'object_linker.move\x20L43,L136-140\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20shop\x20currently\x20retains\x20in\x20its\x20window\x20(FIFO\x205200,\x20oldest\x20evicted;\x20complete\x20history\x20via\x20the\x20event\x20channel)'},{'id':'target.vote','family':'S','source':ANY,'target':EOA,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['registrar']},'retention':'bounded_window','evidence':'registrar.move\x20L154-171\x20(ring\x205200,\x20bits\x200x02/0x04/0x08)','label':'Reputation\x20votes\x20the\x20address\x20has\x20received\x20(like/dislike/favor;\x20ring\x205200,\x20oldest\x20evicted)'},{'id':'entity.profile','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L146-152,L176-179,L236-242,L503-560\x20(AddressInfo\x20current\x20row;\x20description/records\x20mutable\x20by\x20the\x20entity)','label':'Self-published\x20entity\x20profile:\x20description,\x20registration\x20time\x20and\x20typed\x20records\x20(self-edge\x20carrying\x20row\x20attributes)'},{'id':'entity.referrer','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L149,L236-242\x20(AddressInfo.referrer\x20Option<address>;\x20invitation\x20chain)','label':'Account\x20that\x20referred\x20this\x20entity\x20onto\x20the\x20platform\x20(invitation\x20upline)'},{'id':'entity.resource','family':'S','source':EOA,'target':'Resource','cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L150,L236-241,L265-319\x20(AddressInfo.resource\x20Option<address>;\x20transferable/destroyable)','label':'On-chain\x20Resource\x20identity\x20object\x20held\x20by\x20this\x20entity\x20(transferable,\x20may\x20be\x20destroyed)'}],TABLE_EDGES=[{'id':'permission.entity','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'PermissionPerm'},'retention':'membership','evidence':'permission.move\x20L34-42\x20(entity\x20may\x20be\x20EOA\x20or\x20Guard\x20address)','bridgeIds':['b04','b09'],'label':'Entity-table\x20members\x20of\x20the\x20permission\x20group\x20(EOA\x20or\x20Guard,\x20carrying\x20perm\x20index\x20bits)'},{'id':'demand.presenter','family':'R','source':'Demand','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L74\x20(presenters\x20table)','bridgeIds':['b03'],'label':'Suppliers\x20that\x20presented\x20to\x20the\x20demand,\x20with\x20acceptance_score'},{'id':'demand.presenter_service','family':'R','source':'Demand','target':'Service','cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L79-118\x20(ServiceInfo.service\x20Option)','bridgeIds':['b03'],'label':'Services\x20proposed\x20by\x20presenters\x20on\x20the\x20demand\x20(same-row\x20co-edge\x20of\x20demand.presenter;\x20absent\x20for\x20bare\x20presents)'},{'id':'machine.node','family':'W','source':'Machine','target':'MachineNode','cardinality':'N','read':{'kind':'table','rowType':'MachineNode'},'retention':'complete','evidence':'machine.move\x20L299-308\x20(immutable\x20after\x20publish)','bridgeIds':['b04'],'contract':{'field':'nodes','frozenWhen':'after\x20publish','forbiddenActions':['add','remove','update'],'allowedActions':[],'unfreeze':null,'moveAnchor':'machine.move\x20node_add_imp\x20/\x20node_remove_imp\x20/\x20node_rename_imp\x20(assert_not_published)'},'label':'The\x20workflow\x27s\x20step\x20table\x20(full\x20node\x20graph;\x20frozen\x20at\x20publish)'},{'id':'treasury.record','family':'M','source':'Treasury','target':'Payment','cardinality':'N','read':{'kind':'table','rowType':'TreasuryRecord'},'retention':'complete','evidence':'treasury.move\x20L39-46,L77\x20(history:\x20ParentTable<address,Record>,\x20key\x20=\x20Payment;\x20append-only)','bridgeIds':['b08'],'label':'Ledger\x20entries\x20tying\x20each\x20withdrawal/deposit/receive\x20Payment\x20to\x20its\x20op\x20code,\x20signer,\x20external\x20guard\x20and\x20amount'},{'id':'reward.claim','family':'M','source':'Reward','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'RewardClaimRecord'},'retention':'complete','evidence':'reward.move\x20L117-138,L180-193\x20(record:\x20ParentTable<address,RecipientRecord>;\x20key\x20=\x20claimant)','bridgeIds':['b07'],'label':'Claimants\x20against\x20the\x20reward\x20pool,\x20with\x20lifetime\x20total\x20and\x20per-guard\x20claim\x20legs'},{'id':'repository.data_about','family':'F','source':'Repository','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'RepositoryData'},'retention':'membership','evidence':'repository.move\x20L455-465,L161-173\x20(data:\x20ParentTable<DataKey{id,key},\x20vector<u8>>)','bridgeIds':['b02'],'label':'Business\x20objects\x20the\x20stored\x20evidence\x20rows\x20are\x20about\x20(DataKey.id,\x20carrying\x20the\x20row\x20key\x20name)'}],W_EDGES=[{'id':'wf.transition','family':'W','source':'MachineNode','target':'MachineNode','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L101\x20NodePair,L269','bridgeIds':['b04'],'label':'Directed\x20hand-off\x20from\x20workflow\x20step\x20to\x20step\x20(carries\x20the\x20advance\x20threshold)'},{'id':'wf.forward_guard','family':'W','source':'MachineNode','target':'Guard','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L63\x20Forward','bridgeIds':['b04','b05','b10','b12'],'label':'Guards\x20evaluated\x20after\x20a\x20step\x20advances\x20(where\x20supply-chain\x20payouts\x20and\x20downstream\x20allocations\x20trigger)'}],M_EDGES=[{'id':'payment.recipient','family':'M','source':'Payment','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'record','field':'recipient'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(Revenue≤200)','bridgeIds':['b05','b08'],'label':'Payment\x20allocation\x20recipients\x20(with\x20amounts,\x20leg\x20by\x20leg)'},{'id':'payment.from_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'from_object'},'retention':'complete','evidence':'payment.move\x20L149-161\x20(framework-only)','bridgeIds':['b05','b08'],'label':'Funding\x20source\x20pool\x20(Treasury/Allocation/Service;\x20framework-settable\x20only)'},{'id':'payment.for_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'info.for_object'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(info\x20routing\x20hint)','bridgeIds':['b05','b08'],'label':'Business\x20routing\x20object\x20(user-settable)'},{'id':'payment.for_guard','family':'M','source':'Payment','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'info.for_guard'},'retention':'complete','evidence':'payment.move\x20L93-101','bridgeIds':['b05'],'label':'Guard\x20the\x20payment\x20was\x20routed\x20under\x20(user-settable\x20routing\x20context)'},{'id':'allocation.for_object','family':'M','source':'Allocation','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_object'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Business\x20object\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20for'},{'id':'allocation.for_guard','family':'M','source':'Allocation','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_guard'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Gate\x20context\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20under'}],EVENT_EDGES=[{'id':'service.order_history','family':'E','source':'Service','target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchField':'service','targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20(NewOrderEvent:\x20object/service/progress/discount/allocation/amount)','label':'Every\x20order\x20ever\x20created\x20in\x20the\x20shop\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20shop-order\x20window'},{'id':'eoa.order_history','family':'E','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchSender':!![],'targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20+\x20indexer\x20tx\x20sender\x20(the\x20transacting\x20buyer)','label':'Orders\x20the\x20account\x20created\x20as\x20the\x20transacting\x20buyer\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20buyer\x20window'},{'id':'arb.history','family':'E','source':'Arbitration','target':'Arb','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::arb::ArbEvent','matchField':'arbitration','targetField':'object'},'retention':'event_full','evidence':'arb.move\x20L33-43,L122,L227\x20(ArbEvent:\x20case/arbitration/order/status/indemnity)','label':'Every\x20dispute\x20case\x20the\x20arbitration\x20service\x20ever\x20handled\x20—\x20complete\x20event\x20stream;\x20latest\x20status\x20transition\x20wins\x20per\x20case'}];export const EDGE_SCHEMAS=[...F_EDGES,...R_EDGES,...TABLE_EDGES,...W_EDGES,...M_EDGES,...EVENT_EDGES];export const EDGE_SCHEMA_BY_ID=new Map(EDGE_SCHEMAS['map'](a=>[a['id'],a]));export function outgoingSchemaIds(a){return EDGE_SCHEMAS['filter'](b=>b['source']===a||b['source']===ANY)['map'](b=>b['id']);}export const COVERED_OBJECT_TYPES=[...new Set(EDGE_SCHEMAS['flatMap'](a=>[a['source'],a['target']])['filter'](a=>a!==EOA&&a!==ANY&&a!=='MachineNode'))];
1
+ import{PackageAddress,WOW_SINGLETON_IDS}from'@wowok/wowok';const EOA='EOA',ANY='ANY';export const EDGE_ID_REPOSITORY_POLICY_GUARD='repository.policy_guard';const F_EDGES=[{'id':'service.permission','family':'F','source':'Service','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b06','b09'],'label':'Permission\x20group\x20governing\x20who\x20may\x20operate\x20the\x20service\x20(must\x20differ\x20from\x20the\x20arbitration\x20permission,\x20E33\x20recusal\x20rule)'},{'id':'service.machine','family':'F','source':'Service','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'after\x20publish','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'service.move\x20machine_set_imp\x20/\x20machine_none_imp\x20(assert!(!bPublished))'},'label':'Workflow\x20template\x20the\x20shop\x20fulfills\x20orders\x20through\x20(chosen\x20at\x20publish,\x20permanently\x20frozen)'},{'id':'service.buy_guard','family':'F','source':'Service','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'buy_guard'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b01','b10'],'contract':{'field':'buy_guard','frozenWhen':null,'forbiddenActions':[],'allowedActions':['set','remove'],'unfreeze':null,'moveAnchor':'service.move\x20buy_guard_set_imp\x20/\x20buy_guard_none_imp\x20(no\x20assert!(!bPublished))'},'label':'Gate\x20every\x20buyer\x20must\x20pass\x20before\x20an\x20order\x20can\x20be\x20created'},{'id':'service.arbitration','family':'F','source':'Service','target':'Arbitration','cardinality':'N','read':{'kind':'fields','path':'arbitrations'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b06'],'contract':{'field':'arbitrations','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20arbitration_remove_imp\x20/\x20arbitration_clear_imp\x20(assert_not_published)'},'label':'Dispute\x20venues\x20the\x20shop\x20designates\x20for\x20order\x20arbitration\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.reward','family':'F','source':'Service','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤20)','bridgeIds':['b07'],'contract':{'field':'rewards','frozenWhen':'after\x20publish','forbiddenActions':['remove','clear'],'allowedActions':['add'],'unfreeze':'pause\x20+\x20setting_lock_duration\x20elapsed','moveAnchor':'service.move\x20reward_remove_imp\x20/\x20reward_clear_imp\x20(assert_not_published)'},'label':'Reward\x20pools\x20funding\x20the\x20shop\x27s\x20promotions\x20and\x20rebates\x20(up\x20to\x2020;\x20removal\x20locked\x20after\x20publish)'},{'id':'service.repository','family':'F','source':'Service','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'repositories'},'retention':'complete','evidence':'service.move\x20L175-194\x20(≤100)','bridgeIds':['b02'],'contract':{'field':'repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'service.move\x20repository_remove_imp\x20/\x20repository_clear_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20the\x20shop\x20stores\x20fulfillment\x20proofs\x20in\x20(up\x20to\x20100;\x20freely\x20editable\x20after\x20publish)'},{'id':'service.um','family':'F','source':'Service','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'service.move\x20L175-194','bridgeIds':['b11'],'label':'Shop\x20membership\x20book\x20—\x20the\x20roster\x20deciding\x20who\x20counts\x20as\x20a\x20shop\x20member\x20(messaging\x20and\x20member-gate\x20flows)'},{'id':'service.order_allocator_guard','family':'F','source':'Service','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['order_allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'service.move\x20L175-194;\x20allocation.move\x20L194-200','bridgeIds':['b05'],'label':'Guards\x20gating\x20how\x20incoming\x20orders\x20split\x20across\x20allocation\x20pools\x20(order-allocator\x20triggers)'},{'id':'order.builder','family':'F','source':'Order','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'builder'},'retention':'complete','evidence':'order.move\x20L60-75\x20(owner;\x20SDK\x20builder)','bridgeIds':['b01'],'label':'Buyer\x20who\x20owns\x20the\x20order\x20(payer-side\x20principal;\x20SDK\x20names\x20the\x20field\x20builder)'},{'id':'order.agent','family':'F','source':'Order','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'agent'},'retention':'complete','evidence':'order.move\x20L60-75,L179\x20(≤10)','label':'Merchant\x20agents\x20authorized\x20by\x20the\x20buyer\x20(<=10,\x20buyer\x20calls\x20agent_set)'},{'id':'order.service','family':'F','source':'Order','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Shop\x20fulfilling\x20this\x20order\x20(frozen\x20purchase\x20snapshot\x20of\x20what\x20was\x20bought\x20and\x20from\x20whom)'},{'id':'order.machine','family':'F','source':'Order','target':'Machine','cardinality':'0..1','read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'order.move\x20L130\x20(machine⇒progress)','bridgeIds':['b01','b04'],'label':'Workflow\x20the\x20order\x20advances\x20through\x20(snapshot\x20of\x20the\x20shop\x27s\x20template\x20at\x20purchase\x20time)'},{'id':'order.progress','family':'F','source':'Order','target':'Progress','cardinality':'0..1','read':{'kind':'field','path':'progress'},'retention':'complete','evidence':'order.move\x20L130','bridgeIds':['b04'],'label':'Live\x20fulfillment\x20state\x20of\x20the\x20order\x20(which\x20workflow\x20node\x20it\x20currently\x20sits\x20at)'},{'id':'order.allocation','family':'F','source':'Order','target':'Allocation','cardinality':'0..1','read':{'kind':'field','path':'allocation'},'retention':'complete','evidence':'order.move\x20L130\x20(amount>0⇒allocation)','bridgeIds':['b05'],'label':'Allocation\x20pool\x20routing\x20this\x20order\x27s\x20payouts\x20(present\x20when\x20the\x20order\x20amount\x20>\x200)'},{'id':'order.discount','family':'F','source':'Order','target':'Discount','cardinality':'0..1','read':{'kind':'field','path':'discount'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b01'],'label':'Discount\x20the\x20shop\x20granted\x20on\x20this\x20order\x20(price\x20concession\x20of\x20record)'},{'id':'order.dispute','family':'F','source':'Order','target':'Arb','cardinality':'N','read':{'kind':'fields','path':'dispute'},'retention':'complete','evidence':'order.move\x20L60-75','bridgeIds':['b06'],'label':'Dispute\x20cases\x20raised\x20over\x20this\x20order\x20(each\x20case\x20may\x20claw\x20back\x20compensation)'},{'id':'order.claimed_by','family':'F','source':'Order','target':EOA,'cardinality':'0..1','read':{'kind':'field','path':'claimed_by'},'retention':'complete','evidence':'order.move\x20L86-96\x20(single-use)','bridgeIds':['b06'],'label':'Compensation\x20claimant\x20on\x20this\x20order\x20(single-use\x20slot;\x20marks\x20the\x20payout\x20as\x20consumed)'},{'id':'order.required_info','family':'F','source':'Order','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'required_info'},'retention':'complete','evidence':'order.move\x20L73,L77-80\x20(Option<address>\x20im_or_proof:\x20the\x20merchant\x27s\x20IM\x20user\x20address\x20from\x20the\x20Service\x27s\x20Contact,\x20or\x20an\x20on-chain\x20WTS\x20Proof\x20object\x20address)','bridgeIds':['b11','b12'],'label':'Information\x20credential\x20the\x20shop\x20requires\x20after\x20the\x20order\x20(merchant\x20IM\x20address\x20or\x20WTS\x20proof)'},{'id':'discount.service','family':'F','source':'Discount','target':'Service','cardinality':0x1,'read':{'kind':'field','path':'service'},'retention':'complete','evidence':'service.move\x20L109-119\x20(service\x20L117)','bridgeIds':['b01'],'label':'Shop\x20that\x20issued\x20the\x20discount\x20(the\x20party\x20honoring\x20the\x20concession)'},{'id':'progress.machine','family':'F','source':'Progress','target':'Machine','cardinality':0x1,'read':{'kind':'field','path':'machine'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'machine','frozenWhen':'bound\x20at\x20creation','forbiddenActions':['set','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20new_imp\x20(machine\x20bound\x20at\x20creation;\x20no\x20mutation\x20entry)'},'label':'Workflow\x20the\x20progress\x20executes\x20(fixed\x20at\x20creation;\x20determines\x20the\x20node\x20graph)'},{'id':'progress.task','family':'F','source':'Progress','target':'Order','cardinality':'0..1','read':{'kind':'field','path':'task'},'retention':'complete','evidence':'progress.move\x20L76-86','bridgeIds':['b04'],'contract':{'field':'task','frozenWhen':'after\x20task_set','forbiddenActions':['set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'progress.move\x20task_set_imp\x20(assert!\x20option::is_none\x20→\x20E_TASK_ALREADY_SET)'},'label':'Order\x20this\x20progress\x20fulfills\x20(set\x20once;\x20a\x20progress\x20serves\x20at\x20most\x20one\x20order)'},{'id':'progress.named_operator','family':'F','source':'Progress','target':EOA,'cardinality':'N','read':{'kind':'deep','segments':['namedOperator','operators'],'field':''},'retention':'complete','evidence':'progress.move\x20L76-86\x20(≤80)','bridgeIds':['b04'],'label':'Named\x20operators\x20allowed\x20to\x20advance\x20this\x20progress\x20(up\x20to\x2080;\x20runtime-delegated)'},{'id':'progress.context_repository','family':'F','source':'Progress','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'context_repositories'},'retention':'complete','evidence':'progress.move\x20L79,L199-208\x20(MAX_CONTEXT_REPOSITORY_COUNT)','bridgeIds':['b02','b04'],'label':'Runtime\x20evidence\x20repositories\x20consulted\x20while\x20fulfilling\x20the\x20order'},{'id':'machine.permission','family':'F','source':'Machine','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20run\x20and\x20advance\x20the\x20workflow'},{'id':'machine.consensus_repository','family':'F','source':'Machine','target':'Repository','cardinality':'N','read':{'kind':'fields','path':'consensus_repositories'},'retention':'complete','evidence':'machine.move\x20L299-308','contract':{'field':'consensus_repositories','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear'],'unfreeze':null,'moveAnchor':'machine.move\x20consensus_repositories_remove_imp\x20(no\x20assert_not_published)'},'label':'Evidence\x20repositories\x20nodes\x20consult\x20to\x20reach\x20execution\x20consensus'},{'id':'machine.um','family':'F','source':'Machine','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'machine.move\x20L299-308','bridgeIds':['b11'],'label':'Workflow\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20participates\x20in\x20running\x20the\x20workflow'},{'id':'allocation.guard','family':'F','source':'Allocation','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['allocators','allocators'],'field':'guard'},'retention':'complete','evidence':'allocation.move\x20L194-200','bridgeIds':['b05'],'contract':{'field':'allocators','frozenWhen':'after\x20create\x20(share)','forbiddenActions':['add','remove','clear','set'],'allowedActions':[],'unfreeze':null,'moveAnchor':'allocation.move\x20create\x20(bound\x20via\x20new_with_balance;\x20no\x20mutation\x20entry)'},'label':'Guards\x20gating\x20each\x20payout\x20segment\x20of\x20the\x20pool\x20(release\x20conditions\x20per\x20allocator)'},{'id':'allocation.payment','family':'F','source':'Allocation','target':'Payment','cardinality':'N','read':{'kind':'fields','path':'payment'},'retention':'complete','evidence':'allocation.move\x20L196-202,L307-316','bridgeIds':['b05','b08'],'label':'Payment\x20receipts\x20emitted\x20by\x20this\x20allocation\x20pool'},{'id':'arbitration.permission','family':'F','source':'Arbitration','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b09'],'label':'Arbitration\x20service\x20permission\x20group\x20(must\x20differ\x20from\x20the\x20shop\x20permission,\x20E33)'},{'id':'arbitration.voting_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'voting_guard','field':'guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Arbitration\x20voting\x20Guards\x20(empty\x20=\x20open\x20to\x20all\x20members)'},{'id':'arbitration.usage_guard','family':'F','source':'Arbitration','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'usage_guard'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b06','b10'],'label':'Gate\x20a\x20party\x20must\x20pass\x20before\x20opening\x20a\x20case\x20at\x20this\x20arbitration\x20service'},{'id':'arbitration.um','family':'F','source':'Arbitration','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'arbitration.move\x20L48-59','bridgeIds':['b11'],'label':'Arbitration\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20vote\x20on\x20dispute\x20cases\x20(open\x20voting)'},{'id':'arb.order','family':'F','source':'Arb','target':'Order','cardinality':0x1,'read':{'kind':'field','path':'order'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Order\x20the\x20arbitration\x20case\x20is\x20about'},{'id':'arb.arbitration_service','family':'F','source':'Arb','target':'Arbitration','cardinality':'0..1','read':{'kind':'field','path':'arbitration'},'retention':'complete','evidence':'arb.move\x20L96-111','bridgeIds':['b06'],'label':'Arbitration\x20service\x20applied\x20to\x20the\x20case'},{'id':'arb.voter','family':'S','source':'Arb','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'voted','field':'voter'},'retention':'complete','evidence':'arb.move\x20L96-111\x20(voted≤520)','bridgeIds':['b06'],'label':'Actual\x20case\x20voters\x20and\x20weights\x20(<=520)'},{'id':'demand.permission','family':'F','source':'Demand','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b09'],'label':'Demand\x20permission\x20group\x20(the\x20demanding\x20side)'},{'id':'demand.guard','family':'F','source':'Demand','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b03','b10'],'label':'Demand\x20acceptance\x20Guards\x20(must\x20be\x20empty\x20for\x20a\x20bare\x20present)'},{'id':'demand.reward','family':'F','source':'Demand','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b07'],'label':'Escrowed\x20reward\x20pools\x20of\x20the\x20demand'},{'id':'demand.um','family':'F','source':'Demand','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'demand.move\x20L68-77','bridgeIds':['b11'],'label':'Demand\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20act\x20on\x20the\x20demanding\x20side'},{'id':'reward.permission','family':'F','source':'Reward','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20configure\x20the\x20reward\x20pool'},{'id':'reward.guard','family':'F','source':'Reward','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guards','field':'guard'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b07'],'label':'Guards\x20a\x20claimant\x20must\x20pass\x20before\x20drawing\x20from\x20the\x20pool'},{'id':'reward.um','family':'F','source':'Reward','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'reward.move\x20L129','bridgeIds':['b11'],'label':'Reward\x20membership\x20book\x20—\x20roster\x20of\x20members\x20eligible\x20under\x20member-gated\x20claim\x20rules'},{'id':'repository.permission','family':'F','source':'Repository','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b02','b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20manage\x20the\x20repository'},{'id':'repository.reward','family':'F','source':'Repository','target':'Reward','cardinality':'N','read':{'kind':'fields','path':'rewards'},'retention':'complete','evidence':'repository.move\x20(struct)','bridgeIds':['b07'],'label':'Reward\x20pools\x20held\x20by\x20the\x20repository'},{'id':'repository.um','family':'F','source':'Repository','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'repository.move\x20L461-468,L471-480','bridgeIds':['b11'],'label':'Repository\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20read\x20or\x20write\x20under\x20member\x20policies'},{'id':EDGE_ID_REPOSITORY_POLICY_GUARD,'family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies','write_guard'],'field':'guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.write_guard),L516-570','bridgeIds':['b02','b10'],'label':'Write-policy\x20Guards\x20gating\x20evidence\x20writes\x20under\x20each\x20repository\x20policy'},{'id':'repository.quote_guard','family':'F','source':'Repository','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['policies'],'field':'quote_guard'},'retention':'complete','evidence':'repository.move\x20L106-113\x20(PolicyRule.quote_guard),L421-428','bridgeIds':['b02','b10'],'label':'Quote/read-policy\x20Guards\x20gating\x20evidence\x20reads\x20under\x20each\x20repository\x20policy'},{'id':'contact.permission','family':'F','source':'Contact','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'contact.move\x20L25-31','bridgeIds':['b09','b11'],'label':'Permission\x20group\x20governing\x20the\x20contact\x20book'},{'id':'contact.im','family':'F','source':'Contact','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'ims','field':'at'},'retention':'membership','evidence':'contact.move\x20L15,L18-29,L85-105\x20(MAX_IM_COUNT=200)','bridgeIds':['b11'],'contract':{'field':'ims','frozenWhen':null,'forbiddenActions':[],'allowedActions':['add','remove','clear','update'],'unfreeze':null,'moveAnchor':'contact.move\x20im_add_imp\x20/\x20im_remove_imp\x20(roster\x20membership;\x20status/description\x20updatable)'},'label':'IM\x20member\x20entities\x20of\x20the\x20contact\x20book\x20(<=200;\x20membership\x20roster\x20carrying\x20status\x20and\x20join\x20time)'},{'id':'permission.admin','family':'F','source':'Permission','target':EOA,'cardinality':'N','read':{'kind':'fields','path':'admin'},'retention':'complete','evidence':'permission.move\x20L34-42\x20(admin\x20vector)','bridgeIds':['b09'],'label':'Admin\x20EOAs\x20who\x20can\x20mutate\x20the\x20permission\x20group\x27s\x20roles\x20(below\x20the\x20owner)'},{'id':'permission.owner','family':'F','source':'Permission','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'owner'},'retention':'complete','evidence':'permission.move\x20L34-42,L537-543','bridgeIds':['b09'],'contract':{'field':'owner','frozenWhen':null,'forbiddenActions':['add','remove','clear'],'allowedActions':['update'],'unfreeze':null,'moveAnchor':'permission.move\x20transfer\x20(assert_owner;\x20ownership\x20role\x20moves\x20with\x20it)'},'label':'Ultimate\x20owner\x20EOA\x20of\x20the\x20permission\x20group\x20(control-chain\x20root;\x20can\x20transfer\x20the\x20group)'},{'id':'permission.um','family':'F','source':'Permission','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'permission.move\x20L41,L562-571','bridgeIds':['b11'],'label':'Permission\x20group\x27s\x20membership\x20book\x20(who\x20receives\x20the\x20group\x27s\x20messages\x20and\x20notifications)'},{'id':'guard.relies','family':'F','source':'Guard','target':'Guard','cardinality':'N','read':{'kind':'fields','path':'relies'},'retention':'complete','evidence':'guard.move\x20L85-95\x20(≤4,\x20one\x20level)','bridgeIds':['b10'],'maxHops':0x1,'label':'Sub-Guards\x20the\x20Guard\x20relies\x20on\x20(<=4,\x20one\x20level;\x20relied\x20guards\x27\x20own\x20relies\x20are\x20not\x20consulted)'},{'id':'passport.signer','family':'F','source':'Passport','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'passport.move\x20L41-49,L94-98','bridgeIds':['b12'],'label':'Identity\x20that\x20verified\x20this\x20passport\x20(credential\x20consumed\x20per\x20transaction)'},{'id':'passport.guard','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'guard','field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-47','bridgeIds':['b10','b12'],'label':'Verification\x20tickets\x20the\x20passport\x20carries\x20(each\x20proving\x20a\x20Guard\x20passed)'},{'id':'passport.ticket_relies','family':'F','source':'Passport','target':'Guard','cardinality':'N','read':{'kind':'deep','segments':['guard','relies'],'field':'guard'},'retention':'complete','evidence':'passport.move\x20L32-38,L114-151','bridgeIds':['b10','b12'],'label':'Sub-Guards\x20a\x20verification\x20ticket\x20actually\x20evaluated\x20(ticket-level\x20dependency\x20fanout)'},{'id':'passport.impack','family':'F','source':'Passport','target':ANY,'cardinality':'N','read':{'kind':'fields','path':'impack'},'retention':'complete','evidence':'passport.move\x20L29,L46,L227-242','bridgeIds':['b12'],'label':'Business\x20objects\x20packed\x20into\x20the\x20passport\x20verification\x20context'},{'id':'proof.signer','family':'F','source':'Proof','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'Party\x20who\x20signed\x20the\x20WTS\x20evidence\x20(accountability\x20for\x20the\x20claim)'},{'id':'proof.about','family':'F','source':'Proof','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'about'},'retention':'complete','evidence':'proof.move\x20L14-25','bridgeIds':['b12'],'label':'About\x20binding\x20—\x20counterparty\x20account\x20address\x20(or\x20a\x20Proof\x20object\x20address);\x20messenger\x20contact\x20semantics\x20only,\x20never\x20a\x20business-object\x20reference\x20(K3\x20contract\x202026-10-12)'},{'id':'treasury.permission','family':'F','source':'Treasury','target':'Permission','cardinality':0x1,'read':{'kind':'field','path':'permission'},'retention':'complete','evidence':'treasury.move\x20L73-83','bridgeIds':['b09'],'label':'Permission\x20group\x20deciding\x20who\x20may\x20move\x20treasury\x20funds'},{'id':'treasury.um','family':'F','source':'Treasury','target':'Contact','cardinality':'0..1','read':{'kind':'field','path':'um'},'retention':'complete','evidence':'treasury.move\x20L82,L86-95,L504-510','bridgeIds':['b11'],'label':'Treasury\x20membership\x20book\x20—\x20roster\x20deciding\x20who\x20may\x20operate\x20treasury\x20flows\x20under\x20member\x20roles'},{'id':'treasury.deposit_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_deposit_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L61-65,L78,L138-194','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20release\x20external\x20deposits\x20into\x20the\x20treasury\x20(carries\x20identifier/store_from_id\x20slots)'},{'id':'treasury.withdraw_guard','family':'F','source':'Treasury','target':'Guard','cardinality':'N','read':{'kind':'structFields','path':'external_withdraw_guard','field':'guard'},'retention':'complete','evidence':'treasury.move\x20L67-71,L79,L197-250','bridgeIds':['b10'],'label':'Guards\x20authorized\x20to\x20pay\x20external\x20withdrawals\x20out\x20of\x20the\x20treasury\x20(pays\x20the\x20tx\x20sender\x20only;\x20carries\x20identifier/store_from_id\x20slots)'},{'id':'payment.signer','family':'F','source':'Payment','target':EOA,'cardinality':0x1,'read':{'kind':'field','path':'signer'},'retention':'complete','evidence':'payment.move\x20L93-101,L111','bridgeIds':['b08'],'contract':{'field':'signer','frozenWhen':'after\x20create','forbiddenActions':['set','update','remove'],'allowedActions':[],'unfreeze':null,'moveAnchor':'payment.move\x20new\x20(signer\x20=\x20tx_context::sender\x20at\x20creation)'},'label':'EOA\x20that\x20submitted\x20the\x20payment\x20(payer\x20of\x20record)'}],R_EDGES=[{'id':'eoa.permission','family':'R','source':EOA,'target':'Permission','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityPermission']},'retention':'membership','evidence':'entity_permission.move\x20L32\x20(bits\x201/2/4)','bridgeIds':['b09'],'label':'Permission\x20groups\x20the\x20account\x20currently\x20belongs\x20to\x20(membership;\x20disappears\x20on\x20removal)'},{'id':'eoa.order','family':'R','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityOrder']},'retention':'bounded_window','evidence':'entity_order.move\x20L31\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20account\x20joined\x20as\x20buyer/agent\x20(buyer\x20view,\x20FIFO\x205200)'},{'id':'eoa.contact','family':'R','source':EOA,'target':'Contact','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entityContact']},'retention':'membership','evidence':'entity_contact.move\x20L24','bridgeIds':['b11'],'label':'Contact\x20books\x20the\x20account\x20currently\x20joined'},{'id':'permission.core_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerCore']},'retention':'bounded_exact','evidence':'object_linker.move\x20L37,L88\x20(≤5200\x20aborts)','bridgeIds':['b09'],'label':'Business\x20objects\x20this\x20permission\x20group\x20governs\x20(Service/Demand/Machine/...;\x20exact\x20registry,\x20no\x20eviction)'},{'id':'permission.tx_binding','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx']},'retention':'bounded_window','evidence':'object_linker.move\x20L43\x20(FIFO\x205200\x20operational)','bridgeIds':['b09'],'label':'Objects\x20this\x20permission\x20group\x20has\x20acted\x20on\x20at\x20runtime\x20(FIFO\x205200;\x20oldest\x20evicted)'},{'id':'service.order','family':'R','source':'Service','target':'Order','cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['objectLinkerTx'],'filterType':'Order'},'retention':'bounded_window','evidence':'object_linker.move\x20L43,L136-140\x20(FIFO\x205200)','bridgeIds':['b01'],'label':'Orders\x20the\x20shop\x20currently\x20retains\x20in\x20its\x20window\x20(FIFO\x205200,\x20oldest\x20evicted;\x20complete\x20history\x20via\x20the\x20event\x20channel)'},{'id':'target.vote','family':'S','source':ANY,'target':EOA,'cardinality':'N','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['registrar']},'retention':'bounded_window','evidence':'registrar.move\x20L154-171\x20(ring\x205200,\x20bits\x200x02/0x04/0x08)','label':'Reputation\x20votes\x20the\x20address\x20has\x20received\x20(like/dislike/favor;\x20ring\x205200,\x20oldest\x20evicted)'},{'id':'entity.profile','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L146-152,L176-179,L236-242,L503-560\x20(AddressInfo\x20current\x20row;\x20description/records\x20mutable\x20by\x20the\x20entity)','label':'Self-published\x20entity\x20profile:\x20description,\x20registration\x20time\x20and\x20typed\x20records\x20(self-edge\x20carrying\x20row\x20attributes)'},{'id':'entity.referrer','family':'S','source':EOA,'target':EOA,'cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L149,L236-242\x20(AddressInfo.referrer\x20Option<address>;\x20invitation\x20chain)','label':'Account\x20that\x20referred\x20this\x20entity\x20onto\x20the\x20platform\x20(invitation\x20upline)'},{'id':'entity.resource','family':'S','source':EOA,'target':'Resource','cardinality':'0..1','read':{'kind':'reverse','parent':WOW_SINGLETON_IDS['entity']},'retention':'membership','evidence':'registrar.move\x20L150,L236-241,L265-319\x20(AddressInfo.resource\x20Option<address>;\x20transferable/destroyable)','label':'On-chain\x20Resource\x20identity\x20object\x20held\x20by\x20this\x20entity\x20(transferable,\x20may\x20be\x20destroyed)'}],TABLE_EDGES=[{'id':'permission.entity','family':'R','source':'Permission','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'PermissionPerm'},'retention':'membership','evidence':'permission.move\x20L34-42\x20(entity\x20may\x20be\x20EOA\x20or\x20Guard\x20address)','bridgeIds':['b04','b09'],'label':'Entity-table\x20members\x20of\x20the\x20permission\x20group\x20(EOA\x20or\x20Guard,\x20carrying\x20perm\x20index\x20bits)'},{'id':'demand.presenter','family':'R','source':'Demand','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L74\x20(presenters\x20table)','bridgeIds':['b03'],'label':'Suppliers\x20that\x20presented\x20to\x20the\x20demand,\x20with\x20acceptance_score'},{'id':'demand.presenter_service','family':'R','source':'Demand','target':'Service','cardinality':'N','read':{'kind':'table','rowType':'DemandPresenter'},'retention':'membership','evidence':'demand.move\x20L46-54,L79-118\x20(ServiceInfo.service\x20Option)','bridgeIds':['b03'],'label':'Services\x20proposed\x20by\x20presenters\x20on\x20the\x20demand\x20(same-row\x20co-edge\x20of\x20demand.presenter;\x20absent\x20for\x20bare\x20presents)'},{'id':'machine.node','family':'W','source':'Machine','target':'MachineNode','cardinality':'N','read':{'kind':'table','rowType':'MachineNode'},'retention':'complete','evidence':'machine.move\x20L299-308\x20(immutable\x20after\x20publish)','bridgeIds':['b04'],'contract':{'field':'nodes','frozenWhen':'after\x20publish','forbiddenActions':['add','remove','update'],'allowedActions':[],'unfreeze':null,'moveAnchor':'machine.move\x20node_add_imp\x20/\x20node_remove_imp\x20/\x20node_rename_imp\x20(assert_not_published)'},'label':'The\x20workflow\x27s\x20step\x20table\x20(full\x20node\x20graph;\x20frozen\x20at\x20publish)'},{'id':'treasury.record','family':'M','source':'Treasury','target':'Payment','cardinality':'N','read':{'kind':'table','rowType':'TreasuryRecord'},'retention':'complete','evidence':'treasury.move\x20L39-46,L77\x20(history:\x20ParentTable<address,Record>,\x20key\x20=\x20Payment;\x20append-only)','bridgeIds':['b08'],'label':'Ledger\x20entries\x20tying\x20each\x20withdrawal/deposit/receive\x20Payment\x20to\x20its\x20op\x20code,\x20signer,\x20external\x20guard\x20and\x20amount'},{'id':'reward.claim','family':'M','source':'Reward','target':EOA,'cardinality':'N','read':{'kind':'table','rowType':'RewardClaimRecord'},'retention':'complete','evidence':'reward.move\x20L117-138,L180-193\x20(record:\x20ParentTable<address,RecipientRecord>;\x20key\x20=\x20claimant)','bridgeIds':['b07'],'label':'Claimants\x20against\x20the\x20reward\x20pool,\x20with\x20lifetime\x20total\x20and\x20per-guard\x20claim\x20legs'},{'id':'repository.data_about','family':'F','source':'Repository','target':ANY,'cardinality':'N','read':{'kind':'table','rowType':'RepositoryData'},'retention':'membership','evidence':'repository.move\x20L455-465,L161-173\x20(data:\x20ParentTable<DataKey{id,key},\x20vector<u8>>)','bridgeIds':['b02'],'label':'Business\x20objects\x20the\x20stored\x20evidence\x20rows\x20are\x20about\x20(DataKey.id,\x20carrying\x20the\x20row\x20key\x20name)'}],W_EDGES=[{'id':'wf.transition','family':'W','source':'MachineNode','target':'MachineNode','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L101\x20NodePair,L269','bridgeIds':['b04'],'label':'Directed\x20hand-off\x20from\x20workflow\x20step\x20to\x20step\x20(carries\x20the\x20advance\x20threshold)'},{'id':'wf.forward_guard','family':'W','source':'MachineNode','target':'Guard','cardinality':'N','read':{'kind':'derived','producer':'machineRows'},'retention':'derived','evidence':'machine.move\x20L63\x20Forward','bridgeIds':['b04','b05','b10','b12'],'label':'Guards\x20evaluated\x20after\x20a\x20step\x20advances\x20(where\x20supply-chain\x20payouts\x20and\x20downstream\x20allocations\x20trigger)'}],M_EDGES=[{'id':'payment.recipient','family':'M','source':'Payment','target':EOA,'cardinality':'N','read':{'kind':'structFields','path':'record','field':'recipient'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(Revenue≤200)','bridgeIds':['b05','b08'],'label':'Payment\x20allocation\x20recipients\x20(with\x20amounts,\x20leg\x20by\x20leg)'},{'id':'payment.from_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'from_object'},'retention':'complete','evidence':'payment.move\x20L149-161\x20(framework-only)','bridgeIds':['b05','b08'],'label':'Funding\x20source\x20pool\x20(Treasury/Allocation/Service;\x20framework-settable\x20only)'},{'id':'payment.for_object','family':'M','source':'Payment','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'info.for_object'},'retention':'complete','evidence':'payment.move\x20L93-101\x20(info\x20routing\x20hint)','bridgeIds':['b05','b08'],'label':'Business\x20routing\x20object\x20(user-settable)'},{'id':'payment.for_guard','family':'M','source':'Payment','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'info.for_guard'},'retention':'complete','evidence':'payment.move\x20L93-101','bridgeIds':['b05'],'label':'Guard\x20the\x20payment\x20was\x20routed\x20under\x20(user-settable\x20routing\x20context)'},{'id':'allocation.for_object','family':'M','source':'Allocation','target':ANY,'cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_object'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Business\x20object\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20for'},{'id':'allocation.for_guard','family':'M','source':'Allocation','target':'Guard','cardinality':'0..1','read':{'kind':'field','path':'payment_info.for_guard'},'retention':'complete','evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71','bridgeIds':['b05','b08'],'label':'Gate\x20context\x20the\x20pool\x27s\x20payouts\x20are\x20routed\x20under'}],EVENT_EDGES=[{'id':'service.order_history','family':'E','source':'Service','target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchField':'service','targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20(NewOrderEvent:\x20object/service/progress/discount/allocation/amount)','label':'Every\x20order\x20ever\x20created\x20in\x20the\x20shop\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20shop-order\x20window'},{'id':'eoa.order_history','family':'E','source':EOA,'target':'Order','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::order::NewOrderEvent','matchSender':!![],'targetField':'object'},'retention':'event_full','evidence':'order.move\x20L51-58,L142\x20+\x20indexer\x20tx\x20sender\x20(the\x20transacting\x20buyer)','label':'Orders\x20the\x20account\x20created\x20as\x20the\x20transacting\x20buyer\x20—\x20complete\x20event\x20stream,\x20beyond\x20the\x20FIFO\x205200\x20buyer\x20window'},{'id':'arb.history','family':'E','source':'Arbitration','target':'Arb','cardinality':'N','read':{'kind':'event','eventType':PackageAddress+'::arb::ArbEvent','matchField':'arbitration','targetField':'object'},'retention':'event_full','evidence':'arb.move\x20L33-43,L122,L227\x20(ArbEvent:\x20case/arbitration/order/status/indemnity)','label':'Every\x20dispute\x20case\x20the\x20arbitration\x20service\x20ever\x20handled\x20—\x20complete\x20event\x20stream;\x20latest\x20status\x20transition\x20wins\x20per\x20case'}];export const EDGE_SCHEMAS=[...F_EDGES,...R_EDGES,...TABLE_EDGES,...W_EDGES,...M_EDGES,...EVENT_EDGES];export const EDGE_SCHEMA_BY_ID=new Map(EDGE_SCHEMAS['map'](a=>[a['id'],a]));export function outgoingSchemaIds(a){return EDGE_SCHEMAS['filter'](b=>b['source']===a||b['source']===ANY)['map'](b=>b['id']);}export const COVERED_OBJECT_TYPES=[...new Set(EDGE_SCHEMAS['flatMap'](a=>[a['source'],a['target']])['filter'](a=>a!==EOA&&a!==ANY&&a!=='MachineNode'))];
@@ -1,6 +1,7 @@
1
1
  export * from "./types.js";
2
2
  export * from "./verify.js";
3
3
  export * from "./recover.js";
4
+ export * from "./operation-id.js";
4
5
  import type { VerifyInput } from "./verify.js";
5
6
  import type { VerifyReport, RecoveryAction } from "./types.js";
6
7
  export declare class Harness {
@@ -1 +1 @@
1
- export*from'./types.js';export*from'./verify.js';export*from'./recover.js';import{verify}from'./verify.js';import{recover,resetAttempts,getBackoffDelay,RECOVERY_RULES}from'./recover.js';export class Harness{['verify'](a){return verify(a);}['recover'](a,b,c){return recover(a,b,c);}['resetRecovery'](a){resetAttempts(a);}['getBackoffDelay'](a){return getBackoffDelay(a);}['getRecoveryRules'](){return RECOVERY_RULES;}}let singleton=null;export function getHarness(){return!singleton&&(singleton=new Harness()),singleton;}export function setHarness(a){singleton=a;}
1
+ export*from'./types.js';export*from'./verify.js';export*from'./recover.js';export*from'./operation-id.js';import{verify}from'./verify.js';import{recover,resetAttempts,getBackoffDelay,RECOVERY_RULES}from'./recover.js';export class Harness{['verify'](a){return verify(a);}['recover'](a,b,c){return recover(a,b,c);}['resetRecovery'](a){resetAttempts(a);}['getBackoffDelay'](a){return getBackoffDelay(a);}['getRecoveryRules'](){return RECOVERY_RULES;}}let singleton=null;export function getHarness(){return!singleton&&(singleton=new Harness()),singleton;}export function setHarness(a){singleton=a;}
@@ -0,0 +1 @@
1
+ export declare function stableOperationId(operationType: string, data?: unknown): string;
@@ -0,0 +1 @@
1
+ export function stableOperationId(a,b){return a+':'+fnv1a(canonicalJson(b??null))['toString'](0x10);}function fnv1a(a){let b=0x811c9dc5;for(let c=0x0;c<a['length'];c++){b^=a['charCodeAt'](c),b=Math['imul'](b,0x1000193)>>>0x0;}return b>>>0x0;}function canonicalJson(a){if(a===null||typeof a!=='object')return JSON['stringify'](a)??'null';if(Array['isArray'](a))return'['+a['map'](canonicalJson)['join'](',')+']';const b=Object['keys'](a)['sort']()['map'](c=>JSON['stringify'](c)+':'+canonicalJson(a[c]));return'{'+b['join'](',')+'}';}
@@ -1 +1 @@
1
- export const RECOVERY_RULES={'insufficient_balance':{'error_code':'insufficient_balance','strategy':'claim_faucet','max_attempts':0x3,'automation':'semi','detail':'1.\x20Testnet:\x20claim\x20WOW\x20from\x20the\x20faucet\x202.\x20Mainnet:\x20transfer\x20ETH/USDT/USDC/WBTC\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge\x20(query\x20active\x20EVM\x20account\x20→\x20top\x20up\x20from\x20external\x20wallet\x20→\x20confirm\x20→\x20cross-chain)\x203.\x20Point\x20the\x20user\x20to\x20the\x20live\x20airdrop\x20page\x20(https://wowok.net/airdrop.html)\x20for\x20the\x20current\x20round\x204.\x20Retry\x20original\x20operation','user_prompt':'Insufficient\x20balance\x20for\x20gas\x20or\x20operation.\x20How\x20to\x20obtain\x20WOW\x20tokens:\x20(1)\x20Testnet\x20—\x20claim\x20WOW\x20from\x20the\x20faucet\x20(https://faucet.testnet.wowok.net);\x20all\x20merchant\x20and\x20order\x20testing\x20can\x20use\x20WOW\x20as\x20the\x20payment\x20token.\x20(2)\x20Mainnet\x20—\x20transfer\x20ETH\x20/\x20USDT\x20/\x20USDC\x20/\x20WBTC\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge:\x20first\x20query\x20the\x20active\x20EVM\x20account\x20(bridge_operation\x20query_active_evm_account,\x20auto-generated\x20on\x20first\x20use),\x20then\x20transfer\x20from\x20an\x20external\x20wallet\x20(e.g.\x20MetaMask)\x20to\x20that\x20address,\x20confirm\x20the\x20balance\x20arrived,\x20and\x20cross-chain\x20to\x20WOW\x20mainnet\x20(bridge_operation\x20cross_chain_evm_to_wow).\x20(3)\x20WOW\x20airdrop:\x20current\x20round\x20status,\x20pool\x20and\x20eligibility\x20are\x20published\x20live\x20at\x20https://wowok.net/airdrop.html\x20(referral:\x20https://wowok.net/refer.html)\x20—\x20open\x20that\x20page\x20rather\x20than\x20assuming\x20a\x20round\x20is\x20live\x20or\x20closed.\x20Query\x20wowok_buildin_info\x20with\x20info=\x27funding\x20guidance\x27\x20for\x20the\x20canonical\x20funding\x20guidance.'},'stock_exhausted':{'error_code':'stock_exhausted','strategy':'adjust_params','max_attempts':0x1,'automation':'semi','detail':'Merchant-side\x20inventory\x20shortfall\x20(Move\x20service:16\x20E_STOCK_NOT_ENOUGH)\x20—\x20NOT\x20a\x20buyer\x20balance\x20problem,\x20so\x20a\x20faucet\x20claim\x20will\x20NOT\x20help.\x201.\x20Reduce\x20the\x20purchase\x20quantity\x20to\x20the\x20item\x27s\x20remaining\x20stock\x202.\x20Pick\x20another\x20sale\x20item\x203.\x20Ask\x20the\x20merchant\x20to\x20restock,\x20then\x20retry','user_prompt':'The\x20sale\x20item\x27s\x20stock\x20is\x20exhausted\x20for\x20the\x20requested\x20quantity.\x20Reduce\x20the\x20quantity,\x20choose\x20another\x20item,\x20or\x20ask\x20the\x20merchant\x20to\x20restock.'},'sale_suspended':{'error_code':'sale_suspended','strategy':'adjust_params','max_attempts':0x1,'automation':'semi','detail':'The\x20merchant\x20suspended\x20this\x20sale\x20item\x20(Move\x20service:34\x20E_SALE_SUSPENDED).\x201.\x20Pick\x20another\x20(non-suspended)\x20item\x202.\x20Contact\x20the\x20merchant\x20to\x20resume\x20the\x20sale,\x20then\x20retry','user_prompt':'The\x20sale\x20item\x20is\x20suspended\x20by\x20the\x20merchant.\x20Please\x20choose\x20another\x20item\x20or\x20contact\x20the\x20merchant.'},'discount_invalid':{'error_code':'discount_invalid','strategy':'adjust_params','max_attempts':0x1,'automation':'semi','detail':'The\x20discount\x20is\x20outside\x20its\x20[time_start,\x20time_end]\x20validity\x20window\x20(Move\x20service:35\x20E_DISCOUNT_TIME_INVALID).\x201.\x20Retry\x20without\x20the\x20discount\x202.\x20Ask\x20the\x20merchant\x20for\x20a\x20fresh\x20discount,\x20then\x20retry','user_prompt':'The\x20discount\x20is\x20not\x20valid\x20at\x20the\x20current\x20time\x20(outside\x20its\x20validity\x20window).\x20Buy\x20without\x20the\x20discount\x20or\x20ask\x20the\x20merchant\x20for\x20a\x20new\x20one.'},'rate_limit':{'error_code':'rate_limit','strategy':'retry','max_attempts':0x5,'automation':'full','detail':'Rate\x20limit\x20hit\x20(HTTP\x20429).\x20Exponential\x20backoff\x20retry:\x202s\x20/\x204s\x20/\x208s\x20/\x2016s\x20/\x2032s.\x20Avoid\x20parallel\x20calls\x20while\x20the\x20limit\x20window\x20is\x20active.'},'gas_exceeded':{'error_code':'gas_exceeded','strategy':'adjust_params','max_attempts':0x3,'automation':'semi','detail':'Gas\x20budget\x20exceeded.\x201.\x20Increase\x20the\x20gas_budget\x20parameter\x202.\x20Reduce\x20the\x20operation\x20size\x20(fewer\x20objects\x20per\x20transaction)\x203.\x20Retry\x20the\x20original\x20operation','user_prompt':'Gas\x20budget\x20exceeded.\x20Increase\x20the\x20gas\x20budget\x20or\x20reduce\x20the\x20operation\x20size,\x20then\x20retry.'},'bcs_error':{'error_code':'bcs_error','strategy':'adjust_params','max_attempts':0x2,'automation':'semi','detail':'BCS\x20serialization/deserialization\x20error\x20—\x20a\x20parameter\x20does\x20not\x20match\x20the\x20expected\x20type/structure.\x201.\x20Query\x20the\x20operation\x20schema\x20(schema_query)\x202.\x20Fix\x20the\x20offending\x20parameter\x20type\x20(e.g.\x20BigInt\x20vs\x20number,\x20vector\x20element\x20type)\x203.\x20Retry','user_prompt':'A\x20parameter\x20failed\x20serialization.\x20Check\x20the\x20parameter\x20types\x20against\x20the\x20schema\x20and\x20retry.'},'signature_error':{'error_code':'signature_error','strategy':'switch_account','max_attempts':0x2,'automation':'semi','detail':'Signature\x20verification\x20failed.\x201.\x20Verify\x20the\x20account\x20is\x20not\x20suspended\x202.\x20Check\x20the\x20network\x20matches\x20the\x20account\x27s\x203.\x20Switch\x20to\x20a\x20healthy\x20account\x20and\x20retry','user_prompt':'Signature\x20verification\x20failed.\x20The\x20account\x20may\x20be\x20suspended\x20or\x20misconfigured.\x20Switch\x20accounts\x20or\x20check\x20the\x20configuration\x20and\x20retry.'},'config_error':{'error_code':'config_error','strategy':'escalate_human','max_attempts':0x1,'automation':'manual','detail':'Local\x20configuration\x20error\x20(network\x20not\x20specified,\x20persistent\x20storage\x20not\x20set).\x201.\x20Show\x20the\x20user\x20which\x20configuration\x20is\x20missing\x202.\x20Guide\x20the\x20user\x20through\x20the\x20account_operation/config\x20setup\x203.\x20Retry\x20after\x20the\x20user\x20fixes\x20it','user_prompt':'Local\x20configuration\x20is\x20incomplete.\x20Please\x20finish\x20the\x20account/network\x20setup\x20and\x20retry.'},'wip_verification_failed':{'error_code':'wip_verification_failed','strategy':'adjust_params','max_attempts':0x2,'automation':'semi','detail':'WIP\x20file\x20not\x20publicly\x20reachable\x20/\x20hash\x20mismatch.\x201.\x20Upload\x20via\x20the\x20wip\x20storage\x20service\x20(wip_file\x20type=\x27upload\x27\x20—\x20official\x20free\x20store\x20or\x20storage=\x27custom\x27)\x202.\x20Or\x20deploy\x20to\x20a\x20public\x20URL\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20own\x20site)\x203.\x20Update\x20the\x20sale\x27s\x20wip\x20URL\x204.\x20Re-run\x20the\x20operation','user_prompt':'The\x20WIP\x20file\x20could\x20not\x20be\x20verified\x20from\x20a\x20public\x20URL.\x20Upload\x20it\x20with\x20wip_file\x20type=\x27upload\x27\x20(official\x20free\x20store\x20or\x20your\x20own\x20service)\x20or\x20deploy\x20it\x20(GitHub\x20Pages\x20/\x20IPFS),\x20update\x20the\x20sale\x27s\x20WIP\x20URL,\x20and\x20retry.'},'wip_storage_unavailable':{'error_code':'wip_storage_unavailable','strategy':'retry','max_attempts':0x3,'automation':'full','detail':'Transient\x20wip\x20storage\x20transport\x20failure.\x201.\x20Retry\x20the\x20same\x20request\x20with\x20bounded\x20backoff\x202.\x20Large\x20WIP\x20files\x20are\x20network-sensitive:\x20compress\x20images\x20before\x20generate\x20(each\x20image\x20<=\x202MB,\x20total\x20<=\x2010MB)\x203.\x20Check\x20connectivity\x20to\x20the\x20storage\x20base\x20URL\x20if\x20retries\x20keep\x20failing','user_prompt':'The\x20wip\x20storage\x20request\x20failed\x20due\x20to\x20a\x20network\x20problem.\x20Retry\x20the\x20upload;\x20if\x20it\x20keeps\x20failing,\x20reduce\x20the\x20file\x20size\x20or\x20check\x20connectivity.'},'network_error':{'error_code':'network_error','strategy':'retry','max_attempts':0x5,'automation':'full','detail':'Exponential\x20backoff\x20retry:\x201s\x20/\x202s\x20/\x204s\x20/\x208s\x20/\x2016s.\x20Switch\x20RPC\x20node\x20if\x20available.'},'submission_unknown':{'error_code':'submission_unknown','strategy':'query_and_retry','max_attempts':0x2,'automation':'semi','detail':'Transport-level\x20failure\x20after\x20the\x20request\x20left\x20the\x20client\x20—\x20the\x20submission\x20state\x20is\x20UNKNOWN\x20and\x20the\x20transaction\x20may\x20already\x20be\x20committed.\x20NEVER\x20auto-retry\x20a\x20write\x20here.\x201.\x20Verify\x20commit\x20state\x20on-chain:\x20query_toolkit\x20for\x20the\x20object\x20this\x20call\x20would\x20create/modify\x20(resolve\x20the\x20reference\x20from\x20the\x20call\x27s\x20own\x20arguments),\x20or\x20onchain_events\x20for\x20the\x20sender\x27s\x20recent\x20transactions.\x202.\x20If\x20the\x20expected\x20object\x20EXISTS,\x20adopt\x20it\x20and\x20continue\x20the\x20workflow\x20(the\x20operation\x20succeeded\x20despite\x20the\x20transport\x20error).\x203.\x20If\x20confirmed\x20ABSENT,\x20resubmit\x20the\x20SAME\x20call\x20once.\x204.\x20Reads\x20are\x20idempotent\x20—\x20retry\x20immediately.\x205.\x20M-K2\x20replay\x20discipline:\x20a\x20FAILED\x20receipt\x20is\x20final\x20—\x20its\x20digest\x20is\x20consumed\x20and\x20replaying\x20the\x20same\x20bytes\x20returns\x20the\x20same\x20failure\x20forever;\x20fix\x20the\x20cause\x20(usually\x20funding)\x20and\x20build\x20a\x20FRESH\x20transaction.\x20Live\x20mainnet\x20incident\x20behind\x20this\x20rule:\x20an\x20order_new\x20-32603\x20\x27did\x20not\x20complete\x27\x20had\x20committed;\x20the\x20blind\x20retry\x20created\x20a\x20second\x20order\x20with\x20a\x20second\x20full\x20escrow\x20and\x20a\x20second\x20stock\x20decrement','user_prompt':'The\x20request\x20failed\x20at\x20transport\x20level\x20but\x20may\x20have\x20already\x20been\x20committed\x20on-chain.\x20Verify\x20whether\x20the\x20expected\x20object\x20exists\x20(query\x20it)\x20before\x20any\x20retry\x20—\x20a\x20blind\x20retry\x20can\x20duplicate\x20the\x20operation\x20(double\x20escrow).\x20For\x20read\x20operations,\x20a\x20plain\x20retry\x20is\x20safe.'},'transaction_expired':{'error_code':'transaction_expired','strategy':'retry','max_attempts':0x3,'automation':'full','detail':'The\x20transaction\x20expired\x20before\x20execution\x20(epoch\x20boundary\x20or\x20validator/gateway\x20outage)\x20—\x20it\x20did\x20NOT\x20land\x20and\x20nothing\x20was\x20committed.\x20Bounded\x20backoff\x20retry:\x2010s\x20/\x2030s\x20/\x2060s,\x20resubmit\x20the\x20SAME\x20call\x20unchanged.\x20If\x20a\x20dry_run\x20passes\x20while\x20the\x20real\x20call\x20keeps\x20failing,\x20the\x20fault\x20is\x20chain-side\x20—\x20wait\x20it\x20out.\x20Verify\x20with\x20onchain_events\x20if\x20unsure.'},'guard_rejected':{'error_code':'guard_rejected','strategy':'fill_submission','max_attempts':0x2,'automation':'semi','detail':'1.\x20Parse\x20Guard\x20table\x20structure\x202.\x20If\x20the\x20Guard\x20defines\x20submission\x20items,\x20fill\x20them\x20and\x20resubmit\x20with\x20call_with_submission\x203.\x20If\x20it\x20defines\x20none,\x20the\x20rule\x20evaluated\x20false\x20—\x20typical\x20causes:\x20a\x20TIME\x20WINDOW\x20(Clock\x20deadline/opening\x20comparison\x20—\x20this\x20call\x20may\x20sit\x20outside\x20the\x20window,\x20and\x20a\x20mis-oriented\x20comparison\x20inverts\x20it:\x20everything\x20inside\x20rejected,\x20everything\x20after\x20admitted)\x20or\x20an\x20IDENTITY\x20condition\x20(signer/state\x20checks\x20—\x20the\x20caller\x20may\x20not\x20be\x20the\x20address\x20the\x20rule\x20expects);\x20adjust\x20the\x20call\x27s\x20parameters\x20or\x20change\x20the\x20Guard\x20(docs#40)\x204.\x20When\x20the\x20failure\x20is\x20passport\x20E_VERIFY_FAILED\x20and\x20a\x20submission\x20was\x20supplied,\x20the\x20response\x20appends\x20a\x20\x27Guard\x20diagnosis\x20(dry-run)\x27\x20line\x20naming\x20the\x20first\x20failing\x20impact\x20guard\x20—\x20fix\x20that\x20guard\x20first','user_prompt':'Guard\x20verification\x20rejected.\x20If\x20the\x20Guard\x20defines\x20submission\x20items,\x20fill\x20in\x20the\x20required\x20submission\x20data\x20and\x20resubmit;\x20if\x20it\x20defines\x20none,\x20the\x20Guard\x20rule\x20evaluated\x20false\x20—\x20the\x20usual\x20causes\x20are\x20a\x20time\x20window\x20(this\x20call\x20may\x20be\x20outside\x20the\x20Clock\x20deadline/opening\x20window)\x20or\x20an\x20identity\x20condition\x20(the\x20caller\x20is\x20not\x20the\x20address\x20the\x20rule\x20expects);\x20adjust\x20this\x20call\x27s\x20parameters\x20or\x20change\x20the\x20Guard\x20rule.\x20When\x20the\x20response\x20includes\x20a\x20\x27Guard\x20diagnosis\x20(dry-run)\x27\x20line,\x20it\x20names\x20the\x20first\x20failing\x20impact\x20guard\x20—\x20address\x20that\x20guard\x20first.'},'time_lock_not_elapsed':{'error_code':'time_lock_not_elapsed','strategy':'wait_and_retry','max_attempts':0x1,'automation':'semi','detail':'1.\x20Verify\x20Service\x20is\x20paused\x20(bPaused=true).\x20If\x20not,\x20submit\x20pause=true\x20first.\x202.\x20Wait\x20until\x20paused_time\x20+\x20setting_lock_duration\x20<=\x20current\x20clock.\x203.\x20Retry\x20the\x20original\x20operation.\x20Do\x20NOT\x20recreate\x20the\x20object.','user_prompt':'Service\x20setting_lock_duration\x20has\x20not\x20elapsed\x20since\x20the\x20Service\x20was\x20paused.\x20Please\x20pause\x20the\x20Service\x20if\x20it\x20is\x20not\x20already\x20paused,\x20wait\x20for\x20the\x20lock\x20duration\x20to\x20elapse,\x20then\x20retry.'},'immutable_violation':{'error_code':'immutable_violation','strategy':'recreate','max_attempts':0x1,'automation':'semi','detail':'1.\x20Stop\x20modification\x20attempt\x202.\x20Evaluate\x20creating\x20a\x20new\x20object\x20as\x20replacement\x203.\x20Re-plan\x20affected\x20phases','user_prompt':'Cannot\x20modify\x20an\x20immutable\x20object.\x20A\x20new\x20object\x20must\x20be\x20created\x20as\x20a\x20replacement.\x20Confirm\x20to\x20proceed\x20with\x20recreation.'},'permission_denied':{'error_code':'permission_denied','strategy':'switch_account','max_attempts':0x2,'automation':'semi','detail':'1.\x20Query\x20object\x27s\x20permission_guard\x202.\x20List\x20accounts\x20with\x20permission\x203.\x20Switch\x20account\x20or\x20prompt\x20user\x20to\x20add\x20permission','user_prompt':'Current\x20account\x20lacks\x20permission\x20for\x20this\x20operation.\x20Switch\x20to\x20an\x20authorized\x20account\x20or\x20update\x20the\x20Permission\x20object.'},'object_not_found':{'error_code':'object_not_found','strategy':'query_and_retry','max_attempts':0x3,'automation':'semi','detail':'1.\x20Verify\x20the\x20referenced\x20name/ID\x20spelling\x20(local_mark_list)\x20and\x20that\x20the\x20object\x20exists\x20on\x20the\x20current\x20network\x202.\x20If\x20recently\x20created,\x20re-query\x20the\x20object\x20(may\x20be\x20sync\x20delay)\x203.\x20If\x20truly\x20absent,\x20search\x20for\x20similar\x20objects\x204.\x20Prompt\x20user\x20to\x20reselect','user_prompt':'Referenced\x20object\x20not\x20found.\x20First\x20verify\x20the\x20name/ID\x20spelling\x20and\x20that\x20the\x20object\x20exists\x20on\x20the\x20current\x20network;\x20if\x20it\x20was\x20created\x20recently,\x20this\x20may\x20be\x20a\x20synchronization\x20delay\x20—\x20retry.\x20If\x20the\x20issue\x20persists,\x20please\x20select\x20a\x20valid\x20object.'},'state_conflict':{'error_code':'state_conflict','strategy':'adjust_params','max_attempts':0x2,'automation':'full','detail':'1.\x20Query\x20object\x27s\x20current\x20true\x20state\x202.\x20Update\x20ODG\x20status\x20annotations\x203.\x20Adjust\x20subsequent\x20operations\x20(e.g.,\x20skip\x20completed\x20steps)'},'invalid_parameter':{'error_code':'invalid_parameter','strategy':'adjust_params','max_attempts':0x2,'automation':'semi','detail':'1.\x20Query\x20the\x20relevant\x20schema\x202.\x20Auto-fix\x20obvious\x20errors\x20(e.g.,\x20BigInt\x20vs\x20string)\x203.\x20If\x20unfixable,\x20prompt\x20user','user_prompt':'Parameter\x20validation\x20failed.\x20Please\x20check\x20the\x20parameter\x20types\x20and\x20values\x20against\x20the\x20schema\x20and\x20retry.'},'move_abort_unmapped':{'error_code':'move_abort_unmapped','strategy':'stop','max_attempts':0x1,'automation':'manual','detail':'The\x20chain\x27s\x20business\x20logic\x20aborted\x20and\x20the\x20(module,\x20abort\x20code)\x20pair\x20has\x20no\x20local\x20mapping.\x20Read\x20the\x20module\x20and\x20abort\x20code\x20from\x20move_abort_info\x20/\x20the\x20message\x20(rendered\x20as\x20\x27abort\x20(N)\x27),\x20resolve\x20their\x20meaning\x20from\x20the\x20module\x27s\x20documentation\x20or\x20the\x20wowok-tools\x20Skill,\x20fix\x20the\x20business\x20cause,\x20and\x20issue\x20a\x20NEW\x20call.\x20Do\x20NOT\x20restart\x20the\x20server\x20and\x20do\x20NOT\x20retry\x20the\x20identical\x20call\x20—\x20it\x20aborts\x20deterministically.','user_prompt':'The\x20operation\x20was\x20rejected\x20by\x20the\x20chain\x27s\x20business\x20logic\x20and\x20its\x20abort\x20code\x20is\x20not\x20mapped\x20locally.\x20The\x20module\x20name\x20and\x20abort\x20code\x20in\x20the\x20error\x20are\x20authoritative\x20—\x20review\x20them\x20(and\x20the\x20object\x20state\x20via\x20query_toolkit)\x20before\x20adjusting\x20anything.'},'unknown':{'error_code':'unknown','strategy':'escalate_human','max_attempts':0x1,'automation':'manual','detail':'1.\x20Report\x20full\x20error\x20context\x20to\x20the\x20user\x202.\x20Escalate\x20to\x20human\x20intervention\x203.\x20Flag\x20for\x20error-classification\x20rule\x20addition','user_prompt':'An\x20unclassified\x20error\x20occurred.\x20Please\x20review\x20the\x20error\x20details\x20and\x20contact\x20support\x20if\x20needed.'}};const operationAttempts=new Map();function getAttemptCount(a,b){const c=operationAttempts['get'](a);if(!c)return 0x0;return c['get'](b)??0x0;}function incrementAttempt(a,b){!operationAttempts['has'](a)&&operationAttempts['set'](a,new Map());const c=operationAttempts['get'](a),d=(c['get'](b)??0x0)+0x1;return c['set'](b,d),d;}function getTotalAttempts(a){const b=operationAttempts['get'](a);if(!b)return 0x0;let c=0x0;for(const d of b['values']())c+=d;return c;}export function resetAttempts(a){operationAttempts['delete'](a);}export function recover(a,b,c){const d=RECOVERY_RULES[a]??RECOVERY_RULES['unknown'],e=0x5,f=getTotalAttempts(b),g=getAttemptCount(b,a);if(d['max_attempts']<=0x1||d['strategy']==='stop')return{'strategy':d['strategy'],'should_retry':![],'max_attempts':d['max_attempts'],'current_attempt':g,'adjusted_params':d['adjusted_params'],'user_prompt':d['user_prompt'],'detail':d['detail']};if(f>=e)return{'strategy':'stop','should_retry':![],'max_attempts':e,'current_attempt':f,'detail':'Total\x20retry\x20limit\x20('+e+')\x20reached\x20for\x20operation\x20'+b+'.\x20Escalating\x20to\x20human\x20intervention.\x20Attempts\x20recorded\x20for\x20this\x20operation\x20id:\x20'+([...(operationAttempts['get'](b)??new Map())['entries']()]['map'](([i,j])=>i+':'+j)['join'](',\x20')||'none')+'.','user_prompt':'Maximum\x20retry\x20attempts\x20reached.\x20Manual\x20intervention\x20required.'};if(g>=d['max_attempts'])return{'strategy':'escalate_human','should_retry':![],'max_attempts':d['max_attempts'],'current_attempt':g,'detail':'Per-error-code\x20retry\x20limit\x20('+d['max_attempts']+')\x20reached\x20for\x20'+a+'.\x20Escalating\x20to\x20human.','user_prompt':'Recovery\x20attempts\x20for\x20'+a+'\x20exhausted.\x20Manual\x20intervention\x20required.'};const h=incrementAttempt(b,a);return{'strategy':d['strategy'],'should_retry':d['automation']==='full'||h<d['max_attempts'],'max_attempts':d['max_attempts'],'current_attempt':h,'adjusted_params':d['adjusted_params'],'user_prompt':d['user_prompt'],'detail':d['detail']};}export function getBackoffDelay(a){return Math['pow'](0x2,a-0x1)*0x3e8;}
1
+ export const RECOVERY_RULES={'insufficient_balance':{'error_code':'insufficient_balance','strategy':'claim_faucet','max_attempts':0x3,'automation':'semi','detail':'1.\x20Testnet:\x20claim\x20WOW\x20from\x20the\x20faucet\x202.\x20Mainnet:\x20transfer\x20ETH/USDT/USDC/WBTC\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge\x20(query\x20active\x20EVM\x20account\x20→\x20top\x20up\x20from\x20external\x20wallet\x20→\x20confirm\x20→\x20cross-chain)\x203.\x20Point\x20the\x20user\x20to\x20the\x20live\x20airdrop\x20page\x20(https://wowok.net/airdrop.html)\x20for\x20the\x20current\x20round\x204.\x20Retry\x20original\x20operation','user_prompt':'Insufficient\x20balance\x20for\x20gas\x20or\x20operation.\x20How\x20to\x20obtain\x20WOW\x20tokens:\x20(1)\x20Testnet\x20—\x20claim\x20WOW\x20from\x20the\x20faucet\x20(https://faucet.testnet.wowok.net);\x20all\x20merchant\x20and\x20order\x20testing\x20can\x20use\x20WOW\x20as\x20the\x20payment\x20token.\x20(2)\x20Mainnet\x20—\x20transfer\x20ETH\x20/\x20USDT\x20/\x20USDC\x20/\x20WBTC\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge:\x20first\x20query\x20the\x20active\x20EVM\x20account\x20(bridge_operation\x20query_active_evm_account,\x20auto-generated\x20on\x20first\x20use),\x20then\x20transfer\x20from\x20an\x20external\x20wallet\x20(e.g.\x20MetaMask)\x20to\x20that\x20address,\x20confirm\x20the\x20balance\x20arrived,\x20and\x20cross-chain\x20to\x20WOW\x20mainnet\x20(bridge_operation\x20cross_chain_evm_to_wow).\x20(3)\x20WOW\x20airdrop:\x20current\x20round\x20status,\x20pool\x20and\x20eligibility\x20are\x20published\x20live\x20at\x20https://wowok.net/airdrop.html\x20(referral:\x20https://wowok.net/refer.html)\x20—\x20open\x20that\x20page\x20rather\x20than\x20assuming\x20a\x20round\x20is\x20live\x20or\x20closed.\x20Query\x20wowok_buildin_info\x20with\x20info=\x27funding\x20guidance\x27\x20for\x20the\x20canonical\x20funding\x20guidance.'},'stock_exhausted':{'error_code':'stock_exhausted','strategy':'adjust_params','max_attempts':0x1,'automation':'semi','detail':'Merchant-side\x20inventory\x20shortfall\x20(Move\x20service:16\x20E_STOCK_NOT_ENOUGH)\x20—\x20NOT\x20a\x20buyer\x20balance\x20problem,\x20so\x20a\x20faucet\x20claim\x20will\x20NOT\x20help.\x201.\x20Reduce\x20the\x20purchase\x20quantity\x20to\x20the\x20item\x27s\x20remaining\x20stock\x202.\x20Pick\x20another\x20sale\x20item\x203.\x20Ask\x20the\x20merchant\x20to\x20restock,\x20then\x20retry','user_prompt':'The\x20sale\x20item\x27s\x20stock\x20is\x20exhausted\x20for\x20the\x20requested\x20quantity.\x20Reduce\x20the\x20quantity,\x20choose\x20another\x20item,\x20or\x20ask\x20the\x20merchant\x20to\x20restock.'},'sale_suspended':{'error_code':'sale_suspended','strategy':'adjust_params','max_attempts':0x1,'automation':'semi','detail':'The\x20merchant\x20suspended\x20this\x20sale\x20item\x20(Move\x20service:34\x20E_SALE_SUSPENDED).\x201.\x20Pick\x20another\x20(non-suspended)\x20item\x202.\x20Contact\x20the\x20merchant\x20to\x20resume\x20the\x20sale,\x20then\x20retry','user_prompt':'The\x20sale\x20item\x20is\x20suspended\x20by\x20the\x20merchant.\x20Please\x20choose\x20another\x20item\x20or\x20contact\x20the\x20merchant.'},'discount_invalid':{'error_code':'discount_invalid','strategy':'adjust_params','max_attempts':0x1,'automation':'semi','detail':'The\x20discount\x20is\x20outside\x20its\x20[time_start,\x20time_end]\x20validity\x20window\x20(Move\x20service:35\x20E_DISCOUNT_TIME_INVALID).\x201.\x20Retry\x20without\x20the\x20discount\x202.\x20Ask\x20the\x20merchant\x20for\x20a\x20fresh\x20discount,\x20then\x20retry','user_prompt':'The\x20discount\x20is\x20not\x20valid\x20at\x20the\x20current\x20time\x20(outside\x20its\x20validity\x20window).\x20Buy\x20without\x20the\x20discount\x20or\x20ask\x20the\x20merchant\x20for\x20a\x20new\x20one.'},'rate_limit':{'error_code':'rate_limit','strategy':'retry','max_attempts':0x5,'automation':'full','detail':'Rate\x20limit\x20hit\x20(HTTP\x20429).\x20Exponential\x20backoff\x20retry:\x202s\x20/\x204s\x20/\x208s\x20/\x2016s\x20/\x2032s.\x20Avoid\x20parallel\x20calls\x20while\x20the\x20limit\x20window\x20is\x20active.'},'gas_exceeded':{'error_code':'gas_exceeded','strategy':'adjust_params','max_attempts':0x3,'automation':'semi','detail':'Gas\x20budget\x20exceeded.\x201.\x20Increase\x20the\x20gas_budget\x20parameter\x202.\x20Reduce\x20the\x20operation\x20size\x20(fewer\x20objects\x20per\x20transaction)\x203.\x20Retry\x20the\x20original\x20operation','user_prompt':'Gas\x20budget\x20exceeded.\x20Increase\x20the\x20gas\x20budget\x20or\x20reduce\x20the\x20operation\x20size,\x20then\x20retry.'},'insufficient_gas':{'error_code':'insufficient_gas','strategy':'adjust_params','max_attempts':0x1,'automation':'semi','detail':'Gas\x20exhausted\x20—\x20the\x20transaction\x20failed\x20deterministically\x20and\x20did\x20NOT\x20commit\x20on-chain\x20(no\x20state\x20changed;\x20commit-state\x20verification\x20is\x20NOT\x20needed).\x201.\x20Raise\x20the\x20gas_budget\x20parameter\x20above\x20the\x20failed\x20transaction\x27s\x20gas_used\x202.\x20If\x20the\x20account\x20balance\x20cannot\x20cover\x20any\x20budget,\x20fund\x20the\x20signing\x20account\x20with\x20gas\x20tokens\x20first\x203.\x20Resubmit\x20as\x20a\x20FRESH\x20call\x20—\x20do\x20NOT\x20replay\x20the\x20same\x20transaction','user_prompt':'The\x20transaction\x20ran\x20out\x20of\x20gas\x20and\x20did\x20not\x20commit\x20on-chain.\x20Increase\x20the\x20gas\x20budget\x20(or\x20fund\x20the\x20account\x20with\x20gas)\x20and\x20submit\x20a\x20fresh\x20transaction\x20—\x20retrying\x20unchanged\x20will\x20fail\x20the\x20same\x20way.'},'bcs_error':{'error_code':'bcs_error','strategy':'adjust_params','max_attempts':0x2,'automation':'semi','detail':'BCS\x20serialization/deserialization\x20error\x20—\x20a\x20parameter\x20does\x20not\x20match\x20the\x20expected\x20type/structure.\x201.\x20Query\x20the\x20operation\x20schema\x20(schema_query)\x202.\x20Fix\x20the\x20offending\x20parameter\x20type\x20(e.g.\x20BigInt\x20vs\x20number,\x20vector\x20element\x20type)\x203.\x20Retry','user_prompt':'A\x20parameter\x20failed\x20serialization.\x20Check\x20the\x20parameter\x20types\x20against\x20the\x20schema\x20and\x20retry.'},'signature_error':{'error_code':'signature_error','strategy':'switch_account','max_attempts':0x2,'automation':'semi','detail':'Signature\x20verification\x20failed.\x201.\x20Verify\x20the\x20account\x20is\x20not\x20suspended\x202.\x20Check\x20the\x20network\x20matches\x20the\x20account\x27s\x203.\x20Switch\x20to\x20a\x20healthy\x20account\x20and\x20retry','user_prompt':'Signature\x20verification\x20failed.\x20The\x20account\x20may\x20be\x20suspended\x20or\x20misconfigured.\x20Switch\x20accounts\x20or\x20check\x20the\x20configuration\x20and\x20retry.'},'config_error':{'error_code':'config_error','strategy':'escalate_human','max_attempts':0x1,'automation':'manual','detail':'Local\x20configuration\x20error\x20(network\x20not\x20specified,\x20persistent\x20storage\x20not\x20set).\x201.\x20Show\x20the\x20user\x20which\x20configuration\x20is\x20missing\x202.\x20Guide\x20the\x20user\x20through\x20the\x20account_operation/config\x20setup\x203.\x20Retry\x20after\x20the\x20user\x20fixes\x20it','user_prompt':'Local\x20configuration\x20is\x20incomplete.\x20Please\x20finish\x20the\x20account/network\x20setup\x20and\x20retry.'},'wip_verification_failed':{'error_code':'wip_verification_failed','strategy':'adjust_params','max_attempts':0x2,'automation':'semi','detail':'WIP\x20file\x20not\x20publicly\x20reachable\x20/\x20hash\x20mismatch.\x201.\x20Upload\x20via\x20the\x20wip\x20storage\x20service\x20(wip_file\x20type=\x27upload\x27\x20—\x20official\x20free\x20store\x20or\x20storage=\x27custom\x27)\x202.\x20Or\x20deploy\x20to\x20a\x20public\x20URL\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20own\x20site)\x203.\x20Update\x20the\x20sale\x27s\x20wip\x20URL\x204.\x20Re-run\x20the\x20operation','user_prompt':'The\x20WIP\x20file\x20could\x20not\x20be\x20verified\x20from\x20a\x20public\x20URL.\x20Upload\x20it\x20with\x20wip_file\x20type=\x27upload\x27\x20(official\x20free\x20store\x20or\x20your\x20own\x20service)\x20or\x20deploy\x20it\x20(GitHub\x20Pages\x20/\x20IPFS),\x20update\x20the\x20sale\x27s\x20WIP\x20URL,\x20and\x20retry.'},'wip_storage_unavailable':{'error_code':'wip_storage_unavailable','strategy':'retry','max_attempts':0x3,'automation':'full','detail':'Transient\x20wip\x20storage\x20transport\x20failure.\x201.\x20Retry\x20the\x20same\x20request\x20with\x20bounded\x20backoff\x202.\x20Large\x20WIP\x20files\x20are\x20network-sensitive:\x20compress\x20images\x20before\x20generate\x20(each\x20image\x20<=\x202MB,\x20total\x20<=\x2010MB)\x203.\x20Check\x20connectivity\x20to\x20the\x20storage\x20base\x20URL\x20if\x20retries\x20keep\x20failing','user_prompt':'The\x20wip\x20storage\x20request\x20failed\x20due\x20to\x20a\x20network\x20problem.\x20Retry\x20the\x20upload;\x20if\x20it\x20keeps\x20failing,\x20reduce\x20the\x20file\x20size\x20or\x20check\x20connectivity.'},'network_error':{'error_code':'network_error','strategy':'retry','max_attempts':0x5,'automation':'full','detail':'Exponential\x20backoff\x20retry:\x201s\x20/\x202s\x20/\x204s\x20/\x208s\x20/\x2016s.\x20Switch\x20RPC\x20node\x20if\x20available.'},'submission_unknown':{'error_code':'submission_unknown','strategy':'query_and_retry','max_attempts':0x2,'automation':'semi','detail':'Transport-level\x20failure\x20after\x20the\x20request\x20left\x20the\x20client\x20—\x20the\x20submission\x20state\x20is\x20UNKNOWN\x20and\x20the\x20transaction\x20may\x20already\x20be\x20committed.\x20NEVER\x20auto-retry\x20a\x20write\x20here.\x201.\x20Verify\x20commit\x20state\x20on-chain:\x20query_toolkit\x20for\x20the\x20object\x20this\x20call\x20would\x20create/modify\x20(resolve\x20the\x20reference\x20from\x20the\x20call\x27s\x20own\x20arguments),\x20or\x20onchain_events\x20for\x20the\x20sender\x27s\x20recent\x20transactions.\x202.\x20If\x20the\x20expected\x20object\x20EXISTS,\x20adopt\x20it\x20and\x20continue\x20the\x20workflow\x20(the\x20operation\x20succeeded\x20despite\x20the\x20transport\x20error).\x203.\x20If\x20confirmed\x20ABSENT,\x20resubmit\x20the\x20SAME\x20call\x20once\x20—\x20for\x20a\x20FIRST-EVER\x20transaction\x20on\x20a\x20fresh\x20account\x20make\x20that\x20resubmission\x20with\x20env.no_auto_register=true\x20and\x20SAY\x20SO\x20(the\x20SDK\x20silently\x20appends\x20an\x20entity\x20registration\x20to\x20a\x20first\x20business\x20call;\x20if\x20that\x20appended\x20leg\x20was\x20the\x20failing\x20leg\x20the\x20skip\x20lets\x20the\x20call\x20through\x20—\x20ziroom-mn-261013\x20live\x20case;\x20if\x20the\x20resubmission\x20aborts,\x20the\x20envelope\x20now\x20names\x20the\x20abort\x20—\x20re-enable\x20auto\x20registration\x20and\x20retry).\x204.\x20If\x20the\x20reported\x20digest\x20does\x20not\x20resolve\x20or\x20the\x20failure\x20repeats,\x20STOP\x20looping\x20on\x20digest\x20checks\x20and\x20re-run\x20the\x20SAME\x20call\x20with\x20env.dry_run=true\x20—\x20the\x20simulation\x20surfaces\x20the\x20real\x20failure\x20(exact\x20Move\x20abort)\x20without\x20gas\x20or\x20duplicate\x20risk.\x205.\x20Reads\x20are\x20idempotent\x20—\x20retry\x20immediately.\x206.\x20M-K2\x20replay\x20discipline:\x20a\x20FAILED\x20receipt\x20is\x20final\x20—\x20its\x20digest\x20is\x20consumed\x20and\x20replaying\x20the\x20same\x20bytes\x20returns\x20the\x20same\x20failure\x20forever;\x20fix\x20the\x20cause\x20(usually\x20funding)\x20and\x20build\x20a\x20FRESH\x20transaction.\x20Live\x20mainnet\x20incident\x20behind\x20this\x20rule:\x20an\x20order_new\x20-32603\x20\x27did\x20not\x20complete\x27\x20had\x20committed;\x20the\x20blind\x20retry\x20created\x20a\x20second\x20order\x20with\x20a\x20second\x20full\x20escrow\x20and\x20a\x20second\x20stock\x20decrement','user_prompt':'The\x20request\x20failed\x20at\x20transport\x20level\x20but\x20may\x20have\x20already\x20been\x20committed\x20on-chain.\x20Verify\x20whether\x20the\x20expected\x20object\x20exists\x20(query\x20it)\x20before\x20any\x20retry\x20—\x20a\x20blind\x20retry\x20can\x20duplicate\x20the\x20operation\x20(double\x20escrow).\x20For\x20read\x20operations,\x20a\x20plain\x20retry\x20is\x20safe.'},'transaction_expired':{'error_code':'transaction_expired','strategy':'retry','max_attempts':0x3,'automation':'full','detail':'The\x20transaction\x20expired\x20before\x20execution\x20(epoch\x20boundary\x20or\x20validator/gateway\x20outage)\x20—\x20it\x20did\x20NOT\x20land\x20and\x20nothing\x20was\x20committed.\x20Bounded\x20backoff\x20retry:\x2010s\x20/\x2030s\x20/\x2060s,\x20resubmit\x20the\x20SAME\x20call\x20unchanged.\x20If\x20a\x20dry_run\x20passes\x20while\x20the\x20real\x20call\x20keeps\x20failing,\x20the\x20fault\x20is\x20chain-side\x20—\x20wait\x20it\x20out.\x20Verify\x20with\x20onchain_events\x20if\x20unsure.'},'guard_rejected':{'error_code':'guard_rejected','strategy':'fill_submission','max_attempts':0x2,'automation':'semi','detail':'1.\x20Parse\x20Guard\x20table\x20structure\x202.\x20If\x20the\x20Guard\x20defines\x20submission\x20items,\x20fill\x20them\x20and\x20resubmit\x20with\x20call_with_submission\x203.\x20If\x20it\x20defines\x20none,\x20the\x20rule\x20evaluated\x20false\x20—\x20typical\x20causes:\x20a\x20TIME\x20WINDOW\x20(Clock\x20deadline/opening\x20comparison\x20—\x20this\x20call\x20may\x20sit\x20outside\x20the\x20window,\x20and\x20a\x20mis-oriented\x20comparison\x20inverts\x20it:\x20everything\x20inside\x20rejected,\x20everything\x20after\x20admitted)\x20or\x20an\x20IDENTITY\x20condition\x20(signer/state\x20checks\x20—\x20the\x20caller\x20may\x20not\x20be\x20the\x20address\x20the\x20rule\x20expects);\x20adjust\x20the\x20call\x27s\x20parameters\x20or\x20change\x20the\x20Guard\x20(docs#40)\x204.\x20When\x20the\x20failure\x20is\x20passport\x20E_VERIFY_FAILED\x20and\x20a\x20submission\x20was\x20supplied,\x20the\x20response\x20appends\x20a\x20\x27Guard\x20diagnosis\x20(dry-run)\x27\x20line\x20naming\x20the\x20first\x20failing\x20impact\x20guard\x20—\x20fix\x20that\x20guard\x20first\x205.\x20A\x20TIME-window\x20rejection\x20may\x20simply\x20be\x20EARLY:\x20re-run\x20the\x20SAME\x20call\x20with\x20env.dry_run=true\x20to\x20probe\x20the\x20window\x20for\x20free\x20(guard\x20rejections\x20do\x20NOT\x20consume\x20the\x20total\x20retry\x20budget;\x20only\x20the\x20per-code\x20cap\x20of\x202\x20applies)','user_prompt':'Guard\x20verification\x20rejected.\x20If\x20the\x20Guard\x20defines\x20submission\x20items,\x20fill\x20in\x20the\x20required\x20submission\x20data\x20and\x20resubmit;\x20if\x20it\x20defines\x20none,\x20the\x20Guard\x20rule\x20evaluated\x20false\x20—\x20the\x20usual\x20causes\x20are\x20a\x20time\x20window\x20(this\x20call\x20may\x20be\x20outside\x20the\x20Clock\x20deadline/opening\x20window)\x20or\x20an\x20identity\x20condition\x20(the\x20caller\x20is\x20not\x20the\x20address\x20the\x20rule\x20expects);\x20adjust\x20this\x20call\x27s\x20parameters\x20or\x20change\x20the\x20Guard\x20rule.\x20When\x20the\x20response\x20includes\x20a\x20\x27Guard\x20diagnosis\x20(dry-run)\x27\x20line,\x20it\x20names\x20the\x20first\x20failing\x20impact\x20guard\x20—\x20address\x20that\x20guard\x20first.\x20A\x20time-window\x20rejection\x20may\x20simply\x20be\x20early:\x20probe\x20the\x20window\x20with\x20env.dry_run=true\x20(free\x20—\x20guard\x20rejections\x20do\x20not\x20consume\x20the\x20total\x20retry\x20budget).'},'time_lock_not_elapsed':{'error_code':'time_lock_not_elapsed','strategy':'wait_and_retry','max_attempts':0x1,'automation':'semi','detail':'1.\x20Verify\x20Service\x20is\x20paused\x20(bPaused=true).\x20If\x20not,\x20submit\x20pause=true\x20first.\x202.\x20Wait\x20until\x20paused_time\x20+\x20setting_lock_duration\x20<=\x20current\x20clock.\x203.\x20Retry\x20the\x20original\x20operation.\x20Do\x20NOT\x20recreate\x20the\x20object.','user_prompt':'Service\x20setting_lock_duration\x20has\x20not\x20elapsed\x20since\x20the\x20Service\x20was\x20paused.\x20Please\x20pause\x20the\x20Service\x20if\x20it\x20is\x20not\x20already\x20paused,\x20wait\x20for\x20the\x20lock\x20duration\x20to\x20elapse,\x20then\x20retry.'},'immutable_violation':{'error_code':'immutable_violation','strategy':'recreate','max_attempts':0x1,'automation':'semi','detail':'1.\x20Stop\x20modification\x20attempt\x202.\x20Evaluate\x20creating\x20a\x20new\x20object\x20as\x20replacement\x203.\x20Re-plan\x20affected\x20phases','user_prompt':'Cannot\x20modify\x20an\x20immutable\x20object.\x20A\x20new\x20object\x20must\x20be\x20created\x20as\x20a\x20replacement.\x20Confirm\x20to\x20proceed\x20with\x20recreation.'},'permission_denied':{'error_code':'permission_denied','strategy':'switch_account','max_attempts':0x2,'automation':'semi','detail':'1.\x20Query\x20object\x27s\x20permission_guard\x202.\x20List\x20accounts\x20with\x20permission\x203.\x20Switch\x20account\x20or\x20prompt\x20user\x20to\x20add\x20permission','user_prompt':'Current\x20account\x20lacks\x20permission\x20for\x20this\x20operation.\x20Switch\x20to\x20an\x20authorized\x20account\x20or\x20update\x20the\x20Permission\x20object.'},'object_not_found':{'error_code':'object_not_found','strategy':'query_and_retry','max_attempts':0x3,'automation':'semi','detail':'1.\x20Verify\x20the\x20referenced\x20name/ID\x20spelling\x20(local_mark_list)\x20and\x20that\x20the\x20object\x20exists\x20on\x20the\x20current\x20network\x202.\x20If\x20recently\x20created,\x20re-query\x20the\x20object\x20(may\x20be\x20sync\x20delay)\x203.\x20If\x20truly\x20absent,\x20search\x20for\x20similar\x20objects\x204.\x20Prompt\x20user\x20to\x20reselect','user_prompt':'Referenced\x20object\x20not\x20found.\x20First\x20verify\x20the\x20name/ID\x20spelling\x20and\x20that\x20the\x20object\x20exists\x20on\x20the\x20current\x20network;\x20if\x20it\x20was\x20created\x20recently,\x20this\x20may\x20be\x20a\x20synchronization\x20delay\x20—\x20retry.\x20If\x20the\x20issue\x20persists,\x20please\x20select\x20a\x20valid\x20object.'},'state_conflict':{'error_code':'state_conflict','strategy':'adjust_params','max_attempts':0x2,'automation':'full','detail':'1.\x20Query\x20object\x27s\x20current\x20true\x20state\x202.\x20Update\x20ODG\x20status\x20annotations\x203.\x20Adjust\x20subsequent\x20operations\x20(e.g.,\x20skip\x20completed\x20steps)'},'invalid_parameter':{'error_code':'invalid_parameter','strategy':'adjust_params','max_attempts':0x2,'automation':'semi','detail':'1.\x20Query\x20the\x20relevant\x20schema\x202.\x20Auto-fix\x20obvious\x20errors\x20(e.g.,\x20BigInt\x20vs\x20string)\x203.\x20If\x20unfixable,\x20prompt\x20user','user_prompt':'Parameter\x20validation\x20failed.\x20Please\x20check\x20the\x20parameter\x20types\x20and\x20values\x20against\x20the\x20schema\x20and\x20retry.'},'move_abort_unmapped':{'error_code':'move_abort_unmapped','strategy':'stop','max_attempts':0x1,'automation':'manual','detail':'The\x20chain\x27s\x20business\x20logic\x20aborted\x20and\x20the\x20(module,\x20abort\x20code)\x20pair\x20has\x20no\x20local\x20mapping.\x20Read\x20the\x20module\x20and\x20abort\x20code\x20from\x20move_abort_info\x20/\x20the\x20message\x20(rendered\x20as\x20\x27abort\x20(N)\x27),\x20resolve\x20their\x20meaning\x20from\x20the\x20module\x27s\x20documentation\x20or\x20the\x20wowok-tools\x20Skill,\x20fix\x20the\x20business\x20cause,\x20and\x20issue\x20a\x20NEW\x20call.\x20Do\x20NOT\x20restart\x20the\x20server\x20and\x20do\x20NOT\x20retry\x20the\x20identical\x20call\x20—\x20it\x20aborts\x20deterministically.','user_prompt':'The\x20operation\x20was\x20rejected\x20by\x20the\x20chain\x27s\x20business\x20logic\x20and\x20its\x20abort\x20code\x20is\x20not\x20mapped\x20locally.\x20The\x20module\x20name\x20and\x20abort\x20code\x20in\x20the\x20error\x20are\x20authoritative\x20—\x20review\x20them\x20(and\x20the\x20object\x20state\x20via\x20query_toolkit)\x20before\x20adjusting\x20anything.'},'missing_data':{'error_code':'missing_data','strategy':'adjust_params','max_attempts':0x2,'automation':'semi','detail':'A\x20guard\x20rule\x20read\x20a\x20keyed\x20table\x20row\x20that\x20does\x20NOT\x20exist\x20(repository.data\x20/\x20oracle\x20entry)\x20and\x20the\x20verifier\x20surfaced\x20it\x20as\x20a\x20location-only\x20fault\x20inside\x20the\x20passport\x20module\x20—\x20no\x20abort\x20code,\x20because\x20the\x20framework\x20cannot\x20express\x20\x27row\x20absent\x27\x20as\x20an\x20abort.\x20This\x20is\x20a\x20DATA\x20problem:\x201.\x20Identify\x20the\x20repository\x20and\x20key\x20the\x20guard\x20rule\x20reads\x20(guard2file\x20/\x20analyze_guard_semantics\x20on\x20the\x20guard\x20source)\x202.\x20Have\x20the\x20row\x27s\x20producer\x20write\x20it\x20(e.g.\x20an\x20oracle\x20timestamp\x20like\x20checkin_ts),\x20or\x20add\x20it\x20with\x20repository\x20data_add\x20(data_add.name\x20must\x20match\x20a\x20policy\x20rule\x20name)\x203.\x20Retry\x20the\x20SAME\x20call\x20unchanged\x20—\x20a\x20dry_run\x20that\x20turns\x20clean\x20after\x20the\x20row\x20exists\x20confirms\x20the\x20diagnosis','user_prompt':'A\x20guard\x20rule\x20references\x20a\x20data\x20row\x20that\x20has\x20not\x20been\x20written\x20yet\x20(location-only\x20fault\x20inside\x20the\x20passport\x20module\x20—\x20NOT\x20a\x20network\x20problem).\x20Identify\x20the\x20repository\x20row\x20the\x20guard\x20expects\x20(guard2file\x20/\x20analyze_guard_semantics),\x20write\x20it\x20with\x20repository\x20data_add\x20(or\x20let\x20its\x20producer\x20write\x20it),\x20then\x20retry.'},'unknown':{'error_code':'unknown','strategy':'escalate_human','max_attempts':0x1,'automation':'manual','detail':'1.\x20Report\x20full\x20error\x20context\x20to\x20the\x20user\x202.\x20Escalate\x20to\x20human\x20intervention\x203.\x20Flag\x20for\x20error-classification\x20rule\x20addition','user_prompt':'An\x20unclassified\x20error\x20occurred.\x20Please\x20review\x20the\x20error\x20details\x20and\x20contact\x20support\x20if\x20needed.'}};const operationAttempts=new Map();function getAttemptCount(a,b){const c=operationAttempts['get'](a);if(!c)return 0x0;return c['get'](b)??0x0;}function incrementAttempt(a,b){!operationAttempts['has'](a)&&operationAttempts['set'](a,new Map());const c=operationAttempts['get'](a),d=(c['get'](b)??0x0)+0x1;return c['set'](b,d),d;}const BUDGET_EXEMPT_CODES=new Set(['guard_rejected']);function getBudgetAttempts(a){const b=operationAttempts['get'](a);if(!b)return 0x0;let c=0x0;for(const [d,e]of b){if(!BUDGET_EXEMPT_CODES['has'](d))c+=e;}return c;}export function resetAttempts(a){operationAttempts['delete'](a);}export function recover(a,b,c){const d=RECOVERY_RULES[a]??RECOVERY_RULES['unknown'],e=0x5,f=getBudgetAttempts(b),g=getAttemptCount(b,a);if(d['max_attempts']<=0x1||d['strategy']==='stop')return{'strategy':d['strategy'],'should_retry':![],'max_attempts':d['max_attempts'],'current_attempt':g,'adjusted_params':d['adjusted_params'],'user_prompt':d['user_prompt'],'detail':d['detail']};if(f>=e)return{'strategy':'stop','should_retry':![],'max_attempts':e,'current_attempt':f,'detail':'Total\x20retry\x20limit\x20('+e+')\x20reached\x20for\x20operation\x20'+b+'.\x20Escalating\x20to\x20human\x20intervention.\x20Attempts\x20recorded\x20for\x20this\x20operation\x20id:\x20'+([...(operationAttempts['get'](b)??new Map())['entries']()]['map'](([i,j])=>i+':'+j)['join'](',\x20')||'none')+'.','user_prompt':'Maximum\x20retry\x20attempts\x20reached.\x20Manual\x20intervention\x20required.'};if(g>=d['max_attempts'])return{'strategy':'escalate_human','should_retry':![],'max_attempts':d['max_attempts'],'current_attempt':g,'detail':'Per-error-code\x20retry\x20limit\x20('+d['max_attempts']+')\x20reached\x20for\x20'+a+'.\x20Escalating\x20to\x20human.','user_prompt':'Recovery\x20attempts\x20for\x20'+a+'\x20exhausted.\x20Manual\x20intervention\x20required.'};const h=incrementAttempt(b,a);return{'strategy':d['strategy'],'should_retry':d['automation']==='full'||h<d['max_attempts'],'max_attempts':d['max_attempts'],'current_attempt':h,'adjusted_params':d['adjusted_params'],'user_prompt':d['user_prompt'],'detail':d['detail']};}export function getBackoffDelay(a){return Math['pow'](0x2,a-0x1)*0x3e8;}