@wowok/agent-mcp 3.3.1 → 3.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chain-semantics/field-capability.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/guard-verbs.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/composition/audit.d.ts +5 -0
- package/dist/composition/audit.js +1 -1
- package/dist/composition/blueprint-view.d.ts +0 -1
- package/dist/composition/blueprint-view.js +1 -1
- package/dist/composition/compile.d.ts +5 -3
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +32 -4
- package/dist/composition/inflight.js +1 -1
- package/dist/config/judgment.d.ts +111 -1
- package/dist/config/judgment.js +1 -1
- package/dist/customer/industry-risks.js +1 -1
- package/dist/customer/user-preferences.js +1 -1
- package/dist/evaluation/arbitration-game.d.ts +4 -0
- package/dist/evaluation/arbitration-game.js +1 -1
- package/dist/evaluation/builtins/graph-service.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/game-strategy.d.ts +6 -0
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/node-game.d.ts +4 -0
- package/dist/evaluation/node-game.js +1 -1
- package/dist/evaluation/value-risk.d.ts +8 -0
- package/dist/evaluation/value-risk.js +1 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.d.ts +7 -2
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/industry-audit.spec.js +1 -1
- package/dist/extensions/industry-pack.d.ts +3 -2
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/facet-projection.js +1 -1
- package/dist/graph/onchain/facet-projection.spec.js +1 -1
- package/dist/graph/onchain/facts.d.ts +20 -0
- package/dist/graph/onchain/facts.js +1 -1
- package/dist/graph/onchain/facts.spec.js +1 -1
- package/dist/graph/onchain/object-held-receipts.d.ts +20 -0
- package/dist/graph/onchain/object-held-receipts.js +1 -0
- package/dist/graph/onchain/object-held-receipts.spec.d.ts +1 -0
- package/dist/graph/onchain/object-held-receipts.spec.js +1 -0
- package/dist/graph/onchain/project-relationship.js +1 -1
- package/dist/graph/onchain/sdk-batch.d.ts +1 -0
- package/dist/graph/onchain/sdk-batch.js +1 -1
- package/dist/harness/index.d.ts +1 -0
- package/dist/harness/recover.d.ts +2 -1
- package/dist/harness/recover.js +1 -1
- package/dist/knowledge/acquisition-flywheel.js +1 -1
- package/dist/knowledge/allocation-ledger.d.ts +3 -1
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocation-puzzle.d.ts +1 -0
- package/dist/knowledge/allocation-puzzle.js +1 -1
- package/dist/knowledge/allocation-risk.d.ts +1 -1
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/arb-fund-facts.d.ts +12 -0
- package/dist/knowledge/arb-fund-facts.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +4 -3
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/judgment-baselines.json +502 -81
- package/dist/knowledge/baselines/rules/allocation.json +0 -14
- package/dist/knowledge/baselines/rules/graph.json +4 -4
- package/dist/knowledge/baselines/rules/plan.json +81 -5
- package/dist/knowledge/baselines/rules/reward.json +1 -1
- package/dist/knowledge/builtin-templates.d.ts +9 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/game-scenarios.d.ts +21 -0
- package/dist/knowledge/game-scenarios.js +1 -0
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-leg-map.d.ts +5 -0
- package/dist/knowledge/guard-leg-map.js +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-brief.d.ts +5 -0
- package/dist/knowledge/guard-submission-brief.js +1 -1
- package/dist/knowledge/guard-submission-prompt.d.ts +2 -1
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-generalizer.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/onchain-constants.d.ts +4 -2
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/order-ledger.d.ts +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/order-puzzle.d.ts +3 -0
- package/dist/knowledge/order-risk.d.ts +1 -1
- package/dist/knowledge/passport-ledger.d.ts +12 -0
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/payment-tracker.js +1 -1
- package/dist/knowledge/protocol-facts.d.ts +1 -0
- package/dist/knowledge/protocol-facts.js +1 -1
- package/dist/knowledge/repository-write-semantics.d.ts +1 -1
- package/dist/knowledge/repository-write-semantics.js +1 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-puzzle.d.ts +1 -1
- package/dist/knowledge/reward-risk.d.ts +1 -1
- package/dist/knowledge/scenario-modes.d.ts +2 -2
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/service-ledger.d.ts +14 -0
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-index.d.ts +19 -0
- package/dist/knowledge/template-index.js +1 -0
- package/dist/knowledge/template-loader.d.ts +36 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +11 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tool-constraints.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +2 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/allocation-advice.d.ts +8 -1
- package/dist/participation/allocation-advice.js +1 -1
- package/dist/participation/game-context.d.ts +25 -0
- package/dist/participation/game-context.js +1 -0
- package/dist/participation/node-action-advisor.d.ts +64 -0
- package/dist/participation/node-action-advisor.js +1 -0
- package/dist/participation/radar-core.d.ts +1 -0
- package/dist/participation/radar-core.js +1 -1
- package/dist/persona/defaults.js +1 -1
- package/dist/persona/topology-focus.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/game-theory.d.ts +4 -1
- package/dist/playbooks/service-build/game-theory.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +26 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +2 -2
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +13 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/pipeline-actions.d.ts +4 -1
- package/dist/playbooks/service-build/pipeline-actions.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.d.ts +12 -0
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/relationship/derivation.d.ts +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/repository.js +1 -1
- package/dist/role/intent.d.ts +23 -0
- package/dist/role/intent.js +1 -0
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +39 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +49 -3
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +52 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +3 -0
- package/dist/schema/call/contact.js +1 -1
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +10 -0
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +2 -0
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/progress.d.ts +6 -3
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/repository.d.ts +4 -0
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +2 -2
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.d.ts +6 -0
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +42 -4
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +54 -0
- package/dist/schema/goal/planning.d.ts +86 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/keeper/index.d.ts +2 -0
- package/dist/schema/local/index.d.ts +72 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +2 -0
- package/dist/schema/operations.d.ts +46 -5
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +484 -0
- package/dist/schema/query/bi.d.ts +4 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +84 -60
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.d.ts +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +41 -10
- package/dist/schemas/account_operation.schema.json +1 -1
- package/dist/schemas/benchmark_migration_operation.output.json +8 -5
- package/dist/schemas/benchmark_migration_operation.schema.json +91 -3
- package/dist/schemas/bridge_operation.output.json +13 -7
- package/dist/schemas/goal_operation.schema.json +94 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/keeper_operation.output.json +12 -7
- package/dist/schemas/local_cache_operation.output.json +34 -7
- package/dist/schemas/local_cache_operation.schema.json +16 -1
- package/dist/schemas/local_history_operation.output.json +13 -7
- package/dist/schemas/local_info_operation.output.json +13 -7
- package/dist/schemas/local_info_operation.schema.json +5 -1
- package/dist/schemas/local_mark_operation.output.json +13 -7
- package/dist/schemas/messenger_operation.output.json +12 -7
- package/dist/schemas/monitor_events.output.json +12 -7
- package/dist/schemas/monitor_subscription.output.json +12 -7
- package/dist/schemas/onchain_events.output.json +67 -18
- package/dist/schemas/onchain_events.schema.json +4 -0
- package/dist/schemas/onchain_operations.output.json +81 -24
- package/dist/schemas/onchain_operations.schema.json +531 -126
- package/dist/schemas/onchain_operations_allocation.schema.json +294 -6
- package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
- package/dist/schemas/onchain_operations_contact.schema.json +2 -2
- package/dist/schemas/onchain_operations_demand.schema.json +3 -3
- package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +99 -63
- package/dist/schemas/onchain_operations_machine.schema.json +10 -1
- package/dist/schemas/onchain_operations_order.schema.json +8 -4
- package/dist/schemas/onchain_operations_progress.schema.json +8 -4
- package/dist/schemas/onchain_operations_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_repository.schema.json +6 -2
- package/dist/schemas/onchain_operations_reward.schema.json +8 -8
- package/dist/schemas/onchain_operations_service.schema.json +81 -21
- package/dist/schemas/onchain_operations_treasury.schema.json +7 -7
- package/dist/schemas/onchain_table_data.output.json +16 -7
- package/dist/schemas/persona_operation.output.json +1387 -0
- package/dist/schemas/persona_operation.schema.json +219 -0
- package/dist/schemas/query_toolkit.output.json +115 -64
- package/dist/schemas/query_toolkit.schema.json +8 -0
- package/dist/schemas/workflow_operation.schema.json +1 -1
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/dispatch-expectations.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/industry-pack.d.ts +1 -0
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain-name-registration.d.ts +11 -0
- package/dist/tools/handlers/onchain-name-registration.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +28 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/review-chain.d.ts +1 -1
- package/dist/tools/handlers/review-chain.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/local.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/wip-deploy-assist.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
function toBigInt(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a;if(typeof a==='number')return Number['isFinite'](a)?BigInt(Math['trunc'](a)):null;if(typeof a==='string'){const b=a['trim']();if(b==='')return null;if(!/^\d+$/['test'](b)){const c=b['match'](/^(\d+)/);return c?BigInt(c[0x1]):null;}return BigInt(b);}return null;}export function evaluateDiscountThreshold(a,b){const c=toBigInt(a)??0x0n,d=toBigInt(b);return{'listTotal':c,'benchmark':d,'applies':d===null?!![]:c>=d};}function quantityOf(a){const b=a?.['quantity']??a?.['stock'],c=toBigInt(b);return c===null||c<0x0n?0x0n:c;}export function describeBenchmarkIssueRisk(a){const b=toBigInt(a);if(b===null||b===0x0n)return null;return'Coupon\x20threshold\x20set\x20to\x20'+b+'\x20(smallest\x20units):\x20the\x20discount\x20applies\x20ONLY\x20to\x20orders\x20'+('whose\x20total\x20is\x20>=\x20'+b+'.\x20An\x20order\x20below\x20that\x20threshold\x20CANNOT\x20use\x20this\x20coupon:\x20')+'attaching\x20it\x20at\x20buy\x20aborts\x20(error\x2038\x20—\x20the\x20transaction\x20rolls\x20back,\x20nothing\x20is\x20paid,\x20'+'and\x20the\x20coupon\x20is\x20preserved),\x20while\x20dropping\x20it\x20means\x20the\x20buyer\x20pays\x20FULL\x20price\x20'+'and\x20keeps\x20the\x20coupon\x20for\x20a\x20future\x20order.\x20'+'Leave\x20\x27benchmark\x27\x20unset\x20for\x20an\x20unconditional\x20discount.';}export async function checkDiscountThresholdBeforeBuy(a,b,c){const d=a?.['order_new']?.['buy'],e=d?.['discount'];if(typeof e!=='string'||e['trim']()==='')return null;const f=Array['isArray'](d?.['items'])?d['items']:[];if(f['length']===0x0)return null;let g,h;try{g=await c['resolveAddress'](String(a?.['object']??'')),h=await c['resolveAddress'](e);}catch{return null;}if(!g||!h)return null;let i;try{i=await c['fetchObjects']([g,h],b);}catch{return null;}const j=new Map();for(const v of i??[]){if(v?.['object'])j['set'](String(v['object'])['toLowerCase'](),v);}const k=j['get'](g['toLowerCase']()),l=j['get'](h['toLowerCase']());if(!k||!l)return null;const m=Array['isArray'](k['sales'])?k['sales']:[];if(m['length']===0x0)return null;const n=new Map();for(const w of m){if(typeof w?.['name']!=='string')continue;const x=toBigInt(w['price']);if(x!==null)n['set'](w['name'],x);}let q=0x0n,r=!![];for(const y of f){const z=typeof y?.['name']==='string'?n['get'](y['name']):undefined;if(z===undefined){r=![];break;}q+=z*quantityOf(y);}if(!r)return null;const t=l['benchmark'];if(t===null||t===undefined)return null;const u=evaluateDiscountThreshold(q,t);if(u['applies'])return null;return'⛔\x20THIS\x20COUPON\x20CANNOT\x20APPLY\x20TO\x20THIS\x20ORDER\x20—\x20order\x20not\x20placed\x0a\x0a'+('Coupon\x20'+e+'\x20carries\x20a\x20threshold\x20of\x20'+u['benchmark']+'\x20(smallest\x20units).\x0a')+('This\x20order\x20totals\x20'+u['listTotal']+'\x20before\x20discount,\x20which\x20is\x20BELOW\x20the\x20threshold.\x0a\x0a')+'What\x20would\x20happen\x20on\x20chain:\x20with\x20the\x20coupon\x20attached,\x20buy\x20aborts\x20(error\x2038)\x20and\x20the\x20whole\x20'+'transaction\x20rolls\x20back\x20—\x20nothing\x20is\x20paid\x20and\x20the\x20coupon\x20is\x20preserved.\x20Without\x20the\x20coupon,\x20'+'the\x20order\x20completes\x20at\x20FULL\x20price\x20and\x20the\x20coupon\x20survives\x20for\x20a\x20future\x20order.\x0a\x0a'+'Fixes\x20(pick\x20one):\x0a'+('\x20\x20•\x20Raise\x20this\x20order\x27s\x20total\x20to\x20>=\x20'+u['benchmark']+'\x20(add\x20items\x20/\x20buy\x20a\x20larger\x20quantity).\x0a')+('\x20\x20•\x20Drop\x20\x27discount\x27\x20from\x20this\x20order\x20and\x20pay\x20the\x20list\x20price\x20'+u['listTotal']+',\x20keeping\x20the\x20coupon.\x0a')+'\x20\x20•\x20Use\x20a\x20coupon\x20issued\x20WITHOUT\x20a\x20threshold\x20(unconditional).\x0a'+'Note:\x20a\x20coupon\x20with\x20NO\x20threshold\x20always\x20applies\x20—\x20omitting\x20it\x20is\x20not\x20the\x20problem\x20here.';}export function simulateCouponFinal(a,b,c){const d=toBigInt(a)??0x0n,e=toBigInt(c)??0x0n;if(Number(b)===0x0){const f=d*e/0x2710n;return d>f?d-f:0x0n;}return d>e?d-e:0x0n;}export function evaluateDiscountFloor(a,b,c,d){const e=Array['isArray'](a)?a:[];let f=null;for(const g of e){const h=toBigInt(g?.['price']);if(h===null)continue;if(f===null||h<f)f=h;}if(f===null)return{'cheapestPrice':null,'finalOnCheapest':null,'freeTierDeclared':d};return{'cheapestPrice':f,'finalOnCheapest':simulateCouponFinal(f,b,c),'freeTierDeclared':d};}export async function checkDiscountFloorBeforeIssue(a,b,c){const d=a?.['discount'];if(d==null||typeof d!=='object')return{'block':null,'warning':null};const e=d['allow_zero_total']===!![];let f;try{f=await c['resolveAddress'](String(a?.['object']??''));}catch{f=undefined;}if(!f)return{'block':null,'warning':
|
|
1
|
+
function toBigInt(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a;if(typeof a==='number')return Number['isFinite'](a)?BigInt(Math['trunc'](a)):null;if(typeof a==='string'){const b=a['trim']();if(b==='')return null;if(!/^\d+$/['test'](b)){const c=b['match'](/^(\d+)/);return c?BigInt(c[0x1]):null;}return BigInt(b);}return null;}export function evaluateDiscountThreshold(a,b){const c=toBigInt(a)??0x0n,d=toBigInt(b);return{'listTotal':c,'benchmark':d,'applies':d===null?!![]:c>=d};}function quantityOf(a){const b=a?.['quantity']??a?.['stock'],c=toBigInt(b);return c===null||c<0x0n?0x0n:c;}export function describeBenchmarkIssueRisk(a){const b=toBigInt(a);if(b===null||b===0x0n)return null;return'Coupon\x20threshold\x20set\x20to\x20'+b+'\x20(smallest\x20units):\x20the\x20discount\x20applies\x20ONLY\x20to\x20orders\x20'+('whose\x20total\x20is\x20>=\x20'+b+'.\x20An\x20order\x20below\x20that\x20threshold\x20CANNOT\x20use\x20this\x20coupon:\x20')+'attaching\x20it\x20at\x20buy\x20aborts\x20(error\x2038\x20—\x20the\x20transaction\x20rolls\x20back,\x20nothing\x20is\x20paid,\x20'+'and\x20the\x20coupon\x20is\x20preserved),\x20while\x20dropping\x20it\x20means\x20the\x20buyer\x20pays\x20FULL\x20price\x20'+'and\x20keeps\x20the\x20coupon\x20for\x20a\x20future\x20order.\x20'+'Leave\x20\x27benchmark\x27\x20unset\x20for\x20an\x20unconditional\x20discount.';}export async function checkDiscountThresholdBeforeBuy(a,b,c){const d=a?.['order_new']?.['buy'],e=d?.['discount'];if(typeof e!=='string'||e['trim']()==='')return null;const f=Array['isArray'](d?.['items'])?d['items']:[];if(f['length']===0x0)return null;let g,h;try{g=await c['resolveAddress'](String(a?.['object']??'')),h=await c['resolveAddress'](e);}catch{return null;}if(!g||!h)return null;let i;try{i=await c['fetchObjects']([g,h],b);}catch{return null;}const j=new Map();for(const v of i??[]){if(v?.['object'])j['set'](String(v['object'])['toLowerCase'](),v);}const k=j['get'](g['toLowerCase']()),l=j['get'](h['toLowerCase']());if(!k||!l)return null;const m=Array['isArray'](k['sales'])?k['sales']:[];if(m['length']===0x0)return null;const n=new Map();for(const w of m){if(typeof w?.['name']!=='string')continue;const x=toBigInt(w['price']);if(x!==null)n['set'](w['name'],x);}let q=0x0n,r=!![];for(const y of f){const z=typeof y?.['name']==='string'?n['get'](y['name']):undefined;if(z===undefined){r=![];break;}q+=z*quantityOf(y);}if(!r)return null;const t=l['benchmark'];if(t===null||t===undefined)return null;const u=evaluateDiscountThreshold(q,t);if(u['applies'])return null;return'⛔\x20THIS\x20COUPON\x20CANNOT\x20APPLY\x20TO\x20THIS\x20ORDER\x20—\x20order\x20not\x20placed\x0a\x0a'+('Coupon\x20'+e+'\x20carries\x20a\x20threshold\x20of\x20'+u['benchmark']+'\x20(smallest\x20units).\x0a')+('This\x20order\x20totals\x20'+u['listTotal']+'\x20before\x20discount,\x20which\x20is\x20BELOW\x20the\x20threshold.\x0a\x0a')+'What\x20would\x20happen\x20on\x20chain:\x20with\x20the\x20coupon\x20attached,\x20buy\x20aborts\x20(error\x2038)\x20and\x20the\x20whole\x20'+'transaction\x20rolls\x20back\x20—\x20nothing\x20is\x20paid\x20and\x20the\x20coupon\x20is\x20preserved.\x20Without\x20the\x20coupon,\x20'+'the\x20order\x20completes\x20at\x20FULL\x20price\x20and\x20the\x20coupon\x20survives\x20for\x20a\x20future\x20order.\x0a\x0a'+'Fixes\x20(pick\x20one):\x0a'+('\x20\x20•\x20Raise\x20this\x20order\x27s\x20total\x20to\x20>=\x20'+u['benchmark']+'\x20(add\x20items\x20/\x20buy\x20a\x20larger\x20quantity).\x0a')+('\x20\x20•\x20Drop\x20\x27discount\x27\x20from\x20this\x20order\x20and\x20pay\x20the\x20list\x20price\x20'+u['listTotal']+',\x20keeping\x20the\x20coupon.\x0a')+'\x20\x20•\x20Use\x20a\x20coupon\x20issued\x20WITHOUT\x20a\x20threshold\x20(unconditional).\x0a'+'Note:\x20a\x20coupon\x20with\x20NO\x20threshold\x20always\x20applies\x20—\x20omitting\x20it\x20is\x20not\x20the\x20problem\x20here.';}export function simulateCouponFinal(a,b,c){const d=toBigInt(a)??0x0n,e=toBigInt(c)??0x0n;if(Number(b)===0x0){const f=d*e/0x2710n;return d>f?d-f:0x0n;}return d>e?d-e:0x0n;}export function evaluateDiscountFloor(a,b,c,d){const e=Array['isArray'](a)?a:[];let f=null;for(const g of e){const h=toBigInt(g?.['price']);if(h===null)continue;if(f===null||h<f)f=h;}if(f===null)return{'cheapestPrice':null,'finalOnCheapest':null,'freeTierDeclared':d};return{'cheapestPrice':f,'finalOnCheapest':simulateCouponFinal(f,b,c),'freeTierDeclared':d};}export async function checkDiscountFloorBeforeIssue(a,b,c){const d=a?.['discount'];if(d==null||typeof d!=='object')return{'block':null,'warning':null};const e=d['allow_zero_total']===!![];let f;try{f=await c['resolveAddress'](String(a?.['object']??''));}catch{f=undefined;}if(!f)return{'block':null,'warning':'FLOOR\x20CHECK\x20SKIPPED\x20(F-BS-79):\x20the\x20Service\x20could\x20not\x20be\x20resolved\x20from\x20\x27'+String(a?.['object']??'')+'\x27,\x20'+'so\x20the\x20BKN-P2\x20zero-floor\x20check\x20did\x20NOT\x20run.\x20If\x20the\x20coupon\x20zeroes\x20the\x20cheapest\x20SKU\x20the\x20issuance\x20would\x20'+'otherwise\x20be\x20blocked\x20—\x20re-resolve\x20the\x20Service\x20and\x20re-run\x20the\x20check\x20(or\x20quote\x20it\x20via\x20'+'query_toolkit\x20service_quote)\x20before\x20distributing\x20this\x20coupon.'};let g=null;try{const k=await c['fetchObjects']([f],b);g=(k??[])['find'](l=>l?.['object']&&String(l['object'])['toLowerCase']()===f['toLowerCase']())??null;}catch{g=null;}if(!g)return{'block':null,'warning':'FLOOR\x20CHECK\x20SKIPPED\x20(F-BS-79):\x20the\x20Service\x27s\x20sales\x20could\x20not\x20be\x20read\x20('+f+'),\x20so\x20the\x20BKN-P2\x20'+'zero-floor\x20check\x20did\x20NOT\x20run.\x20If\x20the\x20coupon\x20zeroes\x20the\x20cheapest\x20SKU\x20the\x20issuance\x20would\x20otherwise\x20be\x20'+'blocked\x20—\x20re-run\x20the\x20check\x20(or\x20query_toolkit\x20service_quote)\x20before\x20distributing\x20this\x20coupon.'};const h=evaluateDiscountFloor(g?.['sales'],d['discount_type'],d['discount_value'],e);if(h['finalOnCheapest']===null||h['finalOnCheapest']>0x0n)return{'block':null,'warning':null};const i='Coupon\x20\x22'+(d['name']??'<unnamed>')+'\x22\x20zeroes\x20the\x20cheapest\x20SKU\x20of\x20this\x20Service\x20'+('(cheapest\x20sale\x20price\x20'+h['cheapestPrice']+',\x20simulated\x20final\x20total\x200\x20smallest\x20units).\x0a')+'A\x20zero-total\x20order\x20is\x20REFUSED\x20by\x20the\x20chain\x27s\x20zero-total\x20gate\x20(client\x20order_new_zero_total_dead_order,\x20'+'on-chain\x20abort\x2042)\x20—\x20the\x20coupon\x20cannot\x20buy\x20anything,\x20free\x20or\x20not,\x20and\x20reward/incentive\x20rails\x20exclude\x20'+'zero-total\x20orders\x20(template\x20policy\x20v55).\x0a\x0a';if(e){const l=d['discount_type']===0x0?'If\x20it\x20was\x20meant\x20to\x20be\x20a\x20discount\x20instead,\x20lower\x20the\x20RATES\x20value\x20further\x20'+'or\x20lower\x20the\x20cheapest\x20SKU\x27s\x20sale\x20price\x20so\x20the\x20discounted\x20total\x20pays\x20at\x20least\x201\x20smallest\x20unit.':'If\x20it\x20was\x20meant\x20to\x20be\x20a\x20discount\x20instead,\x20lower\x20discount_value\x20(MINUS)\x20or\x20use\x20a\x20RATES\x20value\x20below\x2010000.';return{'block':null,'warning':'FREE\x20TIER\x20DECLARED\x20(allow_zero_total)\x20—\x20DISCLOSURE\x20ONLY,\x20NO\x20CHAIN\x20EFFECT:\x20this\x20flag\x20exists\x20nowhere\x20in\x20'+'the\x20on-chain\x20Discount\x20struct\x20and\x20does\x20NOT\x20unlock\x20zero-total\x20buys\x20(the\x20chain\x27s\x20zero-total\x20gate\x20still\x20'+('refuses\x20them).\x20'+i+l+'\x20')+'A\x20deliberate\x20free\x20product\x20is\x20priced\x20at\x201\x20smallest\x20unit\x20(not\x200)\x20or\x20delivered\x20outside\x20the\x20sales\x20rails.'};}const j=d['discount_type']===0x0?'\x20\x20•\x20Lower\x20the\x20RATES\x20value\x20further\x20(it\x20is\x20'+d['discount_value']+';\x20keep\x20it\x20below\x2010000\x20AND\x20still\x20leave\x20>=\x201\x20smallest\x20unit\x20on\x20the\x20cheapest\x20SKU).\x0a'+'\x20\x20•\x20Lower\x20the\x20cheapest\x20SKU\x27s\x20sale\x20price\x20so\x20the\x20discounted\x20total\x20pays\x20>=\x201\x20smallest\x20unit.\x0a':'\x20\x20•\x20Switch\x20to\x20discount_type\x200\x20(RATES)\x20with\x20a\x20value\x20below\x2010000.\x0a';return{'block':'⛔\x20COUPON\x20ISSUANCE\x20BLOCKED\x20—\x20zero\x20floor\x20(BKN-P2)\x0a\x0a'+i+'Fixes\x20(pick\x20one):\x0a'+'\x20\x20•\x20Lower\x20discount_value\x20so\x20the\x20cheapest\x20SKU\x20still\x20pays\x20>=\x201\x20smallest\x20unit.\x0a'+j+'\x20\x20•\x20If\x20a\x20FREE\x20product\x20is\x20the\x20intent:\x20there\x20is\x20NO\x20zero-total\x20path\x20on-chain\x20—\x20price\x20the\x20free\x20tier\x20at\x20'+'1\x20smallest\x20unit\x20instead.\x20(allow_zero_total:true\x20only\x20downgrades\x20this\x20gate\x20to\x20a\x20warning;\x20it\x20does\x20NOT\x20'+'change\x20chain\x20behavior\x20—\x20F-BS-74.)','warning':null};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const EVENT_SEMANTIC_REGISTRY=[{'name':'OrderAllocatorsAppendedEvent','move_type':'::service::OrderAllocatorsAppendedEvent','module':'service','category':'lifecycle','consumers':['intent_radar'],'channel_note':'No\x20dedicated\x20push\x20channel:\x20appending\x20allocator\x20rails\x20is\x20a\x20merchant\x20admin\x20action\x20with\x20its\x20result\x20'+'echoed\x20synchronously\x20by\x20the\x20order_allocators_append\x20tool\x20response;\x20intent_radar\x27s\x20generic\x20matcher\x20'+'still\x20sees\x20it.\x20'+'KEEP\x20IN\x20MIND:\x20rails\x20snapshot\x20into\x20the\x20order\x27s\x20Allocation\x20at\x20BUY\x20(service.move:417)\x20—\x20an\x20append\x20'+'only\x20affects\x20FUTURE\x20orders;\x20existing\x20orders\x20can\x20never\x20gain\x20a\x20rail\x20retroactively.','business_meaning':'The\x20merchant\x20appended\x20allocator\x20rail(s)\x20to\x20a\x20Service\x27s\x20order_allocators\x20(pure\x20extension\x20prefix).','trigger':'service.move:831\x20—\x20the\x20ONLY\x20emission\x20point,\x20inside\x20order_allocators_append.\x20Fires\x20when\x20the\x20new\x20'+'Allocators\x20validate\x20as\x20a\x20pure\x20extension\x20of\x20the\x20existing\x20one\x20(abort\x2020\x20otherwise)\x20and\x20the\x20append\x20commits.','side_effect':'Future\x20orders\x20on\x20this\x20Service\x20buy\x20with\x20the\x20enlarged\x20rail\x20set.\x20The\x20merchant\x20CANNOT\x20append\x20rails\x20to\x20'+'an\x20ALREADY-PLACED\x20order\x20(buy-time\x20snapshot)\x20—\x20relief\x20for\x20existing\x20orders\x20routes\x20to\x20the\x20compensation\x20'+'fund\x20or\x20arbitration,\x20never\x20to\x20an\x20appended\x20rail.','params':[{'name':'object','shape':'address','meaning':'The\x20Service\x20(order_allocators\x20host)\x20that\x20received\x20the\x20append.'},{'name':'count_old','shape':'u64','meaning':'Allocator\x20count\x20before\x20the\x20append.'},{'name':'count_new','shape':'u64','meaning':'Allocator\x20count\x20after\x20the\x20append\x20(count_new\x20−\x20count_old\x20=\x20appended\x20rules).'},{'name':'appended_guards','shape':'vector<address>','meaning':'Guard\x20addresses\x20of\x20the\x20appended\x20allocator\x20rules\x20(each\x20guards\x20its\x20own\x20distribution\x20rule).'},{'name':'time','shape':'u64','meaning':'Emission\x20timestamp\x20(ms).'}]},{'name':'NewOrderEvent','move_type':'::order::NewOrderEvent','module':'order','category':'lifecycle','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20new\x20Order\x20was\x20placed\x20on\x20a\x20Service\x20(shared,\x20escrow-funded)','trigger':'The\x20`create`\x20function\x20—\x20the\x20ONLY\x20emission\x20point.\x20Fires\x20when\x20the\x20order\x20becomes\x20a\x20shared\x20object;\x20'+'validates:\x20machine\x20⇒\x20progress\x20bound;\x20amount\x20>\x200\x20⇒\x20allocation\x20bound.','side_effect':'Order\x20is\x20live:\x20buyer\x20funds\x20were\x20split\x20into\x20CoinWrappers\x20via\x20the\x20Service\x20Allocation;\x20'+'machine-governed\x20orders\x20can\x20now\x20be\x20advanced\x20by\x20operators.','params':[{'name':'object','shape':'address','meaning':'The\x20new\x20Order\x20object\x20id'},{'name':'service','shape':'address','meaning':'The\x20Service\x20the\x20order\x20was\x20placed\x20on'},{'name':'progress','shape':'Option<address>','meaning':'Bound\x20Progress\x20(machine\x20orders)\x20—\x20null\x20for\x20non-machine\x20orders'},{'name':'discount','shape':'Option<address>','meaning':'Discount\x20object\x20consumed\x20at\x20quote\x20time,\x20if\x20any'},{'name':'allocation','shape':'Option<address>','meaning':'Allocation\x20that\x20escrowed\x20the\x20payment\x20(required\x20when\x20amount\x20>\x200)'},{'name':'amount','shape':'u64','meaning':'Total\x20order\x20amount\x20in\x20the\x20Service\x27s\x20payment\x20token\x20(raw\x20on-chain\x20units)'}]},{'name':'ArbEvent','move_type':'::arb::ArbEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','problem_bridge','intent_radar'],'business_meaning':'Arbitration\x20status\x20transition\x20on\x20a\x20dispute\x20case\x20(open\x20/\x20voting\x20/\x20verdict\x20/\x20objection\x20/\x20finish\x20/\x20withdraw)','trigger':'Emitted\x20on\x20EVERY\x20status\x20transition:\x20create\x20(Arbitrator_confirming),\x20'+'proposition\x20change\x20/\x20principal\x20confirm\x20(Voting),\x20votes\x20closed\x20(Arbitrated),\x20objection\x20'+'(Objectionable),\x20finish\x20with\x20indemnity\x20(Finished\x20+\x20compensation),\x20withdraw\x20(Withdrawn).\x20'+'The\x20emission\x20always\x20reads\x20the\x20POST-transition\x20state.','side_effect':'Parties\x20should\x20re-read\x20the\x20Arb\x20object\x20on\x20every\x20event;\x20status\x20decides\x20who\x20acts\x20next.\x20'+'When\x20indemnity_amount\x20is\x20set,\x20the\x20compensation\x20recipient\x20can\x20claim\x20after\x20compensation_time.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20(dispute\x20case)\x20object\x20id'},{'name':'arbitration','shape':'address','meaning':'The\x20governing\x20Arbitration\x20object\x20(voting\x20rules,\x20arbitrator\x20set)'},{'name':'order','shape':'address','meaning':'The\x20disputed\x20Order'},{'name':'status','shape':'u8','meaning':'0\x20Principal_confirming\x20·\x201\x20Arbitrator_confirming\x20·\x202\x20Voting\x20·\x203\x20Arbitrated\x20·\x204\x20Objectionable\x20·\x205\x20Finished\x20·\x206\x20Withdrawn'},{'name':'indemnity_amount','shape':'Option<u64>','meaning':'Awarded\x20compensation\x20(set\x20on\x20Arbitrated/Finished);\x20null\x20otherwise'},{'name':'compensation_time','shape':'Option<u64>','meaning':'Timestamp-ms\x20after\x20which\x20the\x20compensation\x20can\x20be\x20withdrawn\x20(locks\x20expire)'}]},{'name':'VoteEvent','move_type':'::arb::VoteEvent','module':'arb','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20per-vote\x20granularity\x20is\x20too\x20noisy\x20for\x20push;\x20the\x20ArbEvent\x20'+'Voting/Arbitrated\x20transitions\x20already\x20carry\x20the\x20push\x20signals\x20(P2-1).','business_meaning':'One\x20arbitration\x20vote\x20cast\x20(real-time\x20tally)','trigger':'On\x20each\x20vote\x20cast\x20(open\x20or\x20passport-gated),\x20one\x20per\x20voter\x20per\x20round;\x20'+'lets\x20parties\x20track\x20the\x20tally\x20without\x20polling\x20the\x20Arb\x20object.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object\x20being\x20voted\x20on'},{'name':'voter','shape':'address','meaning':'The\x20voting\x20arbitrator\x20(or\x20passport-proven\x20delegate)'},{'name':'agrees','shape':'vector<u8>','meaning':'Proposition\x20indexes\x20the\x20voter\x20agreed\x20to'},{'name':'weight','shape':'u32','meaning':'Vote\x20weight\x20applied\x20(guard-weighted\x20voting)'}]},{'name':'FeedbackEvent','move_type':'::arb::FeedbackEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'New\x20feedback\x20message\x20on\x20an\x20arbitration\x20case','trigger':'On\x20`feedback`\x20(any\x20party\x20posts\x20a\x20message\x20into\x20the\x20case).','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object'},{'name':'feedback','shape':'String','meaning':'The\x20feedback\x20text'}]},{'name':'ArbStatementEvent','move_type':'::arb::ArbStatementEvent','module':'arb','category':'state_change','consumers':['problem_bridge','intent_radar'],'business_meaning':'The\x20defendant\x20(service\x20side)\x20appended\x20a\x20written\x20statement\x20to\x20a\x20dispute\x20case\x20record\x20(evidence\x20only\x20—\x20the\x20case\x20state\x20is\x20untouched)','trigger':'On\x20the\x20service-side\x20statement\x20append\x20(service\x20statement\x20entry\x20→\x20arb\x20statement):\x20'+'read-only\x20on\x20the\x20Arb\x20—\x20status,\x20votes,\x20ruling\x20and\x20fee\x20are\x20untouched.\x20Callable\x20in\x20ANY\x20case\x20'+'status;\x20a\x20statement\x20after\x20closure\x20is\x20still\x20a\x20legitimate\x20record.','side_effect':'The\x20statement\x20is\x20evidence\x20for\x20the\x20arbitrator/voters\x20and\x20for\x20later\x20review\x20—\x20it\x20does\x20NOT\x20'+'change\x20the\x20case\x20status,\x20advance\x20any\x20deadline,\x20or\x20move\x20funds.\x20Parties\x20disputing\x20should\x20'+'re-read\x20the\x20case\x20record\x20before\x20acting.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20(dispute\x20case)\x20object\x20id'},{'name':'service','shape':'address','meaning':'The\x20defendant\x27s\x20Service\x20the\x20disputed\x20order\x20was\x20placed\x20on'},{'name':'order','shape':'address','meaning':'The\x20disputed\x20Order'},{'name':'statement','shape':'String','meaning':'The\x20defendant\x27s\x20written\x20statement\x20(evidence\x20text)'}]},{'name':'DemandPresentEvent','move_type':'::demand::PresentEvent','module':'demand','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20presenter\x20submitted/updated\x20a\x20solution\x20pitch\x20on\x20a\x20Demand','trigger':'On\x20presentation\x20—\x20the\x20first\x20pitch\x20inserts\x20a\x20presenter\x20row;\x20re-presenting\x20updates\x20it\x20'+'(recommend\x20text\x20+\x20optional\x20bound\x20Service).\x20Passport-gated\x20variants\x20resolve\x20the\x20Service\x20from\x20'+'the\x20passport\x20submission\x20when\x20the\x20demand\x27s\x20guard\x20sets\x20a\x20service_identifier.','side_effect':'Demand\x20owner\x20now\x20has\x20a\x20candidate;\x20track\x20update_time\x20to\x20rank\x20freshest\x20pitches.\x20'+'This\x20is\x20the\x20supply\x20side\x20of\x20the\x20demand\x20marketplace\x20(K3\x2013\x20§6.7).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20presented\x20Service\x20(null\x20=\x20raw\x20recommendation\x20without\x20a\x20bound\x20service)'},{'name':'recommend','shape':'String','meaning':'The\x20presenter\x27s\x20pitch/recommendation\x20text'}]},{'name':'DemandFeedbackEvent','move_type':'::demand::DemandEvent','module':'demand','category':'reputation','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Demand\x20owner\x20scored/feedbacked\x20a\x20presenter\x20(acceptance\x20score)','trigger':'On\x20demand-owner\x20feedback\x20—\x20only\x20for\x20addresses\x20already\x20in\x20the\x20presenters\x20table;\x20'+'records\x20feedback\x20text\x20+\x20optional\x20acceptance\x20score\x20onto\x20the\x20presenter\x20row.','side_effect':'Acceptance\x20score\x20is\x20the\x20demand-side\x20quality\x20signal\x20for\x20the\x20presenter;\x20high\x20scores\x20build\x20'+'presenter\x20reputation\x20for\x20future\x20matching.','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20Service\x20that\x20was\x20presented\x20by\x20the\x20scored\x20presenter'},{'name':'feedback','shape':'String','meaning':'Feedback\x20text'},{'name':'acceptance_score','shape':'Option<u8>','meaning':'0-100\x20acceptance\x20score,\x20null\x20when\x20feedback\x20carries\x20no\x20score'}]},{'name':'DemandChangedEvent','move_type':'::demand::DemandChangedEvent','module':'demand','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20merchant-side\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(K3\x2013\x20§6.7\x20opportunity\x20broadcast);\x20there\x20is\x20no\x20goal-bound\x20push\x20target\x20to\x20bridge\x20to.','business_meaning':'Demand\x20became/updated\x20a\x20profitable\x20opportunity\x20for\x20merchants\x20(market-opportunity\x20event)','trigger':'Fires\x20when\x20rewards\x20are\x20bound/changed,\x20or\x20'+'description/location\x20changes\x20while\x20reward-bearing.\x20A\x20reward-less\x20demand\x20NEVER\x20emits\x20'+'(not\x20a\x20profitable\x20opportunity\x20—\x20K3\x2013\x20§6.7\x20principle).','side_effect':'PRIMARY\x20merchant-side\x20discovery\x20signal:\x20Intent\x20Radar\x20/\x20match\x20engines\x20should\x20treat\x20every\x20'+'emission\x20as\x20a\x20fresh\x20matchmaking\x20opportunity.\x20Reward\x20amounts/claim\x20rules\x20are\x20NOT\x20carried\x20—\x20'+'read\x20the\x20Reward\x20objects\x20by\x20id\x20(authoritative,\x20never\x20stale).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'location','shape':'String','meaning':'Demand\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Demand\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'rewards','shape':'vector<address>','meaning':'Bound\x20Reward\x20object\x20ids\x20—\x20resolve\x20amounts/conditions\x20by\x20query_objects'}]},{'name':'ProgressEvent','move_type':'::progress::ProgressEvent','module':'progress','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Order/task\x20workflow\x20advanced,\x20held,\x20or\x20initialized\x20on\x20a\x20Machine\x20graph','trigger':'4\x20emission\x20points:\x20progress\x20creation\x20(at\x20the\x20init\x20node,\x20no\x20forward),\x20'+'session\x20accomplishment\x20(threshold\x20reached\x20→\x20node\x20migrated),\x20and\x20hold/un-hold\x20of\x20a\x20forward\x20'+'in\x20open\x20and\x20passport-gated\x20variants\x20(the\x20hold\x20field\x20carries\x20the\x20new\x20state).','side_effect':'Operators\x20should\x20check\x20the\x20new\x20node\x20name\x20against\x20their\x20Machine\x20duties;\x20hold=true\x20pauses\x20that\x20'+'forward\x27s\x20contribution,\x20hold=false\x20resumes\x20it.','params':[{'name':'object','shape':'address','meaning':'The\x20Progress\x20object'},{'name':'machine','shape':'address','meaning':'The\x20Machine\x20(workflow\x20template)\x20governing\x20this\x20progress'},{'name':'task','shape':'Option<address>','meaning':'The\x20bound\x20task\x20(usually\x20the\x20Order)\x20—\x20null\x20for\x20standalone\x20progress'},{'name':'node','shape':'String','meaning':'Node\x20reached\x20(init\x20node\x20on\x20creation;\x20next_node\x20on\x20migration/hold)'},{'name':'forward','shape':'Option<String>','meaning':'The\x20forward\x20name\x20that\x20triggered\x20the\x20transition\x20(null\x20on\x20creation)'},{'name':'hold','shape':'Option<bool>','meaning':'Present\x20only\x20on\x20hold/un-hold:\x20true\x20=\x20forward\x20held,\x20false\x20=\x20released'}]},{'name':'NewEntityEvent','move_type':'::registrar::NewEntityEvent','module':'registrar','category':'lifecycle','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20ecosystem-entry\x20/\x20profile-update\x20signal\x20with\x20no\x20goal-bound\x20'+'push\x20target;\x20the\x20Intent\x20Radar\x20consumes\x20it\x20as\x20matching\x20context,\x20not\x20as\x20an\x20actionable\x20push.','business_meaning':'Entity\x20registered\x20or\x20re-announced\x20(new\x20counterparty\x20/\x20profile\x20update)','trigger':'4\x20sites:\x20entity\x20registration\x20(two\x20variants\x20—\x20a\x20new\x20Resource\x20created,\x20or\x20a\x20forced\x20'+'resource\x20binding),\x20first\x20on-chain\x20use\x20of\x20a\x20resource,\x20entity\x20description\x20update,\x20'+'entity\x20info\x20addition\x20(profile\x20updates\x20re-announce\x20the\x20entity).','side_effect':'A\x20new\x20potential\x20counterparty\x20entered\x20the\x20ecosystem,\x20or\x20an\x20existing\x20one\x20updated\x20its\x20public\x20'+'profile\x20—\x20refresh\x20cached\x20entity\x20profiles/records.','params':[{'name':'resource','shape':'address','meaning':'The\x20entity\x27s\x20Resource\x20object\x20(per-chain\x20identity\x20resource)'},{'name':'referrer','shape':'Option<address>','meaning':'Referring\x20entity\x20address,\x20when\x20registered\x20via\x20referral'}]},{'name':'ServiceEvent','move_type':'::service::ServiceEvent','module':'service','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Service\x20became/updated\x20a\x20purchasable\x20supply\x20(active-supply\x20event)','trigger':'Emitted\x20ONLY\x20when\x20bPublished\x20&&\x20!bPaused\x20at\x20the\x20mutation\x20point:\x20'+'publish,\x20unpause,\x20and\x20pre-publish\x20description\x20changes\x20re-notify.\x20Pausing\x20/\x20unpublishing\x20/\x20'+'draft-only\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20participatable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'PRIMARY\x20customer-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20buyable\x20service\x20with\x20its\x20routing\x20'+'text.\x20The\x20authoritative\x20description/sales/stock\x20live\x20on\x20the\x20Service\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Service\x20object'},{'name':'location','shape':'String','meaning':'Service\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Service\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'}]},{'name':'ArbitrationEvent','move_type':'::arbitration::ArbitrationEvent','module':'arbitration','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20arbitrator\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(merchants\x20query\x20ArbitrationEvent\x20to\x20shortlist\x20third-party\x20arbiters),\x20no\x20goal-bound\x20'+'push\x20target\x20(mirrors\x20DemandChangedEvent).','business_meaning':'Arbitration\x20became\x20selectable/updated\x20a\x20third-party\x20dispute-resolution\x20offer\x20(active-arbiter\x20supply\x20event)','trigger':'Emitted\x20ONLY\x20when\x20bPaused\x20==\x20false\x20at\x20the\x20mutation\x20point:\x20'+'unpausing\x20(re-listing),\x20and\x20description\x20/\x20location\x20/\x20fee\x20updates\x20while\x20active.\x20'+'Pausing\x20or\x20pre-publish\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20selectable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'Merchant-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20selectable\x20third-party\x20arbiter\x20with\x20its\x20'+'routing\x20text,\x20fee,\x20and\x20voting-guard\x20count.\x20The\x20authoritative\x20description/voting-guards\x20live\x20on\x20the\x20Arbitration\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Arbitration\x20object\x20id'},{'name':'location','shape':'String','meaning':'Arbitration\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Arbitration\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'fee','shape':'u64','meaning':'Dispute\x20fee\x20charged\x20by\x20the\x20Arbitration\x20(raw\x20on-chain\x20units)'},{'name':'voting_guard_count','shape':'u64','meaning':'Number\x20of\x20voting\x20guards\x20(0\x20=\x20open\x20to\x20everybody;\x20>0\x20=\x20guarded/weighted)'}]},{'name':'AllocationEvent','move_type':'::allocation::AllocationEvent','module':'allocation','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Allocation\x20run\x20completed\x20—\x20funds\x20left\x20the\x20Allocation\x20pool\x20as\x20a\x20Payment','trigger':'The\x20alloc\x20loop\x20—\x20when\x20a\x20matching\x20Allocator\x27s\x20guard\x20passes:\x20splits\x20the\x20balance\x20per\x20'+'sharing\x20mode\x20(Amount\x20/\x20Rate\x20‰\x20/\x20RateGross\x20‰\x20/\x20Surplus),\x20creates\x20a\x20Payment\x20(from_object\x20=\x20Allocation),\x20'+'then\x20emits\x20with\x20the\x20actually-distributed\x20amount.','side_effect':'Recipients\x20receive\x20CoinWrappers\x20referencing\x20the\x20new\x20Payment\x20—\x20they\x20must\x20unwrap\x20to\x20obtain\x20coins.\x20'+'The\x20Payment\x20is\x20also\x20pushed\x20onto\x20the\x20Allocation\x27s\x20payment\x20list.','params':[{'name':'object','shape':'address','meaning':'The\x20Allocation\x20object\x20that\x20distributed\x20the\x20funds'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20object\x20created\x20by\x20this\x20run\x20(the\x20on-chain\x20receipt)'},{'name':'guard','shape':'address','meaning':'The\x20guard\x20of\x20the\x20Allocator\x20that\x20authorized\x20this\x20distribution'},{'name':'amount','shape':'u64','meaning':'Amount\x20actually\x20distributed\x20(balance\x20before\x20−\x20balance\x20after)'}]},{'name':'TreasuryEvent','move_type':'::treasury::TreasuryEvent','module':'treasury','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Treasury\x20fund-flow\x20record\x20(withdraw\x20/\x20deposit\x20/\x20receive)\x20—\x20mirrors\x20on-chain\x20history','trigger':'3\x20sites:\x20withdraw\x20(balance\x20split\x20out\x20as\x20Payment,\x20from_object\x20=\x20Treasury),\x20'+'deposit\x20(coins\x20joined\x20in,\x20a\x20Payment\x20receipt\x20is\x20minted\x20for\x20the\x20depositor),\x20receive\x20'+'(a\x20CoinWrapper\x20from\x20a\x20Payment\x20is\x20received\x20into\x20the\x20treasury).\x20Each\x20emission\x20appends\x20a\x20Record\x20'+'to\x20the\x20treasury\x27s\x20on-chain\x20history\x20parent\x20table.','params':[{'name':'object','shape':'address','meaning':'The\x20Treasury\x20object'},{'name':'op','shape':'u8','meaning':'0\x20Withdraw\x20·\x201\x20Deposit\x20·\x202\x20Receive'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20receipt\x20minted\x20for\x20this\x20flow'},{'name':'amount','shape':'u64','meaning':'Flow\x20amount\x20(raw\x20on-chain\x20units\x20of\x20the\x20Treasury\x27s\x20token)'},{'name':'external_guard','shape':'Option<address>','meaning':'External\x20withdraw\x20guard\x20that\x20authorized\x20a\x20withdraw,\x20if\x20any'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id\x20(multi-branch\x20treasury\x20bookkeeping)'}]},{'name':'RewardClaimEvent','move_type':'::reward::RewardClaimEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20claimed\x20—\x20funds\x20paid\x20out\x20of\x20a\x20Reward\x20pool','trigger':'The\x20claim\x20path\x20—\x20after\x20guard+passport\x20validation:\x20appends\x20a\x20Record\x20to\x20the\x20recipient\x27s\x20'+'on-chain\x20record,\x20splits\x20the\x20balance,\x20emits,\x20then\x20transfers\x20the\x20coin\x20to\x20the\x20recipient.\x20'+'The\x20ONLY\x20realtime\x20trace\x20of\x20the\x20claim\x20outflow.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'guard','shape':'address','meaning':'The\x20reward\x20guard\x20that\x20authorized\x20this\x20claim'},{'name':'recipient','shape':'address','meaning':'Claim\x20recipient\x20(resolved\x20via\x20passport\x20when\x20required)'},{'name':'amount','shape':'u64','meaning':'This\x20claim\x27s\x20amount'},{'name':'total','shape':'u64','meaning':'Recipient\x27s\x20cumulative\x20claimed\x20total\x20on\x20this\x20pool'},{'name':'balance_left','shape':'u64','meaning':'Pool\x20balance\x20remaining\x20after\x20the\x20claim'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id,\x20present\x20only\x20when\x20the\x20guard\x20declares\x20the\x20stamp\x20slot;\x20slot-less\x20guards\x20record\x20none,\x20which\x20no\x20dedup\x20predicate\x20can\x20match'}]},{'name':'RewardFundEvent','move_type':'::reward::RewardFundEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20pool\x20inflow\x20—\x20funds\x20added\x20to\x20the\x20pool','trigger':'2\x20sites:\x20direct\x20coin\x20deposit\x20(from_payment\x20=\x20null)\x20and\x20received\x20payment\x20'+'(a\x20Payment\x27s\x20CoinWrapper\x20received\x20into\x20the\x20pool,\x20from_payment\x20=\x20that\x20Payment).','side_effect':'Claim\x20guards\x20whose\x20pool\x20ran\x20dry\x20become\x20satisfiable\x20again;\x20watchers\x20should\x20re-check\x20claim\x20'+'opportunities\x20against\x20the\x20new\x20balance.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'amount','shape':'u64','meaning':'Inflow\x20amount'},{'name':'balance','shape':'u64','meaning':'Pool\x20balance\x20after\x20the\x20inflow'},{'name':'from_payment','shape':'Option<address>','meaning':'The\x20Payment\x20that\x20funded\x20this\x20inflow\x20(null\x20for\x20direct\x20coin\x20adds)'}]},{'name':'NewPaymentEvent','move_type':'::payment::NewPaymentEvent','module':'payment','category':'fund_flow','consumers':['keeper','intent_radar'],'channel_note':'Deliberately\x20NOT\x20suggestion-bridged\x20(P2-4):\x20the\x20keeper\x20payment_unclaimed\x20state\x20scan\x20'+'owns\x20the\x20claimable-payment\x20reminder;\x20an\x20event\x20push\x20here\x20would\x20duplicate\x20it.','business_meaning':'A\x20Payment\x20was\x20created\x20—\x20the\x20universal\x20on-chain\x20receipt\x20of\x20WoWok\x20fund\x20flows','trigger':'The\x20`create`\x20function\x20—\x20the\x20ONLY\x20emission\x20point,\x20reached\x20by\x20treasury\x20withdraw/deposit,\x20'+'allocation\x20runs,\x20service\x20compensation\x20payouts,\x20and\x20direct\x20user\x20payments\x20alike.\x20'+'Emission\x20is\x20the\x20last\x20step\x20before\x20the\x20Payment\x20object\x20is\x20frozen\x20(immutable\x20receipt).','side_effect':'Every\x20recipient\x20in\x20`record`\x20received\x20a\x20frozen\x20CoinWrapper\x20that\x20references\x20this\x20Payment\x20—\x20'+'unwrap\x20converts\x20it\x20to\x20a\x20transferable\x20Coin.\x20info.for_object\x20/\x20info.for_guard\x20/\x20from_object\x20'+'are\x20registered\x20as\x20object-linker\x20affiliations,\x20so\x20the\x20payment\x20is\x20discoverable\x20via\x20global\x20'+'affiliation\x20tables\x20(onchain_affiliations_of_object).','params':[{'name':'object','shape':'address','meaning':'The\x20Payment\x20object\x20id\x20(the\x20receipt)'},{'name':'info.for_object','shape':'Option<address>','meaning':'The\x20business\x20object\x20this\x20payment\x20is\x20FOR\x20(order/demand/reward/…)\x20—\x20user-settable\x20routing\x20hint'},{'name':'info.for_guard','shape':'Option<address>','meaning':'The\x20Guard\x20governing\x20this\x20payment\x20—\x20user-settable,\x20links\x20the\x20payment\x20to\x20a\x20trust\x20rule'},{'name':'info.remark','shape':'String','meaning':'Free-form\x20on-chain\x20remark\x20(e.g.\x20invoice\x20number,\x20purpose)'},{'name':'info.index','shape':'u64','meaning':'Creator-local\x20index\x20(installment\x20sequence,\x20table\x20row,\x20…)'},{'name':'record','shape':'vector<{recipient,\x20amount}>','meaning':'Revenue\x20legs:\x20one\x20{recipient,\x20amount}\x20per\x20CoinWrapper\x20transferred'},{'name':'amount','shape':'u64','meaning':'Total\x20paid\x20across\x20all\x20legs\x20(sum\x20of\x20record\x20amounts)'},{'name':'from_object','shape':'Option<address>','meaning':'FUNDING-SOURCE\x20object\x20the\x20funds\x20LEFT\x20from\x20—\x20INTERNAL-ONLY\x20field\x20(set\x20only\x20inside\x20the\x20'+'protocol\x20package;\x20user\x20code\x20can\x20never\x20set\x20it).\x20Treasury\x20withdraw\x20⇒\x20the\x20Treasury;\x20'+'Allocation\x20run\x20⇒\x20the\x20Allocation;\x20Service\x20compensation\x20withdraw\x20⇒\x20the\x20Service.\x20'+'create()\x20registers\x20an\x20object_linker\x20affiliation\x20(from_object\x20→\x20payment)\x20so\x20the\x20'+'outflow\x20is\x20traceable\x20back\x20to\x20its\x20pool.\x20Null\x20for\x20direct\x20user-initiated\x20payments\x20'+'(no\x20on-chain\x20source\x20object).'}]},{'name':'RewardWithdrawEvent','move_type':'::reward::RewardWithdrawEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20pool\x20non-claim\x20outflow\x20—\x20a\x20permission-gated\x20withdraw\x20moved\x20funds\x20out\x20(the\x20ONLY\x20non-claim\x20path\x20from\x20a\x20pool)','trigger':'2\x20sites,\x20both\x20permission-gated\x20and\x20built\x20on\x20the\x20treasury\x20Payment\x20flow\x20(from_object\x20=\x20the\x20Reward):\x20'+'withdraw\x20(a\x20CoinWrapper\x20sent\x20to\x20a\x20named\x20recipient)\x20and\x20withdraw_and_unwrap\x20(unwrapped\x20coin\x20to\x20the\x20'+'tx\x20sender).\x20Emission\x20happens\x20right\x20after\x20the\x20Payment\x20receipt\x20is\x20created.','side_effect':'The\x20pool\x20balance\x20drops;\x20the\x20created\x20Payment\x20is\x20the\x20on-chain\x20receipt.\x20Mirrors\x20RewardClaimEvent\x27s\x20'+'shape\x20(amount/balance_left)\x20so\x20a\x20pool\x20stays\x20fully\x20auditable\x20from\x20events\x20alone.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'to','shape':'address','meaning':'The\x20CoinWrapper\x20recipient\x20(the\x20tx\x20sender\x20on\x20withdraw_and_unwrap)'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20receipt\x20object\x20created\x20for\x20this\x20outflow'},{'name':'amount','shape':'u64','meaning':'Withdrawn\x20amount'},{'name':'balance_left','shape':'u64','meaning':'Pool\x20balance\x20remaining\x20after\x20the\x20withdraw'}]},{'name':'PermissionChangedEvent','move_type':'::permission::PermissionChangedEvent','module':'permission','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20rebinds\x20run\x20through\x20owner-gated\x20rebind\x20operations\x20whose\x20tool\x20'+'responses\x20echo\x20the\x20result\x20synchronously\x20to\x20the\x20actor;\x20the\x20radar\x20matches\x20audit/security\x20watch\x20'+'intents\x20(e.g.\x20alert\x20when\x20a\x20watched\x20object\x27s\x20trust\x20root\x20changes).','business_meaning':'A\x20host\x20object\x27s\x20permission\x20root\x20(trust\x20root)\x20was\x20rebound\x20—\x20the\x20old\x20root\x20object\x20was\x20replaced\x20by\x20a\x20new\x20one','trigger':'One\x20shared\x20struct\x20+\x20one\x20shared\x20emit\x20helper;\x20forwarded\x20by\x20EVERY\x20host\x20module\x27s\x20rebind\x20entrypoint\x20—\x20'+'machine,\x20service,\x20arbitration,\x20repository,\x20demand,\x20contact,\x20reward,\x20treasury\x20(8\x20host\x20types).\x20'+'The\x20rebind\x20asserts\x20the\x20caller\x20owns\x20the\x20OLD\x20permission\x20before\x20committing,\x20so\x20a\x20rebind\x20is\x20never\x20silent.','side_effect':'All\x20permission\x20checks\x20on\x20the\x20host\x20(admin\x20index,\x20owner\x20grants)\x20now\x20resolve\x20through\x20the\x20NEW\x20root.\x20'+'Watchers\x20of\x20an\x20object\x20should\x20re-read\x20its\x20permission\x20bindings;\x20a\x20rebind\x20by\x20an\x20unexpected\x20caller\x20'+'is\x20a\x20takeover\x20signal.','params':[{'name':'object','shape':'address','meaning':'The\x20host\x20object\x20whose\x20permission\x20root\x20was\x20rebound'},{'name':'old','shape':'address','meaning':'The\x20previous\x20Permission\x20(root)\x20object\x20address'},{'name':'new','shape':'address','meaning':'The\x20new\x20Permission\x20(root)\x20object\x20address'},{'name':'caller','shape':'address','meaning':'Transaction\x20sender\x20that\x20performed\x20the\x20rebind'},{'name':'time','shape':'u64','meaning':'Emission\x20timestamp\x20(ms)'}]},{'name':'RepositoryDataOverwriteEvent','move_type':'::repository::RepositoryDataOverwriteEvent','module':'repository','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20the\x20overwrite\x20is\x20executed\x20by\x20the\x20writer\x20whose\x20tool\x20response\x20echoes\x20the\x20'+'result\x20synchronously;\x20the\x20radar\x20matches\x20attestation/audit\x20watch\x20intents\x20(e.g.\x20alert\x20when\x20a\x20'+'review\x20or\x20evidence\x20record\x20is\x20replaced).','business_meaning':'An\x20existing\x20repository\x20(id,\x20key)\x20record\x20was\x20REPLACED\x20—\x20the\x20previous\x20attestation\x20was\x20destroyed\x20(fresh\x20inserts\x20never\x20emit)','trigger':'The\x20shared\x20repository\x20data-write\x20path\x20—\x20emitted\x20only\x20when\x20the\x20(id,\x20key)\x20row\x20already\x20exists,\x20'+'right\x20before\x20the\x20raw\x20value\x20is\x20overwritten.','side_effect':'Repository\x20data\x20holds\x20raw\x20bytes\x20with\x20no\x20author\x20field:\x20this\x20event\x20is\x20the\x20ONLY\x20reconciliation\x20'+'signal\x20for\x20the\x20replaced\x20attestation.\x20Indexers\x20should\x20diff\x20the\x20new\x20value\x20against\x20their\x20last-seen\x20copy.','params':[{'name':'object','shape':'address','meaning':'The\x20Repository\x20object'},{'name':'id','shape':'address','meaning':'The\x20record-owner\x20id\x20the\x20(id,\x20key)\x20row\x20lives\x20under'},{'name':'key','shape':'String','meaning':'The\x20record\x20key\x20that\x20was\x20overwritten'}]},{'name':'VoteEvictedEvent','move_type':'::registrar::VoteEvictedEvent','module':'registrar','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20reconciliation\x20bookkeeping\x20for\x20the\x20registrar\x27s\x20fixed-size\x20vote\x20ring\x20'+'buffer\x20—\x20no\x20business\x20decision\x20hangs\x20on\x20a\x20single\x20eviction.','business_meaning':'A\x20vote\x20record\x20was\x20dropped\x20by\x20the\x20registrar\x27s\x20vote\x20ring\x20buffer\x20(a\x20newer\x20vote\x20replaced\x20it)','trigger':'Inside\x20vote\x20handling\x20when\x20the\x20fixed-size\x20buffer\x20overwrites\x20an\x20older\x20record:\x20the\x20evicted\x20voter\x27s\x20'+'Resource\x20tag\x20cannot\x20be\x20removed\x20on-chain\x20(it\x20lives\x20on\x20a\x20Resource\x20this\x20module\x20does\x20not\x20own),\x20so\x20'+'the\x20event\x20lets\x20indexers\x20reconcile\x20the\x20registrar\x27s\x20votes\x20against\x20Resource\x20tags.','side_effect':'The\x20registrar\x27s\x20vote\x20table\x20and\x20the\x20evicted\x20voter\x27s\x20Resource\x20tag\x20now\x20disagree\x20—\x20re-query\x20both\x20'+'before\x20trusting\x20either\x20as\x20a\x20reputation\x20signal.','params':[{'name':'registrar','shape':'address','meaning':'The\x20Registrar\x20object\x20whose\x20vote\x20record\x20was\x20evicted'},{'name':'voted','shape':'address','meaning':'The\x20entity/resource\x20address\x20that\x20had\x20been\x20voted\x20on'},{'name':'who','shape':'address','meaning':'The\x20evicted\x20voter'}]}];export const EVENT_BY_NAME=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['name'],a]));export const EVENT_BY_MOVE_TYPE=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['move_type'],a]));export function lookupEventMeaning(a){const b=String(a?.['type']??''),c=EVENT_BY_NAME['get'](b);if(c)return c['business_meaning'];const d=String(a?.['type_raw']??'');if(d)for(const f of EVENT_SEMANTIC_REGISTRY){if(d['includes'](f['move_type']))return f['business_meaning'];}return undefined;}
|
|
1
|
+
export const EVENT_SEMANTIC_REGISTRY=[{'name':'OrderAllocatorsAppendedEvent','move_type':'::service::OrderAllocatorsAppendedEvent','module':'service','category':'lifecycle','consumers':['intent_radar'],'channel_note':'No\x20dedicated\x20push\x20channel:\x20appending\x20allocator\x20rails\x20is\x20a\x20merchant\x20admin\x20action\x20with\x20its\x20result\x20'+'echoed\x20synchronously\x20by\x20the\x20order_allocators_append\x20tool\x20response;\x20intent_radar\x27s\x20generic\x20matcher\x20'+'still\x20sees\x20it.\x20'+'KEEP\x20IN\x20MIND:\x20rails\x20snapshot\x20into\x20the\x20order\x27s\x20Allocation\x20at\x20BUY\x20(service.move:417)\x20—\x20an\x20append\x20'+'only\x20affects\x20FUTURE\x20orders;\x20existing\x20orders\x20can\x20never\x20gain\x20a\x20rail\x20retroactively.','business_meaning':'The\x20merchant\x20appended\x20allocator\x20rail(s)\x20to\x20a\x20Service\x27s\x20order_allocators\x20(pure\x20extension\x20prefix).','trigger':'service.move:831\x20—\x20the\x20ONLY\x20emission\x20point,\x20inside\x20order_allocators_append.\x20Fires\x20when\x20the\x20new\x20'+'Allocators\x20validate\x20as\x20a\x20pure\x20extension\x20of\x20the\x20existing\x20one\x20(abort\x2020\x20otherwise)\x20and\x20the\x20append\x20commits.','side_effect':'Future\x20orders\x20on\x20this\x20Service\x20buy\x20with\x20the\x20enlarged\x20rail\x20set.\x20The\x20merchant\x20CANNOT\x20append\x20rails\x20to\x20'+'an\x20ALREADY-PLACED\x20order\x20(buy-time\x20snapshot)\x20—\x20relief\x20for\x20existing\x20orders\x20routes\x20to\x20the\x20compensation\x20'+'fund\x20or\x20arbitration,\x20never\x20to\x20an\x20appended\x20rail.','params':[{'name':'object','shape':'address','meaning':'The\x20Service\x20(order_allocators\x20host)\x20that\x20received\x20the\x20append.'},{'name':'count_old','shape':'u64','meaning':'Allocator\x20count\x20before\x20the\x20append.'},{'name':'count_new','shape':'u64','meaning':'Allocator\x20count\x20after\x20the\x20append\x20(count_new\x20−\x20count_old\x20=\x20appended\x20rules).'},{'name':'appended_guards','shape':'vector<address>','meaning':'Guard\x20addresses\x20of\x20the\x20appended\x20allocator\x20rules\x20(each\x20guards\x20its\x20own\x20distribution\x20rule).'},{'name':'time','shape':'u64','meaning':'Emission\x20timestamp\x20(ms).'}]},{'name':'DiscountRedeemedEvent','move_type':'::service::DiscountRedeemedEvent','module':'service','category':'fund_flow','consumers':['intent_radar'],'channel_note':'No\x20dedicated\x20push\x20channel:\x20the\x20buy\x20tool\x20response\x20already\x20echoes\x20the\x20order\x20and\x20the\x20paid\x20total;\x20'+'intent_radar\x27s\x20generic\x20matcher\x20still\x20sees\x20it.\x20Redemption\x20semantics\x20stay\x20queryable\x20via\x20the\x20event\x20'+'stream\x20—\x20the\x20Discount\x20object\x20itself\x20is\x20gone\x20the\x20moment\x20this\x20fires.','business_meaning':'A\x20discount\x20coupon\x20was\x20consumed\x20by\x20a\x20purchase\x20—\x20the\x20order\x20paid\x20the\x20discounted\x20total.','trigger':'the\x20service\x20purchase\x20path\x20—\x20emitted\x20right\x20after\x20the\x20Order\x20object\x20is\x20created,\x20exactly\x20once\x20per\x20coupon\x20'+'redemption\x20(the\x20coupon\x20object\x20is\x20destroyed\x20in\x20the\x20same\x20transaction;\x20full-price\x20buys\x20emit\x20nothing).','side_effect':'The\x20Discount\x20object\x20no\x20longer\x20exists;\x20Order.discount\x20carries\x20the\x20dead\x20coupon\x20address.\x20Use\x20this\x20'+'event\x20to\x20prove\x20WHICH\x20coupon\x20granted\x20WHAT\x20(type/off/threshold)\x20to\x20WHICH\x20order.','params':[{'name':'order','shape':'address','meaning':'The\x20Order\x20that\x20redeemed\x20the\x20coupon.'},{'name':'coupon','shape':'address','meaning':'The\x20(now\x20destroyed)\x20Discount\x20object\x20address\x20—\x20matches\x20Order.discount.'},{'name':'service','shape':'address','meaning':'The\x20Service\x20the\x20coupon\x20belonged\x20to.'},{'name':'discount_type','shape':'u8','meaning':'0\x20=\x20percentage\x20off\x20(rates),\x201\x20=\x20fixed\x20minus\x20amount.'},{'name':'off','shape':'u64','meaning':'The\x20granted\x20discount\x20value\x20(rates\x20in\x20basis\x20points,\x20or\x20the\x20minus\x20amount).'},{'name':'benchmark','shape':'Option<u64>','meaning':'The\x20order-total\x20threshold\x20the\x20coupon\x20required\x20(None\x20=\x20unconditional).'},{'name':'time','shape':'u64','meaning':'Redemption\x20timestamp\x20(ms).'}]},{'name':'NewOrderEvent','move_type':'::order::NewOrderEvent','module':'order','category':'lifecycle','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20new\x20Order\x20was\x20placed\x20on\x20a\x20Service\x20(shared,\x20escrow-funded)','trigger':'The\x20`create`\x20function\x20—\x20the\x20ONLY\x20emission\x20point.\x20Fires\x20when\x20the\x20order\x20becomes\x20a\x20shared\x20object;\x20'+'validates:\x20machine\x20⇒\x20progress\x20bound;\x20amount\x20>\x200\x20⇒\x20allocation\x20bound.','side_effect':'Order\x20is\x20live:\x20buyer\x20funds\x20were\x20split\x20into\x20CoinWrappers\x20via\x20the\x20Service\x20Allocation;\x20'+'machine-governed\x20orders\x20can\x20now\x20be\x20advanced\x20by\x20operators.','params':[{'name':'object','shape':'address','meaning':'The\x20new\x20Order\x20object\x20id'},{'name':'service','shape':'address','meaning':'The\x20Service\x20the\x20order\x20was\x20placed\x20on'},{'name':'progress','shape':'Option<address>','meaning':'Bound\x20Progress\x20(machine\x20orders)\x20—\x20null\x20for\x20non-machine\x20orders'},{'name':'discount','shape':'Option<address>','meaning':'Discount\x20object\x20consumed\x20at\x20quote\x20time,\x20if\x20any'},{'name':'allocation','shape':'Option<address>','meaning':'Allocation\x20that\x20escrowed\x20the\x20payment\x20(required\x20when\x20amount\x20>\x200)'},{'name':'amount','shape':'u64','meaning':'Total\x20order\x20amount\x20in\x20the\x20Service\x27s\x20payment\x20token\x20(raw\x20on-chain\x20units)'}]},{'name':'ArbEvent','move_type':'::arb::ArbEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','problem_bridge','intent_radar'],'business_meaning':'Arbitration\x20status\x20transition\x20on\x20a\x20dispute\x20case\x20(open\x20/\x20voting\x20/\x20verdict\x20/\x20objection\x20/\x20finish\x20/\x20withdraw)','trigger':'Emitted\x20on\x20EVERY\x20status\x20transition:\x20create\x20(Arbitrator_confirming),\x20'+'proposition\x20change\x20/\x20principal\x20confirm\x20(Voting),\x20votes\x20closed\x20(Arbitrated),\x20objection\x20'+'(Objectionable),\x20finish\x20with\x20indemnity\x20(Finished\x20+\x20compensation),\x20withdraw\x20(Withdrawn).\x20'+'The\x20emission\x20always\x20reads\x20the\x20POST-transition\x20state.','side_effect':'Parties\x20should\x20re-read\x20the\x20Arb\x20object\x20on\x20every\x20event;\x20status\x20decides\x20who\x20acts\x20next.\x20'+'When\x20indemnity_amount\x20is\x20set,\x20the\x20compensation\x20recipient\x20can\x20claim\x20after\x20compensation_time.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20(dispute\x20case)\x20object\x20id'},{'name':'arbitration','shape':'address','meaning':'The\x20governing\x20Arbitration\x20object\x20(voting\x20rules,\x20arbitrator\x20set)'},{'name':'order','shape':'address','meaning':'The\x20disputed\x20Order'},{'name':'status','shape':'u8','meaning':'0\x20Principal_confirming\x20·\x201\x20Arbitrator_confirming\x20·\x202\x20Voting\x20·\x203\x20Arbitrated\x20·\x204\x20Objectionable\x20·\x205\x20Finished\x20·\x206\x20Withdrawn'},{'name':'indemnity_amount','shape':'Option<u64>','meaning':'Awarded\x20compensation\x20(set\x20on\x20Arbitrated/Finished);\x20null\x20otherwise'},{'name':'compensation_time','shape':'Option<u64>','meaning':'Timestamp-ms\x20after\x20which\x20the\x20compensation\x20can\x20be\x20withdrawn\x20(locks\x20expire)'}]},{'name':'VoteEvent','move_type':'::arb::VoteEvent','module':'arb','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20per-vote\x20granularity\x20is\x20too\x20noisy\x20for\x20push;\x20the\x20ArbEvent\x20'+'Voting/Arbitrated\x20transitions\x20already\x20carry\x20the\x20push\x20signals\x20(P2-1).','business_meaning':'One\x20arbitration\x20vote\x20cast\x20(real-time\x20tally)','trigger':'On\x20each\x20vote\x20cast\x20(open\x20or\x20passport-gated),\x20one\x20per\x20voter\x20per\x20round;\x20'+'lets\x20parties\x20track\x20the\x20tally\x20without\x20polling\x20the\x20Arb\x20object.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object\x20being\x20voted\x20on'},{'name':'voter','shape':'address','meaning':'The\x20voting\x20arbitrator\x20(or\x20passport-proven\x20delegate)'},{'name':'agrees','shape':'vector<u8>','meaning':'Proposition\x20indexes\x20the\x20voter\x20agreed\x20to'},{'name':'weight','shape':'u32','meaning':'Vote\x20weight\x20applied\x20(guard-weighted\x20voting)'}]},{'name':'FeedbackEvent','move_type':'::arb::FeedbackEvent','module':'arb','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'New\x20feedback\x20message\x20on\x20an\x20arbitration\x20case','trigger':'On\x20`feedback`\x20(any\x20party\x20posts\x20a\x20message\x20into\x20the\x20case).','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20object'},{'name':'feedback','shape':'String','meaning':'The\x20feedback\x20text'}]},{'name':'ArbStatementEvent','move_type':'::arb::ArbStatementEvent','module':'arb','category':'state_change','consumers':['problem_bridge','intent_radar'],'business_meaning':'The\x20defendant\x20(service\x20side)\x20appended\x20a\x20written\x20statement\x20to\x20a\x20dispute\x20case\x20record\x20(evidence\x20only\x20—\x20the\x20case\x20state\x20is\x20untouched)','trigger':'On\x20the\x20service-side\x20statement\x20append\x20(service\x20statement\x20entry\x20→\x20arb\x20statement):\x20'+'read-only\x20on\x20the\x20Arb\x20—\x20status,\x20votes,\x20ruling\x20and\x20fee\x20are\x20untouched.\x20Callable\x20in\x20ANY\x20case\x20'+'status;\x20a\x20statement\x20after\x20closure\x20is\x20still\x20a\x20legitimate\x20record.','side_effect':'The\x20statement\x20is\x20evidence\x20for\x20the\x20arbitrator/voters\x20and\x20for\x20later\x20review\x20—\x20it\x20does\x20NOT\x20'+'change\x20the\x20case\x20status,\x20advance\x20any\x20deadline,\x20or\x20move\x20funds.\x20Parties\x20disputing\x20should\x20'+'re-read\x20the\x20case\x20record\x20before\x20acting.','params':[{'name':'object','shape':'address','meaning':'The\x20Arb\x20(dispute\x20case)\x20object\x20id'},{'name':'service','shape':'address','meaning':'The\x20defendant\x27s\x20Service\x20the\x20disputed\x20order\x20was\x20placed\x20on'},{'name':'order','shape':'address','meaning':'The\x20disputed\x20Order'},{'name':'statement','shape':'String','meaning':'The\x20defendant\x27s\x20written\x20statement\x20(evidence\x20text)'}]},{'name':'DemandPresentEvent','move_type':'::demand::PresentEvent','module':'demand','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'A\x20presenter\x20submitted/updated\x20a\x20solution\x20pitch\x20on\x20a\x20Demand','trigger':'On\x20presentation\x20—\x20the\x20first\x20pitch\x20inserts\x20a\x20presenter\x20row;\x20re-presenting\x20updates\x20it\x20'+'(recommend\x20text\x20+\x20optional\x20bound\x20Service).\x20Passport-gated\x20variants\x20resolve\x20the\x20Service\x20from\x20'+'the\x20passport\x20submission\x20when\x20the\x20demand\x27s\x20guard\x20sets\x20a\x20service_identifier.','side_effect':'Demand\x20owner\x20now\x20has\x20a\x20candidate;\x20track\x20update_time\x20to\x20rank\x20freshest\x20pitches.\x20'+'This\x20is\x20the\x20supply\x20side\x20of\x20the\x20demand\x20marketplace\x20(K3\x2013\x20§6.7).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20presented\x20Service\x20(null\x20=\x20raw\x20recommendation\x20without\x20a\x20bound\x20service)'},{'name':'recommend','shape':'String','meaning':'The\x20presenter\x27s\x20pitch/recommendation\x20text'}]},{'name':'DemandFeedbackEvent','move_type':'::demand::DemandEvent','module':'demand','category':'reputation','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Demand\x20owner\x20scored/feedbacked\x20a\x20presenter\x20(acceptance\x20score)','trigger':'On\x20demand-owner\x20feedback\x20—\x20only\x20for\x20addresses\x20already\x20in\x20the\x20presenters\x20table;\x20'+'records\x20feedback\x20text\x20+\x20optional\x20acceptance\x20score\x20onto\x20the\x20presenter\x20row.','side_effect':'Acceptance\x20score\x20is\x20the\x20demand-side\x20quality\x20signal\x20for\x20the\x20presenter;\x20high\x20scores\x20build\x20'+'presenter\x20reputation\x20for\x20future\x20matching.','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'service','shape':'Option<address>','meaning':'The\x20Service\x20that\x20was\x20presented\x20by\x20the\x20scored\x20presenter'},{'name':'feedback','shape':'String','meaning':'Feedback\x20text'},{'name':'acceptance_score','shape':'Option<u8>','meaning':'0-100\x20acceptance\x20score,\x20null\x20when\x20feedback\x20carries\x20no\x20score'}]},{'name':'DemandChangedEvent','move_type':'::demand::DemandChangedEvent','module':'demand','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20merchant-side\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(K3\x2013\x20§6.7\x20opportunity\x20broadcast);\x20there\x20is\x20no\x20goal-bound\x20push\x20target\x20to\x20bridge\x20to.','business_meaning':'Demand\x20became/updated\x20a\x20profitable\x20opportunity\x20for\x20merchants\x20(market-opportunity\x20event)','trigger':'Fires\x20when\x20rewards\x20are\x20bound/changed,\x20or\x20'+'description/location\x20changes\x20while\x20reward-bearing.\x20A\x20reward-less\x20demand\x20NEVER\x20emits\x20'+'(not\x20a\x20profitable\x20opportunity\x20—\x20K3\x2013\x20§6.7\x20principle).','side_effect':'PRIMARY\x20merchant-side\x20discovery\x20signal:\x20Intent\x20Radar\x20/\x20match\x20engines\x20should\x20treat\x20every\x20'+'emission\x20as\x20a\x20fresh\x20matchmaking\x20opportunity.\x20Reward\x20amounts/claim\x20rules\x20are\x20NOT\x20carried\x20—\x20'+'read\x20the\x20Reward\x20objects\x20by\x20id\x20(authoritative,\x20never\x20stale).','params':[{'name':'object','shape':'address','meaning':'The\x20Demand\x20object'},{'name':'location','shape':'String','meaning':'Demand\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Demand\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'rewards','shape':'vector<address>','meaning':'Bound\x20Reward\x20object\x20ids\x20—\x20resolve\x20amounts/conditions\x20by\x20query_objects'}]},{'name':'ProgressEvent','move_type':'::progress::ProgressEvent','module':'progress','category':'state_change','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Order/task\x20workflow\x20advanced,\x20held,\x20or\x20initialized\x20on\x20a\x20Machine\x20graph','trigger':'4\x20emission\x20points:\x20progress\x20creation\x20(at\x20the\x20init\x20node,\x20no\x20forward),\x20'+'session\x20accomplishment\x20(threshold\x20reached\x20→\x20node\x20migrated),\x20and\x20hold/un-hold\x20of\x20a\x20forward\x20'+'in\x20open\x20and\x20passport-gated\x20variants\x20(the\x20hold\x20field\x20carries\x20the\x20new\x20state).','side_effect':'Operators\x20should\x20check\x20the\x20new\x20node\x20name\x20against\x20their\x20Machine\x20duties;\x20hold=true\x20pauses\x20that\x20'+'forward\x27s\x20contribution,\x20hold=false\x20resumes\x20it.','params':[{'name':'object','shape':'address','meaning':'The\x20Progress\x20object'},{'name':'machine','shape':'address','meaning':'The\x20Machine\x20(workflow\x20template)\x20governing\x20this\x20progress'},{'name':'task','shape':'Option<address>','meaning':'The\x20bound\x20task\x20(usually\x20the\x20Order)\x20—\x20null\x20for\x20standalone\x20progress'},{'name':'node','shape':'String','meaning':'Node\x20reached\x20(init\x20node\x20on\x20creation;\x20next_node\x20on\x20migration/hold)'},{'name':'forward','shape':'Option<String>','meaning':'The\x20forward\x20name\x20that\x20triggered\x20the\x20transition\x20(null\x20on\x20creation)'},{'name':'hold','shape':'Option<bool>','meaning':'Present\x20only\x20on\x20hold/un-hold:\x20true\x20=\x20forward\x20held,\x20false\x20=\x20released'}]},{'name':'NewEntityEvent','move_type':'::registrar::NewEntityEvent','module':'registrar','category':'lifecycle','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20ecosystem-entry\x20/\x20profile-update\x20signal\x20with\x20no\x20goal-bound\x20'+'push\x20target;\x20the\x20Intent\x20Radar\x20consumes\x20it\x20as\x20matching\x20context,\x20not\x20as\x20an\x20actionable\x20push.','business_meaning':'Entity\x20registered\x20or\x20re-announced\x20(new\x20counterparty\x20/\x20profile\x20update)','trigger':'4\x20sites:\x20entity\x20registration\x20(two\x20variants\x20—\x20a\x20new\x20Resource\x20created,\x20or\x20a\x20forced\x20'+'resource\x20binding),\x20first\x20on-chain\x20use\x20of\x20a\x20resource,\x20entity\x20description\x20update,\x20'+'entity\x20info\x20addition\x20(profile\x20updates\x20re-announce\x20the\x20entity).','side_effect':'A\x20new\x20potential\x20counterparty\x20entered\x20the\x20ecosystem,\x20or\x20an\x20existing\x20one\x20updated\x20its\x20public\x20'+'profile\x20—\x20refresh\x20cached\x20entity\x20profiles/records.','params':[{'name':'resource','shape':'address','meaning':'The\x20entity\x27s\x20Resource\x20object\x20(per-chain\x20identity\x20resource)'},{'name':'referrer','shape':'Option<address>','meaning':'Referring\x20entity\x20address,\x20when\x20registered\x20via\x20referral'}]},{'name':'ServiceEvent','move_type':'::service::ServiceEvent','module':'service','category':'market_opportunity','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Service\x20became/updated\x20a\x20purchasable\x20supply\x20(active-supply\x20event)','trigger':'Emitted\x20ONLY\x20when\x20bPublished\x20&&\x20!bPaused\x20at\x20the\x20mutation\x20point:\x20'+'publish,\x20unpause,\x20and\x20pre-publish\x20description\x20changes\x20re-notify.\x20Pausing\x20/\x20unpublishing\x20/\x20'+'draft-only\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20participatable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'PRIMARY\x20customer-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20buyable\x20service\x20with\x20its\x20routing\x20'+'text.\x20The\x20authoritative\x20description/sales/stock\x20live\x20on\x20the\x20Service\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Service\x20object'},{'name':'location','shape':'String','meaning':'Service\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Service\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'}]},{'name':'ArbitrationEvent','move_type':'::arbitration::ArbitrationEvent','module':'arbitration','category':'market_opportunity','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20arbitrator\x20discovery\x20is\x20pull-based\x20matching\x20semantics\x20'+'(merchants\x20query\x20ArbitrationEvent\x20to\x20shortlist\x20third-party\x20arbiters),\x20no\x20goal-bound\x20'+'push\x20target\x20(mirrors\x20DemandChangedEvent).','business_meaning':'Arbitration\x20became\x20selectable/updated\x20a\x20third-party\x20dispute-resolution\x20offer\x20(active-arbiter\x20supply\x20event)','trigger':'Emitted\x20ONLY\x20when\x20bPaused\x20==\x20false\x20at\x20the\x20mutation\x20point:\x20'+'unpausing\x20(re-listing),\x20and\x20description\x20/\x20location\x20/\x20fee\x20updates\x20while\x20active.\x20'+'Pausing\x20or\x20pre-publish\x20mutations\x20NEVER\x20emit\x20(not\x20a\x20selectable\x20opportunity\x20—\x20K3\x2013\x20§6.7).','side_effect':'Merchant-side\x20discovery\x20signal:\x20every\x20emission\x20is\x20a\x20selectable\x20third-party\x20arbiter\x20with\x20its\x20'+'routing\x20text,\x20fee,\x20and\x20voting-guard\x20count.\x20The\x20authoritative\x20description/voting-guards\x20live\x20on\x20the\x20Arbitration\x20object\x20by\x20id.','params':[{'name':'object','shape':'address','meaning':'The\x20Arbitration\x20object\x20id'},{'name':'location','shape':'String','meaning':'Arbitration\x20location\x20(industry/geography\x20routing\x20signal)'},{'name':'description','shape':'String','meaning':'Full\x20Arbitration\x20description\x20as\x20carried\x20on-chain\x20(input\x20creation\x20still\x20caps\x20at\x204000\x20UTF-8\x20chars)'},{'name':'fee','shape':'u64','meaning':'Dispute\x20fee\x20charged\x20by\x20the\x20Arbitration\x20(raw\x20on-chain\x20units)'},{'name':'voting_guard_count','shape':'u64','meaning':'Number\x20of\x20voting\x20guards\x20(0\x20=\x20open\x20to\x20everybody;\x20>0\x20=\x20guarded/weighted)'}]},{'name':'AllocationEvent','move_type':'::allocation::AllocationEvent','module':'allocation','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Allocation\x20run\x20completed\x20—\x20funds\x20left\x20the\x20Allocation\x20pool\x20as\x20a\x20Payment','trigger':'The\x20alloc\x20loop\x20—\x20when\x20a\x20matching\x20Allocator\x27s\x20guard\x20passes:\x20splits\x20the\x20balance\x20per\x20'+'sharing\x20mode\x20(Amount\x20/\x20Rate\x20‰\x20/\x20RateGross\x20‰\x20/\x20Surplus),\x20creates\x20a\x20Payment\x20(from_object\x20=\x20Allocation),\x20'+'then\x20emits\x20with\x20the\x20actually-distributed\x20amount.','side_effect':'Recipients\x20receive\x20CoinWrappers\x20referencing\x20the\x20new\x20Payment\x20—\x20they\x20must\x20unwrap\x20to\x20obtain\x20coins.\x20'+'The\x20Payment\x20is\x20also\x20pushed\x20onto\x20the\x20Allocation\x27s\x20payment\x20list.','params':[{'name':'object','shape':'address','meaning':'The\x20Allocation\x20object\x20that\x20distributed\x20the\x20funds'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20object\x20created\x20by\x20this\x20run\x20(the\x20on-chain\x20receipt)'},{'name':'guard','shape':'address','meaning':'The\x20guard\x20of\x20the\x20Allocator\x20that\x20authorized\x20this\x20distribution'},{'name':'amount','shape':'u64','meaning':'Amount\x20actually\x20distributed\x20(balance\x20before\x20−\x20balance\x20after)'}]},{'name':'TreasuryEvent','move_type':'::treasury::TreasuryEvent','module':'treasury','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Treasury\x20fund-flow\x20record\x20(withdraw\x20/\x20deposit\x20/\x20receive)\x20—\x20mirrors\x20on-chain\x20history','trigger':'3\x20sites:\x20withdraw\x20(balance\x20split\x20out\x20as\x20Payment,\x20from_object\x20=\x20Treasury),\x20'+'deposit\x20(coins\x20joined\x20in,\x20a\x20Payment\x20receipt\x20is\x20minted\x20for\x20the\x20depositor),\x20receive\x20'+'(a\x20CoinWrapper\x20from\x20a\x20Payment\x20is\x20received\x20into\x20the\x20treasury).\x20Each\x20emission\x20appends\x20a\x20Record\x20'+'to\x20the\x20treasury\x27s\x20on-chain\x20history\x20parent\x20table.','params':[{'name':'object','shape':'address','meaning':'The\x20Treasury\x20object'},{'name':'op','shape':'u8','meaning':'0\x20Withdraw\x20·\x201\x20Deposit\x20·\x202\x20Receive'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20receipt\x20minted\x20for\x20this\x20flow'},{'name':'amount','shape':'u64','meaning':'Flow\x20amount\x20(raw\x20on-chain\x20units\x20of\x20the\x20Treasury\x27s\x20token)'},{'name':'external_guard','shape':'Option<address>','meaning':'External\x20withdraw\x20guard\x20that\x20authorized\x20a\x20withdraw,\x20if\x20any'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id\x20(multi-branch\x20treasury\x20bookkeeping)'}]},{'name':'RewardClaimEvent','move_type':'::reward::RewardClaimEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20claimed\x20—\x20funds\x20paid\x20out\x20of\x20a\x20Reward\x20pool','trigger':'The\x20claim\x20path\x20—\x20after\x20guard+passport\x20validation:\x20appends\x20a\x20Record\x20to\x20the\x20recipient\x27s\x20'+'on-chain\x20record,\x20splits\x20the\x20balance,\x20emits,\x20then\x20transfers\x20the\x20coin\x20to\x20the\x20recipient.\x20'+'The\x20ONLY\x20realtime\x20trace\x20of\x20the\x20claim\x20outflow.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'guard','shape':'address','meaning':'The\x20reward\x20guard\x20that\x20authorized\x20this\x20claim'},{'name':'recipient','shape':'address','meaning':'Claim\x20recipient\x20(resolved\x20via\x20passport\x20when\x20required)'},{'name':'amount','shape':'u64','meaning':'This\x20claim\x27s\x20amount'},{'name':'total','shape':'u64','meaning':'Recipient\x27s\x20cumulative\x20claimed\x20total\x20on\x20this\x20pool'},{'name':'balance_left','shape':'u64','meaning':'Pool\x20balance\x20remaining\x20after\x20the\x20claim'},{'name':'store_from_id','shape':'Option<address>','meaning':'Passport-derived\x20store/branch\x20id,\x20present\x20only\x20when\x20the\x20guard\x20declares\x20the\x20stamp\x20slot;\x20slot-less\x20guards\x20record\x20none,\x20which\x20no\x20dedup\x20predicate\x20can\x20match'}]},{'name':'RewardFundEvent','move_type':'::reward::RewardFundEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20pool\x20inflow\x20—\x20funds\x20added\x20to\x20the\x20pool','trigger':'2\x20sites:\x20direct\x20coin\x20deposit\x20(from_payment\x20=\x20null)\x20and\x20received\x20payment\x20'+'(a\x20Payment\x27s\x20CoinWrapper\x20received\x20into\x20the\x20pool,\x20from_payment\x20=\x20that\x20Payment).','side_effect':'Claim\x20guards\x20whose\x20pool\x20ran\x20dry\x20become\x20satisfiable\x20again;\x20watchers\x20should\x20re-check\x20claim\x20'+'opportunities\x20against\x20the\x20new\x20balance.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'amount','shape':'u64','meaning':'Inflow\x20amount'},{'name':'balance','shape':'u64','meaning':'Pool\x20balance\x20after\x20the\x20inflow'},{'name':'from_payment','shape':'Option<address>','meaning':'The\x20Payment\x20that\x20funded\x20this\x20inflow\x20(null\x20for\x20direct\x20coin\x20adds)'}]},{'name':'NewPaymentEvent','move_type':'::payment::NewPaymentEvent','module':'payment','category':'fund_flow','consumers':['keeper','intent_radar'],'channel_note':'Deliberately\x20NOT\x20suggestion-bridged\x20(P2-4):\x20the\x20keeper\x20payment_unclaimed\x20state\x20scan\x20'+'owns\x20the\x20claimable-payment\x20reminder;\x20an\x20event\x20push\x20here\x20would\x20duplicate\x20it.','business_meaning':'A\x20Payment\x20was\x20created\x20—\x20the\x20universal\x20on-chain\x20receipt\x20of\x20WoWok\x20fund\x20flows','trigger':'The\x20`create`\x20function\x20—\x20the\x20ONLY\x20emission\x20point,\x20reached\x20by\x20treasury\x20withdraw/deposit,\x20'+'allocation\x20runs,\x20service\x20compensation\x20payouts,\x20and\x20direct\x20user\x20payments\x20alike.\x20'+'Emission\x20is\x20the\x20last\x20step\x20before\x20the\x20Payment\x20object\x20is\x20frozen\x20(immutable\x20receipt).','side_effect':'Every\x20recipient\x20in\x20`record`\x20received\x20a\x20frozen\x20CoinWrapper\x20that\x20references\x20this\x20Payment\x20—\x20'+'unwrap\x20converts\x20it\x20to\x20a\x20transferable\x20Coin.\x20info.for_object\x20/\x20info.for_guard\x20/\x20from_object\x20'+'are\x20registered\x20as\x20object-linker\x20affiliations,\x20so\x20the\x20payment\x20is\x20discoverable\x20via\x20global\x20'+'affiliation\x20tables\x20(onchain_affiliations_of_object).','params':[{'name':'object','shape':'address','meaning':'The\x20Payment\x20object\x20id\x20(the\x20receipt)'},{'name':'info.for_object','shape':'Option<address>','meaning':'The\x20business\x20object\x20this\x20payment\x20is\x20FOR\x20(order/demand/reward/…)\x20—\x20user-settable\x20routing\x20hint'},{'name':'info.for_guard','shape':'Option<address>','meaning':'The\x20Guard\x20governing\x20this\x20payment\x20—\x20user-settable,\x20links\x20the\x20payment\x20to\x20a\x20trust\x20rule'},{'name':'info.remark','shape':'String','meaning':'Free-form\x20on-chain\x20remark\x20(e.g.\x20invoice\x20number,\x20purpose)'},{'name':'info.index','shape':'u64','meaning':'Creator-local\x20index\x20(installment\x20sequence,\x20table\x20row,\x20…)'},{'name':'record','shape':'vector<{recipient,\x20amount}>','meaning':'Revenue\x20legs:\x20one\x20{recipient,\x20amount}\x20per\x20CoinWrapper\x20transferred'},{'name':'amount','shape':'u64','meaning':'Total\x20paid\x20across\x20all\x20legs\x20(sum\x20of\x20record\x20amounts)'},{'name':'from_object','shape':'Option<address>','meaning':'FUNDING-SOURCE\x20object\x20the\x20funds\x20LEFT\x20from\x20—\x20INTERNAL-ONLY\x20field\x20(set\x20only\x20inside\x20the\x20'+'protocol\x20package;\x20user\x20code\x20can\x20never\x20set\x20it).\x20Treasury\x20withdraw\x20⇒\x20the\x20Treasury;\x20'+'Allocation\x20run\x20⇒\x20the\x20Allocation;\x20Service\x20compensation\x20withdraw\x20⇒\x20the\x20Service.\x20'+'create()\x20registers\x20an\x20object_linker\x20affiliation\x20(from_object\x20→\x20payment)\x20so\x20the\x20'+'outflow\x20is\x20traceable\x20back\x20to\x20its\x20pool.\x20Null\x20for\x20direct\x20user-initiated\x20payments\x20'+'(no\x20on-chain\x20source\x20object).'}]},{'name':'RewardWithdrawEvent','move_type':'::reward::RewardWithdrawEvent','module':'reward','category':'fund_flow','consumers':['suggestion_bridge','intent_radar'],'business_meaning':'Reward\x20pool\x20non-claim\x20outflow\x20—\x20a\x20permission-gated\x20withdraw\x20moved\x20funds\x20out\x20(the\x20ONLY\x20non-claim\x20path\x20from\x20a\x20pool)','trigger':'2\x20sites,\x20both\x20permission-gated\x20and\x20built\x20on\x20the\x20treasury\x20Payment\x20flow\x20(from_object\x20=\x20the\x20Reward):\x20'+'withdraw\x20(a\x20CoinWrapper\x20sent\x20to\x20a\x20named\x20recipient)\x20and\x20withdraw-and-unwrap\x20(unwrapped\x20coin\x20to\x20the\x20'+'tx\x20sender).\x20Emission\x20happens\x20right\x20after\x20the\x20Payment\x20receipt\x20is\x20created.','side_effect':'The\x20pool\x20balance\x20drops;\x20the\x20created\x20Payment\x20is\x20the\x20on-chain\x20receipt.\x20Mirrors\x20RewardClaimEvent\x27s\x20'+'shape\x20(amount/balance_left)\x20so\x20a\x20pool\x20stays\x20fully\x20auditable\x20from\x20events\x20alone.','params':[{'name':'object','shape':'address','meaning':'The\x20Reward\x20pool\x20object'},{'name':'to','shape':'address','meaning':'The\x20CoinWrapper\x20recipient\x20(the\x20tx\x20sender\x20on\x20the\x20unwrapping\x20variant)'},{'name':'payment','shape':'address','meaning':'The\x20Payment\x20receipt\x20object\x20created\x20for\x20this\x20outflow'},{'name':'amount','shape':'u64','meaning':'Withdrawn\x20amount'},{'name':'balance_left','shape':'u64','meaning':'Pool\x20balance\x20remaining\x20after\x20the\x20withdraw'}]},{'name':'PermissionChangedEvent','move_type':'::permission::PermissionChangedEvent','module':'permission','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20rebinds\x20run\x20through\x20owner-gated\x20rebind\x20operations\x20whose\x20tool\x20'+'responses\x20echo\x20the\x20result\x20synchronously\x20to\x20the\x20actor;\x20the\x20radar\x20matches\x20audit/security\x20watch\x20'+'intents\x20(e.g.\x20alert\x20when\x20a\x20watched\x20object\x27s\x20trust\x20root\x20changes).','business_meaning':'A\x20host\x20object\x27s\x20permission\x20root\x20(trust\x20root)\x20was\x20rebound\x20—\x20the\x20old\x20root\x20object\x20was\x20replaced\x20by\x20a\x20new\x20one','trigger':'One\x20shared\x20struct\x20+\x20one\x20shared\x20emit\x20helper;\x20forwarded\x20by\x20EVERY\x20host\x20module\x27s\x20rebind\x20entrypoint\x20—\x20'+'machine,\x20service,\x20arbitration,\x20repository,\x20demand,\x20contact,\x20reward,\x20treasury\x20(8\x20host\x20types).\x20'+'The\x20rebind\x20asserts\x20the\x20caller\x20owns\x20the\x20OLD\x20permission\x20before\x20committing,\x20so\x20a\x20rebind\x20is\x20never\x20silent.','side_effect':'All\x20permission\x20checks\x20on\x20the\x20host\x20(admin\x20index,\x20owner\x20grants)\x20now\x20resolve\x20through\x20the\x20NEW\x20root.\x20'+'Watchers\x20of\x20an\x20object\x20should\x20re-read\x20its\x20permission\x20bindings;\x20a\x20rebind\x20by\x20an\x20unexpected\x20caller\x20'+'is\x20a\x20takeover\x20signal.','params':[{'name':'object','shape':'address','meaning':'The\x20host\x20object\x20whose\x20permission\x20root\x20was\x20rebound'},{'name':'old','shape':'address','meaning':'The\x20previous\x20Permission\x20(root)\x20object\x20address'},{'name':'new','shape':'address','meaning':'The\x20new\x20Permission\x20(root)\x20object\x20address'},{'name':'caller','shape':'address','meaning':'Transaction\x20sender\x20that\x20performed\x20the\x20rebind'},{'name':'time','shape':'u64','meaning':'Emission\x20timestamp\x20(ms)'}]},{'name':'RepositoryDataOverwriteEvent','move_type':'::repository::RepositoryDataOverwriteEvent','module':'repository','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20the\x20overwrite\x20is\x20executed\x20by\x20the\x20writer\x20whose\x20tool\x20response\x20echoes\x20the\x20'+'result\x20synchronously;\x20the\x20radar\x20matches\x20attestation/audit\x20watch\x20intents\x20(e.g.\x20alert\x20when\x20a\x20'+'review\x20or\x20evidence\x20record\x20is\x20replaced).','business_meaning':'An\x20existing\x20repository\x20(id,\x20key)\x20record\x20was\x20REPLACED\x20—\x20the\x20previous\x20attestation\x20was\x20destroyed\x20(fresh\x20inserts\x20never\x20emit)','trigger':'The\x20shared\x20repository\x20data-write\x20path\x20—\x20emitted\x20only\x20when\x20the\x20(id,\x20key)\x20row\x20already\x20exists,\x20'+'right\x20before\x20the\x20raw\x20value\x20is\x20overwritten.','side_effect':'Repository\x20data\x20holds\x20raw\x20bytes\x20with\x20no\x20author\x20field:\x20this\x20event\x20is\x20the\x20ONLY\x20reconciliation\x20'+'signal\x20for\x20the\x20replaced\x20attestation.\x20Indexers\x20should\x20diff\x20the\x20new\x20value\x20against\x20their\x20last-seen\x20copy.','params':[{'name':'object','shape':'address','meaning':'The\x20Repository\x20object'},{'name':'id','shape':'address','meaning':'The\x20record-owner\x20id\x20the\x20(id,\x20key)\x20row\x20lives\x20under'},{'name':'key','shape':'String','meaning':'The\x20record\x20key\x20that\x20was\x20overwritten'}]},{'name':'VoteEvictedEvent','move_type':'::registrar::VoteEvictedEvent','module':'registrar','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20radar-only:\x20reconciliation\x20bookkeeping\x20for\x20the\x20registrar\x27s\x20fixed-size\x20vote\x20ring\x20'+'buffer\x20—\x20no\x20business\x20decision\x20hangs\x20on\x20a\x20single\x20eviction.','business_meaning':'A\x20vote\x20record\x20was\x20dropped\x20by\x20the\x20registrar\x27s\x20vote\x20ring\x20buffer\x20(a\x20newer\x20vote\x20replaced\x20it)','trigger':'Inside\x20vote\x20handling\x20when\x20the\x20fixed-size\x20buffer\x20overwrites\x20an\x20older\x20record:\x20the\x20evicted\x20voter\x27s\x20'+'Resource\x20tag\x20cannot\x20be\x20removed\x20on-chain\x20(it\x20lives\x20on\x20a\x20Resource\x20this\x20module\x20does\x20not\x20own),\x20so\x20'+'the\x20event\x20lets\x20indexers\x20reconcile\x20the\x20registrar\x27s\x20votes\x20against\x20Resource\x20tags.','side_effect':'The\x20registrar\x27s\x20vote\x20table\x20and\x20the\x20evicted\x20voter\x27s\x20Resource\x20tag\x20now\x20disagree\x20—\x20re-query\x20both\x20'+'before\x20trusting\x20either\x20as\x20a\x20reputation\x20signal.','params':[{'name':'registrar','shape':'address','meaning':'The\x20Registrar\x20object\x20whose\x20vote\x20record\x20was\x20evicted'},{'name':'voted','shape':'address','meaning':'The\x20entity/resource\x20address\x20that\x20had\x20been\x20voted\x20on'},{'name':'who','shape':'address','meaning':'The\x20evicted\x20voter'}]}];export const EVENT_BY_NAME=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['name'],a]));export const EVENT_BY_MOVE_TYPE=new Map(EVENT_SEMANTIC_REGISTRY['map'](a=>[a['move_type'],a]));export function lookupEventMeaning(a){const b=String(a?.['type']??''),c=EVENT_BY_NAME['get'](b);if(c)return c['business_meaning'];const d=String(a?.['type_raw']??'');if(d)for(const f of EVENT_SEMANTIC_REGISTRY){if(d['includes'](f['move_type']))return f['business_meaning'];}return undefined;}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CommercialRole } from "../role/types.js";
|
|
2
|
+
import type { GamePhase } from "../participation/game-context.js";
|
|
3
|
+
export interface ScenarioDetectionRef {
|
|
4
|
+
anchor: string;
|
|
5
|
+
registry: string;
|
|
6
|
+
}
|
|
7
|
+
export interface GameScenario {
|
|
8
|
+
id: string;
|
|
9
|
+
attack_role: CommercialRole | "any";
|
|
10
|
+
victim_role: CommercialRole | "both";
|
|
11
|
+
move: string;
|
|
12
|
+
context_filter: {
|
|
13
|
+
phases: GamePhase[];
|
|
14
|
+
};
|
|
15
|
+
expected_detection: string;
|
|
16
|
+
detection_refs: ScenarioDetectionRef[];
|
|
17
|
+
observed_in: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const GAME_SCENARIOS: GameScenario[];
|
|
20
|
+
export declare function scenarioById(id: string): GameScenario | null;
|
|
21
|
+
export declare function counterpartyMoves(perspective: CommercialRole, phase: GamePhase): GameScenario[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const GAME_SCENARIOS=[{'id':'GS-REVIEW-DELAY','attack_role':'customer','victim_role':'merchant','move':'Walks\x20a\x20review\x20through\x20the\x20detour\x20path\x20instead\x20of\x20the\x20reviewed\x20node,\x20pushing\x20the\x20settlement\x20anchor\x20out\x20by\x20the\x20review\x20window\x20(14\x20days).','context_filter':{'phases':['in_flight','post']},'expected_detection':'Settlement/reward\x20windows\x20anchor\x20on\x20the\x20delivered\x20ENTRY\x20time,\x20never\x20a\x20drifting\x20current_time\x20—\x20detour\x20reviews\x20cannot\x20move\x20the\x20anchor.','detection_refs':[{'anchor':'TIME-ANCHOR-01','registry':'extensions/business-modules.ts'},{'anchor':'after_sales_window_anchored','registry':'extensions/business-modules.ts'}],'observed_in':'E-10/D-14'},{'id':'GS-SELF-CONFIRM','attack_role':'merchant','victim_role':'customer','move':'Self-confirms\x20delivery\x20(advances\x20a\x20delivered-class\x20node\x20reserved\x20to\x20the\x20buyer).','context_filter':{'phases':['in_flight']},'expected_detection':'delivered-class\x20nodes\x20are\x20order-holder\x20gated\x20(namedOperator\x20\x22\x22\x20resolves\x20to\x20the\x20order\x20holder\x20only)\x20—\x20a\x20merchant-side\x20confirm\x20aborts\x20at\x20the\x20chain\x20boundary.','detection_refs':[{'anchor':'namedOperator\x20\x27\x27\x20(empty)\x20=\x20order\x20holder','registry':'chain-semantics/object-graph.ts'}],'observed_in':'mainnet\x20abort\x207'},{'id':'GS-FAKE-RECEIPT','attack_role':'any','victim_role':'customer','move':'Forges\x20a\x20refund/receipt\x20proof\x20naming\x20someone\x20else\x27s\x20order\x20or\x20authorship.','context_filter':{'phases':['in_flight','dispute']},'expected_detection':'Guard\x20submissions\x20bind\x20proofs\x20to\x20the\x20paying\x20order\x20AND\x20the\x20owner\x27s\x20authorship\x20at\x20write\x20time\x20—\x20a\x20forged\x20receipt\x20is\x20rejected,\x20nothing\x20is\x20written.','detection_refs':[{'anchor':'proof-about==order\x20&&\x20proof-creator==owner','registry':'chain-semantics/object-graph.ts'}],'observed_in':'field-tested\x20rejection'},{'id':'GS-REFUND-REPLAY','attack_role':'any','victim_role':'both','move':'Replays\x20a\x20refund/claim\x20to\x20draw\x20the\x20escrow\x20twice.','context_filter':{'phases':['in_flight','post']},'expected_detection':'Protocol-owned\x20once\x20slots\x20(254/255)\x20arm\x20per\x20order/allocation\x20—\x20a\x20replay\x20aborts\x20on\x20the\x20already-spent\x20slot.','detection_refs':[{'anchor':'254/255\x20are\x20the\x20two\x20protocol-owned\x20once\x20slots','registry':'knowledge/allocation-ledger.ts'}],'observed_in':'mainnet\x20abort\x2016'},{'id':'GS-DUAL-DRAW','attack_role':'arbitrator','victim_role':'both','move':'Draws\x20the\x20refund\x20rail\x20AND\x20the\x20arbitration\x20indemnity\x20for\x20the\x20same\x20order\x20(double\x20remedy).','context_filter':{'phases':['dispute','post']},'expected_detection':'Dual-rail\x20separation:\x20the\x20escrow\x20allocator\x20never\x20reads\x20the\x20claim\x20marker\x20and\x20the\x20compensation\x20write\x20never\x20touches\x20escrow\x20—\x20template\x20convention\x20must\x20assert\x20claim-none\x20on\x20the\x20refund\x20guard\x20(audit\x20DUAL-RAIL-01).','detection_refs':[{'anchor':'A-3\x20dual\x20rail','registry':'chain-semantics/fund-flow.ts'},{'anchor':'after_sales_no_double_remedy','registry':'extensions/business-modules.ts'}],'observed_in':'A-3'},{'id':'GS-HOLD-GRAB','attack_role':'merchant','victim_role':'both','move':'Grabs\x20the\x20hold/lock\x20primitive\x20on\x20a\x20Progress\x20without\x20satisfying\x20its\x20guard.','context_filter':{'phases':['in_flight']},'expected_detection':'hold\x20semantics\x20are\x20registered\x20as\x20a\x20chain\x20finding\x20(A-6\x20family)\x20—\x20the\x20keeper/monitoring\x20surface\x20watches\x20for\x20guard-bypassing\x20holds.','detection_refs':[{'anchor':'\x22A-6\x22','registry':'chain-semantics/object-graph.ts'}],'observed_in':'A-6'},{'id':'GS-REFUND-RAIL-REMOVAL','attack_role':'merchant','victim_role':'customer','move':'Publishes\x20a\x20machine\x20with\x20the\x20refund\x20rail\x20removed\x20(zero\x20allocator\x20rows\x20/\x20no\x20refund\x20exit),\x20stranding\x20the\x20buyer\x27s\x20escrow.','context_filter':{'phases':['build']},'expected_detection':'Build-time\x20audits\x20block\x20it:\x20zero\x20allocator\x20rows\x20abort\x20materialization\x20(PLAN-ALLOC-01)\x20and\x20an\x20uncovered\x20terminal\x20has\x20no\x20fund\x20exit\x20(FUND-EXIT-01).','detection_refs':[{'anchor':'PLAN-ALLOC-01','registry':'composition/materialize.ts'},{'anchor':'FUND-EXIT-01','registry':'composition/compile.ts'}],'observed_in':'B-1/F-2'},{'id':'GS-INDEMNITY-HIJACK','attack_role':'arbitrator','victim_role':'customer','move':'Re-binds\x20the\x20compensation\x20claim\x20(claimed_by)\x20to\x20divert\x20the\x20indemnity\x20payout.','context_filter':{'phases':['dispute','post']},'expected_detection':'Compensation\x20claims\x20require\x20the\x20arbitration\x20whitelist\x20and\x20hit\x20the\x20permission-conflict\x20check\x20—\x20a\x20re-bind\x20aborts\x20(E33).','detection_refs':[{'anchor':'E33\x20conflict\x20check','registry':'chain-semantics/fund-flow.ts'}],'observed_in':'governance\x20review'},{'id':'GS-UPSTREAM-STALL','attack_role':'merchant','victim_role':'supplier','move':'Withholds\x20the\x20guard-gated\x20upstream\x20forward\x20that\x20releases\x20the\x20sub-order\x27s\x20share,\x20parking\x20the\x20supplier\x27s\x20payout\x20in\x20the\x20upstream\x20allocation\x20pool\x20indefinitely.','context_filter':{'phases':['in_flight']},'expected_detection':'allocation-advice\x27s\x20supplier\x20line\x20names\x20the\x20upstream\x20pool\x20as\x20context\x20and\x20routes\x20the\x20chase\x20through\x20the\x20upstream\x20order\x20(or\x20its\x20dispute\x20path)\x20—\x20never\x20a\x20silent\x20wait\x20past\x20the\x20after-sales\x20window.','detection_refs':[{'anchor':'firing\x20the\x20guard\x20is\x20the\x20upstream\x20merchant\x27s\x20move','registry':'participation/allocation-advice.ts'}],'observed_in':'G2'}];export function scenarioById(a){return GAME_SCENARIOS['find'](b=>b['id']===a)??null;}export function counterpartyMoves(a,b){if(a==='neutral'||a==='system')return[];return GAME_SCENARIOS['filter'](c=>c['context_filter']['phases']['includes'](b)&&(c['victim_role']===a||c['victim_role']==='both'&&isTransactionSide(a)));}function isTransactionSide(a){return a==='customer'||a==='merchant';}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import*as a189a from'fs';import*as a189b from'os';import*as a189c from'path';export const SKILLS_PACKAGE='@wowok/skills';export const SKILLS_INSTALL_COMMAND='npm\x20install\x20-g\x20@wowok/skills';export const SKILLS_DOCTOR_COMMAND='wowok-skills\x20doctor';export const SKILLS_REPAIR_COMMAND='wowok-skills\x20init\x20--force';export const COLD_START_SECONDS=0x14;export const SKILL_ROLES=['wowok-onboard','wowok-provider','wowok-order','wowok-supplier','wowok-collaborator','wowok-machine','wowok-arbitrator','wowok-messenger','wowok-market','wowok-governance','wowok-planner','wowok-auditor','wowok-output'];export const COMMON_GOALS=[{'goal':'Onboard\x20a\x20new\x20merchant\x20and\x20publish\x20a\x20commercial\x20service\x20end-to-end','skills':['wowok-onboard','wowok-provider'],'tools':['goal_operation','onchain_operations','query_toolkit']},{'goal':'Design\x20or\x20modify\x20a\x20Machine\x20workflow\x20(nodes,\x20forwards,\x20guards)','skills':['wowok-machine','wowok-auditor'],'tools':['onchain_operations','machineNode2file','guard2file']},{'goal':'Evaluate\x20or\x20buy\x20a\x20service\x20/\x20handle\x20an\x20in-order\x20customer\x20lifecycle','skills':['wowok-order'],'tools':['query_toolkit','onchain_operations','messenger_operation']},{'goal':'Fulfill\x20a\x20sub-order\x20as\x20a\x20supplier\x20and\x20collect\x20settlement','skills':['wowok-supplier','wowok-collaborator'],'tools':['watch_operation','workflow_operation','keeper_operation']},{'goal':'Operate\x20order\x20workflows\x20/\x20advance\x20progress\x20on\x20behalf\x20of\x20a\x20merchant','skills':['wowok-collaborator'],'tools':['workflow_operation','watch_operation','keeper_operation']},{'goal':'Handle\x20a\x20dispute\x20or\x20run\x20an\x20arbitration\x20service','skills':['wowok-arbitrator','wowok-messenger'],'tools':['evaluation_operation','onchain_operations','messenger_operation']},{'goal':'Govern\x20permissions,\x20treasury\x20funds\x20and\x20the\x20on-chain\x20profile\x20after\x20setup','skills':['wowok-governance'],'tools':['permission_operation','onchain_operations','query_toolkit']},{'goal':'Obtain\x20WOW\x20gas\x20/\x20payment\x20tokens\x20before\x20the\x20first\x20transaction','skills':['wowok-onboard'],'tools':['wowok_buildin_info','bridge_operation','account_operation']}];function candidateSkillRoots(a){const b=a189b['homedir'](),c=[a189c['join'](b,'.claude','skills'),a189c['join'](b,'.agents','skills'),a189c['join'](b,'.codex','skills'),a189c['join'](b,'.cursor','skills'),a189c['join'](b,'.codebuddy','skills'),a189c['join'](b,'.kilo','skills'),a189c['join'](b,'.roo','skills'),a189c['join'](b,'.cline','skills'),a189c['join'](b,'.copilot','skills'),a189c['join'](b,'.codeium','windsurf','skills'),a189a['existsSync'](a189c['join'](b,'.trae-cn','skills'))?a189c['join'](b,'.trae-cn','skills'):a189c['join'](b,'.trae','skills')],d=['.agents/skills','.claude/skills','.cursor/skills','.trae/skills','.codebuddy/skills','.roo/skills','.cline/skills','.kilo/skills','.github/skills']['map'](e=>a189c['resolve'](a,e));return[...new Set([...c,...d])];}function rootHasWowokSkill(a){let b;try{b=a189a['readdirSync'](a,{'withFileTypes':!![]});}catch{return![];}if(b['some'](c=>c['isFile']()&&c['name']==='.wowok-skills.json'))return!![];return b['some'](c=>c['isDirectory']()&&c['name']['startsWith']('wowok-'));}export function detectInstalledSkills(a=process['cwd']()){const b=[];for(const c of candidateSkillRoots(a)){try{if(rootHasWowokSkill(c))b['push'](c);}catch{}}return{'status':b['length']>0x0?'detected':'not_detected','detected_roots':b};}export function getGettingStarted(a=process['cwd']()){return{'skills':{'what':'WoWok\x20Skills\x20are\x20role-based\x20playbooks\x20(SKILL.md\x20files\x20installed\x20into\x20AI\x20clients)\x20that\x20sit\x20on\x20top\x20of\x20this\x20MCP\x20server.\x20The\x20MCP\x20exposes\x20the\x20tools;\x20the\x20skills\x20tell\x20an\x20agent\x20WHEN\x20and\x20in\x20what\x20ORDER\x20to\x20use\x20them\x20for\x20complex\x20goals\x20(onboarding,\x20buying,\x20fulfillment,\x20arbitration,\x20governance),\x20and\x20materially\x20reduce\x20failed\x20calls.\x20This\x20server\x20works\x20without\x20them;\x20with\x20them\x20loaded,\x20agents\x20start\x20from\x20structured\x20guidance\x20instead\x20of\x20discovering\x20sub-tools\x20by\x20trial\x20and\x20error.','package':SKILLS_PACKAGE,'recommended':!![],'install_command':SKILLS_INSTALL_COMMAND,'doctor_command':SKILLS_DOCTOR_COMMAND,'repair_command':SKILLS_REPAIR_COMMAND,'detection':detectInstalledSkills(a),'detection_note':'Best-effort\x20scan\x20of\x20standard\x20client\x20skill\x20roots\x20on\x20this\x20machine.\x20`wowok-skills\x20doctor`\x20is\x20authoritative\x20and\x20also\x20reports\x20MCP\x20registration\x20state\x20per\x20client.\x20If\x20detection\x20says\x20not_detected\x20but\x20skills\x20were\x20installed\x20for\x20a\x20client\x20with\x20a\x20non-standard\x20root,\x20trust\x20doctor.','roles':[...SKILL_ROLES]},'cold_start':{'ready_seconds':COLD_START_SECONDS,'note':'The\x20first\x20call\x20after\x20the\x20server\x20boots\x20can\x20take\x20around\x2020\x20seconds\x20while\x20@wowok/agent-mcp\x20is\x20bootstrapped\x20(especially\x20via\x20npx\x20on\x20Windows).\x20A\x20transport\x20timeout\x20on\x20the\x20FIRST\x20call\x20is\x20startup\x20latency,\x20not\x20a\x20broken\x20server\x20—\x20wait\x20and\x20retry;\x20subsequent\x20calls\x20are\x20fast.\x20Never\x20interpret\x20a\x20delayed\x20first\x20response\x20as\x20a\x20failed\x20on-chain\x20transaction.'},'common_goals':COMMON_GOALS['map'](b=>({...b,'skills':[...b['skills']],'tools':[...b['tools']]})),'first_calls':['wowok_buildin_info\x20info=\x27getting\x20started\x27\x20—\x20this\x20orientation','wowok_buildin_info\x20info=\x27current\x20network\x27\x20—\x20which\x20chain\x20(mainnet/testnet)\x20the\x20SDK\x20defaults\x20to','wowok_buildin_info\x20info=\x27funding\x20guidance\x27\x20—\x20testnet\x20faucet\x20/\x20mainnet\x20bridge\x20/\x20airdrop','wowok_buildin_info\x20info=\x27upgrade_check\x27\x20—\x20whether\x20the\x20MCP\x20server\x20and\x20SDK\x20are\x20current','schema_query\x20action=\x27list\x27\x20—\x20enumerate\x20every\x20sub-tool\x20and\x20fetch\x20its\x20input\x20schema']};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const OWNER_RECEIVE_COGNITION='owner_receive\x20extracts\x20objects\x20RECEIVED\x20via\x20transfer\x20(Receiving<CoinWrapper<K>>\x20with\x20ANY\x20token\x20K,\x20'+'or\x20any\x20K:key+store\x20object\x20such\x20as\x20an\x20NFT)\x20and\x20sends\x20them\x20to\x20the\x20Permission\x20owner\x20—\x20it\x20never\x20touches\x20the\x20'+'object\x27s\x20balance\x20field.\x20The\x20balance\x20field\x27s\x20only\x20exits\x20are:\x20Reward\x20→\x20guard-gated\x20claim;\x20Treasury\x20→\x20'+'permission-gated\x20withdraw\x20/\x20guard-gated\x20external_withdraw.\x20receive(154)\x20is\x20what\x20joins\x20a\x20received\x20payment\x20'+'INTO\x20the\x20balance.';export const GUARD_BINDING_REGISTRY=[{'id':'reward.recipient.guard_identifier','object':'Reward','slot':'RewardGuard.recipient\x20=\x20Recipient::GuardIdentifier(identifier)','preset_kind':'recipient','submission_type':'address','asserted_at':'reward.move\x20L102-104\x20(is_identifier_address)','consumed_at':'reward.move\x20L154-156\x20(de_address\x20→\x20claim\x20payee)','neutral':'The\x20claim\x20payee\x20is\x20resolved\x20from\x20the\x20claimer\x27s\x20submission\x20for\x20this\x20identifier.','creator':'Design\x20lever:\x20dynamic\x20payee\x20—\x20the\x20guard\x20decides\x20who\x20gets\x20paid\x20(e.g.\x20reimbursement\x20to\x20the\x20address\x20the\x20'+'guard\x20derives,\x20proxy\x20claims).\x20Alternative\x20presets:\x20Entity\x20(fixed\x20payee)\x20or\x20Signer\x20(payer\x20=\x20the\x20tx\x20sender\x20who\x20passed\x20the\x20guard).','user':'Who\x20receives\x20the\x20reward\x20is\x20determined\x20by\x20the\x20submitted\x20address\x20for\x20this\x20slot\x20—\x20not\x20necessarily\x20you,\x20even\x20if\x20you\x20triggered\x20the\x20claim.','risk_hooks':['R-R-2-01']},{'id':'reward.amount.guard_u64_identifier','object':'Reward','slot':'RewardGuard.amount\x20=\x20Amount::GuardU64Identifier(identifier)','preset_kind':'amount','submission_type':'u64','asserted_at':'reward.move\x20L107-113\x20(submission\x20value\x20type\x20must\x20be\x20u64)','consumed_at':'reward.move\x20L165-168\x20(de_u64\x20→\x20claim\x20amount;\x20L174\x20asserts\x20amount\x20≤\x20balance)','neutral':'The\x20claim\x20amount\x20is\x20resolved\x20from\x20the\x20claimer\x27s\x20submission\x20for\x20this\x20identifier.','creator':'Design\x20lever:\x20credential-based\x20dynamic\x20amounts\x20(marketing:\x20submit\x20receipt\x20→\x20get\x20proportional\x20cashback;\x20'+'fund\x20recovery:\x20owner\x20escape\x20hatch\x20submits\x20the\x20FULL\x20remaining\x20balance\x20to\x20recover\x20100%).\x20'+'Alternative\x20preset:\x20Fixed(u64).','user':'You\x20claim\x20exactly\x20what\x20you\x20submit\x20(bounded\x20by\x20the\x20reward\x20balance)\x20—\x20check\x20whether\x20the\x20guard\x20validates\x20your\x20submitted\x20amount\x20against\x20other\x20evidence.','risk_hooks':['R-R-7-01']},{'id':'reward.expiration_time','object':'Reward','slot':'RewardGuard.expiration_time:\x20Option<u64>','preset_kind':'deadline','submission_type':'any','consumed_at':'reward.move\x20L147-150\x20(claim\x20asserts\x20clock\x20≤\x20expiration_time),\x20guard_add\x20L247-249','neutral':'Time\x20window\x20of\x20the\x20guard:\x20after\x20it\x20elapses\x20the\x20guard\x20no\x20longer\x20opens\x20(claim\x20aborts\x20E_GUARD_EXPIRED).','creator':'Dual\x20meaning\x20by\x20design:\x20for\x20MARKETING\x20guards\x20it\x20is\x20the\x20campaign\x20deadline;\x20for\x20an\x20OWNER\x20ESCAPE\x20guard\x20'+'(recipient=Signer,\x20amount=GuardU64Identifier)\x20it\x20is\x20the\x20FUND\x20LOCK\x20PERIOD\x20—\x20set\x20it\x20in\x20the\x20future\x20(e.g.\x2030\x20days)\x20'+'and\x20after\x20expiry\x20you\x20reclaim\x20the\x20residual\x20balance\x20by\x20submitting\x20the\x20full\x20amount\x20(R-R-7-01).','user':'This\x20is\x20your\x20claim\x20deadline\x20—\x20after\x20expiration_time\x20the\x20guard\x20cannot\x20be\x20claimed\x20and\x20is\x20removed\x20by\x20guard_remove_expired.','risk_hooks':['R-R-4-01']},{'id':'reward.store_from_id','object':'Reward','slot':'RewardGuard.store_from_id:\x20Option<u8>','preset_kind':'source','submission_type':'address','asserted_at':'reward.move\x20L36-38\x20/\x20reward.ts\x20schema\x20(address-compatible\x20identifier)','consumed_at':'reward.move\x20L175-178\x20(de_address_compatible\x20→\x20Record.store_from_id;\x20an\x20absent\x20slot\x20persists\x20none,\x20which\x20matches\x20no\x20store_from_id\x20predicate)','neutral':'Each\x20claim\x20record\x20is\x20tagged\x20with\x20an\x20origin\x20object\x20address\x20submitted\x20at\x20claim\x20time.','creator':'Audit\x20lever:\x20tie\x20every\x20payout\x20to\x20its\x20campaign/repo/order\x20source\x20—\x20the\x20Record\x20table\x20then\x20answers\x20\x27what\x20did\x20this\x20campaign\x20actually\x20pay\x20out\x27.','user':'Your\x20claim\x20is\x20permanently\x20tagged\x20with\x20the\x20source\x20you\x20submitted\x20—\x20use\x20it\x20to\x20prove\x20your\x20payout\x20came\x20from\x20a\x20specific\x20campaign.'},{'id':'allocation.who.guard_identifier','object':'Allocation','slot':'Sharing.who\x20=\x20Recipient::GuardIdentifier(identifier)','preset_kind':'recipient','submission_type':'address','asserted_at':'allocation.move\x20L150-151\x20(is_identifier_address)','consumed_at':'allocation.move\x20L232-233\x20(de_address\x20→\x20payout\x20recipient)','neutral':'The\x20revenue-split\x20payee\x20is\x20resolved\x20from\x20the\x20alloc\x20caller\x27s\x20submission.','creator':'Design\x20lever:\x20dynamic\x20split\x20counterparties\x20—\x20e.g.\x20the\x20guard\x20derives\x20\x27the\x20order\x27s\x20actual\x20supplier\x27\x20from\x20evidence.\x20'+'Alternatives:\x20Entity\x20(fixed\x20payee)\x20or\x20Signer\x20(payer\x20=\x20whoever\x20executes\x20the\x20guard-gated\x20alloc).','user':'The\x20split\x20payee\x20comes\x20from\x20the\x20submission\x20resolved\x20at\x20alloc\x20time\x20—\x20verify\x20the\x20guard\x20logic\x20to\x20know\x20who\x20it\x20resolves\x20to.'},{'id':'allocation.mode_and_sharing','object':'Allocation','slot':'Sharing\x20{\x20mode:\x20Amount|Rate|Surplus|RateGross,\x20sharing:\x20u64\x20}','preset_kind':'amount','submission_type':'u64','asserted_at':'allocation.move\x20L224-256\x20(rate\x20invariants:\x20NET\x20Rate\x20and\x20RateGross\x20share\x20one\x20total_rate\x20counter;\x20without\x20Surplus\x20the\x20rates\x20must\x20sum\x20to\x20exactly\x2010000;\x20a\x20pure-RateGross\x20plan\x20also\x20caps\x20fix\x20+\x20rates\x20x\x20max)','consumed_at':'allocation.move\x20L280-405\x20(alloc:\x20Amount\x20splits\x20a\x20fixed\x20value\x20/\x20Rate\x20computes\x20basis\x20points\x20of\x20pool-fix\x20/\x20RateGross\x20computes\x20basis\x20points\x20of\x20the\x20full\x20pool\x20or\x20the\x20max\x20cap\x20/\x20Surplus\x20takes\x20the\x20remainder)','neutral':'How\x20much\x20each\x20sharing\x20entry\x20receives\x20from\x20an\x20allocated\x20payment.','creator':'Design\x20lever:\x20fixed\x20amounts\x20(Amount),\x20proportional\x20splits\x20on\x20the\x20net\x20pool\x20(Rate,\x20basis\x20points\x20over\x20pool-fix,\x20must\x20complete\x2010000\x20unless\x20a\x20Surplus\x20remainder\x20exists),\x20'+'proportional\x20splits\x20on\x20the\x20gross\x20pool\x20(RateGross,\x20basis\x20points\x20over\x20the\x20full\x20pool\x20or\x20max\x20cap\x20—\x20expresses\x20\x27fixed\x20fee\x20+\x20commission\x20on\x20the\x20order\x20total\x27),\x20'+'or\x20residual\x20beneficiary\x20(Surplus\x20—\x20exactly\x20one,\x20takes\x20what\x20is\x20left).','user':'Your\x20Rate/RateGross\x20sharing\x20is\x20in\x20basis\x20points\x20(3000\x20=\x2030%);\x20a\x20Surplus\x20entry\x20receives\x20whatever\x20the\x20other\x20entries\x20did\x20not\x20consume.'},{'id':'demand.service_identifier','object':'Demand','slot':'ServiceGuard.service_identifier:\x20Option<u8>','preset_kind':'service','submission_type':'address','consumed_at':'demand.move\x20L132-133\x20(de_address\x20→\x20the\x20service\x20being\x20presented)','neutral':'Which\x20service\x20a\x20presenter\x20is\x20presenting\x20for\x20is\x20resolved\x20from\x20their\x20passport\x20submission.','creator':'Design\x20lever:\x20qualification-gated\x20presentation\x20—\x20only\x20guards\x20that\x20resolve\x20to\x20approved\x20services\x20let\x20suppliers\x20present\x20'+'(e.g.\x20whitelist,\x20passport,\x20or\x20proof-of-capability\x20guards).','user':'You\x20may\x20only\x20present\x20the\x20service\x20your\x20submission\x20resolves\x20to\x20—\x20the\x20guard\x20defines\x20which\x20services\x20you\x20are\x20eligible\x20to\x20present.'},{'id':'treasury.deposit.identifier','object':'Treasury','slot':'AmountFromDepositGuard.identifier:\x20Option<u8>','preset_kind':'amount','submission_type':'number','asserted_at':'treasury.move\x20L138-141\x20(submission\x20value\x20type\x20must\x20be\x20a\x20number)','consumed_at':'treasury.move\x20L371-385\x20(de_number\x20→\x20deposit\x20amount;\x20excess\x20is\x20refunded\x20to\x20the\x20depositor)','neutral':'The\x20amount\x20actually\x20deposited\x20is\x20resolved\x20from\x20the\x20depositor\x27s\x20submission.','creator':'Design\x20lever:\x20guard-driven\x20external\x20inflow\x20—\x20outside\x20parties\x20deposit\x20against\x20a\x20guard\x20(e.g.\x20invoice-backed\x20payment:\x20'+'the\x20guard\x20validates\x20the\x20invoice,\x20the\x20submission\x20states\x20the\x20amount).','user':'You\x20deposit\x20the\x20amount\x20you\x20submit;\x20anything\x20beyond\x20it\x20is\x20transferred\x20back\x20to\x20you\x20in\x20the\x20same\x20call.'},{'id':'treasury.withdraw.identifier','object':'Treasury','slot':'AmountFromWithdrawGuard.identifier:\x20u8','preset_kind':'amount','submission_type':'number','consumed_at':'treasury.move\x20L409-410\x20(de_number\x20→\x20withdraw\x20amount,\x20asserted\x20≤\x20balance)','neutral':'The\x20amount\x20withdrawn\x20by\x20an\x20outside\x20party\x20is\x20resolved\x20from\x20their\x20submission.','creator':'Design\x20lever:\x20guard-driven\x20external\x20outflow\x20—\x20NOTE\x20this\x20is\x20a\x20PAYMENT\x20AUTHORIZATION:\x20whoever\x20satisfies\x20the\x20guard\x20can\x20'+'withdraw\x20up\x20to\x20the\x20balance.\x20Treat\x20the\x20guard\x20design\x20as\x20the\x20spending\x20boundary.','user':'You\x20receive\x20the\x20amount\x20you\x20submit\x20(bounded\x20by\x20the\x20treasury\x20balance).'},{'id':'treasury.store_from_id','object':'Treasury','slot':'AmountFrom{Deposit,Withdraw}Guard.store_from_id:\x20Option<u8>','preset_kind':'source','submission_type':'address','asserted_at':'treasury.move\x20L143-145\x20(is_identifier_address_compatible)','consumed_at':'treasury.move\x20L367-369\x20/\x20L412-414\x20(de_address_compatible\x20→\x20Record.store_from_id)','neutral':'Each\x20external\x20deposit/withdraw\x20record\x20is\x20tagged\x20with\x20a\x20submitted\x20origin\x20address.','creator':'Audit\x20lever:\x20reconcile\x20external\x20flows\x20against\x20their\x20origin\x20(invoice,\x20order,\x20campaign).','user':'Your\x20flow\x20is\x20permanently\x20tagged\x20with\x20the\x20source\x20you\x20submitted.'},{'id':'repository.id_from_submission','object':'Repository','slot':'PolicyGuard.id_from_submission:\x20Option<u8>','preset_kind':'row_key','submission_type':'address','asserted_at':'repository.move\x20L90-92\x20(is_identifier_address_compatible)','consumed_at':'repository.move\x20L346/L393\x20(submission_get\x20→\x20table\x20row\x20identity)','neutral':'Which\x20table\x20row\x20a\x20guarded\x20write\x20targets\x20is\x20resolved\x20from\x20the\x20writer\x27s\x20submission.','creator':'Design\x20lever:\x20dynamic\x20rows\x20—\x20or\x20pin\x20the\x20row\x20statically\x20via\x20PolicyRule.id_from\x20(which\x20then\x20takes\x20priority\x20over\x20this\x20slot).','user':'Your\x20write\x20lands\x20on\x20the\x20row\x20your\x20submitted\x20address\x20identifies.'},{'id':'repository.data_from_submission','object':'Repository','slot':'PolicyGuard.data_from_submission:\x20Option<u8>','preset_kind':'row_data','submission_type':'any','asserted_at':'repository.move\x20L93-96\x20(has_identifier\x20—\x20ANY\x20value\x20type\x20is\x20supported)','consumed_at':'repository.move\x20L350/L361/L215\x20(submission_get\x20→\x20the\x20value\x20written)','neutral':'The\x20value\x20written\x20into\x20the\x20row\x20IS\x20the\x20writer\x27s\x20submission\x20(any\x20type).','creator':'Design\x20lever:\x20the\x20guard\x20itself\x20becomes\x20the\x20data\x20format\x20—\x20reviews,\x20scores,\x20attestations\x20written\x20by\x20qualified\x20parties.\x20'+'The\x20write\x20policy\x27s\x20value_type\x20constrains\x20what\x20is\x20storable.','user':'What\x20you\x20submit\x20is\x20what\x20gets\x20stored\x20—\x20the\x20guard\x20decides\x20whether\x20your\x20data\x20qualifies,\x20not\x20the\x20object.'},{'id':'arbitration.vote_weight.guard_identifier','object':'Arbitration','slot':'VotingGuard.vote_weight\x20=\x20VoteValue::GuardIdentifier(identifier)','preset_kind':'vote_weight','submission_type':'number','asserted_at':'arbitration.move\x20L125-126\x20(submission\x20value\x20type\x20must\x20be\x20a\x20number)','consumed_at':'arbitration.move\x20L288-289\x20(de_number\x20→\x20ballot\x20weight)','neutral':'Each\x20voter\x27s\x20ballot\x20weight\x20is\x20resolved\x20from\x20their\x20own\x20submission.','creator':'Design\x20lever:\x20stake/role-weighted\x20voting\x20—\x20the\x20guard\x20derives\x20the\x20weight\x20(e.g.\x20token-balance\x20tier,\x20credential\x20level).\x20'+'Alternative\x20preset:\x20FixedValue(u32)\x20for\x20flat-weight\x20open\x20voting\x20(an\x20EMPTY\x20voting_guard\x20is\x20NOT\x20open\x20voting\x20—\x20plain\x20votes\x20then\x20hard-require\x20the\x20vote\x20permission\x20358,\x20admin-only\x20by\x20default,\x20and\x20disputes\x20dead-lock;\x20R-ARB-VOTE-LOCK,\x20crs9-F-36).','user':'The\x20number\x20you\x20submit\x20IS\x20your\x20vote\x27s\x20weight\x20—\x20the\x20guard\x20defines\x20what\x20qualifies\x20you\x20to\x20claim\x20that\x20weight.'},{'id':'arbitration.usage_guard','object':'Arbitration','slot':'usage_guard:\x20Option<address>','preset_kind':'evidence','submission_type':'any','consumed_at':'arbitration.move\x20L324/L330-331\x20(checked\x20when\x20dispute\x20filing\x20reaches\x20the\x20package-internal\x20channels\x20dispute_for_service\x20L323-326\x20/\x20dispute_for_service_with_passport\x20L328-335,\x20which\x20are\x20only\x20reachable\x20via\x20service::dispute_v2\x20/\x20dispute_v2_with_passport):\x20the\x20no-passport\x20channel\x20requires\x20the\x20usage_guard\x20to\x20be\x20None;\x20the\x20passport\x20channel\x20verifies\x20it\x20in\x20the\x20same\x20transaction','neutral':'Who\x20may\x20OPEN\x20a\x20dispute\x20at\x20this\x20arbitration\x20—\x20disputants\x20must\x20satisfy\x20this\x20guard.','creator':'Design\x20lever:\x20qualification\x20gate\x20for\x20disputants\x20(reputation/kyc/holding\x20guards)\x20—\x20keeps\x20frivolous\x20disputes\x20out.\x20'+'Set\x20to\x20None\x20for\x20open\x20access.','user':'To\x20open\x20a\x20dispute\x20at\x20this\x20arbitration\x20you\x20must\x20pass\x20its\x20usage_guard;\x20without\x20a\x20passport\x20the\x20arbitration\x20refuses\x20disputes\x20outright.'},{'id':'machine.forward.retained_submission','object':'MachineForward','slot':'ForwardGuard.retained_submission:\x20vector<u8>','preset_kind':'evidence','submission_type':'any','asserted_at':'machine.move\x20L80-81\x20(has_submissions\x20—\x20every\x20id\x20must\x20be\x20a\x20submission\x20slot\x20of\x20the\x20guard)','consumed_at':'progress.move\x20L471-474\x20(submissions_get\x20→\x20values\x20stored\x20into\x20the\x20session\x20history)','neutral':'Progressing\x20along\x20this\x20forward\x20REQUIRES\x20submitting\x20these\x20guard\x20slots;\x20the\x20submitted\x20values\x20are\x20persisted\x20into\x20the\x20workflow\x20session\x20history.','creator':'Design\x20lever:\x20evidence-carrying\x20workflow\x20steps\x20—\x20the\x20step\x20cannot\x20advance\x20without\x20the\x20proof,\x20and\x20the\x20proof\x20is\x20'+'permanently\x20recorded\x20in\x20the\x20session\x20(auditable\x20trail,\x20usable\x20later\x20by\x20downstream\x20guards/arb).','user':'You\x20cannot\x20advance\x20this\x20step\x20without\x20submitting\x20the\x20required\x20evidence\x20—\x20and\x20what\x20you\x20submit\x20becomes\x20part\x20of\x20the\x20on-chain\x20record.'}];export const GUARD_BINDINGS_VERSION='1.0.0';export function getGuardBindingsByObject(a){return GUARD_BINDING_REGISTRY['filter'](c=>c['object']===a);}export function getGuardBinding(a){return GUARD_BINDING_REGISTRY['find'](c=>c['id']===a);}export function summarizeGuardBinding(a){return'['+a['object']+']\x20'+a['slot']+'\x20—\x20creator:\x20'+a['creator']['split']('\x20—\x20')[0x0]+'\x20|\x20user:\x20'+a['user'];}
|
|
1
|
+
export const OWNER_RECEIVE_COGNITION='owner_receive\x20extracts\x20objects\x20RECEIVED\x20via\x20transfer\x20(Receiving<CoinWrapper<K>>\x20with\x20ANY\x20token\x20K,\x20'+'or\x20any\x20K:key+store\x20object\x20such\x20as\x20an\x20NFT)\x20and\x20sends\x20them\x20to\x20the\x20Permission\x20owner\x20—\x20it\x20never\x20touches\x20the\x20'+'object\x27s\x20balance\x20field.\x20The\x20balance\x20field\x27s\x20only\x20exits\x20are:\x20Reward\x20→\x20guard-gated\x20claim;\x20Treasury\x20→\x20'+'permission-gated\x20withdraw\x20/\x20guard-gated\x20external_withdraw.\x20receive(154)\x20is\x20what\x20joins\x20a\x20received\x20payment\x20'+'INTO\x20the\x20balance.';export const GUARD_BINDING_REGISTRY=[{'id':'reward.recipient.guard_identifier','object':'Reward','slot':'RewardGuard.recipient\x20=\x20Recipient::GuardIdentifier(identifier)','preset_kind':'recipient','submission_type':'address','asserted_at':'reward.move\x20L102-104\x20(is_identifier_address)','consumed_at':'reward.move\x20L154-156\x20(de_address\x20→\x20claim\x20payee)','neutral':'The\x20claim\x20payee\x20is\x20resolved\x20from\x20the\x20claimer\x27s\x20submission\x20for\x20this\x20identifier.','creator':'Design\x20lever:\x20dynamic\x20payee\x20—\x20the\x20guard\x20decides\x20who\x20gets\x20paid\x20(e.g.\x20reimbursement\x20to\x20the\x20address\x20the\x20'+'guard\x20derives,\x20proxy\x20claims).\x20Alternative\x20presets:\x20Entity\x20(fixed\x20payee)\x20or\x20Signer\x20(payer\x20=\x20the\x20tx\x20sender\x20who\x20passed\x20the\x20guard).','user':'Who\x20receives\x20the\x20reward\x20is\x20determined\x20by\x20the\x20submitted\x20address\x20for\x20this\x20slot\x20—\x20not\x20necessarily\x20you,\x20even\x20if\x20you\x20triggered\x20the\x20claim.','risk_hooks':['R-R-2-01']},{'id':'reward.amount.guard_u64_identifier','object':'Reward','slot':'RewardGuard.amount\x20=\x20Amount::GuardU64Identifier(identifier)','preset_kind':'amount','submission_type':'u64','asserted_at':'reward.move\x20L107-113\x20(submission\x20value\x20type\x20must\x20be\x20u64)','consumed_at':'reward.move\x20L165-168\x20(de_u64\x20→\x20claim\x20amount;\x20L174\x20asserts\x20amount\x20≤\x20balance)','neutral':'The\x20claim\x20amount\x20is\x20resolved\x20from\x20the\x20claimer\x27s\x20submission\x20for\x20this\x20identifier.','creator':'Design\x20lever:\x20credential-based\x20dynamic\x20amounts\x20(marketing:\x20submit\x20receipt\x20→\x20get\x20proportional\x20cashback;\x20'+'fund\x20recovery:\x20owner\x20escape\x20hatch\x20submits\x20the\x20FULL\x20remaining\x20balance\x20to\x20recover\x20100%).\x20'+'Alternative\x20preset:\x20Fixed(u64).','user':'You\x20claim\x20exactly\x20what\x20you\x20submit\x20(bounded\x20by\x20the\x20reward\x20balance)\x20—\x20check\x20whether\x20the\x20guard\x20validates\x20your\x20submitted\x20amount\x20against\x20other\x20evidence.','risk_hooks':['R-R-7-01']},{'id':'reward.expiration_time','object':'Reward','slot':'RewardGuard.expiration_time:\x20Option<u64>','preset_kind':'deadline','submission_type':'any','consumed_at':'reward.move\x20L147-150\x20(claim\x20asserts\x20clock\x20≤\x20expiration_time),\x20guard_add\x20L247-249','neutral':'Time\x20window\x20of\x20the\x20guard:\x20after\x20it\x20elapses\x20the\x20guard\x20no\x20longer\x20opens\x20(claim\x20aborts\x20E_GUARD_EXPIRED).','creator':'Dual\x20meaning\x20by\x20design:\x20for\x20MARKETING\x20guards\x20it\x20is\x20the\x20campaign\x20deadline;\x20for\x20an\x20OWNER\x20ESCAPE\x20guard\x20'+'(recipient=Signer,\x20amount=GuardU64Identifier)\x20it\x20is\x20the\x20FUND\x20LOCK\x20PERIOD\x20—\x20set\x20it\x20in\x20the\x20future\x20(e.g.\x2030\x20days)\x20'+'and\x20after\x20expiry\x20you\x20reclaim\x20the\x20residual\x20balance\x20by\x20submitting\x20the\x20full\x20amount\x20(R-R-7-01).','user':'This\x20is\x20your\x20claim\x20deadline\x20—\x20after\x20expiration_time\x20the\x20guard\x20cannot\x20be\x20claimed\x20and\x20is\x20swept\x20away\x20by\x20the\x20owner\x27s\x20expired-guard\x20cleanup.','risk_hooks':['R-R-4-01']},{'id':'reward.store_from_id','object':'Reward','slot':'RewardGuard.store_from_id:\x20Option<u8>','preset_kind':'source','submission_type':'address','asserted_at':'reward.move\x20L36-38\x20/\x20reward.ts\x20schema\x20(address-compatible\x20identifier)','consumed_at':'reward.move\x20L175-178\x20(de_address_compatible\x20→\x20Record.store_from_id;\x20an\x20absent\x20slot\x20persists\x20none,\x20which\x20matches\x20no\x20store_from_id\x20predicate)','neutral':'Each\x20claim\x20record\x20is\x20tagged\x20with\x20an\x20origin\x20object\x20address\x20submitted\x20at\x20claim\x20time.','creator':'Audit\x20lever:\x20tie\x20every\x20payout\x20to\x20its\x20campaign/repo/order\x20source\x20—\x20the\x20Record\x20table\x20then\x20answers\x20\x27what\x20did\x20this\x20campaign\x20actually\x20pay\x20out\x27.','user':'Your\x20claim\x20is\x20permanently\x20tagged\x20with\x20the\x20source\x20you\x20submitted\x20—\x20use\x20it\x20to\x20prove\x20your\x20payout\x20came\x20from\x20a\x20specific\x20campaign.'},{'id':'allocation.who.guard_identifier','object':'Allocation','slot':'Sharing.who\x20=\x20Recipient::GuardIdentifier(identifier)','preset_kind':'recipient','submission_type':'address','asserted_at':'allocation.move\x20L150-151\x20(is_identifier_address)','consumed_at':'allocation.move\x20L232-233\x20(de_address\x20→\x20payout\x20recipient)','neutral':'The\x20revenue-split\x20payee\x20is\x20resolved\x20from\x20the\x20alloc\x20caller\x27s\x20submission.','creator':'Design\x20lever:\x20dynamic\x20split\x20counterparties\x20—\x20e.g.\x20the\x20guard\x20derives\x20\x27the\x20order\x27s\x20actual\x20supplier\x27\x20from\x20evidence.\x20'+'Alternatives:\x20Entity\x20(fixed\x20payee)\x20or\x20Signer\x20(payer\x20=\x20whoever\x20executes\x20the\x20guard-gated\x20alloc).','user':'The\x20split\x20payee\x20comes\x20from\x20the\x20submission\x20resolved\x20at\x20alloc\x20time\x20—\x20verify\x20the\x20guard\x20logic\x20to\x20know\x20who\x20it\x20resolves\x20to.'},{'id':'allocation.mode_and_sharing','object':'Allocation','slot':'Sharing\x20{\x20mode:\x20Amount|Rate|Surplus|RateGross,\x20sharing:\x20u64\x20}','preset_kind':'amount','submission_type':'u64','asserted_at':'allocation.move\x20L224-256\x20(rate\x20invariants:\x20NET\x20Rate\x20and\x20RateGross\x20share\x20one\x20total_rate\x20counter;\x20without\x20Surplus\x20the\x20rates\x20must\x20sum\x20to\x20exactly\x2010000;\x20a\x20pure-RateGross\x20plan\x20also\x20caps\x20fix\x20+\x20rates\x20x\x20max)','consumed_at':'allocation.move\x20L280-405\x20(alloc:\x20Amount\x20splits\x20a\x20fixed\x20value\x20/\x20Rate\x20computes\x20basis\x20points\x20of\x20pool-fix\x20/\x20RateGross\x20computes\x20basis\x20points\x20of\x20the\x20full\x20pool\x20or\x20the\x20max\x20cap\x20/\x20Surplus\x20takes\x20the\x20remainder)','neutral':'How\x20much\x20each\x20sharing\x20entry\x20receives\x20from\x20an\x20allocated\x20payment.','creator':'Design\x20lever:\x20fixed\x20amounts\x20(Amount),\x20proportional\x20splits\x20on\x20the\x20net\x20pool\x20(Rate,\x20basis\x20points\x20over\x20pool-fix,\x20must\x20complete\x2010000\x20unless\x20a\x20Surplus\x20remainder\x20exists),\x20'+'proportional\x20splits\x20on\x20the\x20gross\x20pool\x20(RateGross,\x20basis\x20points\x20over\x20the\x20full\x20pool\x20or\x20max\x20cap\x20—\x20expresses\x20\x27fixed\x20fee\x20+\x20commission\x20on\x20the\x20order\x20total\x27),\x20'+'or\x20residual\x20beneficiary\x20(Surplus\x20—\x20exactly\x20one,\x20takes\x20what\x20is\x20left).','user':'Your\x20Rate/RateGross\x20sharing\x20is\x20in\x20basis\x20points\x20(3000\x20=\x2030%);\x20a\x20Surplus\x20entry\x20receives\x20whatever\x20the\x20other\x20entries\x20did\x20not\x20consume.'},{'id':'demand.service_identifier','object':'Demand','slot':'ServiceGuard.service_identifier:\x20Option<u8>','preset_kind':'service','submission_type':'address','consumed_at':'demand.move\x20L132-133\x20(de_address\x20→\x20the\x20service\x20being\x20presented)','neutral':'Which\x20service\x20a\x20presenter\x20is\x20presenting\x20for\x20is\x20resolved\x20from\x20their\x20passport\x20submission.','creator':'Design\x20lever:\x20qualification-gated\x20presentation\x20—\x20only\x20guards\x20that\x20resolve\x20to\x20approved\x20services\x20let\x20suppliers\x20present\x20'+'(e.g.\x20whitelist,\x20passport,\x20or\x20proof-of-capability\x20guards).','user':'You\x20may\x20only\x20present\x20the\x20service\x20your\x20submission\x20resolves\x20to\x20—\x20the\x20guard\x20defines\x20which\x20services\x20you\x20are\x20eligible\x20to\x20present.'},{'id':'treasury.deposit.identifier','object':'Treasury','slot':'AmountFromDepositGuard.identifier:\x20Option<u8>','preset_kind':'amount','submission_type':'number','asserted_at':'treasury.move\x20L138-141\x20(submission\x20value\x20type\x20must\x20be\x20a\x20number)','consumed_at':'treasury.move\x20L371-385\x20(de_number\x20→\x20deposit\x20amount;\x20excess\x20is\x20refunded\x20to\x20the\x20depositor)','neutral':'The\x20amount\x20actually\x20deposited\x20is\x20resolved\x20from\x20the\x20depositor\x27s\x20submission.','creator':'Design\x20lever:\x20guard-driven\x20external\x20inflow\x20—\x20outside\x20parties\x20deposit\x20against\x20a\x20guard\x20(e.g.\x20invoice-backed\x20payment:\x20'+'the\x20guard\x20validates\x20the\x20invoice,\x20the\x20submission\x20states\x20the\x20amount).','user':'You\x20deposit\x20the\x20amount\x20you\x20submit;\x20anything\x20beyond\x20it\x20is\x20transferred\x20back\x20to\x20you\x20in\x20the\x20same\x20call.'},{'id':'treasury.withdraw.identifier','object':'Treasury','slot':'AmountFromWithdrawGuard.identifier:\x20u8','preset_kind':'amount','submission_type':'number','consumed_at':'treasury.move\x20L409-410\x20(de_number\x20→\x20withdraw\x20amount,\x20asserted\x20≤\x20balance)','neutral':'The\x20amount\x20withdrawn\x20by\x20an\x20outside\x20party\x20is\x20resolved\x20from\x20their\x20submission.','creator':'Design\x20lever:\x20guard-driven\x20external\x20outflow\x20—\x20NOTE\x20this\x20is\x20a\x20PAYMENT\x20AUTHORIZATION:\x20whoever\x20satisfies\x20the\x20guard\x20can\x20'+'withdraw\x20up\x20to\x20the\x20balance.\x20Treat\x20the\x20guard\x20design\x20as\x20the\x20spending\x20boundary.','user':'You\x20receive\x20the\x20amount\x20you\x20submit\x20(bounded\x20by\x20the\x20treasury\x20balance).'},{'id':'treasury.store_from_id','object':'Treasury','slot':'AmountFrom{Deposit,Withdraw}Guard.store_from_id:\x20Option<u8>','preset_kind':'source','submission_type':'address','asserted_at':'treasury.move\x20L143-145\x20(is_identifier_address_compatible)','consumed_at':'treasury.move\x20L367-369\x20/\x20L412-414\x20(de_address_compatible\x20→\x20Record.store_from_id)','neutral':'Each\x20external\x20deposit/withdraw\x20record\x20is\x20tagged\x20with\x20a\x20submitted\x20origin\x20address.','creator':'Audit\x20lever:\x20reconcile\x20external\x20flows\x20against\x20their\x20origin\x20(invoice,\x20order,\x20campaign).','user':'Your\x20flow\x20is\x20permanently\x20tagged\x20with\x20the\x20source\x20you\x20submitted.'},{'id':'repository.id_from_submission','object':'Repository','slot':'PolicyGuard.id_from_submission:\x20Option<u8>','preset_kind':'row_key','submission_type':'address','asserted_at':'repository.move\x20L90-92\x20(is_identifier_address_compatible)','consumed_at':'repository.move\x20L346/L393\x20(submission_get\x20→\x20table\x20row\x20identity)','neutral':'Which\x20table\x20row\x20a\x20guarded\x20write\x20targets\x20is\x20resolved\x20from\x20the\x20writer\x27s\x20submission.','creator':'Design\x20lever:\x20dynamic\x20rows\x20—\x20or\x20pin\x20the\x20row\x20statically\x20via\x20PolicyRule.id_from\x20(which\x20then\x20takes\x20priority\x20over\x20this\x20slot).','user':'Your\x20write\x20lands\x20on\x20the\x20row\x20your\x20submitted\x20address\x20identifies.'},{'id':'repository.data_from_submission','object':'Repository','slot':'PolicyGuard.data_from_submission:\x20Option<u8>','preset_kind':'row_data','submission_type':'any','asserted_at':'repository.move\x20L93-96\x20(has_identifier\x20—\x20ANY\x20value\x20type\x20is\x20supported)','consumed_at':'repository.move\x20L350/L361/L215\x20(submission_get\x20→\x20the\x20value\x20written)','neutral':'The\x20value\x20written\x20into\x20the\x20row\x20IS\x20the\x20writer\x27s\x20submission\x20(any\x20type).','creator':'Design\x20lever:\x20the\x20guard\x20itself\x20becomes\x20the\x20data\x20format\x20—\x20reviews,\x20scores,\x20attestations\x20written\x20by\x20qualified\x20parties.\x20'+'The\x20write\x20policy\x27s\x20value_type\x20constrains\x20what\x20is\x20storable.','user':'What\x20you\x20submit\x20is\x20what\x20gets\x20stored\x20—\x20the\x20guard\x20decides\x20whether\x20your\x20data\x20qualifies,\x20not\x20the\x20object.'},{'id':'arbitration.vote_weight.guard_identifier','object':'Arbitration','slot':'VotingGuard.vote_weight\x20=\x20VoteValue::GuardIdentifier(identifier)','preset_kind':'vote_weight','submission_type':'number','asserted_at':'arbitration.move\x20L125-126\x20(submission\x20value\x20type\x20must\x20be\x20a\x20number)','consumed_at':'arbitration.move\x20L288-289\x20(de_number\x20→\x20ballot\x20weight)','neutral':'Each\x20voter\x27s\x20ballot\x20weight\x20is\x20resolved\x20from\x20their\x20own\x20submission.','creator':'Design\x20lever:\x20stake/role-weighted\x20voting\x20—\x20the\x20guard\x20derives\x20the\x20weight\x20(e.g.\x20token-balance\x20tier,\x20credential\x20level).\x20'+'Alternative\x20preset:\x20FixedValue(u32)\x20for\x20flat-weight\x20open\x20voting\x20(an\x20EMPTY\x20voting_guard\x20is\x20NOT\x20open\x20voting\x20—\x20plain\x20votes\x20then\x20hard-require\x20the\x20vote\x20permission\x20358,\x20admin-only\x20by\x20default,\x20and\x20disputes\x20dead-lock;\x20R-ARB-VOTE-LOCK,\x20crs9-F-36).','user':'The\x20number\x20you\x20submit\x20IS\x20your\x20vote\x27s\x20weight\x20—\x20the\x20guard\x20defines\x20what\x20qualifies\x20you\x20to\x20claim\x20that\x20weight.'},{'id':'arbitration.usage_guard','object':'Arbitration','slot':'usage_guard:\x20Option<address>','preset_kind':'evidence','submission_type':'any','consumed_at':'arbitration.move\x20L314\x20/\x20L320-321\x20(checked\x20when\x20dispute\x20filing\x20reaches\x20the\x20package-internal\x20channels\x20at\x20L313-316\x20/\x20L318-325,\x20which\x20are\x20only\x20reachable\x20through\x20the\x20Service-bound\x20filing\x20entries):\x20the\x20no-passport\x20channel\x20requires\x20the\x20usage_guard\x20to\x20be\x20None;\x20the\x20passport\x20channel\x20verifies\x20it\x20in\x20the\x20same\x20transaction','neutral':'Who\x20may\x20OPEN\x20a\x20dispute\x20at\x20this\x20arbitration\x20—\x20disputants\x20must\x20satisfy\x20this\x20guard.','creator':'Design\x20lever:\x20qualification\x20gate\x20for\x20disputants\x20(reputation/kyc/holding\x20guards)\x20—\x20keeps\x20frivolous\x20disputes\x20out.\x20'+'Set\x20to\x20None\x20for\x20open\x20access.','user':'To\x20open\x20a\x20dispute\x20at\x20this\x20arbitration\x20you\x20must\x20pass\x20its\x20usage_guard;\x20without\x20a\x20passport\x20the\x20arbitration\x20refuses\x20disputes\x20outright.'},{'id':'machine.forward.retained_submission','object':'MachineForward','slot':'ForwardGuard.retained_submission:\x20vector<u8>','preset_kind':'evidence','submission_type':'any','asserted_at':'machine.move\x20L80-81\x20(has_submissions\x20—\x20every\x20id\x20must\x20be\x20a\x20submission\x20slot\x20of\x20the\x20guard)','consumed_at':'progress.move\x20L471-474\x20(submissions_get\x20→\x20values\x20stored\x20into\x20the\x20session\x20history)','neutral':'Progressing\x20along\x20this\x20forward\x20REQUIRES\x20submitting\x20these\x20guard\x20slots;\x20the\x20submitted\x20values\x20are\x20persisted\x20into\x20the\x20workflow\x20session\x20history.','creator':'Design\x20lever:\x20evidence-carrying\x20workflow\x20steps\x20—\x20the\x20step\x20cannot\x20advance\x20without\x20the\x20proof,\x20and\x20the\x20proof\x20is\x20'+'permanently\x20recorded\x20in\x20the\x20session\x20(auditable\x20trail,\x20usable\x20later\x20by\x20downstream\x20guards/arb).','user':'You\x20cannot\x20advance\x20this\x20step\x20without\x20submitting\x20the\x20required\x20evidence\x20—\x20and\x20what\x20you\x20submit\x20becomes\x20part\x20of\x20the\x20on-chain\x20record.'}];export const GUARD_BINDINGS_VERSION='1.0.0';export function getGuardBindingsByObject(a){return GUARD_BINDING_REGISTRY['filter'](c=>c['object']===a);}export function getGuardBinding(a){return GUARD_BINDING_REGISTRY['find'](c=>c['id']===a);}export function summarizeGuardBinding(a){return'['+a['object']+']\x20'+a['slot']+'\x20—\x20creator:\x20'+a['creator']['split']('\x20—\x20')[0x0]+'\x20|\x20user:\x20'+a['user'];}
|
|
@@ -35,4 +35,4 @@ export declare function suggestPatternForRequirement(requirement: string): {
|
|
|
35
35
|
best: GuardDesignPattern;
|
|
36
36
|
alternatives: GuardDesignPattern[];
|
|
37
37
|
};
|
|
38
|
-
export declare const GUARD_DESIGN_PATTERNS_VERSION =
|
|
38
|
+
export declare const GUARD_DESIGN_PATTERNS_VERSION = 13;
|