@wowok/agent-mcp 3.3.9 → 3.4.0
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.js +1 -1
- package/dist/composition/compile.d.ts +3 -2
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +6 -0
- package/dist/composition/inflight.js +1 -1
- package/dist/composition/materialize.d.ts +4 -0
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/param-disclosure.d.ts +61 -0
- package/dist/composition/param-disclosure.js +1 -0
- package/dist/composition/plan.d.ts +11 -1
- package/dist/composition/plan.js +1 -1
- package/dist/customer/account-events.js +1 -1
- package/dist/data/api/api.spec.js +1 -1
- package/dist/data/api/cli.js +1 -1
- package/dist/data/api/server.d.ts +1 -0
- package/dist/data/api/server.js +1 -1
- package/dist/data/projection/store.d.ts +2 -1
- package/dist/data/projection/store.js +1 -1
- package/dist/data/projection/types.d.ts +10 -0
- package/dist/data/sync/cdc.js +1 -1
- package/dist/data/sync/cdc.spec.js +1 -1
- package/dist/data/sync/store.d.ts +5 -0
- package/dist/data/sync/store.js +1 -1
- package/dist/data/sync/types.d.ts +2 -0
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/guard-scan.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/index.js +1 -1
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/allocation-templates.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arb-fund-facts.d.ts +1 -0
- package/dist/knowledge/arb-fund-facts.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-risk.d.ts +1 -0
- package/dist/knowledge/arbitration-risk.js +1 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/allocation.json +6 -6
- package/dist/knowledge/baselines/rules/arb.json +2 -2
- package/dist/knowledge/baselines/rules/guard.json +11 -11
- package/dist/knowledge/baselines/rules/order.json +1 -1
- package/dist/knowledge/baselines/rules/plan.json +1 -1
- package/dist/knowledge/baselines/semantic-facts.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +14 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/catalog-facts.d.ts +4 -0
- package/dist/knowledge/catalog-facts.js +1 -0
- package/dist/knowledge/commission-landing.js +1 -1
- package/dist/knowledge/component-schema.d.ts +64 -0
- package/dist/knowledge/component-schema.js +1 -0
- package/dist/knowledge/entity-recipient-guard.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fee-param-bindings.d.ts +26 -0
- package/dist/knowledge/fee-param-bindings.js +1 -0
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.d.ts +2 -2
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-anchor-reach.js +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-ledger.js +1 -1
- package/dist/knowledge/guard-lint.d.ts +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-risk.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-registry.js +1 -1
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.d.ts +14 -3
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/knob-docs.d.ts +5 -0
- package/dist/knowledge/knob-docs.js +1 -0
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/onchain-constants.d.ts +2 -0
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/param-schema.d.ts +70 -0
- package/dist/knowledge/param-schema.js +1 -0
- package/dist/knowledge/param-tiers.d.ts +25 -0
- package/dist/knowledge/param-tiers.js +1 -0
- package/dist/knowledge/passport-ledger.d.ts +1 -1
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/pattern-resolutions.d.ts +106 -0
- package/dist/knowledge/pattern-resolutions.js +1 -0
- package/dist/knowledge/projection.spec.js +1 -1
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +1 -0
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/service-allocation-semantics.js +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/service-templates.js +1 -1
- package/dist/knowledge/strategy-manuals.d.ts +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-loader.d.ts +101 -1
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-nav.d.ts +7 -0
- package/dist/knowledge/template-nav.js +1 -0
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +33 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-test-profiles.d.ts +17 -0
- package/dist/knowledge/template-test-profiles.js +1 -0
- package/dist/knowledge/template-validation.d.ts +1 -0
- package/dist/knowledge/template-validation.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/treasury-templates.js +1 -1
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/time-window.d.ts +37 -0
- package/dist/participation/time-window.js +1 -0
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.d.ts +1 -0
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +4 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.d.ts +1 -0
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.d.ts +1 -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/playbooks/service-build/workflow-design-assessment.js +1 -1
- package/dist/relationship/registry.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/runtime/instance-registry.d.ts +7 -1
- package/dist/runtime/instance-registry.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +2 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +8 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +2 -0
- 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.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +3 -3
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/evaluation/index.d.ts +8 -0
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/planning.d.ts +1 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +29 -0
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/local/index.d.ts +20 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +2 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +1 -1
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.d.ts +106 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +5 -5
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/watch/index.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +4 -2
- package/dist/schemas/benchmark_migration_operation.output.json +3 -3
- package/dist/schemas/benchmark_migration_operation.schema.json +16 -2
- package/dist/schemas/bridge_operation.output.json +4 -2
- package/dist/schemas/bridge_operation.schema.json +5 -5
- package/dist/schemas/evaluation_operation.output.json +16 -0
- package/dist/schemas/guard2file.schema.json +1 -1
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +150 -1
- package/dist/schemas/industry_pack_operation.schema.json +9 -3
- package/dist/schemas/keeper_operation.output.json +2 -2
- package/dist/schemas/local_cache_operation.output.json +4 -2
- package/dist/schemas/local_history_operation.output.json +4 -2
- package/dist/schemas/local_info_operation.output.json +4 -2
- package/dist/schemas/local_mark_operation.output.json +4 -2
- package/dist/schemas/machineNode2file.schema.json +1 -1
- package/dist/schemas/messenger_operation.output.json +13 -2
- package/dist/schemas/messenger_operation.schema.json +41 -34
- package/dist/schemas/monitor_events.output.json +2 -2
- package/dist/schemas/monitor_subscription.output.json +2 -2
- package/dist/schemas/onchain_events.output.json +14 -14
- package/dist/schemas/onchain_operations.output.json +13 -10
- package/dist/schemas/onchain_operations.schema.json +124 -99
- package/dist/schemas/onchain_operations_allocation.schema.json +7 -6
- package/dist/schemas/onchain_operations_arbitration.schema.json +7 -6
- package/dist/schemas/onchain_operations_contact.schema.json +4 -3
- package/dist/schemas/onchain_operations_demand.schema.json +4 -3
- package/dist/schemas/onchain_operations_gen_passport.schema.json +4 -3
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +7 -6
- package/dist/schemas/onchain_operations_machine.schema.json +9 -7
- package/dist/schemas/onchain_operations_order.schema.json +6 -4
- package/dist/schemas/onchain_operations_payment.schema.json +2 -2
- package/dist/schemas/onchain_operations_permission.schema.json +19 -15
- package/dist/schemas/onchain_operations_personal.schema.json +17 -14
- package/dist/schemas/onchain_operations_progress.schema.json +6 -4
- package/dist/schemas/onchain_operations_proof.schema.json +4 -3
- package/dist/schemas/onchain_operations_repository.schema.json +9 -7
- package/dist/schemas/onchain_operations_reward.schema.json +5 -4
- package/dist/schemas/onchain_operations_service.schema.json +15 -12
- package/dist/schemas/onchain_operations_treasury.schema.json +4 -3
- package/dist/schemas/onchain_table_data.output.json +18 -13
- package/dist/schemas/onchain_table_data.schema.json +13 -13
- package/dist/schemas/query_toolkit.output.json +301 -33
- package/dist/schemas/query_toolkit.schema.json +6 -6
- package/dist/schemas/watch_operation.output.json +3 -3
- package/dist/schemas/workflow_operation.schema.json +3 -2
- package/dist/schemas/wowok_buildin_info.schema.json +1 -1
- package/dist/task/playbook.js +1 -1
- package/dist/tools/handlers/benchmark-migration.d.ts +1 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/evaluation.spec.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +4 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/sanitize-output.js +1 -1
- package/dist/tools/sanitize-output.spec.js +1 -1
- package/dist/tools/types.d.ts +1 -0
- package/dist/tools/upgrade-check.d.ts +22 -0
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wrap.d.ts +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BUILTIN_TEMPLATES}from'./builtin-templates.js';export const CATALOG_TEMPLATE_COUNT=BUILTIN_TEMPLATES['length'];export const CATALOG_INDUSTRY_COUNT=new Set(BUILTIN_TEMPLATES['map'](a=>a['industry']))['size'];export const CATALOG_INDUSTRIES=[...new Set(BUILTIN_TEMPLATES['map'](a=>a['industry']))]['sort']();export const CATALOG_SUMMARY=CATALOG_TEMPLATE_COUNT+'\x20built-in\x20archetypes\x20across\x20'+CATALOG_INDUSTRY_COUNT+'\x20industries';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PLATFORM_TAKE_KEY}from'./template-loader.js';function rowBps(a,b){const c=g=>typeof g==='number'&&Number['isFinite'](g)?g:typeof g==='string'&&/^\d+(?:\.\d+)?$/['test'](g['trim']())?Number(g):undefined,d=c(a['value']);if(d!==undefined)return d;const e=c(a['value_from']!==undefined?b[a['value_from']]:undefined);if(e!==undefined)return e;const f=c(a['value_from_complement']!==undefined?b[a['value_from_complement']]:undefined);return f!==undefined?0x2710-f:undefined;}export function landPlatformCommission(a,b){const c=Object['keys'](b)['filter'](u=>PLATFORM_TAKE_KEY['test'](u)&&typeof b[u]==='number'&&b[u]>0x0);if(c['length']===0x0)return{};if(c['length']>0x1)return{'error':'multiple\x20non-zero\x20platform-take\x20keys\x20('+c['join'](',\x20')+')\x20—\x20the\x20settlement\x20split\x20is\x20ambiguous.\x20'+'Leave\x20exactly\x20ONE\x20take\x20key\x20non-zero\x20(the\x20others\x20must\x20be\x200);\x20the\x20landing\x20cannot\x20decide\x20which\x20rate\x20shrinks.'};const d=c[0x0],e=b[d],f=a['allocator']['rows']??[];if(f['length']===0x0)return{};const g=f['filter'](u=>u['track']==='settlement'),h=g['some'](u=>u['value_from']===d||u['value_from_complement']===d);if(h)return{};const j=new Map();for(const u of g){const v=u['guard_key']??'',w=j['get'](v);if(w)w['push'](u);else j['set'](v,[u]);}const k=new Map(),l=new Map(),m=[],n=[];for(const [x,y]of j){const z=y['filter'](G=>G['mode']==='rate'),A=y['find'](G=>G['mode']==='surplus'),B=z['find'](G=>G['recipient_key']==='platform'),C=x||'(no\x20guard_key)';if(A!==undefined){const G=z['reduce']((H,I)=>H+(rowBps(I,b)??0x0),0x0);if(G+e>0x2710){n['push'](C+':\x20existing\x20rate\x20legs\x20sum\x20'+G+'\x20+\x20take\x20'+e+'\x20>\x2010000');continue;}if(B!==undefined)k['set'](B,{...B,'value':e,'value_from':undefined,'value_from_complement':undefined});else{const H={'track':'settlement','recipient':'entity','recipient_key':'platform','mode':'rate','value':e,...x?{'guard_key':x}:{},'note':'Platform\x20commission\x20leg\x20('+d+'='+e+'),\x20landed\x20at\x20generation\x20—\x20direct-sales\x20default\x20is\x200;\x20the\x20Surplus\x20leg\x20above\x20absorbs\x20the\x20remainder.'};l['set'](x,[H]);}m['push']({...x?{'guard_key':x}:{},'platform':{'recipient_key':'platform','created':B===undefined}});continue;}const D=z['map'](I=>({'row':I,'bps':rowBps(I,b)}));if(D['some'](I=>I['bps']===undefined)){n['push'](C+':\x20a\x20rate\x20leg\x20has\x20an\x20unresolvable\x20value');continue;}const E=D['filter'](I=>I['bps']>0x0),F=E['length']===0x1&&E[0x0]['bps']===0x2710?E[0x0]:undefined;if(F===undefined){n['push'](C+':\x20needs\x20ONE\x20positive\x20Rate\x20leg\x20of\x20exactly\x2010000\x20(or\x20a\x20Surplus\x20leg)\x20to\x20absorb\x20the\x20take\x20—\x20'+('found\x20['+(E['map'](I=>(I['row']['recipient_key']??I['row']['recipient'])+'='+I['bps'])['join'](',\x20')||'none')+']'));continue;}k['set'](F['row'],{...F['row'],'value':0x2710-e,'value_from':undefined,'value_from_complement':undefined});if(B!==undefined)k['set'](B,{...B,'value':e,'value_from':undefined,'value_from_complement':undefined});else{const I={'track':'settlement','recipient':'entity','recipient_key':'platform','mode':'rate','value':e,...x?{'guard_key':x}:{},'note':'Platform\x20commission\x20leg\x20('+d+'='+e+'),\x20landed\x20at\x20generation\x20—\x20direct-sales\x20default\x20is\x200;\x20the\x20merchant\x20leg\x20is\x20its\x2010000\x20complement.\x20Bind\x20the\x20\x27platform\x27\x20Entity\x20mark\x20to\x20a\x20real\x20non-empty\x20address\x20before\x20materializing.'};l['set'](x,[I]);}m['push']({...x?{'guard_key':x}:{},'reduced':{...F['row']['recipient_key']!==undefined?{'recipient_key':F['row']['recipient_key']}:{},'from_bps':0x2710,'to_bps':0x2710-e},'platform':{'recipient_key':'platform','created':B===undefined}});}if(n['length']>0x0)return{'error':'template\x20\x27'+a['id']+'\x27\x20cannot\x20land\x20'+d+'='+e+'\x20bps\x20on\x20its\x20settlement\x20allocator(s):\x20'+n['join'](';\x20')+'.\x20'+'The\x20money\x20shape\x20is\x20authoritative\x20and\x20this\x20template\x20splits\x20differently\x20—\x20either\x20set\x20the\x20take\x20back\x20to\x200\x20'+'(direct\x20sales:\x20the\x20merchant\x20keeps\x20the\x20whole\x20sale)\x20or\x20split\x20the\x20relevant\x20rows\x20explicitly\x20in\x20the\x20template\x20'+('(value_from:\x20\x27'+d+'\x27\x20on\x20the\x20platform\x20leg,\x20value_from_complement:\x20\x27'+d+'\x27\x20on\x20the\x20merchant\x20leg).')};const o=[],p=new Set();for(let J=0x0;J<f['length'];J+=0x1){const K=f[J];o['push'](k['get'](K)??K);if(K['track']!=='settlement')continue;const L=K['guard_key']??'',M=l['get'](L);if(M===undefined||p['has'](L))continue;const N=!f['slice'](J+0x1)['some'](O=>O['track']==='settlement'&&(O['guard_key']??'')===L);N&&(o['push'](...M),p['add'](L));}const q=m['some'](O=>O['platform']['created']),s={'fee_key':d,'bps':e,'splits':m,'guidance':'Platform\x20take\x20'+e+'\x20bps\x20('+d+')\x20landed\x20on\x20the\x20settlement\x20allocator.\x20'+(q?'Create/bind\x20a\x20REAL\x20non-empty\x20Entity\x20for\x20the\x20local\x20mark\x20\x27platform\x27\x20before\x20materializing\x20—\x20an\x20empty\x20Entity\x20'+'resolves\x20to\x20the\x20deploying\x20account\x20on\x20chain\x20(
|
|
1
|
+
import{PLATFORM_TAKE_KEY}from'./template-loader.js';function rowBps(a,b){const c=g=>typeof g==='number'&&Number['isFinite'](g)?g:typeof g==='string'&&/^\d+(?:\.\d+)?$/['test'](g['trim']())?Number(g):undefined,d=c(a['value']);if(d!==undefined)return d;const e=c(a['value_from']!==undefined?b[a['value_from']]:undefined);if(e!==undefined)return e;const f=c(a['value_from_complement']!==undefined?b[a['value_from_complement']]:undefined);return f!==undefined?0x2710-f:undefined;}export function landPlatformCommission(a,b){const c=Object['keys'](b)['filter'](u=>PLATFORM_TAKE_KEY['test'](u)&&typeof b[u]==='number'&&b[u]>0x0);if(c['length']===0x0)return{};if(c['length']>0x1)return{'error':'multiple\x20non-zero\x20platform-take\x20keys\x20('+c['join'](',\x20')+')\x20—\x20the\x20settlement\x20split\x20is\x20ambiguous.\x20'+'Leave\x20exactly\x20ONE\x20take\x20key\x20non-zero\x20(the\x20others\x20must\x20be\x200);\x20the\x20landing\x20cannot\x20decide\x20which\x20rate\x20shrinks.'};const d=c[0x0],e=b[d],f=a['allocator']['rows']??[];if(f['length']===0x0)return{};const g=f['filter'](u=>u['track']==='settlement'),h=g['some'](u=>u['value_from']===d||u['value_from_complement']===d);if(h)return{};const j=new Map();for(const u of g){const v=u['guard_key']??'',w=j['get'](v);if(w)w['push'](u);else j['set'](v,[u]);}const k=new Map(),l=new Map(),m=[],n=[];for(const [x,y]of j){const z=y['filter'](G=>G['mode']==='rate'),A=y['find'](G=>G['mode']==='surplus'),B=z['find'](G=>G['recipient_key']==='platform'),C=x||'(no\x20guard_key)';if(A!==undefined){const G=z['reduce']((H,I)=>H+(rowBps(I,b)??0x0),0x0);if(G+e>0x2710){n['push'](C+':\x20existing\x20rate\x20legs\x20sum\x20'+G+'\x20+\x20take\x20'+e+'\x20>\x2010000');continue;}if(B!==undefined)k['set'](B,{...B,'value':e,'value_from':undefined,'value_from_complement':undefined});else{const H={'track':'settlement','recipient':'entity','recipient_key':'platform','mode':'rate','value':e,...x?{'guard_key':x}:{},'note':'Platform\x20commission\x20leg\x20('+d+'='+e+'),\x20landed\x20at\x20generation\x20—\x20direct-sales\x20default\x20is\x200;\x20the\x20Surplus\x20leg\x20above\x20absorbs\x20the\x20remainder.'};l['set'](x,[H]);}m['push']({...x?{'guard_key':x}:{},'platform':{'recipient_key':'platform','created':B===undefined}});continue;}const D=z['map'](I=>({'row':I,'bps':rowBps(I,b)}));if(D['some'](I=>I['bps']===undefined)){n['push'](C+':\x20a\x20rate\x20leg\x20has\x20an\x20unresolvable\x20value');continue;}const E=D['filter'](I=>I['bps']>0x0),F=E['length']===0x1&&E[0x0]['bps']===0x2710?E[0x0]:undefined;if(F===undefined){n['push'](C+':\x20needs\x20ONE\x20positive\x20Rate\x20leg\x20of\x20exactly\x2010000\x20(or\x20a\x20Surplus\x20leg)\x20to\x20absorb\x20the\x20take\x20—\x20'+('found\x20['+(E['map'](I=>(I['row']['recipient_key']??I['row']['recipient'])+'='+I['bps'])['join'](',\x20')||'none')+']'));continue;}k['set'](F['row'],{...F['row'],'value':0x2710-e,'value_from':undefined,'value_from_complement':undefined});if(B!==undefined)k['set'](B,{...B,'value':e,'value_from':undefined,'value_from_complement':undefined});else{const I={'track':'settlement','recipient':'entity','recipient_key':'platform','mode':'rate','value':e,...x?{'guard_key':x}:{},'note':'Platform\x20commission\x20leg\x20('+d+'='+e+'),\x20landed\x20at\x20generation\x20—\x20direct-sales\x20default\x20is\x200;\x20the\x20merchant\x20leg\x20is\x20its\x2010000\x20complement.\x20Bind\x20the\x20\x27platform\x27\x20Entity\x20mark\x20to\x20a\x20real\x20non-empty\x20address\x20before\x20materializing.'};l['set'](x,[I]);}m['push']({...x?{'guard_key':x}:{},'reduced':{...F['row']['recipient_key']!==undefined?{'recipient_key':F['row']['recipient_key']}:{},'from_bps':0x2710,'to_bps':0x2710-e},'platform':{'recipient_key':'platform','created':B===undefined}});}if(n['length']>0x0)return{'error':'template\x20\x27'+a['id']+'\x27\x20cannot\x20land\x20'+d+'='+e+'\x20bps\x20on\x20its\x20settlement\x20allocator(s):\x20'+n['join'](';\x20')+'.\x20'+'The\x20money\x20shape\x20is\x20authoritative\x20and\x20this\x20template\x20splits\x20differently\x20—\x20either\x20set\x20the\x20take\x20back\x20to\x200\x20'+'(direct\x20sales:\x20the\x20merchant\x20keeps\x20the\x20whole\x20sale)\x20or\x20split\x20the\x20relevant\x20rows\x20explicitly\x20in\x20the\x20template\x20'+('(value_from:\x20\x27'+d+'\x27\x20on\x20the\x20platform\x20leg,\x20value_from_complement:\x20\x27'+d+'\x27\x20on\x20the\x20merchant\x20leg).')};const o=[],p=new Set();for(let J=0x0;J<f['length'];J+=0x1){const K=f[J];o['push'](k['get'](K)??K);if(K['track']!=='settlement')continue;const L=K['guard_key']??'',M=l['get'](L);if(M===undefined||p['has'](L))continue;const N=!f['slice'](J+0x1)['some'](O=>O['track']==='settlement'&&(O['guard_key']??'')===L);N&&(o['push'](...M),p['add'](L));}const q=m['some'](O=>O['platform']['created']),s={'fee_key':d,'bps':e,'splits':m,'guidance':'Platform\x20take\x20'+e+'\x20bps\x20('+d+')\x20landed\x20on\x20the\x20settlement\x20allocator.\x20'+(q?'Create/bind\x20a\x20REAL\x20non-empty\x20Entity\x20for\x20the\x20local\x20mark\x20\x27platform\x27\x20before\x20materializing\x20—\x20an\x20empty\x20Entity\x20'+'resolves\x20to\x20the\x20deploying\x20account\x20on\x20chain\x20(the\x20SDK\x27s\x20local-account\x20resolution).\x20':'The\x20template\x27s\x20existing\x20\x27platform\x27\x20Entity\x20row\x20now\x20carries\x20the\x20take\x20—\x20bind\x20it\x20to\x20a\x20real\x20non-empty\x20address.\x20')+'Direct-sales\x20default\x20is\x200\x20bps;\x20drop\x20the\x20override\x20to\x20hand\x20the\x20whole\x20sale\x20to\x20the\x20merchant.'};return{'rows':o,'landing':s};}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { ModeAllocatorStrategy, ModeGuardRef } from "./scenario-modes.js";
|
|
2
|
+
export type ComponentFamily = "service" | "sales" | "allocator" | "allocation" | "machine" | "guard" | "repository" | "reward" | "arbitration" | "permission" | "treasury";
|
|
3
|
+
export type ConfigSurface = "create" | "pre-publish" | "append-only" | "post-publish" | "immutable";
|
|
4
|
+
export type FreezeKind = "rail" | "unset" | "split" | "surplus";
|
|
5
|
+
export interface ComponentSlot {
|
|
6
|
+
id: string;
|
|
7
|
+
family: ComponentFamily;
|
|
8
|
+
what: string;
|
|
9
|
+
how: {
|
|
10
|
+
surface: ConfigSurface;
|
|
11
|
+
via: string;
|
|
12
|
+
};
|
|
13
|
+
effect: string;
|
|
14
|
+
related: string[];
|
|
15
|
+
configurable: boolean;
|
|
16
|
+
freeze?: FreezeKind;
|
|
17
|
+
why_not?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const SERVICE_SLOTS: readonly ComponentSlot[];
|
|
20
|
+
export declare const SALES_SLOTS: readonly ComponentSlot[];
|
|
21
|
+
interface ShapeEdge {
|
|
22
|
+
prev: string;
|
|
23
|
+
forward?: string;
|
|
24
|
+
operator?: "merchant" | "order_payer";
|
|
25
|
+
guard_key?: string;
|
|
26
|
+
}
|
|
27
|
+
interface ShapeNodeLike {
|
|
28
|
+
name: string;
|
|
29
|
+
operator?: "merchant" | "order_payer";
|
|
30
|
+
from?: readonly (string | ShapeEdge)[];
|
|
31
|
+
}
|
|
32
|
+
export interface ComponentSource {
|
|
33
|
+
id: string;
|
|
34
|
+
machine_shape: readonly ShapeNodeLike[];
|
|
35
|
+
guards: readonly ModeGuardRef[];
|
|
36
|
+
allocator: ModeAllocatorStrategy;
|
|
37
|
+
fee_params: Record<string, number | string>;
|
|
38
|
+
payment_model?: string;
|
|
39
|
+
arbitration_mode?: string;
|
|
40
|
+
review_mode?: string;
|
|
41
|
+
after_sales_mode?: string;
|
|
42
|
+
acceptance_mode?: string;
|
|
43
|
+
reward_claim_policy?: {
|
|
44
|
+
kind: string;
|
|
45
|
+
};
|
|
46
|
+
reentry_kind?: string;
|
|
47
|
+
compensation_fund_policy?: string;
|
|
48
|
+
time_anchors?: Record<string, string>;
|
|
49
|
+
}
|
|
50
|
+
export declare function componentPlane(t: ComponentSource): ComponentSlot[];
|
|
51
|
+
export interface ComponentSummary {
|
|
52
|
+
total: number;
|
|
53
|
+
configurable: number;
|
|
54
|
+
fixed: number;
|
|
55
|
+
hardcoded_splits: number;
|
|
56
|
+
structural_rails: number;
|
|
57
|
+
unset_legs: number;
|
|
58
|
+
surplus_rows: number;
|
|
59
|
+
by_family: Record<string, number>;
|
|
60
|
+
}
|
|
61
|
+
export declare function summarizeComponents(plane: readonly ComponentSlot[]): ComponentSummary;
|
|
62
|
+
export declare function hardcodedSplits(plane: readonly ComponentSlot[]): ComponentSlot[];
|
|
63
|
+
export declare function matchComponents<T extends ComponentSlot>(query: string, plane: readonly T[], limit?: number): T[];
|
|
64
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const SVC='onchain_operations\x20operation_type=\x27service\x27\x20data.';export const SERVICE_SLOTS=[{'id':'service.permission','family':'permission','what':'The\x20Permission\x20object\x20that\x20owns\x20the\x20Service;\x20every\x20admin\x20write\x20(price,\x20stock,\x20publish,\x20guard\x20entities)\x20resolves\x20through\x20it.','how':{'surface':'create','via':'service\x20create\x20with\x20the\x20Permission\x20object,\x20then\x20permission_operation\x20for\x20roles/entities'},'effect':'Authorizes\x20every\x20admin\x20write;\x20an\x20empty/foreign\x20permission\x20is\x20the\x20widening\x20that\x20lets\x20a\x20stranger\x20edit\x20pricing.','related':['Permission','EntityRegistrar\x20/\x20EntityLinker\x20rows','admin\x20transfer'],'configurable':!![]},{'id':'service.description','family':'service','what':'The\x20public\x20listing\x20copy\x20a\x20buyer\x20reads\x20before\x20ordering.','how':{'surface':'post-publish','via':SVC+'description'},'effect':'Changes\x20what\x20the\x20market\x20shows;\x20it\x20is\x20free\x20text\x20with\x20no\x20on-chain\x20anchor,\x20so\x20a\x20number\x20quoted\x20here\x20(a\x20compensation\x20cap,\x20a\x20refund\x20promise)\x20is\x20marketing,\x20not\x20a\x20term.','related':['market\x20listing','quote\x20/\x20buy\x20display'],'configurable':!![]},{'id':'service.location','family':'service','what':'The\x20service\x20area\x20and\x20scope\x20(country\x20>\x20province\x20>\x20city\x20>\x20district).','how':{'surface':'post-publish','via':SVC+'location'},'effect':'Drives\x20market\x20discovery\x20and\x20the\x20buyer\x27s\x20expectation\x20of\x20where\x20fulfilment\x20happens.','related':['market\x20discovery','fulfilment\x20scope'],'configurable':!![]},{'id':'service.machine','family':'machine','what':'The\x20Machine\x20(workflow)\x20bound\x20to\x20the\x20Service;\x20every\x20order\x20COPIES\x20it\x20at\x20creation,\x20so\x20the\x20order\x20keeps\x20its\x20own\x20fulfilment\x20path.','how':{'surface':'pre-publish','via':'machine\x20create\x20(operation_type=\x27machine\x27)\x20+\x20'+SVC+'machine'},'effect':'Fixes\x20the\x20order\x20lifecycle:\x20the\x20nodes\x20a\x20buyer\x20can\x20be\x20moved\x20through\x20and\x20the\x20guards\x20that\x20must\x20pass.\x20Frozen\x20at\x20publish.','related':['Machine','Order.progress','guards\x20host=\x27machine\x27'],'configurable':!![]},{'id':'service.buy_guard','family':'guard','what':'The\x20guard\x20a\x20buyer\x27s\x20passport\x20must\x20pass\x20to\x20purchase\x20(qualification,\x20membership,\x20region).','how':{'surface':'pre-publish','via':'guard\x20create\x20(operation_type=\x27guard\x27)\x20+\x20'+SVC+'buy_guard'},'effect':'Denies\x20purchase\x20to\x20a\x20passport\x20that\x20fails\x20it;\x20the\x20requirement\x20is\x20immutable\x20after\x20publish.','related':['Guard','Passport','purchase\x20(plain\x20or\x20passport-backed)'],'configurable':!![]},{'id':'service.bPublished','family':'service','what':'The\x20publish\x20flag\x20—\x20the\x20object\x20becomes\x20purchasable\x20only\x20when\x20published\x20(and\x20not\x20paused).','how':{'surface':'post-publish','via':SVC+'publish\x20=\x20true'},'effect':'Emits\x20the\x20market-opportunity\x20event\x20that\x20makes\x20the\x20listing\x20discoverable\x20and\x20buyable.','related':['ServiceEvent','market\x20discovery'],'configurable':!![]},{'id':'service.bPaused','family':'service','what':'The\x20pause\x20flag\x20that\x20forbids\x20buying\x20without\x20unpublishing\x20the\x20listing.','how':{'surface':'post-publish','via':SVC+'pause\x20=\x20true\x20/\x20false'},'effect':'Every\x20buy\x20aborts\x20while\x20paused;\x20existing\x20orders\x20are\x20unaffected.','related':['Sales','buy'],'configurable':!![]},{'id':'service.sales','family':'sales','what':'The\x20list\x20of\x20products\x20for\x20sale;\x20the\x20order\x20total\x20is\x20sale.price\x20x\x20the\x20purchased\x20quantity.','how':{'surface':'post-publish','via':SVC+'sales\x20(op\x20add\x20/\x20set\x20/\x20remove\x20/\x20clear)'},'effect':'Changes\x20what\x20can\x20be\x20bought\x20and\x20at\x20what\x20price;\x20a\x20price\x20edit\x20does\x20not\x20touch\x20orders\x20already\x20placed\x20(their\x20amount\x20is\x20immutable).','related':['Sale','Order.amount','quote'],'configurable':!![]},{'id':'service.repositories','family':'repository','what':'On-chain\x20key-value\x20stores\x20the\x20workflow\x20writes\x20into\x20(review\x20rows,\x20certificates,\x20evidence).','how':{'surface':'pre-publish','via':SVC+'repositories\x20+\x20repository\x20create\x20(policies\x20freeze\x20at\x20creation)'},'effect':'A\x20write\x20passes\x20only\x20through\x20the\x20policy\x27s\x20write\x20guard;\x20a\x20policy\x20is\x20immutable\x20once\x20the\x20Repository\x20exists,\x20so\x20the\x20write\x20authority\x20must\x20be\x20right\x20at\x20creation.','related':['Repository','PolicyRule','guards\x20host=\x27repository\x27'],'configurable':!![]},{'id':'service.order_allocators','family':'allocator','what':'The\x20payout\x20plan\x20every\x20order\x20inherits:\x20who\x20receives\x20how\x20much\x20of\x20the\x20escrow,\x20and\x20which\x20guard\x20fires\x20each\x20leg.','how':{'surface':'pre-publish','via':SVC+'order_allocators\x20(set\x20before\x20publish;\x20append-only\x20afterwards)'},'effect':'Decides\x20the\x20money\x20split\x20of\x20every\x20future\x20order.\x20After\x20publish\x20the\x20existing\x20entries\x20are\x20frozen\x20and\x20NEW\x20entries\x20can\x20only\x20be\x20APPENDED,\x20each\x20emitting\x20OrderAllocatorsAppendedEvent\x20so\x20buyers\x20can\x20re-evaluate.','related':['Allocators','Allocation','guards\x20referenced\x20by\x20allocator.rows[].guard_key'],'configurable':!![]},{'id':'service.arbitrations','family':'arbitration','what':'The\x20independent\x20arbitration\x20venues\x20an\x20order\x20may\x20escalate\x20to.','how':{'surface':'pre-publish','via':SVC+'arbitrations\x20(bind\x20an\x20operational\x20venue)'},'effect':'Defines\x20who\x20can\x20rule\x20on\x20a\x20dispute.\x20A\x20venue\x20sharing\x20the\x20Service\x27s\x20own\x20Permission\x20is\x20rejected\x20on\x20chain\x20(E_ARBITRATION_PERMISSION_CONFLICT),\x20so\x20independence\x20is\x20structural.','related':['Arbitration','Permission','Order\x20arbitration'],'configurable':!![]},{'id':'service.compensation_fund','family':'treasury','what':'A\x20fund\x20the\x20arbitrator\x20can\x20award\x20from,\x20separate\x20from\x20the\x20order\x20escrow.','how':{'surface':'post-publish','via':SVC+'compensation_fund\x20(top-up)\x20+\x20setting_lock_duration'},'effect':'Widens\x20the\x20remedy\x20beyond\x20the\x20order\x27s\x20own\x20escrow.\x20The\x20per-order\x20ceiling\x20is\x20fund/3\x20(MAX_INDEMNITY_MULTIPLE),\x20and\x20an\x20award\x20shrinks\x20the\x20live\x20fund\x20in\x20place\x20—\x20a\x20headline\x20number\x20in\x20the\x20listing\x20goes\x20stale.','related':['Arbitration\x20award','setting_lock_duration','trust\x20copy'],'configurable':!![]},{'id':'service.setting_lock_duration','family':'service','what':'How\x20long\x20the\x20compensation\x20/\x20setting\x20window\x20stays\x20locked\x20after\x20an\x20order\x20is\x20placed.','how':{'surface':'post-publish','via':SVC+'setting_lock_duration'},'effect':'Sets\x20the\x20merchant\x27s\x20commitment\x20horizon\x20for\x20the\x20fund\x20and\x20the\x20settings\x20it\x20covers.','related':['compensation_fund','settings'],'configurable':!![]},{'id':'service.customer_required','family':'service','what':'Fields\x20the\x20buyer\x20is\x20asked\x20to\x20supply\x20at\x20purchase\x20(shipping\x20/\x20meetup\x20information).','how':{'surface':'post-publish','via':SVC+'customer_required'},'effect':'DECLARATIVE\x20ONLY:\x20the\x20on-chain\x20purchase\x20never\x20reads\x20it,\x20so\x20an\x20order\x20that\x20supplies\x20none\x20is\x20still\x20created.\x20Enforcement\x20exists\x20only\x20if\x20a\x20required-info\x20evidence\x20gate\x20guards\x20the\x20first\x20forward.','related':['required_info_evidence_gate','order.required_info','privacy\x20disclosure'],'configurable':!![]},{'id':'service.rewards','family':'reward','what':'Incentive\x20pools\x20(review\x20bounty,\x20referral)\x20bound\x20to\x20the\x20Service.','how':{'surface':'post-publish','via':SVC+'rewards\x20+\x20reward\x20create\x20(operation_type=\x27reward\x27)'},'effect':'A\x20claim\x20is\x20the\x20ONLY\x20exit\x20from\x20a\x20Reward\x27s\x20balance;\x20the\x20pool\x20is\x20funded\x20at\x20creation\x20and\x20every\x20claim\x20needs\x20the\x20binding\x20guard\x20to\x20pass.','related':['Reward','claim\x20guard','review\x20rail'],'configurable':!![]},{'id':'service.um','family':'service','what':'The\x20Contact\x20object\x20bound\x20as\x20the\x20service\x27s\x20communication\x20channel.','how':{'surface':'post-publish','via':SVC+'um\x20+\x20contact\x20create\x20(operation_type=\x27contact\x27)'},'effect':'Routes\x20pre-order\x20negotiation\x20and\x20evidence\x20conversations\x20to\x20that\x20contact\x27s\x20inbox.','related':['Contact','Messenger'],'configurable':!![]},{'id':'allocation.per_order','family':'allocation','what':'The\x20per-order\x20Allocation:\x20the\x20escrow\x20pool\x20created\x20from\x20the\x20Service\x27s\x20order_allocators\x20when\x20an\x20order\x20is\x20placed.','how':{'surface':'immutable','via':'created\x20by\x20buy\x20(order_new);\x20funded\x20later\x20via\x20order_renew\x20/\x20receive'},'effect':'Its\x20balance\x20can\x20grow\x20(a\x20later\x20capture\x20joins\x20the\x20SAME\x20order\x27s\x20allocation)\x20but\x20the\x20plan\x20that\x20distributes\x20it\x20is\x20the\x20Order\x27s\x20own;\x20distribution\x20requires\x20the\x20bound\x20guard\x20and\x20pays\x20every\x20leg\x20bound\x20to\x20that\x20guard.','related':['Order','Allocators','PaymentInfo.for_object'],'configurable':![],'why_not':'The\x20Allocation\x20is\x20created\x20by\x20the\x20purchase,\x20not\x20by\x20configuration.\x20Change\x20the\x20split\x20by\x20editing\x20the\x20Service\x27s\x20order_allocators\x20BEFORE\x20publish\x20(or\x20appending\x20after).'}];export const SALES_SLOTS=[{'id':'sale.price','family':'sales','what':'Unit\x20price\x20of\x20one\x20product;\x20the\x20order\x20total\x20is\x20price\x20x\x20quantity.','how':{'surface':'post-publish','via':SVC+'sales\x20op=\x27price_add\x27\x20/\x20\x27price_reduce\x27'},'effect':'Changes\x20the\x20price\x20of\x20future\x20orders\x20only\x20—\x20an\x20existing\x20order\x27s\x20amount\x20is\x20immutable.','related':['Order.amount','discount','quote'],'configurable':!![]},{'id':'sale.stock','family':'sales','what':'Units\x20available\x20for\x20sale.','how':{'surface':'post-publish','via':SVC+'sales\x20op=\x27stock_add\x27\x20/\x20\x27stock_reduce\x27'},'effect':'Caps\x20how\x20many\x20units\x20one\x20purchase\x20can\x20take;\x20a\x20refund\x20can\x20put\x20units\x20back\x20only\x20when\x20the\x20SKU\x20opted\x20in.','related':['quantity','restock_on_refund'],'configurable':!![]},{'id':'sale.suspension','family':'sales','what':'Per-product\x20suspension\x20flag\x20(the\x20\x27listing\x20inactive\x27\x20state).','how':{'surface':'post-publish','via':SVC+'sales\x20op=\x27suspend\x27\x20(suspension\x20true/false)'},'effect':'Buy\x20and\x20quote\x20abort\x20for\x20that\x20product\x20only;\x20price/stock/WIP\x20stay\x20bound.','related':['buy','quote'],'configurable':!![]},{'id':'sale.wip','family':'sales','what':'The\x20public\x20product-detail\x20page\x20URL\x20a\x20buyer\x20fetches\x20at\x20order\x20time.','how':{'surface':'post-publish','via':SVC+'sales\x20(wip\x20+\x20wip_hash)'},'effect':'Stored\x20on\x20chain\x20and\x20fetched\x20by\x20every\x20buyer;\x20an\x20unreachable\x20or\x20empty\x20URL\x20makes\x20the\x20listing\x20incomplete\x20and\x20can\x20abort\x20the\x20order.','related':['wip_file','wip_hash','market\x20completeness'],'configurable':!![]},{'id':'sale.restock_on_refund','family':'sales','what':'Per-SKU\x20opt-in:\x20a\x20refunded\x20order\x20puts\x20its\x20purchased\x20units\x20back\x20on\x20shelf.','how':{'surface':'post-publish','via':SVC+'restock\x20op=\x27flag\x27'},'effect':'Without\x20the\x20flag\x20the\x20order-level\x20restock\x20op\x20refuses\x20that\x20line;\x20flagging\x20does\x20not\x20itself\x20move\x20stock.','related':['refund','restock\x20op=\x27order\x27'],'configurable':!![]}];function firstSentence(a){const b=a['indexOf']('.\x20'),c=b===-0x1?a:a['slice'](0x0,b+0x1);return c['length']>0xf0?c['slice'](0x0,0xed)+'...':c;}function edgeOperator(a,b){if(typeof b==='string')return a['operator']??(b===''?'order_payer':'merchant');return b['operator']??a['operator']??(b['prev']===''?'order_payer':'merchant');}function edgesOf(a){const b=[];for(const c of a['machine_shape']){for(const d of c['from']??[]){const e=typeof d==='string'?{'prev':d}:d;b['push']({'from':e['prev']??'','to':c['name'],...e['guard_key']!==undefined?{'guard_key':e['guard_key']}:{},'operator':edgeOperator(c,d)});}}return b;}const FIXED_SPLIT_REASON='The\x20split\x20is\x20a\x20literal\x20in\x20the\x20template\x20body\x20—\x20no\x20fee_param\x20carries\x20it,\x20so\x20a\x20merchant\x20cannot\x20change\x20it\x20without\x20a\x20template\x20edit.',DERIVED_SPLIT_REASON='A\x20Surplus\x20row\x20has\x20no\x20value\x20of\x20its\x20own\x20—\x20it\x20pays\x20whatever\x20the\x20Rate/Amount\x20rows\x20leave\x20behind,\x20so\x20its\x20size\x20follows\x20from\x20the\x20other\x20rows.',STRUCTURAL_RAIL_REASON='This\x20row\x20pays\x20the\x20ENTIRE\x20escrow\x20(100%)\x20to\x20its\x20recipient\x20—\x20it\x20IS\x20the\x20settlement/refund\x20rail,\x20not\x20a\x20rate.\x20There\x20is\x20no\x20share\x20to\x20set:\x20the\x20amount\x20is\x20whatever\x20the\x20order\x20holds.',UNSET_LEG_REASON='This\x20row\x20pays\x20nothing\x20today\x20(0\x20bps):\x20a\x20declared\x20placeholder\x20leg\x20(usually\x20the\x20order-side\x20residual\x20of\x20a\x20two-leg\x20group).\x20Moving\x20money\x20through\x20it\x20changes\x20who\x20is\x20paid,\x20which\x20is\x20a\x20template\x20decision,\x20not\x20a\x20runtime\x20setting.';function allocatorSlots(a){const b=a['allocator']['rows']??[],c=[{'id':'allocator.group','family':'allocator','what':b['length']+'\x20allocator\x20row(s),\x20default\x20mode\x20\x27'+a['allocator']['mode']+'\x27,\x20recipient\x20\x27'+a['allocator']['recipient']+'\x27'+(a['allocator']['once_per_order']===!![]?',\x20one-shot\x20per\x20order':'')+(a['allocator']['refund_track']!==undefined?',\x20refund\x20track\x20'+a['allocator']['refund_track']:'')+'.','how':{'surface':'pre-publish','via':SVC+'order_allocators\x20(group\x20settings)'},'effect':'A\x20Rate\x20group\x20must\x20sum\x20to\x20exactly\x2010000\x20unless\x20a\x20Surplus\x20entry\x20absorbs\x20the\x20remainder;\x20a\x20distribution\x20call\x20submits\x20ONE\x20guard\x20and\x20every\x20row\x20bound\x20to\x20it\x20fires.','related':['Allocators.mode','Allocators.once_per_order','Allocators.refund_track'],'configurable':!![]}];return b['forEach']((d,e)=>{const f=d['value_from']??d['value_from_complement'],g=d['mode']==='surplus',h=!g&&d['value']!==undefined&&f===undefined,j=h&&d['mode']==='rate'?Number(d['value']):NaN,k=g?'surplus':f!==undefined?undefined:j===0x2710?'rail':j===0x0?'unset':'split',l=g?'the\x20remaining\x20balance':f!==undefined?d['mode']+'\x20from\x20fee_param\x20\x27'+f+'\x27'+(d['value_from_complement']!==undefined?'\x20(complement\x20of\x2010000)':''):d['mode']+'\x20'+String(d['value']);c['push']({'id':'allocator.rows['+e+']','family':'allocator','what':'Row\x20'+e+'\x20('+d['track']+'):\x20pays\x20'+l+'\x20to\x20'+(d['recipient']==='guard_identifier'?'the\x20submitted\x20Order\x20(slot\x20'+(d['recipient_key']??'?')+')':d['recipient']+'\x20\x27'+(d['recipient_key']??'')+'\x27')+'.','how':{'surface':'pre-publish','via':f!==undefined?SVC+'order_allocators\x20(row\x20'+e+'\x20reads\x20fee_param\x20\x27'+f+'\x27)':SVC+'order_allocators\x20(row\x20'+e+'\x20value\x20is\x20fixed\x20in\x20the\x20template\x20body)'},'effect':'Fires\x20only\x20when\x20guard\x20\x27'+(d['guard_key']??'(NONE\x20—\x20unbound)')+'\x27\x20passes;\x20the\x20amount\x20moves\x20at\x20that\x20moment\x20and\x20cannot\x20be\x20recalled.','related':[...d['guard_key']!==undefined?['guard:'+d['guard_key']]:[],...f!==undefined?['fee_param:'+f]:[],...d['recipient_key']!==undefined?['recipient:'+d['recipient_key']]:[]],'configurable':f!==undefined,...h?{'freeze':k}:g?{'freeze':'surplus'}:{},...g?{'why_not':DERIVED_SPLIT_REASON}:j===0x2710?{'why_not':STRUCTURAL_RAIL_REASON}:j===0x0?{'why_not':UNSET_LEG_REASON}:h?{'why_not':FIXED_SPLIT_REASON}:{}});}),c;}function guardSlots(a,b){const c=a['allocator']['rows']??[];return a['guards']['map']((d,e)=>{const f=d['key']!==undefined,h=d['key']??d['template_id']+'#'+e,j=b['filter'](p=>p['guard_key']===d['key']),k=c['filter'](p=>p['guard_key']===d['key']),l=d['host']==='repository',m=d['template_id']['startsWith']('pattern.'),n=d['host']==='repository'?'repository':d['host']==='reward'?'reward':d['host']==='arbitration'?'arbitration':'guard',o=l?'Repository\x20write\x20policy\x20\x27'+(d['policy']?.['name']??h)+'\x27\x20(id_from\x20'+(d['policy']?.['id_from']??'signer')+',\x20value_type\x20'+(d['policy']?.['value_type']??'String')+(d['policy']?.['write_once']===!![]?',\x20write_once':'')+')':j['length']>0x0?'forward(s)\x20'+j['map'](p=>(p['from']||'(entry)')+'\x20->\x20'+p['to']+'\x20('+p['operator']+')')['join'](',\x20'):k['length']>0x0?'allocator\x20row(s)\x20'+k['map'](p=>p['track'])['join']('/'):'no\x20mount\x20in\x20the\x20declared\x20graph';return{'id':'guard.'+h,'family':n,'what':(l?'Write\x20authorization':'Guard')+'\x20\x27'+h+'\x27\x20—\x20'+firstSentence(d['purpose']),'how':!f?{'surface':'pre-publish','via':'declared\x20in\x20the\x20template\x27s\x20guards[];\x20no\x20key,\x20so\x20nothing\x20can\x20address\x20it'}:m?{'surface':'pre-publish','via':'guard_resolutions[\x27'+h+'\x27]\x20(design\x20pattern\x20\x27'+d['template_id']+'\x27\x20resolves\x20at\x20build)'}:{'surface':'pre-publish','via':'resolved\x20from\x20\x27'+d['template_id']+'\x27\x20when\x20the\x20object\x20is\x20created'},'effect':l?'Only\x20a\x20passport\x20satisfying\x20this\x20guard\x20may\x20write\x20rows\x20of\x20that\x20policy;\x20the\x20policy\x20freezes\x20at\x20Repository\x20creation.':'A\x20move/claim\x20passes\x20only\x20when\x20this\x20guard\x20returns\x20true;\x20it\x20gates\x20'+o+'.','related':[...j['map'](p=>'edge:'+(p['from']||'(entry)')+'->'+p['to']),...k['map'](p=>'allocator:'+p['track']),...d['policy']!==undefined?['policy:'+(d['policy']['name']??h)]:[]],'configurable':f&&m,...!f?{'why_not':'Declared\x20with\x20NO\x20key:\x20no\x20edge\x20and\x20no\x20allocator\x20row\x20can\x20bind\x20it,\x20and\x20guard_resolutions\x20cannot\x20address\x20it\x20—\x20the\x20declaration\x20is\x20inert\x20until\x20the\x20template\x20gives\x20it\x20a\x20key.'}:m?{}:{'why_not':'The\x20template\x20id\x20\x27'+d['template_id']+'\x27\x20fixes\x20the\x20guard\x27s\x20node\x20structure;\x20the\x20merchant\x20changes\x20only\x20what\x20a\x20declared\x20parameter\x20feeds\x20into\x20it.'}};});}const MODE_SLOTS=[{'field':'payment_model','family':'machine','overridable':![],'what':'How\x20the\x20buyer\x20pays:\x20escrow\x20(single\x20funded\x20order),\x20milestone\x20(phased\x20ladder)\x20or\x20subscription\x20(recurring\x20terms).','effect':'Selects\x20the\x20funding\x20shape;\x20the\x20order\x20amount\x20is\x20immutable\x20once\x20created,\x20so\x20a\x20later\x20capture\x20funds\x20the\x20same\x20Allocation\x20rather\x20than\x20editing\x20it.'},{'field':'arbitration_mode','family':'arbitration','overridable':![],'what':'Who\x20rules:\x20an\x20independent\x20third-party\x20venue,\x20or\x20a\x20merchant-nominated\x20arbitrator.','effect':'Sets\x20the\x20dispute\x20authority.\x20Independence\x20(a\x20distinct\x20Permission)\x20is\x20what\x20R2\x20requires\x20and\x20what\x20the\x20chain\x27s\x20permission-conflict\x20check\x20enforces.'},{'field':'review_mode','family':'reward','overridable':!![],'what':'Whether\x20the\x20template\x20ships\x20a\x20review\x20rail\x20and\x20a\x20sale-time-planned\x20review\x20reward.','effect':'review_reward\x20emits\x20a\x20Reward,\x20a\x20funding\x20step\x20and\x20a\x20claim\x20guard\x20that\x20must\x20be\x20budgeted\x20at\x20build\x20time;\x20without\x20funding\x20the\x20incentive\x20must\x20not\x20be\x20promised.'},{'field':'after_sales_mode','family':'machine','overridable':!![],'what':'The\x20after-sales\x20rail\x20kind:\x20return,\x20exchange\x20or\x20warranty.','effect':'Compile\x20verifies\x20the\x20declared\x20rail\x20exists\x20in\x20the\x20machine;\x20money\x20safety\x20(window\x20anchor,\x20no\x20double\x20remedy)\x20is\x20enforced\x20on\x20every\x20build\x20regardless.'},{'field':'acceptance_mode','family':'machine','overridable':!![],'what':'How\x20a\x20delivery\x20is\x20accepted:\x20milestone\x20self-acceptance,\x20contest,\x20bounty\x20triage,\x20or\x20an\x20agent\x20evaluator.','effect':'A\x20judge-decided\x20mode\x20requires\x20an\x20independent\x20decider;\x20a\x20finite\x20revision\x20cap\x20is\x20only\x20real\x20when\x20a\x20counter-backed\x20repository\x20guard\x20exists.'},{'field':'reentry_kind','family':'machine','overridable':![],'what':'Whether\x20looping\x20back\x20through\x20the\x20flow\x20is\x20a\x20free\x20review\x20loop\x20or\x20a\x20charged\x20revisit.','effect':'Classifies\x20fund-gate\x20obligations\x20on\x20cycles:\x20a\x20paid\x20cycle\x20must\x20charge\x20per\x20revisit,\x20a\x20review\x20loop\x20must\x20not.'},{'field':'reward_claim_policy','family':'reward','overridable':![],'what':'Declared\x20claim\x20replay\x20policy\x20for\x20the\x20reward\x20machinery\x20(once\x20/\x20periodic\x20/\x20capped).','effect':'Discloses\x20the\x20replay\x20defence;\x20the\x20enforceable\x20half\x20is\x20the\x20record\x20gate\x20inside\x20the\x20claim\x20guard,\x20not\x20this\x20declaration.'}];function machineSlots(a,b){const c=[{'id':'machine.shape','family':'machine','what':a['machine_shape']['length']+'\x20nodes\x20/\x20'+b['length']+'\x20forwards\x20defining\x20the\x20order\x20lifecycle\x20('+a['machine_shape']['map'](d=>d['name'])['join'](',\x20')+').','how':{'surface':'pre-publish','via':'machine\x20create\x20(operation_type=\x27machine\x27)\x20then\x20bind\x20to\x20the\x20Service'},'effect':'Frozen\x20at\x20publish\x20(immutable);\x20every\x20order\x20copies\x20it,\x20so\x20a\x20topology\x20defect\x20is\x20permanent\x20and\x20every\x20later\x20order\x20inherits\x20it.','related':[...a['machine_shape']['map'](d=>'node:'+d['name'])],'configurable':![],'why_not':'A\x20published\x20Machine\x20is\x20immutable.\x20Fix\x20the\x20template\x20or\x20publish\x20a\x20new\x20Machine;\x20an\x20existing\x20order\x20keeps\x20the\x20shape\x20it\x20copied.'}];for(const d of MODE_SLOTS){const e=a[d['field']];if(e===undefined)continue;const f=typeof e==='object'&&e!==null?e['kind']:String(e);c['push']({'id':'machine.'+d['field'],'family':d['family'],'what':d['what']+'\x20(this\x20template:\x20\x27'+f+'\x27)','how':d['overridable']?{'surface':'pre-publish','via':'build\x20input\x20\x27'+d['field']+'\x27\x20(precedence:\x20input\x20>\x20template\x20declaration)'}:{'surface':'pre-publish','via':'template\x20declaration\x20\x27'+d['field']+'\x27\x20—\x20not\x20a\x20per-build\x20input'},'effect':d['effect'],'related':['declared:'+d['field']],'configurable':d['overridable'],...d['overridable']?{}:{'why_not':'The\x20template\x20declares\x20\x27'+d['field']+'\x27\x20as\x20a\x20whole\x20business\x20model;\x20no\x20build\x20input\x20overrides\x20it\x20—\x20a\x20different\x20model\x20means\x20a\x20different\x20template.'}});}a['compensation_fund_policy']!==undefined&&c['push']({'id':'machine.compensation_fund_policy','family':'treasury','what':'Compensation-fund\x20policy\x20for\x20this\x20template:\x20\x27'+a['compensation_fund_policy']+'\x27.','how':{'surface':'pre-publish','via':'template\x20declaration\x20compensation_fund_policy'},'effect':a['compensation_fund_policy']==='forbidden'?'The\x20build\x20must\x20NOT\x20emit\x20the\x20fund\x20top-up\x20step:\x20this\x20template\x27s\x20risk\x20carries\x20an\x20explicit\x20do-not-fund\x20ruling.':'The\x20fund\x20may\x20be\x20topped\x20up\x20as\x20a\x20deploy-time\x20step.','related':['service.compensation_fund'],'configurable':![],'why_not':'The\x20ruling\x20belongs\x20to\x20the\x20template\x27s\x20own\x20risk\x20model;\x20a\x20merchant\x20changing\x20it\x20would\x20be\x20overriding\x20the\x20safety\x20analysis\x20it\x20encodes.'});if(a['time_anchors']!==undefined)for(const [g,h]of Object['entries'](a['time_anchors'])){c['push']({'id':'machine.time_anchor.'+g,'family':'machine','what':'Timestamp\x20the\x20\x27'+g+'\x27\x20window\x20measures\x20from:\x20'+h+'.','how':{'surface':'pre-publish','via':'template\x20declaration\x20time_anchors\x20(resolved\x20into\x20the\x20guard\x20at\x20build)'},'effect':'Decides\x20whether\x20a\x20window\x20closes\x20correctly:\x20an\x20anchor\x20that\x20refreshes\x20on\x20every\x20forward\x20leaves\x20the\x20window\x20perpetually\x20open.','related':['window:'+g,'guard\x20clock\x20leg'],'configurable':![],'why_not':'The\x20anchor\x20follows\x20from\x20the\x20policy\x20the\x20template\x20encodes;\x20changing\x20it\x20changes\x20the\x20business\x20rule,\x20so\x20it\x20is\x20a\x20template\x20edit,\x20not\x20a\x20setting.'});}return c;}export function componentPlane(a){const b=edgesOf(a);return[...SERVICE_SLOTS,...SALES_SLOTS,...allocatorSlots(a),...machineSlots(a,b),...guardSlots(a,b)];}export function summarizeComponents(a){const b={};let c=0x0;for(const d of a){b[d['family']]=(b[d['family']]??0x0)+0x1;if(d['configurable'])c++;}return{'total':a['length'],'configurable':c,'fixed':a['length']-c,'hardcoded_splits':hardcodedSplits(a)['length'],'structural_rails':a['filter'](e=>e['freeze']==='rail')['length'],'unset_legs':a['filter'](e=>e['freeze']==='unset')['length'],'surplus_rows':a['filter'](e=>e['freeze']==='surplus')['length'],'by_family':b};}export function hardcodedSplits(a){return a['filter'](b=>b['freeze']==='split');}export function matchComponents(a,b,c=0xa){const d=a['trim']()['toLowerCase']();if(d==='')return[];const e=d['split'](/[^a-z0-9]+/)['filter'](g=>g['length']>0x1),f=[];for(const g of b){const h=(g['id']+'\x20'+g['family']+'\x20'+g['what']+'\x20'+g['how']['via']+'\x20'+g['effect']+'\x20'+g['related']['join']('\x20'))['toLowerCase']();if(!e['some'](j=>h['includes'](j)))continue;let i=0x0;if(g['id']['toLowerCase']()['includes'](d)||h['includes'](d))i+=0x6;for(const j of e){if(g['id']['toLowerCase']()['includes'](j))i+=0x3;else{if(h['includes'](j))i+=0x1;}}if(i>=0x3)f['push']({'slot':g,'score':i});}return f['sort']((k,l)=>l['score']-k['score']||k['slot']['id']['localeCompare'](l['slot']['id']))['slice'](0x0,c)['map'](k=>k['slot']);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Account,GetAccountOrMark_Address,isValidWowAddress}from'@wowok/wowok';export const ENTITY_RECIPIENT_RULE_ID='R-RECIPIENT-03';export const DIRECT_SALES_INVARIANT='WoWok\x20is\x20DIRECT\x20SALES:\x20the\x20merchant\x20pays\x20gas\x20only\x20and\x20there\x20is\x20NO\x20platform\x20commission,\x20so\x20no\x20allocator\x20sharing\x20row\x20may\x20pay\x20the\x20deploying\x20account.\x20'+'An\x20omitted\x20/\x20empty\x20/\x20unresolved\x20Entity\x20recipient\x20is\x20NOT\x20a\x20no-op\x20—\x20the\x20SDK\x20resolves\x20it\x20to\x20the\x20DEFAULT\x20LOCAL\x20ACCOUNT\
|
|
1
|
+
import{Account,GetAccountOrMark_Address,isValidWowAddress}from'@wowok/wowok';export const ENTITY_RECIPIENT_RULE_ID='R-RECIPIENT-03';export const DIRECT_SALES_INVARIANT='WoWok\x20is\x20DIRECT\x20SALES:\x20the\x20merchant\x20pays\x20gas\x20only\x20and\x20there\x20is\x20NO\x20platform\x20commission,\x20so\x20no\x20allocator\x20sharing\x20row\x20may\x20pay\x20the\x20deploying\x20account.\x20'+'An\x20omitted\x20/\x20empty\x20/\x20unresolved\x20Entity\x20recipient\x20is\x20NOT\x20a\x20no-op\x20—\x20the\x20SDK\x20resolves\x20it\x20to\x20the\x20DEFAULT\x20LOCAL\x20ACCOUNT\x20ADDRESS\x20via\x20its\x20local-account\x20resolution,\x20so\x20the\x20share\x20silently\x20leaves\x20the\x20escrow\x20to\x20whoever\x20ran\x20the\x20deploy.\x20'+'AUDIT\x20INVARIANT:\x20any\x20allocator\x20sharing\x20item\x20resolving\x20to\x20the\x20platform/builder\x20entity\x20with\x20a\x20non-zero\x20share\x20is\x20an\x20ERROR\x20under\x20direct-sales.';function entityRecipientValue(a){if(!a||typeof a!=='object')return undefined;if(!('Entity'in a))return undefined;return a['Entity'];}function entityRecipientLiteral(a){const b=entityRecipientValue(a);if(typeof b==='string')return b;if(!b||typeof b!=='object')return undefined;const c=b['name_or_address'];return typeof c==='string'?c:undefined;}function*entityRecipientRows(a){const b=a,c=b&&typeof b==='object'?b['allocators']:undefined;if(!Array['isArray'](c))return;for(let d=0x0;d<c['length'];d++){const e=c[d]?.['sharing'];if(!Array['isArray'](e))continue;for(let f=0x0;f<e['length'];f++){const g=e[f]?.['who'];if(!g||typeof g!=='object')continue;if(!('Entity'in g))continue;yield{'allocator_index':d,'sharing_index':f,'who':g};}}}function isZeroAddressLiteral(a){return/^0x0*$/i['test'](a['trim']());}function violationBase(a){return{'rule_id':ENTITY_RECIPIENT_RULE_ID,'allocator_index':a['allocator_index'],'sharing_index':a['sharing_index'],'raw':a['who']};}export function checkEntityRecipientsSync(a,b){const c=[],d=typeof b?.['builderAddress']==='string'&&b['builderAddress']?b['builderAddress']:undefined;try{for(const e of entityRecipientRows(a)){const f=entityRecipientLiteral(e['who']),g=violationBase(e);if(f===undefined||f['trim']()===''){c['push']({...g,'severity':'critical','resolved':d,'reason':'empty','message':'Allocator['+e['allocator_index']+'].sharing['+e['sharing_index']+']\x20pays\x20an\x20Entity\x20recipient\x20whose\x20'+'name_or_address\x20is\x20omitted\x20or\x20blank\x20—\x20the\x20SDK\x20resolves\x20it\x20to\x20the\x20DEFAULT\x20LOCAL\x20ACCOUNT,\x20i.e.\x20the\x20'+'deploying\x20account\x20itself.'});continue;}if(isZeroAddressLiteral(f)){c['push']({...g,'severity':'high','resolved':f['trim'](),'reason':'zero_address','message':'Allocator['+e['allocator_index']+'].sharing['+e['sharing_index']+']\x20pays\x20the\x20zero\x20address\x20—\x20'+'NOT\x20caught\x20on\x20chain:\x20the\x20on-chain\x20allocation\x20swallows\x20Recipient::Entity\x20in\x20a\x20catch-all\x20at\x20'+'declaration\x20and\x20forwards\x20the\x20raw\x20address\x20to\x20the\x20payout\x20'+'constructor\x20at\x20'+'payout,\x20so\x20the\x20share\x20is\x20silently\x20transferred\x20to\x200x0\x20and\x20permanently\x20burned.\x20This\x20rule\x20is\x20the\x20'+'only\x20defence.'});continue;}d&&isValidWowAddress(f)&&f['trim']()['toLowerCase']()===d['toLowerCase']()&&c['push']({...g,'severity':'high','resolved':f['trim'](),'reason':'deployer_equivalent','message':'Allocator['+e['allocator_index']+'].sharing['+e['sharing_index']+']\x20pays\x20Entity\x20'+f['trim']()+',\x20'+'which\x20is\x20the\x20deploying\x20account\x20—\x20under\x20direct\x20sales\x20an\x20allocator\x20may\x20not\x20pay\x20the\x20builder.'});}}catch{}return c;}async function defaultAccountAddress(){try{return await Account['Instance']()['get_address'](undefined);}catch{return undefined;}}export async function checkEntityRecipients(a,b){const c=checkEntityRecipientsSync(a,b),d=await defaultAccountAddress();if(!d)return c;const e=typeof b?.['builderAddress']==='string'&&b['builderAddress']?b['builderAddress']:undefined;for(const f of entityRecipientRows(a)){const g=entityRecipientLiteral(f['who']);if(g===undefined)continue;const h=g['trim']();if(h==='')continue;if(isZeroAddressLiteral(h))continue;if(e&&h['toLowerCase']()===e['toLowerCase']())continue;if(isValidWowAddress(h)){h['toLowerCase']()===d['toLowerCase']()&&c['push']({...violationBase(f),'severity':'high','resolved':h,'reason':'deployer_equivalent','message':'Allocator['+f['allocator_index']+'].sharing['+f['sharing_index']+']\x20pays\x20Entity\x20'+h+',\x20'+'which\x20is\x20the\x20DEFAULT\x20LOCAL\x20ACCOUNT\x20—\x20the\x20deploying\x20account,\x20not\x20a\x20third\x20party.'});continue;}const i=violationBase(f);let j;try{const k=entityRecipientValue(f['who']),l=k&&typeof k==='object'?k:h;j=await GetAccountOrMark_Address(l);}catch{j=undefined;}if(!j){c['push']({...i,'severity':'high','reason':'unresolved','message':'Allocator['+f['allocator_index']+'].sharing['+f['sharing_index']+']\x20pays\x20Entity\x20\x22'+h+'\x22,\x20which\x20'+'resolves\x20to\x20no\x20local\x20account,\x20no\x20local\x20mark,\x20and\x20no\x20address\x20—\x20the\x20share\x20has\x20no\x20real\x20destination.\x20'+'N-K7:\x20this\x20is\x20a\x20RESOLUTION\x20failure,\x20not\x20a\x20policy\x20violation\x20—\x20check\x20the\x20spelling/registration\x20of\x20'+'the\x20name,\x20or\x20write\x20the\x20recipient\x27s\x20on-chain\x20address\x20directly.\x20A\x20legitimate\x20third-party\x20recipient\x20'+'must\x20still\x20resolve\x20to\x20an\x20address\x20that\x20is\x20neither\x20blank\x20nor\x20the\x20deploying\x20account.'});continue;}j['toLowerCase']()===d['toLowerCase']()&&c['push']({...i,'severity':'high','resolved':j,'reason':'deployer_equivalent','message':'Allocator['+f['allocator_index']+'].sharing['+f['sharing_index']+']\x20pays\x20Entity\x20\x22'+h+'\x22,\x20which\x20'+('resolves\x20to\x20the\x20DEFAULT\x20LOCAL\x20ACCOUNT\x20'+j+'\x20—\x20the\x20deploying\x20account,\x20not\x20a\x20third\x20party.\x20')+'N-K7:\x20this\x20is\x20NOT\x20a\x20resolution\x20failure\x20—\x20the\x20name\x20resolved\x20fine,\x20it\x20just\x20resolved\x20to\x20the\x20'+'deploying\x20account.\x20If\x20the\x20intended\x20recipient\x20is\x20a\x20third\x20party,\x20fix\x20name_or_address.'});}return c;}export function formatEntityRecipientViolation(a){const b=a['resolved']?'\x20->\x20'+a['resolved']:'';return a['rule_id']+'\x20['+a['severity']+']\x20Allocator['+a['allocator_index']+'].sharing['+a['sharing_index']+']\x20'+(''+a['reason']+b+':\x20'+a['message']);}export function describeEntityRecipients(a){if(!Array['isArray'](a)||a['length']===0x0)return'';const b=[];for(const c of a){b['push']('\x20\x20•\x20'+formatEntityRecipientViolation(c));}return b['push'](''),b['push'](DIRECT_SALES_INVARIANT),b['push'](''),b['push']('How\x20to\x20fix\x20the\x20allocator\x20table:'),b['push']('\x20\x20-\x20Merchant\x20keeps\x20the\x20WHOLE\x20sale\x20(the\x20normal\x20direct-sales\x20shape):\x20ONE\x20sharing\x20row\x20'+'{\x20who:\x20{\x20GuardIdentifier:\x200\x20},\x20sharing:\x2010000,\x20mode:\x20\x22Rate\x22\x20}\x20—\x20the\x20refund\x20track,\x20anchored\x20via\x20'+'payment_info.for_object\x20so\x20only\x20the\x20order\x20owner\x20can\x20receive\x20it.'),b['push']('\x20\x20-\x20A\x20GENUINE\x20third\x20party\x20must\x20be\x20an\x20EXPLICIT,\x20non-empty\x20Entity\x20the\x20buyer\x20can\x20see\x20BEFORE\x20ordering:\x20'+'{\x20who:\x20{\x20Entity:\x20{\x20name_or_address:\x20\x22<mark_name_or_0x_address>\x22\x20}\x20}\x20}.'),b['push']('\x20\x20-\x20NEVER\x20use\x20{\x20Signer:\x20\x22signer\x22\x20}\x20for\x20a\x20refund\x20—\x20it\x20pays\x20tx_context::sender,\x20i.e.\x20whoever\x20runs\x20the\x20'+'alloc()\x20call\x20(the\x20keeper),\x20not\x20the\x20order\x20owner.'),b['push']('\x20\x20-\x20order_allocators\x20is\x20PERMANENTLY\x20IMMUTABLE\x20after\x20publish\x20(no\x20pause+lock\x20escape):\x20fix\x20the\x20recipient\x20'+'table\x20BEFORE\x20publish,\x20not\x20after.'),b['join']('\x0a');}
|
|
@@ -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':'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':'ThresholdPendingEvent','move_type':'::progress::ThresholdPendingEvent','module':'progress','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20not\x20push-bridged\x20(137-train,\x20user\x20evaluation\x202026-10-26):\x20it\x20fires\x20on\x20EVERY\x20'+'below-threshold\x20accumulation,\x20so\x20a\x20goal-bound\x20suggestion\x20per\x20vote\x20would\x20be\x20noise.\x20The\x20'+'ProgressEvent\x20bridge\x20already\x20carries\x20the\x20node-level\x20note;\x20the\x20actionable\x20\x27you\x20owe\x20an\x20'+'approval\x27\x20reminder\x20is\x20per-participant\x20and\x20belongs\x20to\x20the\x20workflow\x20view.\x20The\x20Intent\x20Radar\x20'+'consumes\x20it\x20as\x20context\x20(who\x20is\x20accumulating\x20toward\x20which\x20next_node).','business_meaning':'A\x20weighted\x20forward\x20is\x20accumulating\x20below\x20its\x20threshold\x20(governance/multi-sig\x20intermediate\x20state)','trigger':'Emitted\x20only\x20when\x20a\x20weighted\x20forward\x20does\x20NOT\x20reach\x20its\x20threshold\x20in\x20this\x20transaction\x20—\x20'+'the\x20progress\x20stays\x20at\x20`node`\x20and\x20the\x20active\x20session\x20keeps\x20accumulating\x20toward\x20`next_node`.\x20'+'Reaching\x20the\x20threshold\x20emits\x20ProgressEvent\x20instead,\x20so\x20the\x20two\x20never\x20fire\x20together.\x20Gated\x20'+'by\x20the\x20`enable_threshold_pending_event`\x20feature\x20flag\x20(protocol\x20version\x20137);\x20a\x20pre-137\x20'+'chain\x20emits\x20nothing.','side_effect':'The\x20intermediate\x20state\x20of\x20multi-sig\x20/\x20vote-driven\x20governance\x20becomes\x20observable:\x20`weights`\x20'+'is\x20the\x20session\x20total\x20AFTER\x20this\x20transaction\x20and\x20`threshold`\x20the\x20bar\x20still\x20to\x20clear.\x20The\x20'+'authoritative\x20per-participant\x20detail\x20(who\x20voted,\x20with\x20what\x20material,\x20when)\x20lives\x20on\x20the\x20'+'Progress\x20object\x27s\x20session\x20—\x20read\x20it\x20by\x20`object`\x20when\x20the\x20summary\x20is\x20not\x20enough.','params':[{'name':'object','shape':'address','meaning':'The\x20Progress\x20object\x20(source\x20of\x20truth\x20for\x20the\x20pending\x20session\x20detail)'},{'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':'The\x20node\x20the\x20progress\x20is\x20still\x20at\x20(the\x20accumulation\x20has\x20not\x20moved\x20it)'},{'name':'next_node','shape':'String','meaning':'The\x20pending\x20target\x20this\x20session\x20accumulates\x20toward'},{'name':'forward','shape':'String','meaning':'The\x20forward\x20whose\x20weights\x20just\x20accumulated'},{'name':'weights','shape':'u64','meaning':'Session\x20weight\x20total\x20AFTER\x20this\x20transaction\x20(still\x20below\x20threshold)'},{'name':'threshold','shape':'u64','meaning':'Weight\x20required\x20to\x20advance\x20to\x20next_node'}]},{'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;}
|
|
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(on-chain)\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':'the\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':'ThresholdPendingEvent','move_type':'::progress::ThresholdPendingEvent','module':'progress','category':'state_change','consumers':['intent_radar'],'channel_note':'Deliberately\x20not\x20push-bridged\x20(137-train,\x20user\x20evaluation\x202026-10-26):\x20it\x20fires\x20on\x20EVERY\x20'+'below-threshold\x20accumulation,\x20so\x20a\x20goal-bound\x20suggestion\x20per\x20vote\x20would\x20be\x20noise.\x20The\x20'+'ProgressEvent\x20bridge\x20already\x20carries\x20the\x20node-level\x20note;\x20the\x20actionable\x20\x27you\x20owe\x20an\x20'+'approval\x27\x20reminder\x20is\x20per-participant\x20and\x20belongs\x20to\x20the\x20workflow\x20view.\x20The\x20Intent\x20Radar\x20'+'consumes\x20it\x20as\x20context\x20(who\x20is\x20accumulating\x20toward\x20which\x20next_node).','business_meaning':'A\x20weighted\x20forward\x20is\x20accumulating\x20below\x20its\x20threshold\x20(governance/multi-sig\x20intermediate\x20state)','trigger':'Emitted\x20only\x20when\x20a\x20weighted\x20forward\x20does\x20NOT\x20reach\x20its\x20threshold\x20in\x20this\x20transaction\x20—\x20'+'the\x20progress\x20stays\x20at\x20`node`\x20and\x20the\x20active\x20session\x20keeps\x20accumulating\x20toward\x20`next_node`.\x20'+'Reaching\x20the\x20threshold\x20emits\x20ProgressEvent\x20instead,\x20so\x20the\x20two\x20never\x20fire\x20together.\x20Gated\x20'+'by\x20the\x20`enable_threshold_pending_event`\x20feature\x20flag\x20(protocol\x20version\x20137);\x20a\x20pre-137\x20'+'chain\x20emits\x20nothing.','side_effect':'The\x20intermediate\x20state\x20of\x20multi-sig\x20/\x20vote-driven\x20governance\x20becomes\x20observable:\x20`weights`\x20'+'is\x20the\x20session\x20total\x20AFTER\x20this\x20transaction\x20and\x20`threshold`\x20the\x20bar\x20still\x20to\x20clear.\x20The\x20'+'authoritative\x20per-participant\x20detail\x20(who\x20voted,\x20with\x20what\x20material,\x20when)\x20lives\x20on\x20the\x20'+'Progress\x20object\x27s\x20session\x20—\x20read\x20it\x20by\x20`object`\x20when\x20the\x20summary\x20is\x20not\x20enough.','params':[{'name':'object','shape':'address','meaning':'The\x20Progress\x20object\x20(source\x20of\x20truth\x20for\x20the\x20pending\x20session\x20detail)'},{'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':'The\x20node\x20the\x20progress\x20is\x20still\x20at\x20(the\x20accumulation\x20has\x20not\x20moved\x20it)'},{'name':'next_node','shape':'String','meaning':'The\x20pending\x20target\x20this\x20session\x20accumulates\x20toward'},{'name':'forward','shape':'String','meaning':'The\x20forward\x20whose\x20weights\x20just\x20accumulated'},{'name':'weights','shape':'u64','meaning':'Session\x20weight\x20total\x20AFTER\x20this\x20transaction\x20(still\x20below\x20threshold)'},{'name':'threshold','shape':'u64','meaning':'Weight\x20required\x20to\x20advance\x20to\x20next_node'}]},{'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,26 @@
|
|
|
1
|
+
export interface FeeParamBinding {
|
|
2
|
+
template: string;
|
|
3
|
+
guard_key: string;
|
|
4
|
+
param: string;
|
|
5
|
+
to: string;
|
|
6
|
+
scale?: number;
|
|
7
|
+
plus?: string | readonly string[];
|
|
8
|
+
no_author_literal?: boolean;
|
|
9
|
+
note: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const FEE_PARAM_BINDINGS: readonly FeeParamBinding[];
|
|
12
|
+
export declare function bindingsFor(templateId: string, guardKey: string): readonly FeeParamBinding[];
|
|
13
|
+
export declare function applyFeeParamBindings(params: Record<string, unknown> | undefined, templateId: string, guardKey: string, inputs: Record<string, unknown>, feeParams?: Record<string, number | string>): Record<string, unknown> | undefined;
|
|
14
|
+
export interface BindingIssue {
|
|
15
|
+
binding: FeeParamBinding;
|
|
16
|
+
problem: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function feeParamBindingIssues(templates: readonly {
|
|
19
|
+
id: string;
|
|
20
|
+
fee_params: Record<string, number | string>;
|
|
21
|
+
guards: readonly {
|
|
22
|
+
key?: string;
|
|
23
|
+
template_id: string;
|
|
24
|
+
params?: Record<string, unknown>;
|
|
25
|
+
}[];
|
|
26
|
+
}[], guardDefault: (templateId: string, param: string) => string | undefined): BindingIssue[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{TIME_GUARD_INSTANTIATIONS,TWIN_PARAM,unitScale}from'./pattern-resolutions.js';const HAND_WRITTEN_BINDINGS=[{'template':'delivery/restaurant-marketplace','guard_key':'deliver_confirm_timeout','param':'auto_confirm_hours','to':'duration_ms','scale':0x36ee80,'note':'buyer\x20silence\x20window'},{'template':'delivery/restaurant-marketplace','guard_key':'claim_filed','param':'claim_window_hours','to':'duration_ms','scale':0x36ee80,'note':'serial\x20claim\x20window\x20closes'},{'template':'delivery/restaurant-marketplace','guard_key':'settle_window_gate','param':'settle_hours','to':'duration_ms','scale':0x36ee80,'note':'settlement\x20opens'},{'template':'group_buy/platform-supplied-pickup','guard_key':'unclaimed_refund','param':'pickup_window_hours','to':'duration_ms','scale':0x36ee80,'note':'unclaimed\x20order\x20refunds'},{'template':'group_buy/platform-supplied-pickup','guard_key':'unclaimed_settle_open','param':'pickup_window_hours','to':'duration_ms','scale':0x36ee80,'note':'settlement\x20opens\x20after\x20pickup\x20window'},{'template':'group_buy/platform-supplied-pickup','guard_key':'unclaimed_refund_late','param':'pickup_window_hours','to':'duration_ms','scale':0x36ee80,'note':'keeper\x20late\x20refund\x20after\x20the\x20pickup\x20window\x20(the\x20refund_buyer\x20DEFAULT\x20exit,\x20dmcx\x20F-23)'},{'template':'group_buy/platform-supplied-pickup','guard_key':'claim_filed','param':'claim_window_hours','to':'duration_ms','scale':0x36ee80,'note':'serial\x20claim\x20window\x20closes'},{'template':'group_buy/platform-supplied-pickup','guard_key':'settle_window_gate','param':'settle_hours','to':'duration_ms','scale':0x36ee80,'note':'settlement\x20opens'},{'template':'group_buy/platform-supplied-pickup','guard_key':'return_window_pickup','param':'return_window_hours','to':'duration_ms','scale':0x36ee80,'note':'return\x20window\x20after\x20pickup'},{'template':'group_buy/platform-supplied-pickup','guard_key':'return_window_claim','param':'return_window_hours','to':'duration_ms','scale':0x36ee80,'note':'return\x20window\x20from\x20the\x20serial\x20claim\x20window\x20(M-T2:\x20the\x20keeper\x20can\x20open\x20claim_window\x20before\x20pickup\x20—\x20the\x20buyer\x20keeps\x20the\x20same\x20filing\x20right\x20from\x20THAT\x20rest\x20state)'},{'template':'group_buy/leader-sourced-community','guard_key':'return_window_delivered','param':'return_window_hours','to':'duration_ms','scale':0x36ee80,'note':'return\x20window\x20after\x20delivery'},{'template':'group_buy/leader-sourced-community','guard_key':'return_window_claim','param':'return_window_hours','to':'duration_ms','scale':0x36ee80,'note':'return\x20window\x20from\x20the\x20serial\x20claim\x20window\x20(M-T2:\x20distinct\x20edge,\x20own\x20key)'},{'template':'retail/vertical-handmade','guard_key':'return_window','param':'settlement_delay_days','to':'duration_ms','scale':0x5265c00,'note':'settle\x20delay\x20doubles\x20as\x20the\x20return\x20window\x20anchor'},{'template':'retail/vertical-handmade','guard_key':'review_window','param':'review_window_days','to':'duration_ms','scale':0x5265c00,'note':'review\x20window'},{'template':'group_buy/platform-supplied-pickup','guard_key':'return_transit_timeout','param':'return_transit_days','to':'duration_ms','scale':0x5265c00,'note':'return\x20transit\x20deadline'},{'template':'group_buy/leader-sourced-community','guard_key':'return_transit_timeout','param':'return_transit_days','to':'duration_ms','scale':0x5265c00,'note':'return\x20transit\x20deadline'},{'template':'education/mooc-degree','guard_key':'review_window','param':'review_window_days','to':'duration_ms','scale':0x5265c00,'note':'student\x20review\x20deadline\x20window'},{'template':'freelance/agent-task','guard_key':'auto_release','param':'evaluation_window_days','to':'claim_window_days','note':'auto-release\x20window'},{'template':'licensing/royalty-stream-auction','guard_key':'inspection_timeout','param':'inspection_window_days','to':'claim_window_days','note':'inspection\x20deadline'},{'template':'licensing/royalty-stream-auction','guard_key':'return_window','param':'inspection_window_days','to':'claim_window_days','note':'inspection\x20doubles\x20as\x20the\x20return\x20window'},{'template':'licensing/royalty-stream-auction','guard_key':'cancel_return','param':'inspection_window_days','to':'claim_window_days','note':'inspection\x20doubles\x20as\x20the\x20cancel\x20window'},{'template':'licensing/asset-license-metered','guard_key':'delivery_timeout','param':'delivery_window_days','to':'claim_window_days','note':'delivery\x20deadline'},{'template':'crowdfunding/reward-campaign-fulfillment','guard_key':'review_window','param':'review_window_days','to':'claim_window_days','note':'review\x20window'},{'template':'crowdfunding/reward-campaign-fulfillment','guard_key':'return_window','param':'return_window_days','to':'claim_window_days','note':'return\x20window'},{'template':'crowdfunding/reward-campaign-fulfillment','guard_key':'settle_clock','param':'settlement_delay_days','to':'claim_window_days','note':'settle\x20delay\x20after\x20delivery'},{'template':'crowdfunding/reward-campaign-fulfillment','guard_key':'review_settle_clock','param':'settlement_delay_days','to':'claim_window_days','note':'settle\x20delay\x20after\x20review'},{'template':'freelance/catalog-tiers','guard_key':'instant_cancel_24h','param':'instant_cancel_hours','to':'free_cancel_hours','note':'buyer\x20instant-cancel\x20window\x20(order.time\x20anchor)'},{'template':'travel/global-ota','guard_key':'no_show_evidence','param':'no_show_floor_hours','to':'not_before_hours','note':'no-show\x20evidence\x20floor'},{'template':'travel/global-ota','guard_key':'review_claim','param':'reward_claim_closes_after_days','to':'closes_after_days','note':'bounty\x20claim\x20deadline'},{'template':'subscription/direct-fan-subscription','guard_key':'reward_claim','param':'reward_claim_closes_after_days','to':'closes_after_days','note':'bounty\x20claim\x20deadline'},{'template':'licensing/royalty-stream-auction','guard_key':'review_claim','param':'reward_claim_closes_after_days','to':'closes_after_days','note':'bounty\x20claim\x20deadline'},{'template':'licensing/asset-license-metered','guard_key':'review_claim','param':'reward_claim_closes_after_days','to':'closes_after_days','note':'bounty\x20claim\x20deadline'},{'template':'retail/restock-supply','guard_key':'settle_alloc','param':'settlement_days','to':'claim_window_days','note':'serial\x20release\x20clock\x20on\x20the\x20allocator\x20(no\x20settlement\x20forward\x20exists)'},{'template':'travel/destination-experience','guard_key':'cancel_tier_1','param':'cancel_tier_1_boundary_hours','to':'lower_hours','note':'tier-1\x20lower\x20band\x20edge\x20(7\x20days\x20by\x20default)'},{'template':'travel/destination-experience','guard_key':'cancel_tier_2','param':'cancel_tier_1_boundary_hours','to':'upper_hours','note':'tier-1/tier-2\x20seam'},{'template':'travel/destination-experience','guard_key':'cancel_tier_2','param':'cancel_tier_2_boundary_hours','to':'lower_hours','note':'tier-2\x20lower\x20band\x20edge\x20(3\x20days\x20by\x20default)'},{'template':'travel/destination-experience','guard_key':'cancel_tier_3','param':'cancel_tier_2_boundary_hours','to':'upper_hours','note':'tier-2/tier-3\x20seam'},{'template':'travel/destination-experience','guard_key':'cancel_tier_3','param':'cancel_tier_3_boundary_hours','to':'lower_hours','note':'tier-3\x20lower\x20band\x20edge\x20(1\x20day\x20by\x20default)'},{'template':'travel/destination-experience','guard_key':'cancel_tier_4','param':'cancel_tier_3_boundary_hours','to':'upper_hours','note':'tier-3/tier-4\x20seam'},{'template':'crowdfunding/reward-campaign-fulfillment','guard_key':'reward_claim','param':'reward_claim_closes_after_days','to':'closes_after_days','note':'bounty\x20claim\x20deadline'}];function derivedRows(){const a=[];for(const c of TIME_GUARD_INSTANTIATIONS){const d=c['days']!==undefined?'days':c['hours']!==undefined?'hours':undefined;if(d===undefined)continue;a['push']({'template':c['template'],'guard_key':c['guard_key'],'param':c['days']??c['hours'],'to':TWIN_PARAM[d],'scale':unitScale(d),...c['plus_days']!==undefined?{'plus':c['plus_days']}:{},'no_author_literal':!![],'note':c['note']});}return a;}export const FEE_PARAM_BINDINGS=[...HAND_WRITTEN_BINDINGS,...derivedRows()];const BY_SPEC=new Map();for(const b of FEE_PARAM_BINDINGS){const k=specKey(b['template'],b['guard_key']),rows=BY_SPEC['get'](k);if(rows===undefined)BY_SPEC['set'](k,[b]);else rows['push'](b);}function specKey(a,c){return a+'\x00'+c;}export function bindingsFor(a,c){return BY_SPEC['get'](specKey(a,c))??[];}export function applyFeeParamBindings(a,c,d,e,f){const g=BY_SPEC['get'](specKey(c,d));if(g===undefined)return a;let h=a;for(const i of g){const j=e[i['param']],l=j??f?.[i['param']];if(l===undefined||l===null)continue;const o=typeof l==='number'?l:Number(l);if(!Number['isFinite'](o))continue;let p=o;const q=i['plus']===undefined?[]:typeof i['plus']==='string'?[i['plus']]:i['plus'];let r=!![];for(const s of q){const t=e[s]??f?.[s],u=typeof t==='number'?t:Number(t);if(t===undefined||t===null||!Number['isFinite'](u)){r=![];break;}p+=u;}if(!r)continue;h={...h??{},[i['to']]:i['scale']===undefined?p:Math['round'](p*i['scale'])};}return h;}export function feeParamBindingIssues(a,c){const d=[],e=new Map(a['map'](f=>[f['id'],f]));for(const f of FEE_PARAM_BINDINGS){const h=e['get'](f['template']);if(h===undefined){d['push']({'binding':f,'problem':'template\x20\x27'+f['template']+'\x27\x20does\x20not\x20exist'});continue;}const i=h['fee_params'][f['param']];if(i===undefined){d['push']({'binding':f,'problem':'fee_param\x20\x27'+f['param']+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});continue;}if(f['plus']!==undefined){const o=typeof f['plus']==='string'?[f['plus']]:f['plus'],p=o['filter'](q=>h['fee_params'][q]===undefined);if(p['length']>0x0){d['push']({'binding':f,'problem':'fee_param\x20\x27'+p['join']('\x27,\x20\x27')+'\x27\x20(plus)\x20is\x20not\x20declared\x20by\x20'+f['template']});continue;}}const j=h['guards']['find'](q=>q['key']===f['guard_key']);if(j===undefined){d['push']({'binding':f,'problem':'guard\x20key\x20\x27'+f['guard_key']+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});continue;}const l=f['scale']===undefined?Number(i):Math['round'](Number(i)*f['scale']);if(f['no_author_literal']===!![])continue;const m=j['params']?.[f['to']];if(m!==undefined){Number(m)!==l&&d['push']({'binding':f,'problem':'literal\x20'+f['to']+'='+String(m)+'\x20!=\x20fee_param\x20'+f['param']+'='+String(i)+'\x20x\x20'+String(f['scale']??0x1)+'\x20('+l+')'});continue;}const n=c(j['template_id'],f['to']);if(n===undefined)d['push']({'binding':f,'problem':'guard\x20'+j['template_id']+'\x20declares\x20no\x20param\x20\x27'+f['to']+'\x27'});else Number(n)!==Number(i)&&d['push']({'binding':f,'problem':'guard\x20'+j['template_id']+'\x20default\x20'+f['to']+'='+n+'\x20!=\x20fee_param\x20'+f['param']+'='+String(i)+'\x20(no\x20literal\x20to\x20compare)'});}return d;}
|