@wowok/agent-mcp 3.2.7 → 3.3.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/README.md +2 -2
- 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 +10 -1
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +10 -0
- package/dist/composition/inflight.js +1 -1
- package/dist/extensions/business-modules.d.ts +1 -1
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/capability-manifest.js +1 -1
- package/dist/extensions/industry-audit.spec.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/graph/onchain/edge-schema.js +1 -1
- package/dist/graph/onchain/facts.spec.js +1 -1
- package/dist/graph/onchain/field-manifest.js +1 -1
- package/dist/harness/index.d.ts +1 -0
- package/dist/harness/index.js +1 -1
- package/dist/harness/operation-id.d.ts +1 -0
- package/dist/harness/operation-id.js +1 -0
- package/dist/harness/recover.js +1 -1
- package/dist/index.js +1 -1
- package/dist/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/keeper/KeeperScan.d.ts +2 -1
- package/dist/keeper/KeeperScan.js +1 -1
- package/dist/keeper/keeper.spec.js +1 -1
- package/dist/keeper/types.d.ts +3 -0
- package/dist/keeper/types.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +34 -0
- package/dist/knowledge/allocator-rail-verifier.js +1 -0
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/arbitration-venue-order.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +19 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/alloc_audit.json +1 -1
- package/dist/knowledge/baselines/rules/arb.json +1 -1
- package/dist/knowledge/baselines/rules/guard.json +106 -1
- package/dist/knowledge/baselines/rules/machine.json +9 -6
- package/dist/knowledge/baselines/rules/plan.json +40 -17
- package/dist/knowledge/baselines/semantic-facts.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +1 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/contract-invariants.js +1 -1
- package/dist/knowledge/discount-threshold.d.ts +11 -0
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-anchor-reach.d.ts +1 -1
- package/dist/knowledge/guard-anchor-reach.js +1 -1
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-ledger.js +1 -1
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.d.ts +1 -0
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-brief.d.ts +6 -0
- package/dist/knowledge/guard-submission-brief.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +2 -2
- package/dist/knowledge/guard-templates.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.js +1 -1
- package/dist/knowledge/machine-ledger.js +1 -1
- package/dist/knowledge/machine-puzzle.d.ts +1 -1
- package/dist/knowledge/machine-puzzle.js +1 -1
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/machine-topology.d.ts +8 -0
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/protocol-facts.d.ts +16 -0
- package/dist/knowledge/protocol-facts.js +1 -0
- package/dist/knowledge/recipient-constraint.js +1 -1
- package/dist/knowledge/reward-ledger.d.ts +2 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-templates.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +0 -2
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +7 -0
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-loader.d.ts +13 -1
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +2 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tool-constraints.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +7 -3
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/monitor/normalize.d.ts +1 -1
- package/dist/monitor/normalize.js +1 -1
- package/dist/monitor/types.d.ts +1 -1
- package/dist/monitor/types.js +1 -1
- package/dist/participation/radar-core.d.ts +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/game-theory.d.ts +1 -0
- package/dist/playbooks/service-build/game-theory.js +1 -1
- package/dist/playbooks/service-build/intent-analyzer.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +8 -0
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +28 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.d.ts +2 -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/reverse-mapping-nk4.spec.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/relationship/registry.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/role/profiles.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/safety/preview.d.ts +1 -0
- package/dist/safety/preview.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +19 -1
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +1 -1
- package/dist/schema/call/arbitration.d.ts +8 -8
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +52 -5
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +3 -0
- package/dist/schema/call/contact.d.ts +5 -5
- package/dist/schema/call/demand.d.ts +5 -5
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/guard.d.ts +3 -3
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +13 -5
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +5 -5
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/permission.d.ts +5 -5
- package/dist/schema/call/personal.d.ts +4 -4
- package/dist/schema/call/progress.d.ts +5 -5
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/proof.js +1 -1
- package/dist/schema/call/receipt.d.ts +8 -0
- package/dist/schema/call/receipt.js +1 -1
- package/dist/schema/call/repository.d.ts +9 -9
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +25 -5
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +10 -5
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +5 -5
- package/dist/schema/common/index.d.ts +6 -6
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +17 -1
- package/dist/schema/goal/planning.d.ts +28 -2
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +3 -0
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +9 -0
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +31 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +57 -43
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.d.ts +22 -6
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +164 -102
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +2 -0
- package/dist/schema/schema-query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/utils/permission-machine-check.d.ts +2 -0
- package/dist/schema/utils/permission-machine-check.js +1 -1
- package/dist/schema/workflow/index.d.ts +1 -1
- package/dist/schema-query-impl/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +3 -0
- package/dist/schemas/account_operation.schema.json +4 -4
- package/dist/schemas/benchmark_migration_operation.output.json +42 -0
- package/dist/schemas/benchmark_migration_operation.schema.json +40 -3
- package/dist/schemas/bridge_operation.output.json +3 -0
- package/dist/schemas/goal_operation.schema.json +52 -2
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +8 -0
- package/dist/schemas/industry_pack_operation.schema.json +9 -0
- package/dist/schemas/intent_radar.output.json +8 -2
- package/dist/schemas/intent_radar.schema.json +4 -1
- package/dist/schemas/local_cache_operation.output.json +3 -0
- package/dist/schemas/local_history_operation.output.json +3 -0
- package/dist/schemas/local_info_operation.output.json +3 -0
- package/dist/schemas/local_mark_operation.output.json +3 -0
- package/dist/schemas/messenger_operation.schema.json +4 -4
- package/dist/schemas/monitor_events.schema.json +3 -1
- package/dist/schemas/onchain_events.output.json +275 -11
- package/dist/schemas/onchain_events.schema.json +25 -1
- package/dist/schemas/onchain_operations.output.json +47 -5
- package/dist/schemas/onchain_operations.schema.json +664 -179
- package/dist/schemas/onchain_operations_allocation.schema.json +7 -7
- package/dist/schemas/onchain_operations_arbitration.schema.json +21 -15
- package/dist/schemas/onchain_operations_contact.schema.json +15 -10
- package/dist/schemas/onchain_operations_demand.schema.json +15 -10
- package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -5
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +346 -8
- package/dist/schemas/onchain_operations_machine.schema.json +24 -11
- package/dist/schemas/onchain_operations_order.schema.json +17 -12
- package/dist/schemas/onchain_operations_permission.schema.json +10 -5
- package/dist/schemas/onchain_operations_personal.schema.json +2 -2
- package/dist/schemas/onchain_operations_progress.schema.json +17 -12
- package/dist/schemas/onchain_operations_proof.schema.json +6 -6
- package/dist/schemas/onchain_operations_repository.schema.json +19 -14
- package/dist/schemas/onchain_operations_reward.schema.json +96 -15
- package/dist/schemas/onchain_operations_service.schema.json +33 -21
- package/dist/schemas/onchain_operations_treasury.schema.json +15 -10
- package/dist/schemas/onchain_table_data.output.json +7 -7
- package/dist/schemas/query_toolkit.output.json +268 -44
- package/dist/schemas/query_toolkit.schema.json +1 -1
- package/dist/schemas/schema_query.schema.json +7 -2
- package/dist/schemas/workflow_operation.schema.json +5 -5
- package/dist/schemas/wowok_buildin_info.output.json +140 -3
- package/dist/schemas/wowok_buildin_info.schema.json +2 -2
- package/dist/tools/handlers/benchmark-migration.d.ts +66 -1
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/dispatch-expectations.d.ts +0 -1
- package/dist/tools/handlers/dispatch-expectations.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/keeper.d.ts +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +12 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.d.ts +1 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/review-chain.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/files.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/upgrade-check.d.ts +23 -0
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wip-deploy-assist.d.ts +6 -0
- package/dist/tools/wip-deploy-assist.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SEMANTIC_TO_MACHINE_RULES=[{'id':'P-M-SEQ','pattern_name':'Sequential\x20Execution','category':'execution','semantic_intent':'Single\x20actor\x20advances\x20workflow\x20one\x20step\x20at\x20a\x20time.\x20Each\x20Pair\x20has\x20threshold=1\x20with\x20a\x20single\x20Forward\x20weight=1.','match_keywords':['sequential','linear','one\x20step\x20at\x20a\x20time'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Each\x20Pair:\x20{\x20threshold:\x201,\x20forwards:\x20[{\x20name,\x20weight:\x201,\x20namedOperator\x20|\x20permissionIndex\x20}]\x20}'},'constraints':['Each\x20Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex','weight\x20>\x200\x20(typically\x201)','prev_node\x20references\x20must\x20form\x20a\x20valid\x20DAG\x20(no\x20cycles)'],'example':{'pair':{'prev_node':'NodeA','next_node':'NodeB','threshold':0x1,'forwards':[{'name':'Advance','weight':0x1,'named_operator':''}]}}},{'id':'P-M-AND','pattern_name':'Parallel\x20AND\x20(Dual-Signature\x20Consensus)','category':'execution','semantic_intent':'Multiple\x20parties\x20must\x20ALL\x20contribute\x20to\x20advance.\x20Pair\x20threshold=N\x20with\x20N\x20DISTINCT\x20Forwards\x20(weight=1\x20each)\x20—\x20one\x20forward\x20per\x20contributing\x20operator.\x20'+'A\x20single\x20forward\x20CANNOT\x20be\x20executed\x20by\x20two\x20different\x20people:\x20each\x20forward\x20is\x20single-operator-locked\x20by\x20the\x20first\x20account\x20that\x20accomplishes\x20it\x20'+'(once\x20accomplished,\x20a\x20forward\x20is\x20locked\x20to\x20that\x20operator;\x20a\x20second\x20operator\x20re-executing\x20the\x20same\x20accomplished\x20forward\x20aborts\x20E_NOT_THE_HOLDER,\x20and\x20the\x20weight\x20is\x20counted\x20only\x20once).\x20'+'So\x20N\x20operators\x20cooperating\x20on\x20a\x20threshold-N\x20transition\x20MUST\x20each\x20have\x20their\x20own\x20forward\x20in\x20the\x20Pair.','match_keywords':['and','all','dual-sig','both\x20confirm','both\x20must'],'schema_elements':{'threshold':0x2,'forward_count':0x2,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20N,\x20forwards:\x20[{\x20weight:\x201,\x20namedOperator:\x20\x27\x27\x20},\x20{\x20weight:\x201,\x20permissionIndex:\x202\x20}]\x20}'},'constraints':['threshold\x20must\x20equal\x20the\x20number\x20of\x20required\x20Forwards','Each\x20contributing\x20operator\x20needs\x20a\x20DISTINCT\x20Forward\x20—\x20never\x20reuse\x20one\x20forward\x20for\x20two\x20people','Each\x20Forward\x20must\x20have\x20a\x20distinct\x20permission\x20model\x20(no\x20two\x20identical)','A\x20forward\x20is\x20locked\x20by\x20its\x20first\x20operator:\x20once\x20accomplished\x20it\x20contributes\x20its\x20weight\x20once\x20and\x20re-execution\x20by\x20others\x20aborts\x20E_NOT_THE_HOLDER','If\x20either\x20party\x20fails\x20to\x20sign,\x20workflow\x20stalls\x20—\x20consider\x20adding\x20timeout\x20Guard'],'example':{'pair':{'prev_node':'Initiated','next_node':'Approved','threshold':0x2,'forwards':[{'name':'CustomerApprove','weight':0x1,'named_operator':''},{'name':'MerchantApprove','weight':0x1,'permission_index':0x2}]}}},{'id':'P-M-OR','pattern_name':'Parallel\x20OR\x20(Any-One\x20Execution)','category':'execution','semantic_intent':'Any\x20one\x20of\x20multiple\x20paths\x20can\x20advance\x20the\x20workflow.\x20Multiple\x20Pairs,\x20each\x20threshold=1.','match_keywords':['or','any','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Multiple\x20Pairs\x20from\x20same\x20prev_node,\x20each\x20with\x20threshold=1'},'constraints':['Distinct\x20next_node\x20for\x20each\x20Pair\x20(or\x20distinct\x20Forward)','If\x20targets\x20are\x20different\x20nodes,\x20this\x20becomes\x20COMPETING\x20topology','If\x20targets\x20are\x20same\x20node,\x20alternative\x20paths\x20converge\x20(FORKMERGE)'],'example':{'pairs':[{'prev_node':'Choice','next_node':'PathA','threshold':0x1,'forwards':[{'name':'ChooseA','weight':0x1,'named_operator':''}]},{'prev_node':'Choice','next_node':'PathB','threshold':0x1,'forwards':[{'name':'ChooseB','weight':0x1,'named_operator':''}]}]}},{'id':'P-M-VOTE','pattern_name':'Weighted\x20Voting','category':'execution','semantic_intent':'Multiple\x20parties\x20vote\x20with\x20unequal\x20weights.\x20threshold=100,\x20varied\x20weights\x20(e.g.\x2060+40).\x20'+'Guard\x20extracts\x20weight\x20dynamically\x20from\x20Arbitration\x20object.','match_keywords':['vote','weight','stakeholder'],'schema_elements':{'threshold':0x64,'forward_count':'dynamic','permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20100,\x20forwards:\x20[{\x20weight:\x2060,\x20permissionIndex:\x202,\x20guard:\x20arb_voting_guard\x20},\x20{\x20weight:\x208,\x20namedOperator:\x20\x27member\x27,\x20guard:\x20arb_voting_guard\x20}]\x20}'},'constraints':['Guard\x20MUST\x20check\x20arb.voted\x20has\x20[Signer]\x20to\x20prevent\x20double-voting\x20(R-X1-14\x20CRITICAL)','Weight\x20is\x20query-derived\x20from\x20Arbitration\x20object\x20(not\x20hardcoded\x20in\x20Forward)','Competing\x20Pair\x20often\x20added:\x20Approved\x20vs\x20Rejected\x20(timeout)\x20—\x20first-wins','Forward\x20weight\x20field\x20is\x20just\x20session\x20counter;\x20actual\x20weight\x20from\x20Guard'],'example':{'pair':{'prev_node':'Voting','next_node':'Approved','threshold':0x64,'forwards':[{'name':'ChiefVote','weight':0x3c,'permission_index':0x2,'guard':'arb_voting_guard'},{'name':'MemberVote','weight':0x8,'named_operator':'member','guard':'arb_voting_guard'}]}}},{'id':'P-M-HYBRID','pattern_name':'Hybrid\x20Mode\x20(Key\x20Party\x20Required\x20+\x20Others\x20Optional)','category':'execution','semantic_intent':'One\x20key\x20party\x20must\x20contribute,\x20others\x20are\x20optional.\x20threshold=5\x20with\x20mixed\x20weights\x20(3+1+1).','match_keywords':['hybrid','mixed','key\x20party'],'schema_elements':{'threshold':0x5,'forward_count':0x3,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x205,\x20forwards:\x20[{\x20weight:\x203,\x20permissionIndex:\x202\x20(key)\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role1\x27\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role2\x27\x20}]\x20}'},'constraints':['Key\x20party\x27s\x20weight\x20must\x20alone\x20be\x20insufficient\x20(otherwise\x20optional\x20parties\x20are\x20meaningless)','Total\x20weight\x20of\x20all\x20Forwards\x20must\x20be\x20>=\x20threshold','Each\x20Forward\x20must\x20have\x20distinct\x20permission\x20model'],'example':{'pair':{'prev_node':'Review','next_node':'Approved','threshold':0x5,'forwards':[{'name':'ManagerApprove','weight':0x3,'permission_index':0x2},{'name':'EngineerApprove','weight':0x1,'named_operator':'engineer'},{'name':'QAApprove','weight':0x1,'named_operator':'qa'}]}}},{'id':'P-M-LINEAR','pattern_name':'Linear\x20Flow\x20(No\x20Branches)','category':'topology','semantic_intent':'Workflow\x20progresses\x20in\x20a\x20straight\x20line\x20with\x20no\x20branches.','match_keywords':['linear','straight','no\x20branches'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Chain\x20of\x20Pairs:\x20A->B->C->D->...->Terminal'},'constraints':['Exactly\x20one\x20entry\x20Pair\x20(prev_node=\x27\x27)','Exactly\x20one\x20terminal\x20node\x20(no\x20outgoing\x20Pairs)','Each\x20non-terminal\x20node\x20has\x20exactly\x20one\x20outgoing\x20Pair'],'example':{'topology':'Entry\x20->\x20A\x20->\x20B\x20->\x20C\x20->\x20Terminal'}},{'id':'P-M-FORKMERGE','pattern_name':'Fork-Merge\x20(Parallel\x20Branches\x20Converging)','category':'topology','semantic_intent':'Main\x20flow\x20forks\x20into\x20multiple\x20parallel\x20branches,\x20then\x20merges\x20back\x20to\x20main\x20flow.','match_keywords':['fork','merge','parallel'],'schema_elements':{'threshold':0x1,'forward_count':'dynamic','permission_model':'mixed','pair_count':'dynamic','structure':'ForkNode\x20->\x20{BranchA,\x20BranchB}\x20->\x20MergeNode'},'constraints':['Multiple\x20Pairs\x20from\x20ForkNode\x20(one\x20per\x20branch)','All\x20branches\x20must\x20eventually\x20reach\x20MergeNode','MergeNode\x20has\x20multiple\x20incoming\x20Pairs\x20(merge\x20point)','Threshold\x20at\x20MergeNode\x20determines\x20if\x20all\x20branches\x20must\x20complete\x20or\x20just\x20some'],'example':{'topology':'ForkNode\x20->\x20BranchA\x20->\x20MergeNode;\x20ForkNode\x20->\x20BranchB\x20->\x20MergeNode'}},{'id':'P-M-COMPETING','pattern_name':'Competing\x20Pairs\x20(Mutually\x20Exclusive\x20Branches)','category':'topology','semantic_intent':'Multiple\x20Pairs\x20from\x20same\x20node\x20compete;\x20first\x20Pair\x20to\x20meet\x20threshold\x20wins,\x20others\x20abandoned.','match_keywords':['competing','exclusive','race'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Same\x20prev_node\x20->\x20multiple\x20next_nodes\x20(each\x20Pair\x20independent)'},'constraints':['Mutually\x20exclusive\x20—\x20only\x20one\x20Pair\x20can\x20complete\x20per\x20session','First\x20Pair\x20to\x20reach\x20threshold\x20wins','Other\x20incomplete\x20Pairs\x20are\x20abandoned','Verify\x20no\x20dead\x20branches\x20(a\x20Pair\x20that\x20always\x20loses\x20to\x20another)'],'example':{'topology':'Shipped\x20->\x20Received;\x20Shipped\x20->\x20Lost;\x20Shipped\x20->\x20Return\x20(first\x20wins)'}},{'id':'P-M-PERM-SINGLE','pattern_name':'Single\x20Permission','category':'permission','semantic_intent':'Forward\x20uses\x20only\x20one\x20permission\x20type:\x20namedOperator\x20OR\x20permissionIndex.','match_keywords':['single\x20permission'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27\x20|\x20permissionIndex:\x20<index>\x20}\x20(only\x20one\x20set)'},'constraints':['Either\x20namedOperator\x20or\x20permissionIndex\x20is\x20set\x20(not\x20both)','Empty\x20namedOperator=\x27\x27\x20grants\x20OrderHolder\x20(order\x20owner\x20+\x20agents)'],'example':{'forward':{'name':'Ship','weight':0x1,'permission_index':0x2}}},{'id':'P-M-PERM-MIXED','pattern_name':'Mixed\x20Permission\x20(Either-Or)','category':'permission','semantic_intent':'Forward\x20allows\x20EITHER\x20permission\x20to\x20execute\x20(internal\x20staff\x20OR\x20external\x20roles).','match_keywords':['mixed\x20permission','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'mixed','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27,\x20permissionIndex:\x20<index>\x20}\x20(both\x20set)'},'constraints':['Both\x20namedOperator\x20and\x20permissionIndex\x20are\x20set','Executor\x20needs\x20EITHER\x20permission\x20—\x20passing\x20either\x20check\x20is\x20sufficient','Use\x20case:\x20allow\x20internal\x20staff\x20OR\x20external\x20role\x20to\x20execute\x20the\x20same\x20Forward'],'example':{'forward':{'name':'Confirm','weight':0x1,'named_operator':'auditor','permission_index':0x2}}},{'id':'P-M-CROSS-MACHINE','pattern_name':'Cross-Machine\x20Dependency','category':'integration','semantic_intent':'Machine\x20B\x27s\x20Forward\x20Guard\x20queries\x20Machine\x20A\x27s\x20Progress\x20to\x20verify\x20upstream\x20completion.','match_keywords':['cross-machine','supply\x20chain','upstream'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20guard:\x20\x27upstream_progress_guard\x27,\x20retained_submission:\x20\x27upstream_progress_id\x27\x20}'},'constraints':['Machine\x20A\x20MUST\x20be\x20published\x20before\x20Machine\x20B\x20(dependency\x20order)','Guard\x20uses\x20convert_witness=100\x20to\x20convert\x20submitted\x20Order/Progress\x20ID\x20into\x20queryable\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Dependency\x20verification:\x20enforced\x20when\x20the\x20Progress\x20object\x20is\x20created\x20(creation\x20checks\x20the\x20bound\x20Machine\x20is\x20published\x20—\x20see\x2006\x20§14.6)','retained_submission\x20stores\x20upstream\x20Progress\x20ID\x20for\x20audit'],'example':{'forward':{'name':'VerifyUpstream','weight':0x1,'permission_index':0x2,'guard':'upstream_progress_guard','retained_submission':'upstream_progress_id'}}},{'id':'P-M-ALLOCATION-INTEGRATED','pattern_name':'Allocation-Integrated\x20Terminal','category':'integration','semantic_intent':'Terminal\x20node\x20triggers\x20Allocator\x20to\x20distribute\x20funds.\x20Allocation\x20independent\x20of\x20Machine\x20flow.','match_keywords':['allocation','fund\x20distribution','terminal'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Terminal\x20node\x20->\x20Allocator\x20entry\x20(configured\x20on\x20Service\x20order_allocators)'},'constraints':['Terminal\x20node\x20must\x20be\x20referenced\x20in\x20Service\x20order_allocators','Allocator\x20Guard\x20verifies\x20progress.current\x20==\x20terminal_node_name','sharing.who\x20determines\x20fund\x20recipient\x20(Entity\x20/\x20OrderHolder\x20/\x20etc.)','Multiple\x20Allocators\x20can\x20fire\x20on\x20different\x20terminal\x20nodes'],'example':{'terminal_node':'Complete','allocator':{'trigger_node':'Complete','sharing_who':'Entity','recipient':'merchant_treasury'}}}];export const NODE_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Node\x20name\x20(unique\x20identifier)','constraint':'<=64\x20BCS\x20bytes,\x20globally\x20unique'},{'field':'description','type':'string','required':![],'semantic':'Human-readable\x20description','constraint':'<=MAX_DESCRIPTION_LENGTH'},{'field':'b_pause','type':'boolean','required':![],'semantic':'Whether\x20node\x20is\x20paused\x20(blocks\x20execution)','constraint':'Default\x20false'},{'field':'b_submission','type':'boolean','required':![],'semantic':'Whether\x20submission\x20is\x20allowed\x20at\x20this\x20node','constraint':'Used\x20for\x20retained_submission\x20storage'}];export const PAIR_FIELD_EXPLANATIONS=[{'field':'prev_node','type':'string','required':!![],'semantic':'Source\x20node\x20(empty\x20\x27\x27\x20=\x20entry\x20point)','constraint':'Must\x20reference\x20existing\x20node\x20or\x20\x27\x27'},{'field':'next_node','type':'string','required':!![],'semantic':'Target\x20node','constraint':'Must\x20reference\x20existing\x20node'},{'field':'threshold','type':'number','required':!![],'semantic':'Required\x20total\x20forward\x20weight\x20to\x20advance','constraint':'>=0,\x20typically\x201-100'},{'field':'forwards','type':'array<Forward>','required':!![],'semantic':'List\x20of\x20Forwards\x20in\x20this\x20Pair','constraint':'1-20\x20Forwards\x20per\x20Pair'}];export const FORWARD_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Forward\x20name\x20(unique\x20within\x20Pair)','constraint':'<=64\x20BCS\x20bytes,\x20unique\x20within\x20Pair'},{'field':'weight','type':'number','required':!![],'semantic':'Weight\x20contribution\x20to\x20threshold','constraint':'>0,\x20typically\x201-100'},{'field':'namedOperator','type':'string\x20(optional)','required':![],'semantic':'Named\x20operator\x20role\x20(\x27\x27\x20=\x20OrderHolder)','constraint':'Optional,\x20but\x20Forward\x20needs\x20at\x20least\x20one\x20permission'},{'field':'permissionIndex','type':'number\x20(optional)','required':![],'semantic':'Permission\x20index\x20(custom\x20or\x20builtin)','constraint':'<\x20Permission.indices.length'},{'field':'guard','type':'address\x20(optional)','required':![],'semantic':'Guard\x20object\x20address\x20for\x20validation','constraint':'Must\x20be\x20CREATE-only\x20Guard,\x20already\x20created'},{'field':'retained_submission','type':'string\x20(optional)','required':![],'semantic':'Key\x20for\x20storing\x20submitted\x20values\x20in\x20history','constraint':'Uniquely\x20located\x20by\x20(current_node,\x20next_node,\x20forward_name)'}];export function identifyExecutionMode(a){const {threshold:b,forwards:c}=a,d=c['length'];if(b===0x1&&d===0x1)return'P-M-SEQ\x20(Sequential)';if(b===d&&d>=0x2){const e=c['some'](g=>g['permission_index']!==undefined)&&c['some'](g=>g['named_operator']!==undefined);return e?'P-M-AND\x20(Parallel\x20AND\x20/\x20Dual-Signature)':'P-M-AND\x20(Parallel\x20AND)';}if(b===0x64&&c['some'](g=>g['weight']<0x32&&g['weight']>0x0))return'P-M-VOTE\x20(Weighted\x20Voting)';if(b<d&&b>0x1)return'P-M-HYBRID\x20(Hybrid\x20Mode)';if(b===0x1&&d>=0x1)return'P-M-OR\x20(Parallel\x20OR)\x20or\x20P-M-SEQ\x20(if\x20single\x20Forward)';return'Unknown\x20(manual\x20review\x20needed)';}export function identifyTopology(a){const b=new Map(),c=new Map();for(const d of a){if(!b['has'](d['prev_node']))b['set'](d['prev_node'],[]);b['get'](d['prev_node'])['push'](d['next_node']);if(!c['has'](d['next_node']))c['set'](d['next_node'],[]);c['get'](d['next_node'])['push'](d['prev_node']);}for(const [e,f]of b){if(f['length']>0x1&&e!=='')return'P-M-COMPETING\x20(Competing\x20Pairs)';}for(const [g,h]of c){if(h['length']>0x1)return'P-M-FORKMERGE\x20(Fork-Merge)';}return'P-M-LINEAR\x20(Linear\x20Flow)';}export function matchSemanticPattern(a){const b=a['toLowerCase']();return SEMANTIC_TO_MACHINE_RULES['find'](c=>c['match_keywords']['some'](d=>b['includes'](d['toLowerCase']())));}export function explainForwardPermission(a){const b=a['named_operator']!==undefined&&a['named_operator']!==null,c=a['permission_index']!==undefined&&a['permission_index']!==null;if(b&&c){const d=a['named_operator']===''?'OrderHolder':'role\x20\x22'+a['named_operator']+'\x22';return'Mixed\x20permission:\x20'+d+'\x20OR\x20Permission\x20index\x20'+a['permission_index']+'\x20(either\x20sufficient)';}if(b){if(a['named_operator']==='')return'OrderHolder\x20(order\x20owner\x20+\x20agents)';return'NamedOperator\x20role\x20\x22'+a['named_operator']+'\x22';}if(c)return'Permission\x20index\x20'+a['permission_index'];return'❌\x20INVALID:\x20no\x20permission\x20set\x20(Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex)';}export const MACHINE_CONSTRAINT_RULES=[{'id':'MC-C-01','name':'Node\x20count\x20<=\x20'+MAX_NODE_COUNT,'description':'MAX_NODE_COUNT','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-02','name':'Pair\x20count\x20per\x20node\x20<=\x20'+MAX_NODE_PAIR_COUNT,'description':'MAX_NODE_PAIR_COUNT','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-03','name':'Forward\x20count\x20per\x20Pair\x20<=\x20'+MAX_FORWARD_COUNT,'description':'MAX_FORWARD_COUNT','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-04','name':'Node\x20name\x20unique','description':'name\x20globally\x20unique','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-05','name':'Forward\x20name\x20unique\x20within\x20Pair','description':'name\x20unique\x20within\x20Pair','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-06','name':'Node\x20name\x20<=\x2064\x20BCS\x20bytes','description':'MAX_NAME_LENGTH','category':'creation','verification_location':'common.ts','on_chain_enforced':!![]},{'id':'MC-C-07','name':'Forward\x20has\x20at\x20least\x20one\x20permission','description':'namedOperator\x20or\x20permissionIndex','category':'creation','verification_location':'wowok-machine\x20SKILL','on_chain_enforced':![]},{'id':'MC-C-08','name':'permissionIndex\x20valid','description':'<\x20Permission.indices.length','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-09','name':'Guard\x20already\x20created','description':'guard\x20field\x20references\x20existing\x20Guard','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-10','name':'Guard\x20immutable','description':'Guard.b_immutable\x20==\x20true','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-11','name':'retained_submission\x20index\x20valid','description':'Corresponds\x20to\x20Guard\x20table\x20b_submission=true','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-12','name':'prev_node\x20references\x20valid','description':'Points\x20to\x20existing\x20node\x20or\x20\x27\x27','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-13','name':'threshold\x20>=\x200','description':'Non-negative','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-14','name':'weight\x20>\x200','description':'Positive','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-15','name':'description\x20length','description':'<=\x20MAX_DESCRIPTION_LENGTH','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-16','name':'bReplace\x20scope','description':'Acts\x20on\x20existing\x20node\x27s\x20pairs\x20list,\x20not\x20whole\x20Machine','category':'node_operation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-17','name':'bReplace=false\x20merge\x20semantics','description':'Incremental\x20merge\x20by\x20prev_node\x20into\x20existing\x20pairs','category':'node_operation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-18','name':'Non-existing\x20node\x20append','description':'Appends\x20the\x20new\x20node\x20(no\x20clear\x20triggered)','category':'node_operation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-19','name':'Full\x20node\x20replacement\x20via\x20file\x20entry','description':'NodeJsonOrMarkdownFileSchema\x20(not\x20bReplace=true)','category':'node_operation','verification_location':'machine.ts:93-112','on_chain_enforced':![]},{'id':'MC-S-01','name':'At\x20least\x20one\x20entry\x20point','description':'Pair\x20with\x20prev_node=\x27\x27','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-02','name':'At\x20least\x20one\x20terminal','description':'Node\x20with\x20no\x20outgoing\x20Pairs','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-03','name':'No\x20orphaned\x20nodes','description':'All\x20non-entry\x20nodes\x20have\x20incoming\x20Pair','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-04','name':'No\x20dead\x20branches','description':'All\x20thresholds\x20achievable','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-05','name':'DAG\x20acyclic','description':'No\x20cycle\x20references','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-P-01','name':'All\x20Guards\x20tested','description':'gen_passport\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-02','name':'Backup\x20exported','description':'machineNode2file\x20executed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-03','name':'Testnet\x20verified','description':'(recommended)\x20testnet\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-04','name':'User\x20100%\x20confirmed','description':'ConfirmGate\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-05','name':'Service\x20created\x20(if\x20bound)','description':'Service\x20exists','category':'publish','verification_location':'workflow-guidance.ts','on_chain_enforced':![]},{'id':'MC-R-01','name':'Node\x20ops\x20fail\x20after\x20publish','description':'E_ALREADY_PUBLISHED','category':'runtime','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-R-02','name':'Session\x20accumulation\x20correct','description':'weight\x20accumulation\x20logic','category':'runtime','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-R-03','name':'Competing\x20Pair\x20first-wins','description':'First\x20Pair\x20to\x20reach\x20threshold\x20wins','category':'runtime','verification_location':'on-chain','on_chain_enforced':!![]}];export function getConstraintsByCategory(a){return MACHINE_CONSTRAINT_RULES['filter'](b=>b['category']===a);}export function getConstraintById(a){return MACHINE_CONSTRAINT_RULES['find'](b=>b['id']===a);}export function getOnChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>a['on_chain_enforced']);}export function getOffChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>!a['on_chain_enforced']);}export const MACHINE_TRANSLATION_VERSION='1.0.0';export const MACHINE_PATTERNS_COUNT=SEMANTIC_TO_MACHINE_RULES['length'];export const MACHINE_CONSTRAINTS_COUNT=MACHINE_CONSTRAINT_RULES['length'];import{MAX_NODE_COUNT,MAX_NODE_PAIR_COUNT,MAX_FORWARD_COUNT}from'./onchain-constants.js';export function identifyNodeRole(a){const b=a['all_pairs']??[],c=(a['pairs']??b)['filter'](i=>i['prev_node']===a['name']),d=b['filter'](i=>i['next_node']===a['name']),e=b['some'](i=>i['prev_node']===''&&i['next_node']===a['name']),f=c['length']===0x0;if(e)return'entry';if(f)return'terminal';const g=new Set(c['map'](i=>i['next_node']));if(g['size']>0x1)return'branch';const h=new Set(d['map'](i=>i['prev_node'])['filter'](i=>i!==''));if(h['size']>0x1)return'merge';return'normal';}function explainGuardBinding(a){return{'address':a,'immutable_required':!![],'note':'Guard\x20'+a+'\x20validates\x20this\x20Forward\x27s\x20execution;\x20'+'must\x20be\x20immutable\x20(b_immutable=true)\x20and\x20pre-created\x20on-chain.'};}export function explainNode(a){const b=a['pairs']??[];return{'name':a['name'],'role':identifyNodeRole(a),'pairs':b['map'](c=>explainPair(c)),'description':a['description']};}export function explainPair(a){return{'prev_node':a['prev_node'],'next_node':a['next_node'],'threshold':a['threshold'],'execution_pattern':identifyExecutionMode(a),'forwards':a['forwards']['map'](b=>explainForward(b))};}export function explainForward(a){return{'name':a['name'],'permission':explainForwardPermission(a),'weight':a['weight'],'guard':a['guard']?explainGuardBinding(a['guard']):null,'retained_submission':a['retained_submission']??null};}
|
|
1
|
+
export const SEMANTIC_TO_MACHINE_RULES=[{'id':'P-M-SEQ','pattern_name':'Sequential\x20Execution','category':'execution','semantic_intent':'Single\x20actor\x20advances\x20workflow\x20one\x20step\x20at\x20a\x20time.\x20Each\x20Pair\x20has\x20threshold=1\x20with\x20a\x20single\x20Forward\x20weight=1.','match_keywords':['sequential','linear','one\x20step\x20at\x20a\x20time'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Each\x20Pair:\x20{\x20threshold:\x201,\x20forwards:\x20[{\x20name,\x20weight:\x201,\x20namedOperator\x20|\x20permissionIndex\x20}]\x20}'},'constraints':['Each\x20Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex','weight\x20>\x200\x20(typically\x201)','Every\x20node\x20reachable\x20from\x20the\x20entry\x20must\x20be\x20able\x20to\x20reach\x20a\x20terminal\x20(a\x20loop\x20must\x20keep\x20a\x20cycle-breaking\x20exit)'],'example':{'pair':{'prev_node':'NodeA','next_node':'NodeB','threshold':0x1,'forwards':[{'name':'Advance','weight':0x1,'named_operator':''}]}}},{'id':'P-M-AND','pattern_name':'Parallel\x20AND\x20(Dual-Signature\x20Consensus)','category':'execution','semantic_intent':'Multiple\x20parties\x20must\x20ALL\x20contribute\x20to\x20advance.\x20Pair\x20threshold=N\x20with\x20N\x20DISTINCT\x20Forwards\x20(weight=1\x20each)\x20—\x20one\x20forward\x20per\x20contributing\x20operator.\x20'+'A\x20single\x20forward\x20CANNOT\x20be\x20executed\x20by\x20two\x20different\x20people:\x20each\x20forward\x20is\x20single-operator-locked\x20by\x20the\x20first\x20account\x20that\x20accomplishes\x20it\x20'+'(once\x20accomplished,\x20a\x20forward\x20is\x20locked\x20to\x20that\x20operator;\x20a\x20second\x20operator\x20re-executing\x20the\x20same\x20accomplished\x20forward\x20aborts\x20E_NOT_THE_HOLDER,\x20and\x20the\x20weight\x20is\x20counted\x20only\x20once).\x20'+'So\x20N\x20operators\x20cooperating\x20on\x20a\x20threshold-N\x20transition\x20MUST\x20each\x20have\x20their\x20own\x20forward\x20in\x20the\x20Pair.','match_keywords':['and','all','dual-sig','both\x20confirm','both\x20must'],'schema_elements':{'threshold':0x2,'forward_count':0x2,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20N,\x20forwards:\x20[{\x20weight:\x201,\x20namedOperator:\x20\x27\x27\x20},\x20{\x20weight:\x201,\x20permissionIndex:\x202\x20}]\x20}'},'constraints':['threshold\x20must\x20equal\x20the\x20number\x20of\x20required\x20Forwards','Each\x20contributing\x20operator\x20needs\x20a\x20DISTINCT\x20Forward\x20—\x20never\x20reuse\x20one\x20forward\x20for\x20two\x20people','Each\x20Forward\x20must\x20have\x20a\x20distinct\x20permission\x20model\x20(no\x20two\x20identical)','A\x20forward\x20is\x20locked\x20by\x20its\x20first\x20operator:\x20once\x20accomplished\x20it\x20contributes\x20its\x20weight\x20once\x20and\x20re-execution\x20by\x20others\x20aborts\x20E_NOT_THE_HOLDER','If\x20either\x20party\x20fails\x20to\x20sign,\x20workflow\x20stalls\x20—\x20consider\x20adding\x20timeout\x20Guard'],'example':{'pair':{'prev_node':'Initiated','next_node':'Approved','threshold':0x2,'forwards':[{'name':'CustomerApprove','weight':0x1,'named_operator':''},{'name':'MerchantApprove','weight':0x1,'permission_index':0x2}]}}},{'id':'P-M-OR','pattern_name':'Parallel\x20OR\x20(Any-One\x20Execution)','category':'execution','semantic_intent':'Any\x20one\x20of\x20multiple\x20paths\x20can\x20advance\x20the\x20workflow.\x20Multiple\x20Pairs,\x20each\x20threshold=1.','match_keywords':['or','any','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Multiple\x20Pairs\x20from\x20same\x20prev_node,\x20each\x20with\x20threshold=1'},'constraints':['Distinct\x20next_node\x20for\x20each\x20Pair\x20(or\x20distinct\x20Forward)','If\x20targets\x20are\x20different\x20nodes,\x20this\x20becomes\x20COMPETING\x20topology','If\x20targets\x20are\x20same\x20node,\x20alternative\x20paths\x20converge\x20(FORKMERGE)'],'example':{'pairs':[{'prev_node':'Choice','next_node':'PathA','threshold':0x1,'forwards':[{'name':'ChooseA','weight':0x1,'named_operator':''}]},{'prev_node':'Choice','next_node':'PathB','threshold':0x1,'forwards':[{'name':'ChooseB','weight':0x1,'named_operator':''}]}]}},{'id':'P-M-VOTE','pattern_name':'Weighted\x20Voting','category':'execution','semantic_intent':'Multiple\x20parties\x20vote\x20with\x20unequal\x20weights.\x20threshold=100,\x20varied\x20weights\x20(e.g.\x2060+40).\x20'+'Guard\x20extracts\x20weight\x20dynamically\x20from\x20Arbitration\x20object.','match_keywords':['vote','weight','stakeholder'],'schema_elements':{'threshold':0x64,'forward_count':'dynamic','permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20100,\x20forwards:\x20[{\x20weight:\x2060,\x20permissionIndex:\x202,\x20guard:\x20arb_voting_guard\x20},\x20{\x20weight:\x208,\x20namedOperator:\x20\x27member\x27,\x20guard:\x20arb_voting_guard\x20}]\x20}'},'constraints':['Guard\x20MUST\x20check\x20arb.voted\x20has\x20[Signer]\x20to\x20prevent\x20double-voting\x20(R-X1-14\x20CRITICAL)','Weight\x20is\x20query-derived\x20from\x20Arbitration\x20object\x20(not\x20hardcoded\x20in\x20Forward)','Competing\x20Pair\x20often\x20added:\x20Approved\x20vs\x20Rejected\x20(timeout)\x20—\x20first-wins','Forward\x20weight\x20field\x20is\x20just\x20session\x20counter;\x20actual\x20weight\x20from\x20Guard'],'example':{'pair':{'prev_node':'Voting','next_node':'Approved','threshold':0x64,'forwards':[{'name':'ChiefVote','weight':0x3c,'permission_index':0x2,'guard':'arb_voting_guard'},{'name':'MemberVote','weight':0x8,'named_operator':'member','guard':'arb_voting_guard'}]}}},{'id':'P-M-HYBRID','pattern_name':'Hybrid\x20Mode\x20(Key\x20Party\x20Required\x20+\x20Others\x20Optional)','category':'execution','semantic_intent':'One\x20key\x20party\x20must\x20contribute,\x20others\x20are\x20optional.\x20threshold=5\x20with\x20mixed\x20weights\x20(3+1+1).','match_keywords':['hybrid','mixed','key\x20party'],'schema_elements':{'threshold':0x5,'forward_count':0x3,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x205,\x20forwards:\x20[{\x20weight:\x203,\x20permissionIndex:\x202\x20(key)\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role1\x27\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role2\x27\x20}]\x20}'},'constraints':['Key\x20party\x27s\x20weight\x20must\x20alone\x20be\x20insufficient\x20(otherwise\x20optional\x20parties\x20are\x20meaningless)','Total\x20weight\x20of\x20all\x20Forwards\x20must\x20be\x20>=\x20threshold','Each\x20Forward\x20must\x20have\x20distinct\x20permission\x20model'],'example':{'pair':{'prev_node':'Review','next_node':'Approved','threshold':0x5,'forwards':[{'name':'ManagerApprove','weight':0x3,'permission_index':0x2},{'name':'EngineerApprove','weight':0x1,'named_operator':'engineer'},{'name':'QAApprove','weight':0x1,'named_operator':'qa'}]}}},{'id':'P-M-LINEAR','pattern_name':'Linear\x20Flow\x20(No\x20Branches)','category':'topology','semantic_intent':'Workflow\x20progresses\x20in\x20a\x20straight\x20line\x20with\x20no\x20branches.','match_keywords':['linear','straight','no\x20branches'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Chain\x20of\x20Pairs:\x20A->B->C->D->...->Terminal'},'constraints':['Exactly\x20one\x20entry\x20Pair\x20(prev_node=\x27\x27)','Exactly\x20one\x20terminal\x20node\x20(no\x20outgoing\x20Pairs)','Each\x20non-terminal\x20node\x20has\x20exactly\x20one\x20outgoing\x20Pair'],'example':{'topology':'Entry\x20->\x20A\x20->\x20B\x20->\x20C\x20->\x20Terminal'}},{'id':'P-M-FORKMERGE','pattern_name':'Fork-Merge\x20(Parallel\x20Branches\x20Converging)','category':'topology','semantic_intent':'Main\x20flow\x20forks\x20into\x20multiple\x20parallel\x20branches,\x20then\x20merges\x20back\x20to\x20main\x20flow.','match_keywords':['fork','merge','parallel'],'schema_elements':{'threshold':0x1,'forward_count':'dynamic','permission_model':'mixed','pair_count':'dynamic','structure':'ForkNode\x20->\x20{BranchA,\x20BranchB}\x20->\x20MergeNode'},'constraints':['Multiple\x20Pairs\x20from\x20ForkNode\x20(one\x20per\x20branch)','All\x20branches\x20must\x20eventually\x20reach\x20MergeNode','MergeNode\x20has\x20multiple\x20incoming\x20Pairs\x20(merge\x20point)','Threshold\x20at\x20MergeNode\x20determines\x20if\x20all\x20branches\x20must\x20complete\x20or\x20just\x20some'],'example':{'topology':'ForkNode\x20->\x20BranchA\x20->\x20MergeNode;\x20ForkNode\x20->\x20BranchB\x20->\x20MergeNode'}},{'id':'P-M-COMPETING','pattern_name':'Competing\x20Pairs\x20(Mutually\x20Exclusive\x20Branches)','category':'topology','semantic_intent':'Multiple\x20Pairs\x20from\x20same\x20node\x20compete;\x20first\x20Pair\x20to\x20meet\x20threshold\x20wins,\x20others\x20abandoned.','match_keywords':['competing','exclusive','race'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Same\x20prev_node\x20->\x20multiple\x20next_nodes\x20(each\x20Pair\x20independent)'},'constraints':['Mutually\x20exclusive\x20—\x20only\x20one\x20Pair\x20can\x20complete\x20per\x20session','First\x20Pair\x20to\x20reach\x20threshold\x20wins','Other\x20incomplete\x20Pairs\x20are\x20abandoned','Verify\x20no\x20dead\x20branches\x20(a\x20Pair\x20that\x20always\x20loses\x20to\x20another)'],'example':{'topology':'Shipped\x20->\x20Received;\x20Shipped\x20->\x20Lost;\x20Shipped\x20->\x20Return\x20(first\x20wins)'}},{'id':'P-M-PERM-SINGLE','pattern_name':'Single\x20Permission','category':'permission','semantic_intent':'Forward\x20uses\x20only\x20one\x20permission\x20type:\x20namedOperator\x20OR\x20permissionIndex.','match_keywords':['single\x20permission'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27\x20|\x20permissionIndex:\x20<index>\x20}\x20(only\x20one\x20set)'},'constraints':['Either\x20namedOperator\x20or\x20permissionIndex\x20is\x20set\x20(not\x20both)','Empty\x20namedOperator=\x27\x27\x20grants\x20OrderHolder\x20(order\x20owner\x20+\x20agents)'],'example':{'forward':{'name':'Ship','weight':0x1,'permission_index':0x2}}},{'id':'P-M-PERM-MIXED','pattern_name':'Mixed\x20Permission\x20(Either-Or)','category':'permission','semantic_intent':'Forward\x20allows\x20EITHER\x20permission\x20to\x20execute\x20(internal\x20staff\x20OR\x20external\x20roles).','match_keywords':['mixed\x20permission','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'mixed','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27,\x20permissionIndex:\x20<index>\x20}\x20(both\x20set)'},'constraints':['Both\x20namedOperator\x20and\x20permissionIndex\x20are\x20set','Executor\x20needs\x20EITHER\x20permission\x20—\x20passing\x20either\x20check\x20is\x20sufficient','Use\x20case:\x20allow\x20internal\x20staff\x20OR\x20external\x20role\x20to\x20execute\x20the\x20same\x20Forward'],'example':{'forward':{'name':'Confirm','weight':0x1,'named_operator':'auditor','permission_index':0x2}}},{'id':'P-M-CROSS-MACHINE','pattern_name':'Cross-Machine\x20Dependency','category':'integration','semantic_intent':'Machine\x20B\x27s\x20Forward\x20Guard\x20queries\x20Machine\x20A\x27s\x20Progress\x20to\x20verify\x20upstream\x20completion.','match_keywords':['cross-machine','supply\x20chain','upstream'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20guard:\x20\x27upstream_progress_guard\x27,\x20retained_submission:\x20\x27upstream_progress_id\x27\x20}'},'constraints':['Machine\x20A\x20MUST\x20be\x20published\x20before\x20Machine\x20B\x20(dependency\x20order)','Guard\x20uses\x20convert_witness=100\x20to\x20convert\x20submitted\x20Order/Progress\x20ID\x20into\x20queryable\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Dependency\x20verification:\x20enforced\x20when\x20the\x20Progress\x20object\x20is\x20created\x20(creation\x20checks\x20the\x20bound\x20Machine\x20is\x20published\x20—\x20see\x2006\x20§14.6)','retained_submission\x20stores\x20upstream\x20Progress\x20ID\x20for\x20audit'],'example':{'forward':{'name':'VerifyUpstream','weight':0x1,'permission_index':0x2,'guard':'upstream_progress_guard','retained_submission':'upstream_progress_id'}}},{'id':'P-M-ALLOCATION-INTEGRATED','pattern_name':'Allocation-Integrated\x20Terminal','category':'integration','semantic_intent':'Terminal\x20node\x20triggers\x20Allocator\x20to\x20distribute\x20funds.\x20Allocation\x20independent\x20of\x20Machine\x20flow.','match_keywords':['allocation','fund\x20distribution','terminal'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Terminal\x20node\x20->\x20Allocator\x20entry\x20(configured\x20on\x20Service\x20order_allocators)'},'constraints':['Terminal\x20node\x20must\x20be\x20referenced\x20in\x20Service\x20order_allocators','Allocator\x20Guard\x20verifies\x20progress.current\x20==\x20terminal_node_name','sharing.who\x20determines\x20fund\x20recipient\x20(Entity\x20/\x20OrderHolder\x20/\x20etc.)','Multiple\x20Allocators\x20can\x20fire\x20on\x20different\x20terminal\x20nodes'],'example':{'terminal_node':'Complete','allocator':{'trigger_node':'Complete','sharing_who':'Entity','recipient':'merchant_treasury'}}}];export const NODE_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Node\x20name\x20(unique\x20identifier)','constraint':'<=64\x20BCS\x20bytes,\x20globally\x20unique'},{'field':'description','type':'string','required':![],'semantic':'Human-readable\x20description','constraint':'<=MAX_DESCRIPTION_LENGTH'},{'field':'b_pause','type':'boolean','required':![],'semantic':'Whether\x20node\x20is\x20paused\x20(blocks\x20execution)','constraint':'Default\x20false'},{'field':'b_submission','type':'boolean','required':![],'semantic':'Whether\x20submission\x20is\x20allowed\x20at\x20this\x20node','constraint':'Used\x20for\x20retained_submission\x20storage'}];export const PAIR_FIELD_EXPLANATIONS=[{'field':'prev_node','type':'string','required':!![],'semantic':'Source\x20node\x20(empty\x20\x27\x27\x20=\x20entry\x20point)','constraint':'Must\x20reference\x20existing\x20node\x20or\x20\x27\x27'},{'field':'next_node','type':'string','required':!![],'semantic':'Target\x20node','constraint':'Must\x20reference\x20existing\x20node'},{'field':'threshold','type':'number','required':!![],'semantic':'Required\x20total\x20forward\x20weight\x20to\x20advance','constraint':'>=0,\x20typically\x201-100'},{'field':'forwards','type':'array<Forward>','required':!![],'semantic':'List\x20of\x20Forwards\x20in\x20this\x20Pair','constraint':'1-20\x20Forwards\x20per\x20Pair'}];export const FORWARD_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Forward\x20name\x20(unique\x20within\x20Pair)','constraint':'<=64\x20BCS\x20bytes,\x20unique\x20within\x20Pair'},{'field':'weight','type':'number','required':!![],'semantic':'Weight\x20contribution\x20to\x20threshold','constraint':'>0,\x20typically\x201-100'},{'field':'namedOperator','type':'string\x20(optional)','required':![],'semantic':'Named\x20operator\x20role\x20(\x27\x27\x20=\x20OrderHolder)','constraint':'Optional,\x20but\x20Forward\x20needs\x20at\x20least\x20one\x20permission'},{'field':'permissionIndex','type':'number\x20(optional)','required':![],'semantic':'Permission\x20index\x20(custom\x20or\x20builtin)','constraint':'<\x20Permission.indices.length'},{'field':'guard','type':'address\x20(optional)','required':![],'semantic':'Guard\x20object\x20address\x20for\x20validation','constraint':'Must\x20be\x20CREATE-only\x20Guard,\x20already\x20created'},{'field':'retained_submission','type':'string\x20(optional)','required':![],'semantic':'Key\x20for\x20storing\x20submitted\x20values\x20in\x20history','constraint':'Uniquely\x20located\x20by\x20(current_node,\x20next_node,\x20forward_name)'}];export function identifyExecutionMode(a){const {threshold:b,forwards:c}=a,d=c['length'];if(b===0x1&&d===0x1)return'P-M-SEQ\x20(Sequential)';if(b===d&&d>=0x2){const e=c['some'](g=>g['permission_index']!==undefined)&&c['some'](g=>g['named_operator']!==undefined);return e?'P-M-AND\x20(Parallel\x20AND\x20/\x20Dual-Signature)':'P-M-AND\x20(Parallel\x20AND)';}if(b===0x64&&c['some'](g=>g['weight']<0x32&&g['weight']>0x0))return'P-M-VOTE\x20(Weighted\x20Voting)';if(b<d&&b>0x1)return'P-M-HYBRID\x20(Hybrid\x20Mode)';if(b===0x1&&d>=0x1)return'P-M-OR\x20(Parallel\x20OR)\x20or\x20P-M-SEQ\x20(if\x20single\x20Forward)';return'Unknown\x20(manual\x20review\x20needed)';}export function identifyTopology(a){const b=new Map(),c=new Map();for(const d of a){if(!b['has'](d['prev_node']))b['set'](d['prev_node'],[]);b['get'](d['prev_node'])['push'](d['next_node']);if(!c['has'](d['next_node']))c['set'](d['next_node'],[]);c['get'](d['next_node'])['push'](d['prev_node']);}for(const [e,f]of b){if(f['length']>0x1&&e!=='')return'P-M-COMPETING\x20(Competing\x20Pairs)';}for(const [g,h]of c){if(h['length']>0x1)return'P-M-FORKMERGE\x20(Fork-Merge)';}return'P-M-LINEAR\x20(Linear\x20Flow)';}export function matchSemanticPattern(a){const b=a['toLowerCase']();return SEMANTIC_TO_MACHINE_RULES['find'](c=>c['match_keywords']['some'](d=>b['includes'](d['toLowerCase']())));}export function explainForwardPermission(a){const b=a['named_operator']!==undefined&&a['named_operator']!==null,c=a['permission_index']!==undefined&&a['permission_index']!==null;if(b&&c){const d=a['named_operator']===''?'OrderHolder':'role\x20\x22'+a['named_operator']+'\x22';return'Mixed\x20permission:\x20'+d+'\x20OR\x20Permission\x20index\x20'+a['permission_index']+'\x20(either\x20sufficient)';}if(b){if(a['named_operator']==='')return'OrderHolder\x20(order\x20owner\x20+\x20agents)';return'NamedOperator\x20role\x20\x22'+a['named_operator']+'\x22';}if(c)return'Permission\x20index\x20'+a['permission_index'];return'❌\x20INVALID:\x20no\x20permission\x20set\x20(Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex)';}export const MACHINE_CONSTRAINT_RULES=[{'id':'MC-C-01','name':'Node\x20count\x20<=\x20'+MAX_NODE_COUNT,'description':'MAX_NODE_COUNT','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-02','name':'Pair\x20count\x20per\x20node\x20<=\x20'+MAX_NODE_PAIR_COUNT,'description':'MAX_NODE_PAIR_COUNT','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-03','name':'Forward\x20count\x20per\x20Pair\x20<=\x20'+MAX_FORWARD_COUNT,'description':'MAX_FORWARD_COUNT','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-04','name':'Node\x20name\x20unique','description':'name\x20globally\x20unique','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-05','name':'Forward\x20name\x20unique\x20within\x20Pair','description':'name\x20unique\x20within\x20Pair','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-06','name':'Node\x20name\x20<=\x2064\x20BCS\x20bytes','description':'MAX_NAME_LENGTH','category':'creation','verification_location':'common.ts','on_chain_enforced':!![]},{'id':'MC-C-07','name':'Forward\x20has\x20at\x20least\x20one\x20permission','description':'namedOperator\x20or\x20permissionIndex','category':'creation','verification_location':'wowok-machine\x20SKILL','on_chain_enforced':![]},{'id':'MC-C-08','name':'permissionIndex\x20valid','description':'<\x20Permission.indices.length','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-09','name':'Guard\x20already\x20created','description':'guard\x20field\x20references\x20existing\x20Guard','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-10','name':'Guard\x20immutable','description':'Guard.b_immutable\x20==\x20true','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-11','name':'retained_submission\x20index\x20valid','description':'Corresponds\x20to\x20Guard\x20table\x20b_submission=true','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-12','name':'prev_node\x20references\x20valid','description':'Points\x20to\x20existing\x20node\x20or\x20\x27\x27','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-13','name':'threshold\x20>=\x200','description':'Non-negative','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-14','name':'weight\x20>\x200','description':'Positive','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-15','name':'description\x20length','description':'<=\x20MAX_DESCRIPTION_LENGTH','category':'creation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-16','name':'bReplace\x20scope','description':'Acts\x20on\x20existing\x20node\x27s\x20pairs\x20list,\x20not\x20whole\x20Machine','category':'node_operation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-17','name':'bReplace=false\x20merge\x20semantics','description':'Incremental\x20merge\x20by\x20prev_node\x20into\x20existing\x20pairs','category':'node_operation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-18','name':'Non-existing\x20node\x20append','description':'Appends\x20the\x20new\x20node\x20(no\x20clear\x20triggered)','category':'node_operation','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-C-19','name':'Full\x20node\x20replacement\x20via\x20file\x20entry','description':'NodeJsonOrMarkdownFileSchema\x20(not\x20bReplace=true)','category':'node_operation','verification_location':'machine.ts:93-112','on_chain_enforced':![]},{'id':'MC-S-01','name':'At\x20least\x20one\x20entry\x20point','description':'Pair\x20with\x20prev_node=\x27\x27','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-02','name':'At\x20least\x20one\x20terminal','description':'Node\x20with\x20no\x20outgoing\x20Pairs','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-03','name':'No\x20orphaned\x20nodes','description':'All\x20non-entry\x20nodes\x20have\x20incoming\x20Pair','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-04','name':'No\x20dead\x20branches','description':'All\x20thresholds\x20achievable','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-05','name':'Exit\x20reachability\x20(trap-free)','description':'Every\x20entry-reachable\x20node\x20can\x20reach\x20a\x20terminal;\x20loops\x20are\x20allowed\x20on-chain\x20but\x20must\x20keep\x20a\x20cycle-breaking\x20exit','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-P-01','name':'All\x20Guards\x20tested','description':'gen_passport\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-02','name':'Backup\x20exported','description':'machineNode2file\x20executed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-03','name':'Testnet\x20verified','description':'(recommended)\x20testnet\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-04','name':'User\x20100%\x20confirmed','description':'ConfirmGate\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-05','name':'Service\x20created\x20(if\x20bound)','description':'Service\x20exists','category':'publish','verification_location':'workflow-guidance.ts','on_chain_enforced':![]},{'id':'MC-R-01','name':'Node\x20ops\x20fail\x20after\x20publish','description':'E_ALREADY_PUBLISHED','category':'runtime','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-R-02','name':'Session\x20accumulation\x20correct','description':'weight\x20accumulation\x20logic','category':'runtime','verification_location':'on-chain','on_chain_enforced':!![]},{'id':'MC-R-03','name':'Competing\x20Pair\x20first-wins','description':'First\x20Pair\x20to\x20reach\x20threshold\x20wins','category':'runtime','verification_location':'on-chain','on_chain_enforced':!![]}];export function getConstraintsByCategory(a){return MACHINE_CONSTRAINT_RULES['filter'](b=>b['category']===a);}export function getConstraintById(a){return MACHINE_CONSTRAINT_RULES['find'](b=>b['id']===a);}export function getOnChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>a['on_chain_enforced']);}export function getOffChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>!a['on_chain_enforced']);}export const MACHINE_TRANSLATION_VERSION='1.0.0';export const MACHINE_PATTERNS_COUNT=SEMANTIC_TO_MACHINE_RULES['length'];export const MACHINE_CONSTRAINTS_COUNT=MACHINE_CONSTRAINT_RULES['length'];import{MAX_NODE_COUNT,MAX_NODE_PAIR_COUNT,MAX_FORWARD_COUNT}from'./onchain-constants.js';export function identifyNodeRole(a){const b=a['all_pairs']??[],c=(a['pairs']??b)['filter'](i=>i['prev_node']===a['name']),d=b['filter'](i=>i['next_node']===a['name']),e=b['some'](i=>i['prev_node']===''&&i['next_node']===a['name']),f=c['length']===0x0;if(e)return'entry';if(f)return'terminal';const g=new Set(c['map'](i=>i['next_node']));if(g['size']>0x1)return'branch';const h=new Set(d['map'](i=>i['prev_node'])['filter'](i=>i!==''));if(h['size']>0x1)return'merge';return'normal';}function explainGuardBinding(a){return{'address':a,'immutable_required':!![],'note':'Guard\x20'+a+'\x20validates\x20this\x20Forward\x27s\x20execution;\x20'+'must\x20be\x20immutable\x20(b_immutable=true)\x20and\x20pre-created\x20on-chain.'};}export function explainNode(a){const b=a['pairs']??[];return{'name':a['name'],'role':identifyNodeRole(a),'pairs':b['map'](c=>explainPair(c)),'description':a['description']};}export function explainPair(a){return{'prev_node':a['prev_node'],'next_node':a['next_node'],'threshold':a['threshold'],'execution_pattern':identifyExecutionMode(a),'forwards':a['forwards']['map'](b=>explainForward(b))};}export function explainForward(a){return{'name':a['name'],'permission':explainForwardPermission(a),'weight':a['weight'],'guard':a['guard']?explainGuardBinding(a['guard']):null,'retained_submission':a['retained_submission']??null};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const ORDER_FIELDS=[{'move_name':'id','sdk_name':'id','move_type':'UID','mutability_layer':0x1,'description':'Order\x20unique\x20ID'},{'move_name':'items','sdk_name':'items','move_type':'vector<SaleItem>','mutability_layer':0x1,'description':'Purchased\x20items\x20(created-immutable)'},{'move_name':'discount','sdk_name':'discount','move_type':'Option<address>','mutability_layer':0x1,'description':'Discount\x20object\x20address\x20(created-immutable)'},{'move_name':'progress','sdk_name':'progress','move_type':'Option<address>','mutability_layer':0x2,'description':'Progress\x20object\x20address\x20(one-time-set\x20when\x20the\x20Progress\x20binds)'},{'move_name':'machine','sdk_name':'machine','move_type':'Option<address>','mutability_layer':0x1,'description':'Machine\x20snapshot\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'},{'move_name':'amount','sdk_name':'amount','move_type':'u64','mutability_layer':0x1,'description':'Order\x20amount\x20in\x20MIST\x20(created-immutable)'},{'move_name':'owner','sdk_name':'builder','move_type':'address','mutability_layer':0x4,'description':'Order\x20owner\x20/\x20buyer.\x20Mutable\x20at\x20ANY\x20time\x20via\x20an\x20ownership\x20transfer\x20(L1,\x20E_NOT_THE_OWNER).\x20⚠️\x20SDK\x20field\x20name\x20is\x20\x27builder\x27\x20(only\x20naming\x20deviation\x20in\x2022\x20objects)'},{'move_name':'service','sdk_name':'service','move_type':'address','mutability_layer':0x1,'description':'Service\x20object\x20address\x20(created-immutable,\x20reference\x20only)'},{'move_name':'dispute','sdk_name':'dispute','move_type':'vector<address>','mutability_layer':0x4,'description':'Arb\x20object\x20addresses\x20(append-only,\x20max\x2010,\x20frozen\x20when\x20claimed_by\x20set)'},{'move_name':'agent','sdk_name':'agent','move_type':'vector<address>','mutability_layer':0x4,'description':'Agent\x20addresses\x20(max\x2010\x20distinct\x20per\x20call\x20—\x20input\x20deduped\x20on-chain;\x20setting\x20the\x20list\x20REPLACES\x20it\x20at\x20any\x20time,\x20no\x20progress\x20freeze)'},{'move_name':'allocation','sdk_name':'allocation','move_type':'Option<address>','mutability_layer':0x2,'description':'Allocation\x20object\x20address\x20(one-time-set\x20when\x20the\x20Allocation\x20binds)'},{'move_name':'claimed_by','sdk_name':'claimed_by','move_type':'Option<address>','mutability_layer':0x2,'description':'Claimed\x20Arb\x20object\x20address\x20(one-time,\x20irreversible;\x20blocks\x20new\x20disputes)'},{'move_name':'required_info','sdk_name':'required_info','move_type':'Option<address>','mutability_layer':0x4,'description':'Contact\x20(recipient)\x20or\x20WTS\x20Proof\x20(delivery\x20proof);\x20owner-only'},{'move_name':'time','sdk_name':'time','move_type':'u64','mutability_layer':0x1,'description':'Creation\x20timestamp\x20(clock::timestamp_ms)'}];export const ORDER_STATES=['CREATED','IN_PROGRESS','DISPUTED','CLAIMED','COMPLETED','CANCELLED'];export const ORDER_STATE_TRANSITIONS=[{'from':'CREATED','to':'IN_PROGRESS','trigger':'buy\x20(with\x20machine)\x20→\x20the\x20Progress\x20object\x20is\x20set\x20at\x20creation'},{'from':'CREATED','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'CREATED','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20(no\x20machine\x20path)\x20or\x20manual'},{'from':'IN_PROGRESS','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'IN_PROGRESS','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20node'},{'from':'IN_PROGRESS','to':'CANCELLED','trigger':'Progress\x20reaches\x20cancel\x20node'},{'from':'DISPUTED','to':'CLAIMED','trigger':'arb_claim_compensation\x20→\x20compensate()\x20sets\x20claimed_by'},{'from':'DISPUTED','to':'COMPLETED','trigger':'Arb\x20resolution\x20+\x20Progress\x20terminal'},{'from':'DISPUTED','to':'CANCELLED','trigger':'Arb\x20resolution\x20=\x20cancel'}];export const ORDER_LIFECYCLE_EVENTS=[{'name':'NewOrderEvent','trigger':'buy\x20flow\x20phase\x205\x20(the\x20order\x20record\x20is\x20created)','emit_source':'order\x20creation\x20inside\x20the\x20buy\x20transaction','actually_emitted':!![],'fields':['object','service','progress','discount','allocation','amount']},{'name':'OrderCompletedEvent','trigger':'Progress\x20reaches\x20terminal','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','completion_time']},{'name':'OrderCancelledEvent','trigger':'Progress\x20reaches\x20cancel','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','cancel_reason']},{'name':'OrderAdvancedEvent','trigger':'order.progress\x20forward','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','from_node','to_node']},{'name':'OrderDisputeAppendedEvent','trigger':'arb_confirm\x20→\x20dispute()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb']},{'name':'OrderClaimedEvent','trigger':'arb_claim_compensation\x20→\x20compensate()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb','claimed_by']},{'name':'OwnerChangedEvent','trigger':'ownership\x20transfer\x20/\x20transfer_to','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','old_owner','new_owner']},{'name':'AgentSetEvent','trigger':'setting\x20the\x20agent\x20list','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','agent_list']},{'name':'RequiredInfoUpdatedEvent','trigger':'updating\x20required_info','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','required_info']},{'name':'AllocationBoundEvent','trigger':'allocation\x20binding','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','allocation']},{'name':'ProgressBoundEvent','trigger':'progress\x20binding','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','progress']}];export const ORDER_PERMISSION_MATRIX=[{'operation':'owner_receive\x20/\x20receive','move_function':'receive\x20CoinWrapper\x20/\x20receive\x20Receiving\x20object','layer':'L4_object_gated','aborts_with':'EPAYMENT_NOT_MATCH','notes':'Gated\x20by\x20Receiving\x20existence,\x20NOT\x20by\x20an\x20owner\x20assert:\x20the\x20allocation\x20payout\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address.\x20No\x20owner\x20assert\x20—\x20funds\x20ALWAYS\x20go\x20to\x20order.owner\x20regardless\x20of\x20caller.\x20Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH).'},{'operation':'transfer_to\x20(ownership\x20transfer)','move_function':'transfer\x20the\x20order\x20to\x20a\x20new\x20owner','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Irreversible.\x20New\x20owner\x20takes\x20over\x20ALL\x20permissions.\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'agent\x20(set\x20agent\x20list)','move_function':'set\x20the\x20agent\x20list\x20(replaces\x20all)','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER,\x20E_MAX_AGENT_COUNT','notes':'REPLACES\x20the\x20whole\x20agent\x20list\x20(not\x20append).\x20Max\x2010\x20distinct\x20agents\x20(assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push).\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'update\x20required_info','move_function':'set\x20or\x20clear\x20required_info\x20(Contact\x20/\x20WTS\x20Proof)','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Owner-only.\x20Agent\x20CANNOT\x20update\x20required_info.'},{'operation':'progress\x20(advance)','move_function':'(progress::operate)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION','notes':'Both\x20owner\x20and\x20agent\x20can\x20advance\x20Progress.'},{'operation':'arb_confirm','move_function':'(file\x20for\x20arbitration)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'Both\x20can\x20file\x20arbitration.\x20confirmed=true\x20additionally\x20asserts\x20claimed_by\x20is\x20none.\x20Irreversible.'},{'operation':'arb_objection','move_function':'(object\x20to\x20the\x20arbitration\x20ruling)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_ORDER_ALREADY_CLAIMED,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH','notes':'Both\x20can\x20object\x20to\x20Arb\x20ruling.\x20Requires\x20Arb\x20status\x20==\x20Arbirated.\x20Irreversible.'},{'operation':'arb_claim_compensation','move_function':'(claim\x20the\x20compensation)','layer':'L4_object_gated','aborts_with':'E_ORDER_SERVICE_NOT_MATCH,\x20E_ARBITRATION_ARB_NOT_MATCH,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_COMPENSATION_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'No\x20op-permission\x20assert\x20—\x20gated\x20by\x20Arb\x20status\x20(must\x20be\x20Arbirated,\x20ruling\x20final).\x20Compensation\x20is\x20paid\x20to\x20the\x20order\x20owner\x20(permissionless\x20keeper\x20—\x20the\x20sender\x20never\x20receives).\x20Sets\x20claimed_by\x20—\x20one-time,\x20irreversible.\x20The\x20claim\x20does\x20NOT\x20seal\x20the\x20order:\x20the\x20owner\x20receive\x20entries\x20are\x20deliberately\x20ungated\x20(order.move:213-234),\x20so\x20any\x20escrow\x20balance\x20left\x20on\x20the\x20order\x20stays\x20claimable\x20unless\x20the\x20refund\x20allocator\x27s\x20guard\x20is\x20gated\x20on\x20order.claimed_by\x20some==false;\x20the\x20provider\x20release\x20track\x20(direct\x20transfer)\x20stays\x20usable.'},{'operation':'progress\x20binding\x20(package-only)','move_function':'bind\x20the\x20Progress\x20object\x20(package\x20write-back)','layer':'L3_package_only','aborts_with':'E_PROGRESS_ALREADY_SPECIFIED','notes':'Progress\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'allocation\x20binding\x20(package-only)','move_function':'bind\x20the\x20Allocation\x20object\x20(package\x20write-back)','layer':'L3_package_only','aborts_with':'E_ALLOCATION_ALREADY_SPECIFIED','notes':'Allocation\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'dispute\x20(package-only)','move_function':'dispute','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED,\x20E_MAX_DISPUTE_COUNT','notes':'Arbitration\x20module\x20appends\x20Arb\x20address.'},{'operation':'compensate\x20(package-only)','move_function':'compensate','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED','notes':'Arbitration\x20module\x20sets\x20claimed_by.\x20Irreversible.'}];export const ORDER_SCENES=[{'id':'order_create','name':'Create\x20order\x20via\x20a\x20service\x20purchase\x20(composite\x20creation)','operation_field':'object','move_entry':'buy\x20flow:\x20order\x20record\x20created\x20inside\x20the\x20service\x20purchase\x20transaction','permission_layer':'L3_package_only','reversibility':'irreversible','governed_operations':['buy\x20(items,\x20discount,\x20machine_forward?,\x20named_order?)','order\x20record\x20creation\x20(package-only)','allocation\x20creation\x20+\x20binding\x20(if\x20order_allocators\x20configured)','progress\x20creation\x20+\x20binding\x20(if\x20machine\x20configured)','order\x20record\x20created\x20+\x20NewOrderEvent\x20emitted'],'common_patterns':['Composite\x20creation:\x20Order\x20+\x20Allocation\x20+\x20Progress\x20in\x20one\x20transaction','Service.machine\x20is\x20SNAPSHOTTED\x20to\x20order.machine\x20(not\x20a\x20reference)','owner\x20=\x20tx_context::sender\x20(buyer);\x20agent\x20=\x20[]\x20initially','Allotment\x206\x20phases\x20are\x20atomic\x20—\x20any\x20failure\x20rolls\x20back\x20fully'],'related_risks':['R-O-1-05','R-O-2-01','R-O-4-01','R-O-5-01'],'recommended_templates':['T-O-01','T-O-02','T-O-03']},{'id':'order_advance','name':'Advance\x20Progress\x20(forward/hold)','operation_field':'progress','move_entry':'progress::operate\x20(via\x20order.progress\x20delegation)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['progress.operation.next_node_name\x20+\x20forward','progress.op\x20(next/hold/unhold/adminUnhold)','progress.message\x20(optional)'],'common_patterns':['Both\x20owner\x20and\x20agent\x20can\x20advance\x20—\x20agent\x20enables\x20third-party\x20logistics','Node\x20transition\x20is\x20irreversible\x20(no\x20backward\x20movement)','Forward.guard\x20may\x20require\x20Guard\x20submission'],'related_risks':['R-O-3-02','R-O-4-03','R-O-5-03'],'recommended_templates':['T-O-02']},{'id':'order_set_agent','name':'Set\x20agent\x20list\x20(owner-only,\x20replaces\x20entire\x20list)','operation_field':'agent','move_entry':'set\x20the\x20agent\x20list\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['set\x20the\x20agent\x20list\x20(overwrites\x20entire\x20agent\x20list)'],'common_patterns':['Setting\x20the\x20agent\x20list\x20REPLACES\x20the\x20whole\x20list\x20—\x20agents\x20omitted\x20from\x20the\x20new\x20list\x20silently\x20lose\x20access\x20(old\x20agent\x20role\x20records\x20are\x20removed\x20from\x20EntityOrders)','Max\x2010\x20distinct\x20agents\x20per\x20call\x20(E_MAX_AGENT_COUNT,\x20assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push)','Can\x20be\x20called\x20at\x20ANY\x20time\x20—\x20NOT\x20frozen\x20after\x20Progress\x20binding','Agents\x20can\x20operate\x20the\x20order\x20(L2\x20ops)\x20but\x20CANNOT\x20change\x20owner\x20or\x20required_info\x20(L1\x20ops)'],'related_risks':['R-O-1-04','R-O-3-01','R-O-4-02'],'recommended_templates':['T-O-03']},{'id':'order_required_info','name':'Update\x20required_info\x20(Contact\x20or\x20WTS\x20Proof)','operation_field':'required_info','move_entry':'update\x20required_info\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['update\x20required_info\x20(set\x20Contact\x20or\x20WTS\x20Proof\x20address)','required_info\x20=\x20null\x20(clear)'],'common_patterns':['Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(via\x20Wowok\x20Messenger)','Owner-only\x20—\x20agent\x20CANNOT\x20update\x20required_info'],'related_risks':['R-O-3-02'],'recommended_templates':['T-O-01']},{'id':'order_arb_confirm','name':'Apply\x20for\x20arbitration\x20compensation','operation_field':'arb_confirm','move_entry':'arb_confirm\x20flow\x20(confirm\x20/\x20description\x20/\x20proposition)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_confirm.confirm\x20(true=confirm\x20materials,\x20false=deny)','arb_confirm.description\x20(compensation\x20application\x20description)','arb_confirm.proposition\x20(compensation\x20claims\x20list)'],'common_patterns':['Triggers\x20Arb\x20→\x20dispute()\x20appends\x20Arb\x20to\x20order.dispute','Both\x20owner\x20and\x20agent\x20can\x20file\x20—\x20agent\x20useful\x20for\x20representative\x20cases','Once\x20filed,\x20the\x20Arb\x20process\x20is\x20irreversible'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_objection','name':'Object\x20to\x20arbitration\x20result','operation_field':'arb_objection','move_entry':'objection\x20to\x20the\x20arbitration\x20ruling','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_objection.objection\x20(reason\x20for\x20re-arbitration)'],'common_patterns':['Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(after\x20ruling)','Triggers\x20re-arbitration\x20flow','Both\x20owner\x20and\x20agent\x20can\x20object'],'related_risks':['R-O-3-03','R-O-4-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_claim_compensation','name':'Claim\x20compensation\x20(sets\x20claimed_by,\x20irreversible)','operation_field':'arb_claim_compensation','move_entry':'claim\x20compensation\x20→\x20the\x20order\x20is\x20claimed\x20and\x20compensation\x20paid','permission_layer':'L4_object_gated','reversibility':'irreversible','governed_operations':['arb_claim_compensation.arb\x20(the\x20ruled\x20Arb\x20object)','compensate()\x20sets\x20order.claimed_by\x20=\x20arb'],'common_patterns':['⚠️\x20ONE-TIME,\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim,\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20and\x20the\x20order\x20rejects\x20all\x20further\x20payout\x20claims\x20(owner\x20receive\x20aborts\x20E_ORDER_ALREADY_CLAIMED)','Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(ruling\x20final\x20—\x20no\x20op-permission\x20assert)','Compensation\x20is\x20paid\x20to\x20the\x20order\x20owner\x20(permissionless\x20keeper\x20—\x20the\x20sender\x20never\x20receives)'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-06']},{'id':'order_receive','name':'Receive\x20payment\x20(Receiving-gated,\x20funds\x20to\x20owner)','operation_field':'receive','move_entry':'receive\x20payment\x20(coin\x20or\x20Receiving\x20object)','permission_layer':'L4_object_gated','reversibility':'reversible','governed_operations':['receive\x20CoinWrapper\x20(unwrap\x20and\x20forward\x20to\x20owner)','receive\x20arbitrary\x20Receiving<K>\x20object'],'common_patterns':['⚠️\x20Gated\x20by\x20Receiving\x20existence:\x20the\x20allocation\x20payout\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address\x20—\x20without\x20it\x20the\x20call\x20cannot\x20even\x20be\x20constructed','Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH\x20on\x20mismatch)','No\x20owner\x20assert\x20—\x20funds\x20are\x20ALWAYS\x20forwarded\x20to\x20order.owner\x20regardless\x20of\x20caller','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Receives\x20are\x20unwrapped\x20(CoinWrapper\x20→\x20Coin)\x20and\x20transferred\x20to\x20owner\x20address'],'related_risks':['R-O-3-01','R-O-4-05'],'recommended_templates':['T-O-05']},{'id':'order_transfer','name':'Transfer\x20order\x20ownership\x20(irreversible)','operation_field':'transfer_to','move_entry':'transfer\x20the\x20order\x20to\x20a\x20new\x20owner\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'irreversible','governed_operations':['transfer_to\x20(new\x20owner\x20address)'],'common_patterns':['⚠️\x20IRREVERSIBLE\x20—\x20new\x20owner\x20takes\x20over\x20ALL\x20permissions','Only\x20owner\x20can\x20transfer','Can\x20be\x20called\x20even\x20after\x20Progress\x20binding\x20(unlike\x20setting\x20the\x20agent\x20list)','New\x20owner\x20becomes\x20the\x20sole\x20receiver\x20of\x20future\x20payments'],'related_risks':['R-O-3-01','R-O-4-06'],'recommended_templates':['T-O-05']},{'id':'order_dispute_append','name':'Append\x20Arb\x20to\x20dispute\x20list\x20(package-only)','operation_field':'lifecycle','move_entry':'append\x20Arb\x20to\x20the\x20dispute\x20list\x20(package-only)','permission_layer':'L3_package_only','reversibility':'append_only','governed_operations':['dispute(arb)\x20—\x20append\x20Arb\x20address\x20to\x20order.dispute'],'common_patterns':['Called\x20by\x20the\x20Arbitration\x20module\x20when\x20a\x20dispute\x20is\x20filed,\x20NOT\x20by\x20external\x20users','Max\x2010\x20Arb\x20addresses\x20(MAX_DISPUTE_COUNT)','Frozen\x20when\x20claimed_by\x20is\x20set\x20(E_ORDER_ALREADY_CLAIMED)','Duplicate\x20Arb\x20addresses\x20are\x20silently\x20skipped'],'related_risks':['R-O-1-03','R-O-3-03','R-O-5-04'],'recommended_templates':['T-O-04']}];export const ORDER_AUDIT_FORMULAS={'status_inference':'if\x20claimed_by\x20!=\x20null:\x20CLAIMED;\x20'+'elif\x20progress\x20!=\x20null:\x20query\x20Progress\x20→\x20terminal?\x20COMPLETED\x20:\x20cancel?\x20CANCELLED\x20:\x20IN_PROGRESS;\x20'+'elif\x20dispute.length\x20>\x200:\x20DISPUTED;\x20'+'else:\x20CREATED','amount_check':'order.amount\x20=\x20sum(items[].price\x20*\x20items[].quantity)\x20-\x20discount_value','fund_balance':'order.amount\x20=\x20allocation_distributed\x20+\x20compensation_paid\x20+\x20refund_amount','dispute_constraint':'dispute.length\x20<=\x20MAX_DISPUTE_COUNT\x20(10);\x20frozen\x20when\x20claimed_by.is_some()','agent_constraint':'agent.length\x20<=\x20MAX_AGENT_COUNT\x20(doc=10,\x20⚠️\x20actual=11\x20due\x20to\x20<=\x20bug\x20in\x20the\x20agent-set\x20implementation)'};export const ORDER_LEDGER_VERSION='1.0.0';export function getScenesByOperationField(a){return ORDER_SCENES['filter'](b=>b['operation_field']===a);}export function findSceneById(a){return ORDER_SCENES['find'](b=>b['id']===a);}export function findSceneByMoveEntry(a){return ORDER_SCENES['find'](b=>b['move_entry']['includes'](a));}export function getScenesByPermissionLayer(a){return ORDER_SCENES['filter'](b=>b['permission_layer']===a);}export function getScenesByReversibility(a){return ORDER_SCENES['filter'](b=>b['reversibility']===a);}export function getFieldDef(a){return ORDER_FIELDS['find'](b=>b['move_name']===a);}export function getMutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x4);}export function getImmutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x1);}export function getFrozenAfterProgressFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x3);}export function getOneTimeSetFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x2);}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['buy','order_create'],['purchase','order_create'],['advance','order_advance'],['forward','order_advance'],['progress','order_advance'],['set\x20agent','order_set_agent'],['agent','order_set_agent'],['required_info','order_required_info'],['recipient','order_required_info'],['arb\x20confirm','order_arb_confirm'],['apply\x20arbitration','order_arb_confirm'],['apply\x20compensation','order_arb_confirm'],['objection','order_arb_objection'],['object','order_arb_objection'],['claim\x20compensation','order_arb_claim_compensation'],['claim','order_arb_claim_compensation'],['receive','order_receive'],['collect','order_receive'],['withdraw','order_receive'],['transfer','order_transfer'],['transfer\x20ownership','order_transfer'],['handover','order_transfer']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return findSceneById(e);}return undefined;}export function getEmittedEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>a['actually_emitted']);}export function getInferredEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>!a['actually_emitted']);}export function getOrderScenesCount(){return ORDER_SCENES['length'];}export function sdkToMoveField(a){const b=ORDER_FIELDS['find'](c=>c['sdk_name']===a);return b?.['move_name'];}export function moveToSdkField(a){const b=ORDER_FIELDS['find'](c=>c['move_name']===a);return b?.['sdk_name'];}
|
|
1
|
+
export const ORDER_FIELDS=[{'move_name':'id','sdk_name':'id','move_type':'UID','mutability_layer':0x1,'description':'Order\x20unique\x20ID'},{'move_name':'items','sdk_name':'items','move_type':'vector<SaleItem>','mutability_layer':0x1,'description':'Purchased\x20items\x20(created-immutable)'},{'move_name':'discount','sdk_name':'discount','move_type':'Option<address>','mutability_layer':0x1,'description':'Discount\x20object\x20address\x20(created-immutable)'},{'move_name':'progress','sdk_name':'progress','move_type':'Option<address>','mutability_layer':0x2,'description':'Progress\x20object\x20address\x20(one-time-set\x20when\x20the\x20Progress\x20binds)'},{'move_name':'machine','sdk_name':'machine','move_type':'Option<address>','mutability_layer':0x1,'description':'Machine\x20snapshot\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'},{'move_name':'amount','sdk_name':'amount','move_type':'u64','mutability_layer':0x1,'description':'Order\x20amount\x20in\x20MIST\x20(created-immutable)'},{'move_name':'owner','sdk_name':'builder','move_type':'address','mutability_layer':0x4,'description':'Order\x20owner\x20/\x20buyer.\x20Mutable\x20at\x20ANY\x20time\x20via\x20an\x20ownership\x20transfer\x20(L1,\x20E_NOT_THE_OWNER).\x20⚠️\x20SDK\x20field\x20name\x20is\x20\x27builder\x27\x20(only\x20naming\x20deviation\x20in\x2022\x20objects)'},{'move_name':'service','sdk_name':'service','move_type':'address','mutability_layer':0x1,'description':'Service\x20object\x20address\x20(created-immutable,\x20reference\x20only)'},{'move_name':'dispute','sdk_name':'dispute','move_type':'vector<address>','mutability_layer':0x4,'description':'Arb\x20object\x20addresses\x20(append-only,\x20max\x2010,\x20frozen\x20when\x20claimed_by\x20set)'},{'move_name':'agent','sdk_name':'agent','move_type':'vector<address>','mutability_layer':0x4,'description':'Agent\x20addresses\x20(max\x2010\x20distinct\x20per\x20call\x20—\x20input\x20deduped\x20on-chain;\x20setting\x20the\x20list\x20REPLACES\x20it\x20at\x20any\x20time,\x20no\x20progress\x20freeze)'},{'move_name':'allocation','sdk_name':'allocation','move_type':'Option<address>','mutability_layer':0x2,'description':'Allocation\x20object\x20address\x20(one-time-set\x20when\x20the\x20Allocation\x20binds)'},{'move_name':'claimed_by','sdk_name':'claimed_by','move_type':'Option<address>','mutability_layer':0x2,'description':'Claimed\x20Arb\x20object\x20address\x20(one-time,\x20irreversible;\x20blocks\x20new\x20disputes)'},{'move_name':'required_info','sdk_name':'required_info','move_type':'Option<address>','mutability_layer':0x4,'description':'Contact\x20(recipient)\x20or\x20WTS\x20Proof\x20(delivery\x20proof);\x20owner-only.\x20The\x20controlled\x20bind\x20entry\x20additionally\x20chain-verifies\x20the\x20Proof\x20is\x20about\x20THIS\x20order\x20and\x20owner-created\x20(E_REQUIRED_INFO_PROOF_NOT_BOUND\x20otherwise).'},{'move_name':'time','sdk_name':'time','move_type':'u64','mutability_layer':0x1,'description':'Creation\x20timestamp\x20(clock::timestamp_ms)'}];export const ORDER_STATES=['CREATED','IN_PROGRESS','DISPUTED','CLAIMED','COMPLETED','CANCELLED'];export const ORDER_STATE_TRANSITIONS=[{'from':'CREATED','to':'IN_PROGRESS','trigger':'buy\x20(with\x20machine)\x20→\x20the\x20Progress\x20object\x20is\x20set\x20at\x20creation'},{'from':'CREATED','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'CREATED','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20(no\x20machine\x20path)\x20or\x20manual'},{'from':'IN_PROGRESS','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'IN_PROGRESS','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20node'},{'from':'IN_PROGRESS','to':'CANCELLED','trigger':'Progress\x20reaches\x20cancel\x20node'},{'from':'DISPUTED','to':'CLAIMED','trigger':'arb_claim_compensation\x20→\x20compensate()\x20sets\x20claimed_by'},{'from':'DISPUTED','to':'COMPLETED','trigger':'Arb\x20resolution\x20+\x20Progress\x20terminal'},{'from':'DISPUTED','to':'CANCELLED','trigger':'Arb\x20resolution\x20=\x20cancel'}];export const ORDER_LIFECYCLE_EVENTS=[{'name':'NewOrderEvent','trigger':'buy\x20flow\x20phase\x205\x20(the\x20order\x20record\x20is\x20created)','emit_source':'order\x20creation\x20inside\x20the\x20buy\x20transaction','actually_emitted':!![],'fields':['object','service','progress','discount','allocation','amount']},{'name':'OrderCompletedEvent','trigger':'Progress\x20reaches\x20terminal','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','completion_time']},{'name':'OrderCancelledEvent','trigger':'Progress\x20reaches\x20cancel','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','cancel_reason']},{'name':'OrderAdvancedEvent','trigger':'order.progress\x20forward','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','from_node','to_node']},{'name':'OrderDisputeAppendedEvent','trigger':'arb_confirm\x20→\x20dispute()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb']},{'name':'OrderClaimedEvent','trigger':'arb_claim_compensation\x20→\x20compensate()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb','claimed_by']},{'name':'OwnerChangedEvent','trigger':'ownership\x20transfer\x20/\x20transfer_to','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','old_owner','new_owner']},{'name':'AgentSetEvent','trigger':'setting\x20the\x20agent\x20list','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','agent_list']},{'name':'RequiredInfoUpdatedEvent','trigger':'updating\x20required_info','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','required_info']},{'name':'AllocationBoundEvent','trigger':'allocation\x20binding','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','allocation']},{'name':'ProgressBoundEvent','trigger':'progress\x20binding','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','progress']}];export const ORDER_PERMISSION_MATRIX=[{'operation':'owner_receive\x20/\x20receive','move_function':'receive\x20CoinWrapper\x20/\x20receive\x20Receiving\x20object','layer':'L4_object_gated','aborts_with':'EPAYMENT_NOT_MATCH','notes':'Gated\x20by\x20Receiving\x20existence,\x20NOT\x20by\x20an\x20owner\x20assert:\x20the\x20allocation\x20payout\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address.\x20No\x20owner\x20assert\x20—\x20funds\x20ALWAYS\x20go\x20to\x20order.owner\x20regardless\x20of\x20caller.\x20Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH).'},{'operation':'transfer_to\x20(ownership\x20transfer)','move_function':'transfer\x20the\x20order\x20to\x20a\x20new\x20owner','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Irreversible.\x20New\x20owner\x20takes\x20over\x20ALL\x20permissions.\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'agent\x20(set\x20agent\x20list)','move_function':'set\x20the\x20agent\x20list\x20(replaces\x20all)','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER,\x20E_MAX_AGENT_COUNT','notes':'REPLACES\x20the\x20whole\x20agent\x20list\x20(not\x20append).\x20Max\x2010\x20distinct\x20agents\x20(assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push).\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'update\x20required_info','move_function':'set\x20or\x20clear\x20required_info\x20(Contact\x20/\x20WTS\x20Proof)','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Owner-only.\x20Agent\x20CANNOT\x20update\x20required_info.'},{'operation':'bind\x20required_info\x20(controlled)','move_function':'bind\x20a\x20WTS\x20Proof\x20to\x20the\x20order\x20(write\x20only\x20when\x20Proof-about==order\x20&&\x20Proof-creator==owner)','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER,\x20E_REQUIRED_INFO_PROOF_NOT_BOUND\x20(11)','notes':'MOV-PROTOCOL-1212\x20(11):\x20chain-enforced\x20per-order\x20binding.\x20On\x20mismatch\x20NOTHING\x20is\x20written.\x20Coexists\x20with\x20the\x20plain\x20update\x20above\x20—\x20the\x20reuse\x20model\x20(one\x20contact\x20Proof\x20across\x20orders)\x20stays\x20the\x20privacy-preserving\x20default;\x20bind\x20is\x20for\x20listings\x20that\x20promise\x20a\x20per-order\x20credential.'},{'operation':'progress\x20(advance)','move_function':'(progress::operate)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION','notes':'Both\x20owner\x20and\x20agent\x20can\x20advance\x20Progress.'},{'operation':'arb_confirm','move_function':'(file\x20for\x20arbitration)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'Both\x20can\x20file\x20arbitration.\x20confirmed=true\x20additionally\x20asserts\x20claimed_by\x20is\x20none.\x20Irreversible.'},{'operation':'arb_objection','move_function':'(object\x20to\x20the\x20arbitration\x20ruling)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_ORDER_ALREADY_CLAIMED,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH','notes':'Both\x20can\x20object\x20to\x20Arb\x20ruling.\x20Requires\x20Arb\x20status\x20==\x20Arbirated.\x20Irreversible.'},{'operation':'arb_claim_compensation','move_function':'(claim\x20the\x20compensation)','layer':'L4_object_gated','aborts_with':'E_ORDER_SERVICE_NOT_MATCH,\x20E_ARBITRATION_ARB_NOT_MATCH,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_COMPENSATION_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'No\x20op-permission\x20assert\x20—\x20gated\x20by\x20Arb\x20status\x20(must\x20be\x20Arbirated,\x20ruling\x20final).\x20Compensation\x20is\x20paid\x20to\x20the\x20order\x20owner\x20(permissionless\x20keeper\x20—\x20the\x20sender\x20never\x20receives).\x20Sets\x20claimed_by\x20—\x20one-time,\x20irreversible.\x20The\x20claim\x20does\x20NOT\x20seal\x20the\x20order:\x20the\x20owner\x20receive\x20entries\x20are\x20deliberately\x20ungated\x20(order.move:213-234),\x20so\x20any\x20escrow\x20balance\x20left\x20on\x20the\x20order\x20stays\x20claimable\x20unless\x20the\x20refund\x20allocator\x27s\x20guard\x20is\x20gated\x20on\x20order.claimed_by\x20some==false;\x20the\x20provider\x20release\x20track\x20(direct\x20transfer)\x20stays\x20usable.'},{'operation':'progress\x20binding\x20(package-only)','move_function':'bind\x20the\x20Progress\x20object\x20(package\x20write-back)','layer':'L3_package_only','aborts_with':'E_PROGRESS_ALREADY_SPECIFIED','notes':'Progress\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'allocation\x20binding\x20(package-only)','move_function':'bind\x20the\x20Allocation\x20object\x20(package\x20write-back)','layer':'L3_package_only','aborts_with':'E_ALLOCATION_ALREADY_SPECIFIED','notes':'Allocation\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'dispute\x20(package-only)','move_function':'dispute','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED,\x20E_MAX_DISPUTE_COUNT','notes':'Arbitration\x20module\x20appends\x20Arb\x20address.'},{'operation':'compensate\x20(package-only)','move_function':'compensate','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED','notes':'Arbitration\x20module\x20sets\x20claimed_by.\x20Irreversible.'}];export const ORDER_SCENES=[{'id':'order_create','name':'Create\x20order\x20via\x20a\x20service\x20purchase\x20(composite\x20creation)','operation_field':'object','move_entry':'buy\x20flow:\x20order\x20record\x20created\x20inside\x20the\x20service\x20purchase\x20transaction','permission_layer':'L3_package_only','reversibility':'irreversible','governed_operations':['buy\x20(items,\x20discount,\x20machine_forward?,\x20named_order?)','order\x20record\x20creation\x20(package-only)','allocation\x20creation\x20+\x20binding\x20(if\x20order_allocators\x20configured)','progress\x20creation\x20+\x20binding\x20(if\x20machine\x20configured)','order\x20record\x20created\x20+\x20NewOrderEvent\x20emitted'],'common_patterns':['Composite\x20creation:\x20Order\x20+\x20Allocation\x20+\x20Progress\x20in\x20one\x20transaction','Service.machine\x20is\x20SNAPSHOTTED\x20to\x20order.machine\x20(not\x20a\x20reference)','owner\x20=\x20tx_context::sender\x20(buyer);\x20agent\x20=\x20[]\x20initially','Allotment\x206\x20phases\x20are\x20atomic\x20—\x20any\x20failure\x20rolls\x20back\x20fully'],'related_risks':['R-O-1-05','R-O-2-01','R-O-4-01','R-O-5-01'],'recommended_templates':['T-O-01','T-O-02','T-O-03']},{'id':'order_advance','name':'Advance\x20Progress\x20(forward/hold)','operation_field':'progress','move_entry':'progress::operate\x20(via\x20order.progress\x20delegation)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['progress.operation.next_node_name\x20+\x20forward','progress.op\x20(next/hold/unhold/adminUnhold)','progress.message\x20(optional)'],'common_patterns':['Both\x20owner\x20and\x20agent\x20can\x20advance\x20—\x20agent\x20enables\x20third-party\x20logistics','Node\x20transition\x20is\x20irreversible\x20(no\x20backward\x20movement)','Forward.guard\x20may\x20require\x20Guard\x20submission'],'related_risks':['R-O-3-02','R-O-4-03','R-O-5-03'],'recommended_templates':['T-O-02']},{'id':'order_set_agent','name':'Set\x20agent\x20list\x20(owner-only,\x20replaces\x20entire\x20list)','operation_field':'agent','move_entry':'set\x20the\x20agent\x20list\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['set\x20the\x20agent\x20list\x20(overwrites\x20entire\x20agent\x20list)'],'common_patterns':['Setting\x20the\x20agent\x20list\x20REPLACES\x20the\x20whole\x20list\x20—\x20agents\x20omitted\x20from\x20the\x20new\x20list\x20silently\x20lose\x20access\x20(old\x20agent\x20role\x20records\x20are\x20removed\x20from\x20EntityOrders)','Max\x2010\x20distinct\x20agents\x20per\x20call\x20(E_MAX_AGENT_COUNT,\x20assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push)','Can\x20be\x20called\x20at\x20ANY\x20time\x20—\x20NOT\x20frozen\x20after\x20Progress\x20binding','Agents\x20can\x20operate\x20the\x20order\x20(L2\x20ops)\x20but\x20CANNOT\x20change\x20owner\x20or\x20required_info\x20(L1\x20ops)'],'related_risks':['R-O-1-04','R-O-3-01','R-O-4-02'],'recommended_templates':['T-O-03']},{'id':'order_required_info','name':'Update\x20required_info\x20(Contact\x20or\x20WTS\x20Proof)','operation_field':'required_info','move_entry':'update\x20required_info\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['update\x20required_info\x20(set\x20Contact\x20or\x20WTS\x20Proof\x20address)','required_info\x20=\x20null\x20(clear)'],'common_patterns':['Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(via\x20Wowok\x20Messenger)','Owner-only\x20—\x20agent\x20CANNOT\x20update\x20required_info'],'related_risks':['R-O-3-02'],'recommended_templates':['T-O-01']},{'id':'order_arb_confirm','name':'Apply\x20for\x20arbitration\x20compensation','operation_field':'arb_confirm','move_entry':'arb_confirm\x20flow\x20(confirm\x20/\x20description\x20/\x20proposition)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_confirm.confirm\x20(true=confirm\x20materials,\x20false=deny)','arb_confirm.description\x20(compensation\x20application\x20description)','arb_confirm.proposition\x20(compensation\x20claims\x20list)'],'common_patterns':['Triggers\x20Arb\x20→\x20dispute()\x20appends\x20Arb\x20to\x20order.dispute','Both\x20owner\x20and\x20agent\x20can\x20file\x20—\x20agent\x20useful\x20for\x20representative\x20cases','Once\x20filed,\x20the\x20Arb\x20process\x20is\x20irreversible'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_objection','name':'Object\x20to\x20arbitration\x20result','operation_field':'arb_objection','move_entry':'objection\x20to\x20the\x20arbitration\x20ruling','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_objection.objection\x20(reason\x20for\x20re-arbitration)'],'common_patterns':['Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(after\x20ruling)','Triggers\x20re-arbitration\x20flow','Both\x20owner\x20and\x20agent\x20can\x20object'],'related_risks':['R-O-3-03','R-O-4-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_claim_compensation','name':'Claim\x20compensation\x20(sets\x20claimed_by,\x20irreversible)','operation_field':'arb_claim_compensation','move_entry':'claim\x20compensation\x20→\x20the\x20order\x20is\x20claimed\x20and\x20compensation\x20paid','permission_layer':'L4_object_gated','reversibility':'irreversible','governed_operations':['arb_claim_compensation.arb\x20(the\x20ruled\x20Arb\x20object)','compensate()\x20sets\x20order.claimed_by\x20=\x20arb'],'common_patterns':['⚠️\x20ONE-TIME,\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim,\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20and\x20the\x20order\x20rejects\x20all\x20further\x20payout\x20claims\x20(owner\x20receive\x20aborts\x20E_ORDER_ALREADY_CLAIMED)','Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(ruling\x20final\x20—\x20no\x20op-permission\x20assert)','Compensation\x20is\x20paid\x20to\x20the\x20order\x20owner\x20(permissionless\x20keeper\x20—\x20the\x20sender\x20never\x20receives)'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-06']},{'id':'order_receive','name':'Receive\x20payment\x20(Receiving-gated,\x20funds\x20to\x20owner)','operation_field':'receive','move_entry':'receive\x20payment\x20(coin\x20or\x20Receiving\x20object)','permission_layer':'L4_object_gated','reversibility':'reversible','governed_operations':['receive\x20CoinWrapper\x20(unwrap\x20and\x20forward\x20to\x20owner)','receive\x20arbitrary\x20Receiving<K>\x20object'],'common_patterns':['⚠️\x20Gated\x20by\x20Receiving\x20existence:\x20the\x20allocation\x20payout\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address\x20—\x20without\x20it\x20the\x20call\x20cannot\x20even\x20be\x20constructed','Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH\x20on\x20mismatch)','No\x20owner\x20assert\x20—\x20funds\x20are\x20ALWAYS\x20forwarded\x20to\x20order.owner\x20regardless\x20of\x20caller','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Receives\x20are\x20unwrapped\x20(CoinWrapper\x20→\x20Coin)\x20and\x20transferred\x20to\x20owner\x20address'],'related_risks':['R-O-3-01','R-O-4-05'],'recommended_templates':['T-O-05']},{'id':'order_transfer','name':'Transfer\x20order\x20ownership\x20(irreversible)','operation_field':'transfer_to','move_entry':'transfer\x20the\x20order\x20to\x20a\x20new\x20owner\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'irreversible','governed_operations':['transfer_to\x20(new\x20owner\x20address)'],'common_patterns':['⚠️\x20IRREVERSIBLE\x20—\x20new\x20owner\x20takes\x20over\x20ALL\x20permissions','Only\x20owner\x20can\x20transfer','Can\x20be\x20called\x20even\x20after\x20Progress\x20binding\x20(unlike\x20setting\x20the\x20agent\x20list)','New\x20owner\x20becomes\x20the\x20sole\x20receiver\x20of\x20future\x20payments'],'related_risks':['R-O-3-01','R-O-4-06'],'recommended_templates':['T-O-05']},{'id':'order_dispute_append','name':'Append\x20Arb\x20to\x20dispute\x20list\x20(package-only)','operation_field':'lifecycle','move_entry':'append\x20Arb\x20to\x20the\x20dispute\x20list\x20(package-only)','permission_layer':'L3_package_only','reversibility':'append_only','governed_operations':['dispute(arb)\x20—\x20append\x20Arb\x20address\x20to\x20order.dispute'],'common_patterns':['Called\x20by\x20the\x20Arbitration\x20module\x20when\x20a\x20dispute\x20is\x20filed,\x20NOT\x20by\x20external\x20users','Max\x2010\x20Arb\x20addresses\x20(MAX_DISPUTE_COUNT)','Frozen\x20when\x20claimed_by\x20is\x20set\x20(E_ORDER_ALREADY_CLAIMED)','Duplicate\x20Arb\x20addresses\x20are\x20silently\x20skipped'],'related_risks':['R-O-1-03','R-O-3-03','R-O-5-04'],'recommended_templates':['T-O-04']}];export const ORDER_AUDIT_FORMULAS={'status_inference':'if\x20claimed_by\x20!=\x20null:\x20CLAIMED;\x20'+'elif\x20progress\x20!=\x20null:\x20query\x20Progress\x20→\x20terminal?\x20COMPLETED\x20:\x20cancel?\x20CANCELLED\x20:\x20IN_PROGRESS;\x20'+'elif\x20dispute.length\x20>\x200:\x20DISPUTED;\x20'+'else:\x20CREATED','amount_check':'order.amount\x20=\x20sum(items[].price\x20*\x20items[].quantity)\x20-\x20discount_value','fund_balance':'order.amount\x20=\x20allocation_distributed\x20+\x20compensation_paid\x20+\x20refund_amount','dispute_constraint':'dispute.length\x20<=\x20MAX_DISPUTE_COUNT\x20(10);\x20frozen\x20when\x20claimed_by.is_some()','agent_constraint':'agent.length\x20<=\x20MAX_AGENT_COUNT\x20(doc=10,\x20⚠️\x20actual=11\x20due\x20to\x20<=\x20bug\x20in\x20the\x20agent-set\x20implementation)'};export const ORDER_LEDGER_VERSION='1.0.0';export function getScenesByOperationField(a){return ORDER_SCENES['filter'](b=>b['operation_field']===a);}export function findSceneById(a){return ORDER_SCENES['find'](b=>b['id']===a);}export function findSceneByMoveEntry(a){return ORDER_SCENES['find'](b=>b['move_entry']['includes'](a));}export function getScenesByPermissionLayer(a){return ORDER_SCENES['filter'](b=>b['permission_layer']===a);}export function getScenesByReversibility(a){return ORDER_SCENES['filter'](b=>b['reversibility']===a);}export function getFieldDef(a){return ORDER_FIELDS['find'](b=>b['move_name']===a);}export function getMutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x4);}export function getImmutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x1);}export function getFrozenAfterProgressFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x3);}export function getOneTimeSetFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x2);}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['buy','order_create'],['purchase','order_create'],['advance','order_advance'],['forward','order_advance'],['progress','order_advance'],['set\x20agent','order_set_agent'],['agent','order_set_agent'],['required_info','order_required_info'],['recipient','order_required_info'],['arb\x20confirm','order_arb_confirm'],['apply\x20arbitration','order_arb_confirm'],['apply\x20compensation','order_arb_confirm'],['objection','order_arb_objection'],['object','order_arb_objection'],['claim\x20compensation','order_arb_claim_compensation'],['claim','order_arb_claim_compensation'],['receive','order_receive'],['collect','order_receive'],['withdraw','order_receive'],['transfer','order_transfer'],['transfer\x20ownership','order_transfer'],['handover','order_transfer']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return findSceneById(e);}return undefined;}export function getEmittedEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>a['actually_emitted']);}export function getInferredEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>!a['actually_emitted']);}export function getOrderScenesCount(){return ORDER_SCENES['length'];}export function sdkToMoveField(a){const b=ORDER_FIELDS['find'](c=>c['sdk_name']===a);return b?.['move_name'];}export function moveToSdkField(a){const b=ORDER_FIELDS['find'](c=>c['move_name']===a);return b?.['sdk_name'];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PERMISSION_TYPES=[{'name':'Permission','scope':'organization','definedOn':'Permission\x20Object\x20(standalone\x20on-chain\x20object,\x20referenced\x20by\x20service/machine/etc.)','controls':'Who\x20can\x20modify\x20the\x20bound\x20object\x27s\x20settings,\x20publish\x20it,\x20manage\x20its\x20funds,\x20etc.','grantedBy':'The\x20object\x27s\x20creator\x20(owner)\x20or\x20anyone\x20the\x20creator\x20delegates\x20to','example':'A\x20shop\x20owner\x20creates\x20a\x20Permission\x20allowing\x20only\x20their\x20staff\x20to\x20modify\x20the\x20Service\x27s\x20price.'},{'name':'NamedOperator','scope':'order','definedOn':'Per-order\x20(specified\x20in\x20the\x20order\x20creation/modification\x20by\x20the\x20service)','controls':'Who\x20can\x20operate\x20on\x20a\x20specific\x20order:\x20advance\x20progress,\x20settle,\x20refund,\x20etc.','grantedBy':'The\x20service\x20(via\x20its\x20order_allocators\x20or\x20explicit\x20named\x20operators)','example':'A\x20delivery\x20service\x20assigns\x20Alice\x20as\x20the\x20NamedOperator\x20for\x20order\x20#123\x20—\x20only\x20Alice\x20can\x20mark\x20it\x20delivered.'},{'name':'OrderHolder','scope':'order_holder','definedOn':'Per-order\x20(the\x20\x27\x27\x20empty\x20string\x20address\x20=\x20the\x20order\x27s\x20current\x20holder)','controls':'Who\x20currently\x20holds\x20the\x20order\x20and\x20can\x20perform\x20holder-specific\x20actions\x20(accept,\x20reject,\x20pay)','grantedBy':'Implicitly\x20assigned\x20when\x20an\x20order\x20is\x20created\x20or\x20transferred','example':'Bob\x20places\x20an\x20order\x20—\x20he\x20becomes\x20the\x20OrderHolder.\x20He\x20can\x20accept\x20delivery\x20or\x20request\x20arbitration.'}];const PERMISSION_TYPE_INDEX=new Map(PERMISSION_TYPES['map'](a=>[a['name'],a]));export function getPermissionType(a){return PERMISSION_TYPE_INDEX['get'](a);}export const REPOSITORY_PERMISSIONS=[{'index':0x64,'name':'REPOSITORY_NEW','description':'Create\x20new\x20Repository\x20policy','governed_operation':'create_repository'},{'index':0x65,'name':'REPOSITORY_DESCRIPTION','description':'Modify\x20Repository\x20description','governed_operation':'set_repository_description'},{'index':0x66,'name':'REPOSITORY_POLICY','description':'Modify\x20Repository\x20policy','governed_operation':'set_repository_policy'},{'index':0x67,'name':'REPOSITORY_REWARD','description':'Set\x20Repository\x20reward','governed_operation':'set_repository_reward'},{'index':0x68,'name':'REPOSITORY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_repository_by_owner'},{'index':0x69,'name':'REPOSITORY_UM','description':'Set\x20UM\x20(User\x20Manager)','governed_operation':'set_repository_user_manager'}];export const REWARD_PERMISSIONS=[{'index':0x96,'name':'REWARD_NEW','description':'Create\x20new\x20Reward','governed_operation':'create_reward'},{'index':0x97,'name':'REWARD_DESCRIPTION','description':'Modify\x20Reward\x20description','governed_operation':'set_reward_description'},{'index':0x98,'name':'REWARD_GUARD','description':'Set\x20Reward\x20guard','governed_operation':'set_reward_guard'},{'index':0x99,'name':'REWARD_COIN_ADD','description':'Add\x20coins\x20to\x20Reward','governed_operation':'add_reward_coin'},{'index':0x9a,'name':'REWARD_RECEIVE','description':'Receive\x20reward','governed_operation':'receive_reward'},{'index':0x9b,'name':'REWARD_GUARD_EXPIRATION_TIME_ADD','description':'Extend\x20guard\x20expiration','governed_operation':'extend_reward_guard_expiration'},{'index':0x9c,'name':'REWARD_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_reward_by_owner'},{'index':0x9d,'name':'REWARD_UM','description':'Set\x20UM','governed_operation':'set_reward_user_manager'}];export const MACHINE_PERMISSIONS=[{'index':0xc8,'name':'MACHINE_NEW','description':'Create\x20new\x20Machine','governed_operation':'create_machine'},{'index':0xc9,'name':'MACHINE_DESCRIPTION','description':'Modify\x20Machine\x20description','governed_operation':'set_machine_description'},{'index':0xcb,'name':'MACHINE_CONSENSUS_REPOSITORIES','description':'Set\x20consensus\x20Repositories','governed_operation':'set_consensus_repositories'},{'index':0xcc,'name':'MACHINE_PAUSE','description':'Pause/resume\x20Machine','governed_operation':'pause_or_resume_machine'},{'index':0xcd,'name':'MACHINE_PUBLISH','description':'Publish\x20Machine\x20(irreversible)','governed_operation':'publish_machine'},{'index':0xce,'name':'MACHINE_NODE','description':'Modify\x20Machine\x20nodes','governed_operation':'manage_machine_nodes'},{'index':0xcf,'name':'MACHINE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_machine_by_owner'},{'index':0xd0,'name':'MACHINE_UM','description':'Set\x20UM','governed_operation':'set_machine_user_manager'}];export const PROGRESS_PERMISSIONS=[{'index':0xdc,'name':'PROGRESS_NEW','description':'Create\x20new\x20Progress','governed_operation':'create_progress'},{'index':0xdd,'name':'PROGRESS_NAMED_OPERATOR','description':'Manage\x20named\x20operators','governed_operation':'manage_named_operators'},{'index':0xde,'name':'PROGRESS_TASK','description':'Submit\x20task','governed_operation':'submit_task'},{'index':0xdf,'name':'PROGRESS_CONTEXT_REPOSITORY','description':'Set\x20context\x20Repository','governed_operation':'set_progress_context_repository'},{'index':0xe0,'name':'PROGRESS_UNHOLD','description':'Unhold\x20Progress','governed_operation':'unhold_progress'},{'index':0xe1,'name':'PROGRESS_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_progress_by_owner'}];export const TREASURY_PERMISSIONS=[{'index':0xfa,'name':'TREASURY_NEW','description':'Create\x20new\x20Treasury','governed_operation':'create_treasury'},{'index':0xfb,'name':'TREASURY_DESCRIPTION','description':'Modify\x20Treasury\x20description','governed_operation':'set_treasury_description'},{'index':0xfc,'name':'TREASURY_DEPOSIT','description':'Deposit\x20funds','governed_operation':'deposit_into_treasury'},{'index':0xfd,'name':'TREASURY_RECEIVE','description':'Receive\x20funds','governed_operation':'receive_treasury_funds'},{'index':0xfe,'name':'TREASURY_WITHDRAW','description':'Withdraw\x20funds','governed_operation':'withdraw_treasury_funds'},{'index':0xff,'name':'TREASURY_EXTERNAL_DEPOSIT_GUARD','description':'Manage\x20external\x20deposit\x20Guard\x20list','governed_operation':'manage_external_deposit_guards'},{'index':0x100,'name':'TREASURY_EXTERNAL_WITHDRAW_GUARD','description':'Manage\x20external\x20withdraw\x20Guard\x20list','governed_operation':'manage_external_withdraw_guards'},{'index':0x101,'name':'TREASURY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_treasury_by_owner'},{'index':0x102,'name':'TREASURY_UM','description':'Set\x20UM','governed_operation':'set_treasury_user_manager'}];export const SERVICE_PERMISSIONS=[{'index':0x12c,'name':'SERVICE_NEW','description':'Create\x20new\x20Service','governed_operation':'create_service'},{'index':0x12d,'name':'SERVICE_DESCRIPTION','description':'Modify\x20Service\x20description','governed_operation':'set_service_description'},{'index':0x12f,'name':'SERVICE_LOCATION','description':'Set\x20Service\x20location','governed_operation':'set_service_location'},{'index':0x130,'name':'SERVICE_REPOSITORY','description':'Set\x20Service\x20repository','governed_operation':'set_service_repository'},{'index':0x131,'name':'SERVICE_SALES','description':'Modify\x20sales','governed_operation':'manage_sales'},{'index':0x132,'name':'SERVICE_MACHINE','description':'Bind/modify\x20Machine','governed_operation':'set_service_machine'},{'index':0x133,'name':'SERVICE_BUY_GUARD','description':'Set\x20buy\x20guard','governed_operation':'set_service_buy_guard'},{'index':0x134,'name':'SERVICE_ARBITRATION','description':'Set\x20Arbitration','governed_operation':'set_service_arbitration'},{'index':0x135,'name':'SERVICE_CUSTOMER_INFO_REQUIRED','description':'Set\x20customer\x20info\x20required','governed_operation':'set_customer_info_required'},{'index':0x136,'name':'SERVICE_PAUSE','description':'Pause/resume\x20Service','governed_operation':'pause_or_resume_service'},{'index':0x137,'name':'SERVICE_PUBLISH','description':'Publish\x20Service','governed_operation':'publish_service'},{'index':0x138,'name':'SERVICE_DISCOUNT','description':'Set\x20discount','governed_operation':'set_discount'},{'index':0x139,'name':'SERVICE_ORDER_ALLOCATOR','description':'Set\x20order\x20allocator','governed_operation':'set_order_allocator'},{'index':0x13a,'name':'SERVICE_COMPENSATION_FUND_DEPOSIT','description':'Deposit\x20to\x20compensation\x20fund','governed_operation':'deposit_compensation_fund'},{'index':0x13b,'name':'SERVICE_COMPENSATION_FUND_WITHDRAW','description':'Withdraw\x20from\x20compensation\x20fund','governed_operation':'withdraw_compensation_fund'},{'index':0x13c,'name':'SERVICE_COMPENSATION_FUND_FREEZE','description':'Freeze\x20compensation\x20fund','governed_operation':'freeze_compensation_fund'},{'index':0x13d,'name':'SERVICE_COMPENSATION_FUND_UNFREEZE','description':'Unfreeze\x20compensation\x20fund','governed_operation':'unfreeze_compensation_fund'},{'index':0x13e,'name':'SERVICE_REWARD','description':'Set\x20reward','governed_operation':'set_service_reward'},{'index':0x13f,'name':'SERVICE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_service_by_owner'},{'index':0x140,'name':'SERVICE_UM','description':'Set\x20UM','governed_operation':'set_service_user_manager'},{'index':0x141,'name':'SERVICE_ARB_STATEMENT','description':'Append\x20seller\x20statement\x20to\x20an\x20Arb\x20case','governed_operation':'arb_statement_on_case'}];export const ARBITRATION_PERMISSIONS=[{'index':0x15e,'name':'ARBITRATION_NEW','description':'Create\x20new\x20Arbitration','governed_operation':'create_arbitration'},{'index':0x15f,'name':'ARBITRATION_DESCRIPTION','description':'Modify\x20description','governed_operation':'set_arbitration_description'},{'index':0x161,'name':'ARBITRATION_LOCATION','description':'Set\x20location','governed_operation':'set_arbitration_location'},{'index':0x162,'name':'ARBITRATION_VOTING_GUARD','description':'Set\x20voting\x20guard','governed_operation':'set_arbitration_voting_guard'},{'index':0x163,'name':'ARBITRATION_USAGE_GUARD','description':'Set\x20usage\x20guard','governed_operation':'set_arbitration_usage_guard'},{'index':0x164,'name':'ARBITRATION_PAUSE','description':'Pause/resume','governed_operation':'pause_or_resume_arbitration'},{'index':0x165,'name':'ARBITRATION_FEE','description':'Set\x20fee','governed_operation':'set_arbitration_fee'},{'index':0x166,'name':'ARBITRATION_VOTE','description':'Vote\x20(empty\x20voting_guard\x20=\x20equal\x20weight\x201-person-1-vote,\x20but\x20358\x20is\x20still\x20required\x20per\x20voter\x20—\x20NOT\x20permissionless)','governed_operation':'cast_arbitration_vote'},{'index':0x167,'name':'ARBITRATION_ARBITRATION','description':'Arbitrate\x20dispute','governed_operation':'issue_arbitration_ruling'},{'index':0x168,'name':'ARBITRATION_FEEDBACK','description':'Provide\x20feedback','governed_operation':'give_arbitration_feedback'},{'index':0x169,'name':'ARBITRATION_CONFIRM','description':'Confirm\x20resolution','governed_operation':'confirm_arbitration_result'},{'index':0x16a,'name':'ARBITRATION_VOTING_DEADLINE_CHANGE','description':'Change\x20voting\x20deadline','governed_operation':'change_arbitration_voting_deadline'},{'index':0x16b,'name':'ARBITRATION_RESET','description':'Reset\x20arbitration','governed_operation':'reset_arbitration'},{'index':0x16c,'name':'ARBITRATION_ARB_WITHDRAW','description':'Arb\x20withdraw','governed_operation':'withdraw_arbitration_funds'},{'index':0x16d,'name':'ARBITRATION_FEES_ALLOC','description':'Allocate\x20fees','governed_operation':'allocate_arbitration_fees'},{'index':0x16e,'name':'ARBITRATION_FEES_TRANSFER','description':'Transfer\x20fees','governed_operation':'transfer_arbitration_fees'},{'index':0x16f,'name':'ARBITRATION_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_arbitration_by_owner'},{'index':0x170,'name':'ARBITRATION_UM','description':'Set\x20UM','governed_operation':'set_arbitration_user_manager'}];export const DEMAND_PERMISSIONS=[{'index':0x190,'name':'DEMAND_NEW','description':'Create\x20new\x20Demand','governed_operation':'create_demand'},{'index':0x191,'name':'DEMAND_DESCRIPTION','description':'Modify\x20description','governed_operation':'set_demand_description'},{'index':0x192,'name':'DEMAND_LOCATION','description':'Set\x20location','governed_operation':'set_demand_location'},{'index':0x194,'name':'DEMAND_GUARD','description':'Set\x20guard','governed_operation':'set_demand_guard'},{'index':0x195,'name':'DEMAND_REWARD','description':'Set\x20reward','governed_operation':'set_demand_reward'},{'index':0x196,'name':'DEMAND_FEEDBACK','description':'Provide\x20feedback','governed_operation':'give_demand_feedback'},{'index':0x197,'name':'DEMAND_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_demand_by_owner'},{'index':0x198,'name':'DEMAND_UM','description':'Set\x20UM','governed_operation':'set_demand_user_manager'}];export const CONTACT_PERMISSIONS=[{'index':0x1c2,'name':'CONTACT_NEW','description':'Create\x20new\x20Contact','governed_operation':'create_contact'},{'index':0x1c3,'name':'CONTACT_DESCRIPTION','description':'Modify\x20description','governed_operation':'set_contact_description'},{'index':0x1c4,'name':'CONTACT_LOCATION','description':'Set\x20location','governed_operation':'set_contact_location'},{'index':0x1c5,'name':'CONTACT_IM','description':'Set\x20IM','governed_operation':'set_contact_im'},{'index':0x1c6,'name':'CONTACT_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_contact_by_owner'}];export const PERMISSION_SCENES=[{'id':'service_permission','name':'Service\x20publish\x20&\x20operation\x20permission','host_object':'Service','permission_index_range':'300-320','builtin_indexes':SERVICE_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['publish_service\x20(311)','pause_or_resume_service\x20(310)','set_service_machine\x20(306)','set_service_buy_guard\x20(307)','set_order_allocator\x20(313)','set_service_reward\x20(318)','manage_compensation_fund\x20(314-317)'],'mutable_after_publish':!![],'common_patterns':['Owner-only\x20publish:\x20only\x20owner/admin\x20has\x20SERVICE_PUBLISH\x20(311)','Separate\x20pause\x20role:\x20delegate\x20SERVICE_PAUSE\x20(310)\x20to\x20operator','Allocator\x20guard:\x20SERVICE_ORDER_ALLOCATOR\x20(313)\x20guarded\x20by\x20Guard'],'recommended_templates':['T-P-03','T-P-02']},{'id':'machine_permission','name':'Machine\x20workflow\x20permission','host_object':'Machine','permission_index_range':'200-208','builtin_indexes':MACHINE_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['publish_machine\x20(205)','manage_machine_nodes\x20(206)','pause_or_resume_machine\x20(204)','set_consensus_repositories\x20(203)'],'mutable_after_publish':!![],'common_patterns':['Pre-publish\x20node\x20editing:\x20MACHINE_NODE\x20(206)\x20before\x20publish\x20only','Post-publish:\x20only\x20Forward.guard\x20can\x20be\x20modified;\x20node\x20structure\x20frozen','Consensus\x20repositories:\x20MACHINE_CONSENSUS_REPOSITORIES\x20(203)\x20for\x20multi-repo\x20consensus'],'recommended_templates':['T-P-04','T-P-01']},{'id':'treasury_permission','name':'Treasury\x20fund\x20management\x20permission','host_object':'Treasury','permission_index_range':'250-258','builtin_indexes':TREASURY_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['deposit_into_treasury\x20(252)','withdraw_treasury_funds\x20(254)','manage_external_deposit_guards\x20(255)','manage_external_withdraw_guards\x20(256)','receive_treasury_by_owner\x20(257)','set_treasury_user_manager\x20(258)'],'mutable_after_publish':!![],'common_patterns':['Guard-protected\x20external\x20ops:\x20TREASURY_EXTERNAL_*_GUARD\x20(255/256)\x20for\x20cross-treasury\x20safety;\x20external_deposit/external_withdraw\x20use\x20Guard\x20+\x20Passport,\x20no\x20Permission\x20index','Withdraw\x20restricted\x20to\x20owner+admin:\x20TREASURY_WITHDRAW\x20(254)\x20tightly\x20held','UM\x20delegation:\x20TREASURY_UM\x20(258)\x20for\x20contact\x20management'],'recommended_templates':['T-P-05','T-P-02']},{'id':'allocation_permission','name':'Allocation\x20strategy\x20permission\x20(custom)','host_object':'Allocation','permission_index_range':'>=1000\x20(custom)','builtin_indexes':[],'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['execute_allocation\x20(custom\x20index)','receive_allocation\x20(custom\x20index)'],'mutable_after_publish':!![],'common_patterns':['Custom\x20index\x20>=\x201000\x20for\x20business-specific\x20allocation\x20rules','Guard-bound\x20alloc:\x20alloc\x20operation\x20requires\x20Guard\x20verification','Multi-entity:\x20multiple\x20allocators\x20share\x20same\x20permission_index'],'recommended_templates':['T-P-01','T-P-02']},{'id':'arbitration_permission','name':'Arbitration\x20case\x20management\x20permission','host_object':'Arbitration','permission_index_range':'350-368','builtin_indexes':ARBITRATION_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['cast_arbitration_vote\x20(358)','issue_arbitration_ruling\x20(359)','give_arbitration_feedback\x20(360)','confirm_arbitration_result\x20(361)','change_arbitration_voting_deadline\x20(362)','reset_arbitration\x20(363)','allocate_arbitration_fees\x20(365)'],'mutable_after_publish':!![],'common_patterns':['Arb\x20committee:\x20ARBITRATION_VOTE\x20(358)\x20granted\x20to\x20multiple\x20arbiters','Open\x20voting\x20guard:\x20voting_guard\x20allows\x20public\x20to\x20vote\x20(weight=1)','Guard-based\x20usage:\x20usage_guard\x20filters\x20which\x20disputes\x20can\x20be\x20filed'],'recommended_templates':['T-P-06','T-P-02']},{'id':'repository_permission','name':'Repository\x20policy\x20management\x20permission','host_object':'Repository','permission_index_range':'100-105','builtin_indexes':REPOSITORY_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_repository_policy\x20(102)','set_repository_reward\x20(103)'],'mutable_after_publish':!![],'common_patterns':['Public\x20read:\x20anyone\x20can\x20read\x20Repository\x20data','Owner-write:\x20REPOSITORY_POLICY\x20(102)\x20restricted\x20to\x20owner/admin','Reward\x20binding:\x20REPOSITORY_REWARD\x20(103)\x20for\x20incentive\x20distribution'],'recommended_templates':['T-P-01']},{'id':'reward_permission','name':'Reward\x20distribution\x20permission','host_object':'Reward','permission_index_range':'150-157','builtin_indexes':REWARD_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_reward_guard\x20(152)','add_reward_coin\x20(153)','receive_reward\x20(154)','extend_reward_guard_expiration\x20(155)'],'mutable_after_publish':!![],'common_patterns':['Guard-bound\x20claim:\x20REWARD_RECEIVE\x20(154)\x20protected\x20by\x20Guard','Coin\x20refill:\x20REWARD_COIN_ADD\x20(153)\x20for\x20owner-only\x20top-up','Expiration\x20extension:\x20REWARD_GUARD_EXPIRATION_TIME_ADD\x20(155)\x20for\x20deadline\x20mgmt'],'recommended_templates':['T-P-01']},{'id':'progress_permission','name':'Progress\x20workflow\x20advancement\x20permission','host_object':'Progress','permission_index_range':'220-225','builtin_indexes':PROGRESS_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['submit_task\x20(222)','manage_named_operators\x20(221)','set_progress_context_repository\x20(223)','unhold_progress\x20(224)'],'mutable_after_publish':![],'common_patterns':['Named\x20operator:\x20PROGRESS_NAMED_OPERATOR\x20(221)\x20for\x20assigned\x20operators','Task\x20submission:\x20PROGRESS_TASK\x20(222)\x20for\x20any\x20authorized\x20submitter','Machine-bound:\x20Progress\x20permission\x20effective\x20only\x20after\x20Machine\x20publish'],'recommended_templates':['T-P-01']},{'id':'demand_permission','name':'Demand\x20publication\x20permission','host_object':'Demand','permission_index_range':'400-408','builtin_indexes':DEMAND_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_demand_guard\x20(404)','set_demand_reward\x20(405)','give_demand_feedback\x20(406)'],'mutable_after_publish':!![],'common_patterns':['Public\x20demand:\x20anyone\x20can\x20view;\x20only\x20owner\x20can\x20publish','Feedback\x20channel:\x20DEMAND_FEEDBACK\x20(406)\x20for\x20community\x20input','Guard\x20filtering:\x20DEMAND_GUARD\x20(404)\x20for\x20service\x20eligibility'],'recommended_templates':['T-P-01']},{'id':'contact_permission','name':'Contact/Messenger\x20management\x20permission','host_object':'Contact','permission_index_range':'450-454','builtin_indexes':CONTACT_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_contact_im\x20(453)'],'mutable_after_publish':!![],'common_patterns':['Personal\x20contact:\x20usually\x20single-owner','IM\x20binding:\x20CONTACT_IM\x20(453)\x20for\x20chat\x20platform\x20binding'],'recommended_templates':['T-P-01']},{'id':'ownership_transfer','name':'Permission\x20ownership\x20transfer\x20(cross-scene)','host_object':'Standalone','permission_index_range':'N/A','builtin_indexes':[],'owner_operations':['builder\x20(transfer)'],'admin_operations':[],'permission_index_operations':[],'mutable_after_publish':!![],'common_patterns':['Owner-only:\x20transfer\x20requires\x20the\x20current\x20owner\x20as\x20the\x20signer','Irreversible:\x20once\x20transferred,\x20original\x20owner\x20loses\x20all\x20control','New\x20owner\x20auto-admin:\x20new\x20owner\x20becomes\x20admin\x20automatically','Pre-transfer\x20backup:\x20export\x20Permission\x20JSON\x20before\x20transfer'],'recommended_templates':['T-P-08']}];export const PERMISSION_LEDGER_VERSION='1.0.0';export function getScenesByHostObject(a){return PERMISSION_SCENES['filter'](b=>b['host_object']===a);}export function findSceneById(a){return PERMISSION_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){for(const b of PERMISSION_SCENES){if(b['builtin_indexes']['some'](c=>c['index']===a))return b;}return undefined;}export function getBuiltinPermissionByIndex(a){for(const b of PERMISSION_SCENES){const c=b['builtin_indexes']['find'](d=>d['index']===a);if(c)return c;}return undefined;}export function isBuiltinPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function inferSceneFromIntent(a){const b=a['toLowerCase']();if(b['includes']('transfer')||b['includes']('handover'))return findSceneById('ownership_transfer');const c=[['service','Service'],['machine','Machine'],['treasury','Treasury'],['arbitration','Arbitration'],['repository','Repository'],['reward','Reward'],['progress','Progress'],['demand','Demand'],['contact','Contact'],['messenger','Contact'],['allocation','Allocation']];for(const [d,e]of c){if(b['includes'](d)){const f=getScenesByHostObject(e);if(f['length']>0x0)return f[0x0];}}return undefined;}export function getAllBuiltinPermissions(){return PERMISSION_SCENES['flatMap'](a=>a['builtin_indexes']);}export function getPermissionScenesCount(){return PERMISSION_SCENES['length'];}
|
|
1
|
+
export const PERMISSION_TYPES=[{'name':'Permission','scope':'organization','definedOn':'Permission\x20Object\x20(standalone\x20on-chain\x20object,\x20referenced\x20by\x20service/machine/etc.)','controls':'Who\x20can\x20modify\x20the\x20bound\x20object\x27s\x20settings,\x20publish\x20it,\x20manage\x20its\x20funds,\x20etc.','grantedBy':'The\x20object\x27s\x20creator\x20(owner)\x20or\x20anyone\x20the\x20creator\x20delegates\x20to','example':'A\x20shop\x20owner\x20creates\x20a\x20Permission\x20allowing\x20only\x20their\x20staff\x20to\x20modify\x20the\x20Service\x27s\x20price.'},{'name':'NamedOperator','scope':'order','definedOn':'Per-order\x20(specified\x20in\x20the\x20order\x20creation/modification\x20by\x20the\x20service)','controls':'Who\x20can\x20operate\x20on\x20a\x20specific\x20order:\x20advance\x20progress,\x20settle,\x20refund,\x20etc.','grantedBy':'The\x20service\x20(via\x20its\x20order_allocators\x20or\x20explicit\x20named\x20operators)','example':'A\x20delivery\x20service\x20assigns\x20Alice\x20as\x20the\x20NamedOperator\x20for\x20order\x20#123\x20—\x20only\x20Alice\x20can\x20mark\x20it\x20delivered.'},{'name':'OrderHolder','scope':'order_holder','definedOn':'Per-order\x20(the\x20\x27\x27\x20empty\x20string\x20address\x20=\x20the\x20order\x27s\x20current\x20holder)','controls':'Who\x20currently\x20holds\x20the\x20order\x20and\x20can\x20perform\x20holder-specific\x20actions\x20(accept,\x20reject,\x20pay)','grantedBy':'Implicitly\x20assigned\x20when\x20an\x20order\x20is\x20created\x20or\x20transferred','example':'Bob\x20places\x20an\x20order\x20—\x20he\x20becomes\x20the\x20OrderHolder.\x20He\x20can\x20accept\x20delivery\x20or\x20request\x20arbitration.'}];const PERMISSION_TYPE_INDEX=new Map(PERMISSION_TYPES['map'](a=>[a['name'],a]));export function getPermissionType(a){return PERMISSION_TYPE_INDEX['get'](a);}export const REPOSITORY_PERMISSIONS=[{'index':0x64,'name':'REPOSITORY_NEW','description':'Create\x20new\x20Repository\x20policy','governed_operation':'create_repository'},{'index':0x65,'name':'REPOSITORY_DESCRIPTION','description':'Modify\x20Repository\x20description','governed_operation':'set_repository_description'},{'index':0x66,'name':'REPOSITORY_POLICY','description':'Modify\x20Repository\x20policy','governed_operation':'set_repository_policy'},{'index':0x67,'name':'REPOSITORY_REWARD','description':'Set\x20Repository\x20reward','governed_operation':'set_repository_reward'},{'index':0x68,'name':'REPOSITORY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_repository_by_owner'},{'index':0x69,'name':'REPOSITORY_UM','description':'Set\x20UM\x20(User\x20Manager)','governed_operation':'set_repository_user_manager'}];export const REWARD_PERMISSIONS=[{'index':0x96,'name':'REWARD_NEW','description':'Create\x20new\x20Reward','governed_operation':'create_reward'},{'index':0x97,'name':'REWARD_DESCRIPTION','description':'Modify\x20Reward\x20description','governed_operation':'set_reward_description'},{'index':0x98,'name':'REWARD_GUARD','description':'Set\x20Reward\x20guard','governed_operation':'set_reward_guard'},{'index':0x99,'name':'REWARD_COIN_ADD','description':'Add\x20coins\x20to\x20Reward','governed_operation':'add_reward_coin'},{'index':0x9a,'name':'REWARD_RECEIVE','description':'Receive\x20reward','governed_operation':'receive_reward'},{'index':0x9b,'name':'REWARD_GUARD_EXPIRATION_TIME_ADD','description':'Extend\x20guard\x20expiration','governed_operation':'extend_reward_guard_expiration'},{'index':0x9c,'name':'REWARD_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_reward_by_owner'},{'index':0x9d,'name':'REWARD_UM','description':'Set\x20UM','governed_operation':'set_reward_user_manager'},{'index':0x9e,'name':'REWARD_WITHDRAW','description':'Withdraw\x20balance\x20to\x20the\x20tx\x20sender\x20(only\x20non-claim\x20exit)','governed_operation':'withdraw_reward'}];export const MACHINE_PERMISSIONS=[{'index':0xc8,'name':'MACHINE_NEW','description':'Create\x20new\x20Machine','governed_operation':'create_machine'},{'index':0xc9,'name':'MACHINE_DESCRIPTION','description':'Modify\x20Machine\x20description','governed_operation':'set_machine_description'},{'index':0xcb,'name':'MACHINE_CONSENSUS_REPOSITORIES','description':'Set\x20consensus\x20Repositories','governed_operation':'set_consensus_repositories'},{'index':0xcc,'name':'MACHINE_PAUSE','description':'Pause/resume\x20Machine','governed_operation':'pause_or_resume_machine'},{'index':0xcd,'name':'MACHINE_PUBLISH','description':'Publish\x20Machine\x20(irreversible)','governed_operation':'publish_machine'},{'index':0xce,'name':'MACHINE_NODE','description':'Modify\x20Machine\x20nodes','governed_operation':'manage_machine_nodes'},{'index':0xcf,'name':'MACHINE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_machine_by_owner'},{'index':0xd0,'name':'MACHINE_UM','description':'Set\x20UM','governed_operation':'set_machine_user_manager'}];export const PROGRESS_PERMISSIONS=[{'index':0xdc,'name':'PROGRESS_NEW','description':'Create\x20new\x20Progress','governed_operation':'create_progress'},{'index':0xdd,'name':'PROGRESS_NAMED_OPERATOR','description':'Manage\x20named\x20operators','governed_operation':'manage_named_operators'},{'index':0xde,'name':'PROGRESS_TASK','description':'Submit\x20task','governed_operation':'submit_task'},{'index':0xdf,'name':'PROGRESS_CONTEXT_REPOSITORY','description':'Set\x20context\x20Repository','governed_operation':'set_progress_context_repository'},{'index':0xe0,'name':'PROGRESS_UNHOLD','description':'Unhold\x20Progress','governed_operation':'unhold_progress'},{'index':0xe1,'name':'PROGRESS_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_progress_by_owner'}];export const TREASURY_PERMISSIONS=[{'index':0xfa,'name':'TREASURY_NEW','description':'Create\x20new\x20Treasury','governed_operation':'create_treasury'},{'index':0xfb,'name':'TREASURY_DESCRIPTION','description':'Modify\x20Treasury\x20description','governed_operation':'set_treasury_description'},{'index':0xfc,'name':'TREASURY_DEPOSIT','description':'Deposit\x20funds','governed_operation':'deposit_into_treasury'},{'index':0xfd,'name':'TREASURY_RECEIVE','description':'Receive\x20funds','governed_operation':'receive_treasury_funds'},{'index':0xfe,'name':'TREASURY_WITHDRAW','description':'Withdraw\x20funds','governed_operation':'withdraw_treasury_funds'},{'index':0xff,'name':'TREASURY_EXTERNAL_DEPOSIT_GUARD','description':'Manage\x20external\x20deposit\x20Guard\x20list','governed_operation':'manage_external_deposit_guards'},{'index':0x100,'name':'TREASURY_EXTERNAL_WITHDRAW_GUARD','description':'Manage\x20external\x20withdraw\x20Guard\x20list','governed_operation':'manage_external_withdraw_guards'},{'index':0x101,'name':'TREASURY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_treasury_by_owner'},{'index':0x102,'name':'TREASURY_UM','description':'Set\x20UM','governed_operation':'set_treasury_user_manager'}];export const SERVICE_PERMISSIONS=[{'index':0x12c,'name':'SERVICE_NEW','description':'Create\x20new\x20Service','governed_operation':'create_service'},{'index':0x12d,'name':'SERVICE_DESCRIPTION','description':'Modify\x20Service\x20description','governed_operation':'set_service_description'},{'index':0x12f,'name':'SERVICE_LOCATION','description':'Set\x20Service\x20location','governed_operation':'set_service_location'},{'index':0x130,'name':'SERVICE_REPOSITORY','description':'Set\x20Service\x20repository','governed_operation':'set_service_repository'},{'index':0x131,'name':'SERVICE_SALES','description':'Modify\x20sales','governed_operation':'manage_sales'},{'index':0x132,'name':'SERVICE_MACHINE','description':'Bind/modify\x20Machine','governed_operation':'set_service_machine'},{'index':0x133,'name':'SERVICE_BUY_GUARD','description':'Set\x20buy\x20guard','governed_operation':'set_service_buy_guard'},{'index':0x134,'name':'SERVICE_ARBITRATION','description':'Set\x20Arbitration','governed_operation':'set_service_arbitration'},{'index':0x135,'name':'SERVICE_CUSTOMER_INFO_REQUIRED','description':'Set\x20customer\x20info\x20required','governed_operation':'set_customer_info_required'},{'index':0x136,'name':'SERVICE_PAUSE','description':'Pause/resume\x20Service','governed_operation':'pause_or_resume_service'},{'index':0x137,'name':'SERVICE_PUBLISH','description':'Publish\x20Service','governed_operation':'publish_service'},{'index':0x138,'name':'SERVICE_DISCOUNT','description':'Set\x20discount','governed_operation':'set_discount'},{'index':0x139,'name':'SERVICE_ORDER_ALLOCATOR','description':'Set\x20order\x20allocator','governed_operation':'set_order_allocator'},{'index':0x13a,'name':'SERVICE_COMPENSATION_FUND_DEPOSIT','description':'Deposit\x20to\x20compensation\x20fund','governed_operation':'deposit_compensation_fund'},{'index':0x13b,'name':'SERVICE_COMPENSATION_FUND_WITHDRAW','description':'Withdraw\x20from\x20compensation\x20fund','governed_operation':'withdraw_compensation_fund'},{'index':0x13c,'name':'SERVICE_COMPENSATION_FUND_FREEZE','description':'Freeze\x20compensation\x20fund','governed_operation':'freeze_compensation_fund'},{'index':0x13d,'name':'SERVICE_COMPENSATION_FUND_UNFREEZE','description':'Unfreeze\x20compensation\x20fund','governed_operation':'unfreeze_compensation_fund'},{'index':0x13e,'name':'SERVICE_REWARD','description':'Set\x20reward','governed_operation':'set_service_reward'},{'index':0x13f,'name':'SERVICE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_service_by_owner'},{'index':0x140,'name':'SERVICE_UM','description':'Set\x20UM','governed_operation':'set_service_user_manager'},{'index':0x141,'name':'SERVICE_ARB_STATEMENT','description':'Append\x20seller\x20statement\x20to\x20an\x20Arb\x20case','governed_operation':'arb_statement_on_case'}];export const ARBITRATION_PERMISSIONS=[{'index':0x15e,'name':'ARBITRATION_NEW','description':'Create\x20new\x20Arbitration','governed_operation':'create_arbitration'},{'index':0x15f,'name':'ARBITRATION_DESCRIPTION','description':'Modify\x20description','governed_operation':'set_arbitration_description'},{'index':0x161,'name':'ARBITRATION_LOCATION','description':'Set\x20location','governed_operation':'set_arbitration_location'},{'index':0x162,'name':'ARBITRATION_VOTING_GUARD','description':'Set\x20voting\x20guard','governed_operation':'set_arbitration_voting_guard'},{'index':0x163,'name':'ARBITRATION_USAGE_GUARD','description':'Set\x20usage\x20guard','governed_operation':'set_arbitration_usage_guard'},{'index':0x164,'name':'ARBITRATION_PAUSE','description':'Pause/resume','governed_operation':'pause_or_resume_arbitration'},{'index':0x165,'name':'ARBITRATION_FEE','description':'Set\x20fee','governed_operation':'set_arbitration_fee'},{'index':0x166,'name':'ARBITRATION_VOTE','description':'Vote\x20(empty\x20voting_guard\x20=\x20equal\x20weight\x201-person-1-vote,\x20but\x20358\x20is\x20still\x20required\x20per\x20voter\x20—\x20NOT\x20permissionless)','governed_operation':'cast_arbitration_vote'},{'index':0x167,'name':'ARBITRATION_ARBITRATION','description':'Arbitrate\x20dispute','governed_operation':'issue_arbitration_ruling'},{'index':0x168,'name':'ARBITRATION_FEEDBACK','description':'Provide\x20feedback','governed_operation':'give_arbitration_feedback'},{'index':0x169,'name':'ARBITRATION_CONFIRM','description':'Confirm\x20resolution','governed_operation':'confirm_arbitration_result'},{'index':0x16a,'name':'ARBITRATION_VOTING_DEADLINE_CHANGE','description':'Change\x20voting\x20deadline','governed_operation':'change_arbitration_voting_deadline'},{'index':0x16b,'name':'ARBITRATION_RESET','description':'Reset\x20arbitration','governed_operation':'reset_arbitration'},{'index':0x16c,'name':'ARBITRATION_ARB_WITHDRAW','description':'Arb\x20withdraw','governed_operation':'withdraw_arbitration_funds'},{'index':0x16d,'name':'ARBITRATION_FEES_ALLOC','description':'Allocate\x20fees','governed_operation':'allocate_arbitration_fees'},{'index':0x16e,'name':'ARBITRATION_FEES_TRANSFER','description':'Transfer\x20fees','governed_operation':'transfer_arbitration_fees'},{'index':0x16f,'name':'ARBITRATION_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_arbitration_by_owner'},{'index':0x170,'name':'ARBITRATION_UM','description':'Set\x20UM','governed_operation':'set_arbitration_user_manager'}];export const DEMAND_PERMISSIONS=[{'index':0x190,'name':'DEMAND_NEW','description':'Create\x20new\x20Demand','governed_operation':'create_demand'},{'index':0x191,'name':'DEMAND_DESCRIPTION','description':'Modify\x20description','governed_operation':'set_demand_description'},{'index':0x192,'name':'DEMAND_LOCATION','description':'Set\x20location','governed_operation':'set_demand_location'},{'index':0x194,'name':'DEMAND_GUARD','description':'Set\x20guard','governed_operation':'set_demand_guard'},{'index':0x195,'name':'DEMAND_REWARD','description':'Set\x20reward','governed_operation':'set_demand_reward'},{'index':0x196,'name':'DEMAND_FEEDBACK','description':'Provide\x20feedback','governed_operation':'give_demand_feedback'},{'index':0x197,'name':'DEMAND_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_demand_by_owner'},{'index':0x198,'name':'DEMAND_UM','description':'Set\x20UM','governed_operation':'set_demand_user_manager'}];export const CONTACT_PERMISSIONS=[{'index':0x1c2,'name':'CONTACT_NEW','description':'Create\x20new\x20Contact','governed_operation':'create_contact'},{'index':0x1c3,'name':'CONTACT_DESCRIPTION','description':'Modify\x20description','governed_operation':'set_contact_description'},{'index':0x1c4,'name':'CONTACT_LOCATION','description':'Set\x20location','governed_operation':'set_contact_location'},{'index':0x1c5,'name':'CONTACT_IM','description':'Set\x20IM','governed_operation':'set_contact_im'},{'index':0x1c6,'name':'CONTACT_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'receive_contact_by_owner'}];export const PERMISSION_SCENES=[{'id':'service_permission','name':'Service\x20publish\x20&\x20operation\x20permission','host_object':'Service','permission_index_range':'300-320','builtin_indexes':SERVICE_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['publish_service\x20(311)','pause_or_resume_service\x20(310)','set_service_machine\x20(306)','set_service_buy_guard\x20(307)','set_order_allocator\x20(313)','set_service_reward\x20(318)','manage_compensation_fund\x20(314-317)'],'mutable_after_publish':!![],'common_patterns':['Owner-only\x20publish:\x20only\x20owner/admin\x20has\x20SERVICE_PUBLISH\x20(311)','Separate\x20pause\x20role:\x20delegate\x20SERVICE_PAUSE\x20(310)\x20to\x20operator','Allocator\x20guard:\x20SERVICE_ORDER_ALLOCATOR\x20(313)\x20guarded\x20by\x20Guard'],'recommended_templates':['T-P-03','T-P-02']},{'id':'machine_permission','name':'Machine\x20workflow\x20permission','host_object':'Machine','permission_index_range':'200-208','builtin_indexes':MACHINE_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['publish_machine\x20(205)','manage_machine_nodes\x20(206)','pause_or_resume_machine\x20(204)','set_consensus_repositories\x20(203)'],'mutable_after_publish':!![],'common_patterns':['Pre-publish\x20node\x20editing:\x20MACHINE_NODE\x20(206)\x20before\x20publish\x20only','Post-publish:\x20only\x20Forward.guard\x20can\x20be\x20modified;\x20node\x20structure\x20frozen','Consensus\x20repositories:\x20MACHINE_CONSENSUS_REPOSITORIES\x20(203)\x20for\x20multi-repo\x20consensus'],'recommended_templates':['T-P-04','T-P-01']},{'id':'treasury_permission','name':'Treasury\x20fund\x20management\x20permission','host_object':'Treasury','permission_index_range':'250-258','builtin_indexes':TREASURY_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['deposit_into_treasury\x20(252)','withdraw_treasury_funds\x20(254)','manage_external_deposit_guards\x20(255)','manage_external_withdraw_guards\x20(256)','receive_treasury_by_owner\x20(257)','set_treasury_user_manager\x20(258)'],'mutable_after_publish':!![],'common_patterns':['Guard-protected\x20external\x20ops:\x20TREASURY_EXTERNAL_*_GUARD\x20(255/256)\x20for\x20cross-treasury\x20safety;\x20external_deposit/external_withdraw\x20use\x20Guard\x20+\x20Passport,\x20no\x20Permission\x20index','Withdraw\x20restricted\x20to\x20owner+admin:\x20TREASURY_WITHDRAW\x20(254)\x20tightly\x20held','UM\x20delegation:\x20TREASURY_UM\x20(258)\x20for\x20contact\x20management'],'recommended_templates':['T-P-05','T-P-02']},{'id':'allocation_permission','name':'Allocation\x20strategy\x20permission\x20(custom)','host_object':'Allocation','permission_index_range':'>=1000\x20(custom)','builtin_indexes':[],'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['execute_allocation\x20(custom\x20index)','receive_allocation\x20(custom\x20index)'],'mutable_after_publish':!![],'common_patterns':['Custom\x20index\x20>=\x201000\x20for\x20business-specific\x20allocation\x20rules','Guard-bound\x20alloc:\x20alloc\x20operation\x20requires\x20Guard\x20verification','Multi-entity:\x20multiple\x20allocators\x20share\x20same\x20permission_index'],'recommended_templates':['T-P-01','T-P-02']},{'id':'arbitration_permission','name':'Arbitration\x20case\x20management\x20permission','host_object':'Arbitration','permission_index_range':'350-368','builtin_indexes':ARBITRATION_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['cast_arbitration_vote\x20(358)','issue_arbitration_ruling\x20(359)','give_arbitration_feedback\x20(360)','confirm_arbitration_result\x20(361)','change_arbitration_voting_deadline\x20(362)','reset_arbitration\x20(363)','allocate_arbitration_fees\x20(365)'],'mutable_after_publish':!![],'common_patterns':['Arb\x20committee:\x20ARBITRATION_VOTE\x20(358)\x20granted\x20to\x20multiple\x20arbiters','Open\x20voting\x20guard:\x20voting_guard\x20allows\x20public\x20to\x20vote\x20(weight=1)','Guard-based\x20usage:\x20usage_guard\x20filters\x20which\x20disputes\x20can\x20be\x20filed'],'recommended_templates':['T-P-06','T-P-02']},{'id':'repository_permission','name':'Repository\x20policy\x20management\x20permission','host_object':'Repository','permission_index_range':'100-105','builtin_indexes':REPOSITORY_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_repository_policy\x20(102)','set_repository_reward\x20(103)'],'mutable_after_publish':!![],'common_patterns':['Public\x20read:\x20anyone\x20can\x20read\x20Repository\x20data','Owner-write:\x20REPOSITORY_POLICY\x20(102)\x20restricted\x20to\x20owner/admin','Reward\x20binding:\x20REPOSITORY_REWARD\x20(103)\x20for\x20incentive\x20distribution'],'recommended_templates':['T-P-01']},{'id':'reward_permission','name':'Reward\x20distribution\x20permission','host_object':'Reward','permission_index_range':'150-157','builtin_indexes':REWARD_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_reward_guard\x20(152)','add_reward_coin\x20(153)','receive_reward\x20(154)','extend_reward_guard_expiration\x20(155)'],'mutable_after_publish':!![],'common_patterns':['Guard-bound\x20claim:\x20REWARD_RECEIVE\x20(154)\x20protected\x20by\x20Guard','Coin\x20refill:\x20REWARD_COIN_ADD\x20(153)\x20for\x20owner-only\x20top-up','Expiration\x20extension:\x20REWARD_GUARD_EXPIRATION_TIME_ADD\x20(155)\x20for\x20deadline\x20mgmt'],'recommended_templates':['T-P-01']},{'id':'progress_permission','name':'Progress\x20workflow\x20advancement\x20permission','host_object':'Progress','permission_index_range':'220-225','builtin_indexes':PROGRESS_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['submit_task\x20(222)','manage_named_operators\x20(221)','set_progress_context_repository\x20(223)','unhold_progress\x20(224)'],'mutable_after_publish':![],'common_patterns':['Named\x20operator:\x20PROGRESS_NAMED_OPERATOR\x20(221)\x20for\x20assigned\x20operators','Task\x20submission:\x20PROGRESS_TASK\x20(222)\x20for\x20any\x20authorized\x20submitter','Machine-bound:\x20Progress\x20permission\x20effective\x20only\x20after\x20Machine\x20publish'],'recommended_templates':['T-P-01']},{'id':'demand_permission','name':'Demand\x20publication\x20permission','host_object':'Demand','permission_index_range':'400-408','builtin_indexes':DEMAND_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_demand_guard\x20(404)','set_demand_reward\x20(405)','give_demand_feedback\x20(406)'],'mutable_after_publish':!![],'common_patterns':['Public\x20demand:\x20anyone\x20can\x20view;\x20only\x20owner\x20can\x20publish','Feedback\x20channel:\x20DEMAND_FEEDBACK\x20(406)\x20for\x20community\x20input','Guard\x20filtering:\x20DEMAND_GUARD\x20(404)\x20for\x20service\x20eligibility'],'recommended_templates':['T-P-01']},{'id':'contact_permission','name':'Contact/Messenger\x20management\x20permission','host_object':'Contact','permission_index_range':'450-454','builtin_indexes':CONTACT_PERMISSIONS,'owner_operations':['set_user_manager','builder\x20(transfer)'],'admin_operations':['set_description','manage_remarks','manage_permission_holders','manage_entities','manage_admins'],'permission_index_operations':['set_contact_im\x20(453)'],'mutable_after_publish':!![],'common_patterns':['Personal\x20contact:\x20usually\x20single-owner','IM\x20binding:\x20CONTACT_IM\x20(453)\x20for\x20chat\x20platform\x20binding'],'recommended_templates':['T-P-01']},{'id':'ownership_transfer','name':'Permission\x20ownership\x20transfer\x20(cross-scene)','host_object':'Standalone','permission_index_range':'N/A','builtin_indexes':[],'owner_operations':['builder\x20(transfer)'],'admin_operations':[],'permission_index_operations':[],'mutable_after_publish':!![],'common_patterns':['Owner-only:\x20transfer\x20requires\x20the\x20current\x20owner\x20as\x20the\x20signer','Irreversible:\x20once\x20transferred,\x20original\x20owner\x20loses\x20all\x20control','New\x20owner\x20auto-admin:\x20new\x20owner\x20becomes\x20admin\x20automatically','Pre-transfer\x20backup:\x20export\x20Permission\x20JSON\x20before\x20transfer'],'recommended_templates':['T-P-08']}];export const PERMISSION_LEDGER_VERSION='1.0.0';export function getScenesByHostObject(a){return PERMISSION_SCENES['filter'](b=>b['host_object']===a);}export function findSceneById(a){return PERMISSION_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){for(const b of PERMISSION_SCENES){if(b['builtin_indexes']['some'](c=>c['index']===a))return b;}return undefined;}export function getBuiltinPermissionByIndex(a){for(const b of PERMISSION_SCENES){const c=b['builtin_indexes']['find'](d=>d['index']===a);if(c)return c;}return undefined;}export function isBuiltinPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function inferSceneFromIntent(a){const b=a['toLowerCase']();if(b['includes']('transfer')||b['includes']('handover'))return findSceneById('ownership_transfer');const c=[['service','Service'],['machine','Machine'],['treasury','Treasury'],['arbitration','Arbitration'],['repository','Repository'],['reward','Reward'],['progress','Progress'],['demand','Demand'],['contact','Contact'],['messenger','Contact'],['allocation','Allocation']];for(const [d,e]of c){if(b['includes'](d)){const f=getScenesByHostObject(e);if(f['length']>0x0)return f[0x0];}}return undefined;}export function getAllBuiltinPermissions(){return PERMISSION_SCENES['flatMap'](a=>a['builtin_indexes']);}export function getPermissionScenesCount(){return PERMISSION_SCENES['length'];}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const PROTOCOL_FACTS_VERSION = 1;
|
|
2
|
+
export interface ProtocolFact {
|
|
3
|
+
id: string;
|
|
4
|
+
kind: "settled" | "invariant";
|
|
5
|
+
title: string;
|
|
6
|
+
statement: string;
|
|
7
|
+
chain_ref: string;
|
|
8
|
+
verified_on: string;
|
|
9
|
+
superseded_by?: string;
|
|
10
|
+
enforced_by?: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare const PROTOCOL_FACTS: readonly ProtocolFact[];
|
|
13
|
+
export declare const SV2_REPLAY_GATE_CLAUSE = "REPLAY GATE (SV-2, azx7-mn-261014 live T8 \u2014 supersedes the ofn-mn-261012 storeFromId retraction, which live A/B testing disproved): scope the claim-records query BY THE ORDER \u2014 logic_not({type:'query_reward_record_exists', object:<reward slot>, where:{storeFromId:<order slot>}}); a recipient-only EMPTY where:{} makes the pre-check once-per-buyer-FOR-LIFE and silently kills the buyer's second order (upw-mn-261014 F-48); a RAW query with an empty VecU8 parameter is an uncoded VM error ('Query bytes is empty', klk-mn-261013 F-05). The guard ENTRY stamp is what makes the scope REAL: the reward guard_add ENTRY MUST pin store_from_id = the table slot whose submitted value is the per-order stamp (slot 0 \u2014 the submitted Order address) whenever the guard consumes claim records \u2014 the MCP guard_add stamp gate hard-REJECTS record-consuming guards that omit it (upw F-13 \u2192 UPW-K7, crs-mn-261014 F-17); the chain itself accepts an unstamped entry but never stamps its claim records, silently killing the per-order replay scope (ofn-mn-261012 F-01), and re-adding the same guard overwrites its slot in place (live pools repairable). SCOPE SPLIT (SV-2): entry-stamped + order-scoped where = ONCE PER BUYER PER ORDER \u2014 the native RewardClaimKey is (recipient, guard, bcs(store_from)), so the same buyer on a DIFFERENT order claims again and only a same-order replay is refused natively (LIVE-CONFIRMED); entry-stamped + empty where = once per buyer for life \u2014 choose it DELIBERATELY for one-bounty-per-buyer designs.";
|
|
14
|
+
export declare const SV2_UNARMED_PRESCRIPTION: string;
|
|
15
|
+
export declare const SV2_PRIMARY_FORM_CLAUSE: string;
|
|
16
|
+
export declare const SV2_DELIBERATE_ALTERNATIVE_CLAUSE = "DELIBERATE ALTERNATIVE: entry-stamped + EMPTY where ({}) = once per buyer FOR LIFE \u2014 the SDK encodes empty where-conditions as [VecU8 marker][all-None RecordQueryConditions], recipient defaults to the Signer, so the gate reads 'this recipient has never claimed this Reward' (klk-mn-261014 live: the replay aborts at the passport layer, E_VERIFY_FAILED=7). NEVER pair it with per-order bounty wording \u2014 it silently kills the buyer's second order (upw-mn-261014 F-48). ";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const PROTOCOL_FACTS_VERSION=0x1;export const PROTOCOL_FACTS=[{'id':'sv2-replay-scope','kind':'settled','title':'Reward\x20replay\x20scope\x20split\x20(SV-2):\x20entry-stamped\x20+\x20order-scoped\x20where\x20is\x20the\x20primary\x20once-per-buyer-per-order\x20form','statement':'On\x20a\x20stamped\x20reward\x20guard\x20the\x20order-scoped\x20record\x20query\x20(where:{storeFromId:{identifier:<order\x20slot>}})\x20is\x20live:\x20entry-stamped\x20+\x20order-scoped\x20where\x20=\x20once\x20per\x20buyer\x20per\x20order\x20(the\x20native\x20claim\x20key\x20is\x20recipient+guard+stamp,\x20so\x20the\x20same\x20buyer\x20on\x20a\x20DIFFERENT\x20order\x20claims\x20again);\x20entry-stamped\x20+\x20empty\x20where\x20=\x20once\x20per\x20buyer\x20for\x20life\x20(a\x20deliberate\x20choice,\x20never\x20a\x20default).\x20The\x20blanket\x20\x27storeFromId\x20filter\x20is\x20inert\x27\x20verdict\x20described\x20unstamped/legacy\x20rewards\x20only.','chain_ref':'Reward\x20claim\x20records\x20key\x20on\x20(recipient,\x20guard,\x20store_from)\x20once\x20the\x20guard_add\x20entry\x20carries\x20the\x20store_from_id\x20stamp;\x20the\x20claim\x27s\x20native\x20once-slot\x20is\x20the\x20second\x20line\x20of\x20defense\x20behind\x20the\x20guard\x27s\x20record\x20gate.','verified_on':'azx7-mn-261014\x20live\x20T8\x20(A/B-verified);\x20klk-mn-261014\x20live\x20(empty-where\x20passport\x20abort)','superseded_by':'the\x20ofn-mn-261012\x20F-01\x20blanket\x20\x27storeFromId\x20filter\x20is\x20a\x20silent\x20no-op\x27\x20retraction','enforced_by':['REVIEW_REWARD_UNARMED','R-REWARD-REPLAY','guard-risk\x20R-X1-14']},{'id':'reward-entry-stamp','kind':'settled','title':'The\x20guard_add\x20store_from_id\x20stamp\x20is\x20REQUIRED\x20only\x20behind\x20a\x20storeFromId\x20record\x20predicate;\x20recipient-only\x20(predicateless)\x20record\x20gates\x20are\x20valid\x20unstamped','statement':'Reward.claim\x20keys\x20every\x20payout\x20on\x20RewardClaimKey\x20{recipient,\x20guard,\x20store_from}\x20(native\x20once-slot,\x20live\x20in\x20the\x20deployed\x20framework\x20—\x20claim-key\x20dynamic\x20fields\x20observed\x20on\x20the\x20crs9\x20mainnet\x20reward\x20object),\x20so\x20an\x20unstamped\x20entry\x20degrades\x20to\x20once-per-recipient-for-life,\x20never\x20a\x20drain.\x20The\x20MCP\x20guard_add\x20stamp\x20gate\x20therefore\x20rejects\x20ONLY\x20the\x20mismatch\x20where\x20the\x20tree\x20pins\x20a\x20storeFromId\x20predicate\x20(order-scoped\x20where)\x20while\x20the\x20entry\x20omits\x20the\x20stamp\x20—\x20unstamped\x20records\x20match\x20no\x20store_from\x20predicate,\x20silently\x20killing\x20the\x20declared\x20once-per-order\x20economics.\x20The\x20recipient-only\x20form\x20is\x20admitted\x20with\x20a\x20loud\x20advisory\x20(keep\x20the\x20order.owner\x20identity\x20leg\x20—\x20it\x20decides\x20who\x20may\x20claim).\x20Re-adding\x20the\x20same\x20guard\x20overwrites\x20its\x20slot\x20in\x20place\x20(live\x20pools\x20repairable).','chain_ref':'guard_add\x20store_from_id\x20entry\x20field;\x20claim\x20records\x20write\x20store_from\x20only\x20when\x20stamped;\x20claim\x20key\x20{recipient,\x20guard,\x20bcs(stamp)|[]}','verified_on':'crs-mn-261015\x20F-11\x20(gate\x20corrected);\x20azx7-mn-261014\x20live\x20T8\x20(stamped\x20forms);\x20crs9\x20mainnet\x20claim-key\x20dynamic\x20fields;\x20upw\x20F-13\x20→\x20UPW-K7\x20origin','enforced_by':['MCP\x20guard_add\x20stamp\x20gate\x20(predicate/stamp\x20mismatch\x20only)','REVIEW_REWARD_UNARMED','R-REWARD-REPLAY','guard-risk\x20R-X1-14']},{'id':'reward-recipient-signer','kind':'settled','title':'The\x20reward\x20guard_add\x20ENTRY\x20recipient\x20must\x20be\x20the\x20signer\x20(or\x20an\x20Entity)\x20—\x20never\x20a\x20GuardIdentifier','statement':'The\x20claim\x20entry\x20requires\x20recipient\x20==\x20tx\x20sender;\x20a\x20GuardIdentifier\x20recipient\x20resolves\x20from\x20the\x20passport\x20submission\x20(conventionally\x20the\x20submitted\x20Order\x20address)\x20and\x20can\x20never\x20equal\x20the\x20sender,\x20so\x20every\x20claim\x20aborts\x20with\x20the\x20recipient-mismatch\x20error\x20and\x20the\x20pool\x20is\x20structurally\x20unpayable.\x20The\x20order-anchor\x20GuardIdentifier\x20idiom\x20is\x20an\x20Allocation\x20push\x20rail,\x20never\x20a\x20reward\x20pull\x20rail.\x20An\x20Entity\x20recipient\x20passes\x20(replaced\x20by\x20the\x20claimant\x27s\x20local\x20account\x20at\x20claim\x20time).','chain_ref':'Reward\x20claim\x20pays\x20the\x20tx-context\x20sender;\x20recipient\x20is\x20asserted\x20equal\x20to\x20it','verified_on':'crs-mn-261015\x20F-12\x20(live\x20mainnet,\x20funded\x20pool\x20aborting\x20on\x20every\x20claim)','enforced_by':['MCP\x20guard_add\x20recipient\x20gate']},{'id':'reward-positive-amount','kind':'settled','title':'A\x20resolved\x20reward\x20claim\x20root\x20must\x20carry\x20the\x20positive-amount\x20leg\x20(order\x20amount\x20>=\x201)','statement':'A\x20zero-total\x20order\x20(zeroing-coupon\x20buy)\x20holds\x20an\x20empty\x20escrow\x20and\x20must\x20never\x20claim\x20—\x20the\x20claim\x20root\x20carries\x20an\x20explicit\x20order.amount\x20>=\x201\x20comparison\x20leg.','chain_ref':'order.amount\x20comparison\x20leg\x20in\x20the\x20guard\x20root','verified_on':'BKN-P2\x20(bkng-mn-261014\x20batch)','enforced_by':['R-REWARD-ZERO-ORDER']},{'id':'reward-identity-leg','kind':'settled','title':'The\x20reward\x20claim\x20identity\x20leg\x20(signer\x20==\x20order\x20owner)\x20is\x20mandatory\x20—\x20the\x20claim\x20entry\x20is\x20permissionless','statement':'claim()\x20pays\x20whatever\x20address\x20presents\x20a\x20qualifying\x20order;\x20without\x20the\x20identity\x20leg\x20any\x20address\x20holding\x20any\x20order\x20at\x20the\x20required\x20node\x20drains\x20the\x20pool.\x20The\x20identity\x20leg\x20stays\x20mandatory\x20until\x20a\x20chain-side\x20claim\x20permission\x20primitive\x20exists.','chain_ref':'claim\x20entry\x20has\x20no\x20protocol-level\x20order\x20binding\x20of\x20its\x20own','verified_on':'audit-261012\x20B5'},{'id':'claimed-by-polarity-pair','kind':'settled','title':'Refund\x20and\x20merchant-recovery\x20rails\x20are\x20claimed_by\x20polarity\x20twins\x20—\x20refund\x20asserts\x20some\x20==\x20false,\x20recovery\x20asserts\x20some\x20==\x20true','statement':'A\x20refund-rail\x20guard\x20MUST\x20read\x20claimed_by\x20(false\x20=\x20no\x20award\x20has\x20paid)\x20and\x20its\x20merchant-recovery\x20twin\x20asserts\x20claimed_by\x20some\x20==\x20true\x20(an\x20award\x20has\x20paid).\x20Shipping\x20only\x20the\x20refund\x20polarity\x20strands\x20the\x20awarded\x20escrow\x20once\x20arbitration\x20has\x20paid;\x20the\x20pairing\x20is\x20structural,\x20not\x20a\x20documentation\x20choice.','chain_ref':'the\x20claimed_by\x20Bool\x20axis\x20on\x20the\x20order\x20(award-paid\x20marker)','verified_on':'az-mn-261007\x20(awarded\x20escrow\x20stranded),\x20run75747\x20F-06/F-32','enforced_by':['DUAL-RAIL-01']},{'id':'allocator-rows-authoritative','kind':'settled','title':'allocator.rows\x20are\x20the\x20authoritative\x20money\x20shape\x20—\x20prose\x20must\x20not\x20restate\x20the\x20economics','statement':'The\x20shipped\x20rows\x20ARE\x20the\x20split;\x20any\x20prose\x20restatement\x20of\x20percentages,\x20surplus\x20behavior\x20or\x20recipient\x20structure\x20is\x20a\x20drift\x20hazard\x20and\x20must\x20defer\x20to\x20the\x20rows.\x20A\x20prose/rows\x20contradiction\x20is\x20always\x20a\x20prose\x20bug.','chain_ref':'the\x20allocator\x20configure\x20step\x20carries\x20the\x20rows\x20verbatim','verified_on':'run75747\x20F-09\x20(trust_mechanisms\x20R6\x20contradicted\x20the\x20rows)','enforced_by':['R-PLAN-01..07','template_allocator_rows\x20plan\x20passthrough']},{'id':'inv-guard-node-literals-resolve','kind':'invariant','title':'Every\x20node\x20literal\x20named\x20in\x20guard\x20prose\x20must\x20resolve\x20to\x20the\x20template\x27s\x20own\x20machine\x20node\x20names','statement':'A\x20node\x20set\x20like\x20{reviewed,\x20closed}\x20is\x20dead\x20prose\x20when\x20`closed`\x20is\x20not\x20a\x20machine\x20node\x20—\x20the\x20template\x27s\x20machine\x20shape\x20is\x20the\x20truth\x20and\x20the\x20prose\x20follows.\x20Sync\x20test:\x20reward/guard\x20prose\x20node\x20sets\x20⊆\x20machine\x20node\x20names.','chain_ref':'guard\x20roots\x20compare\x20progress.current\x20against\x20machine\x20node\x20name\x20constants','verified_on':'run75747\x20F-10\x20(reward\x20prose\x20named\x20`closed`;\x20the\x20terminal\x20is\x20`completed`)','enforced_by':['protocol-facts-sync\x20catalog\x20lint']},{'id':'inv-guard-keys-bind','kind':'invariant','title':'Every\x20executable\x20guard\x20key\x20must\x20have\x20at\x20least\x20one\x20binding\x20site;\x20advisory\x20designs\x20must\x20say\x20so;\x20omit\x20is\x20the\x20sanctioned\x20does-not-apply','statement':'A\x20guards[]\x20entry\x20with\x20no\x20binding\x20site\x20(machine\x20forward,\x20allocator\x20guard_key,\x20spec\x20policy,\x20service/buy\x20mount)\x20is\x20either\x20advisory\x20by\x20declaration\x20or\x20a\x20defect\x20—\x20it\x20must\x20never\x20silently\x20enter\x20the\x20creation\x20plan.\x20`guard_resolutions[k]\x20=\x20{kind:\x27omit\x27}`\x20is\x20the\x20sanctioned\x20way\x20to\x20say\x20a\x20design\x20does\x20not\x20apply\x20to\x20this\x20shop.','chain_ref':'guards\x20materialize\x20only\x20through\x20their\x20binding\x20site','verified_on':'run75747\x20F-25\x20(dead\x20duplicate\x20guard)\x20/\x20F-38\x20(unresolvable\x20advisory)','enforced_by':['HOST-GRAPH-01','UNRESOLVED-GUARD-01','GUARD_RESOLUTION_UNKNOWN']},{'id':'inv-fee-param-names-resolve','kind':'invariant','title':'Every\x20*_days\x20/\x20*_hours\x20/\x20*_bps\x20name\x20used\x20in\x20template\x20prose\x20must\x20exist\x20in\x20that\x20template\x27s\x20fee_params','statement':'Time\x20and\x20bps\x20parameters\x20are\x20fee\x20params,\x20never\x20hand-written\x20constants\x20(KLM-A\x20/\x20R-TIME-PROFILE):\x20a\x20token\x20named\x20in\x20a\x20guard\x20purpose\x20is\x20a\x20landing\x20commitment,\x20so\x20it\x20must\x20be\x20a\x20declared\x20fee\x20param.\x20Pseudo-params\x20in\x20prose\x20are\x20renamed\x20to\x20descriptive\x20wording\x20or\x20promoted\x20to\x20real\x20fee\x20params.','chain_ref':'fee_params\x20feed\x20the\x20parameter\x20->\x20landing-site\x20table\x20and\x20override\x20merging','verified_on':'run75747\x20F-23\x20(review_window_days\x20referenced,\x20never\x20declared)','enforced_by':['protocol-facts-sync\x20catalog\x20lint']},{'id':'inv-no-platform-zero-leg','kind':'invariant','title':'No\x20zero-share\x20platform\x20allocation\x20leg\x20may\x20be\x20emitted','statement':'A\x20`platform`\x20recipient\x20at\x200%\x20is\x20a\x20no-op\x20leg\x20that\x20can\x20only\x20mislead\x20—\x20explicit\x20zeros\x20belong\x20in\x20fee_params\x20(machine-checkable),\x20never\x20in\x20allocator\x20rows\x20or\x20emitted\x20plans.','chain_ref':'allocator\x20rows\x20mint\x20real\x20per-track\x20legs','verified_on':'run75747\x20F-28\x20(plan\x20emitted\x20the\x20shape\x20the\x20playbook\x20forbids)'},{'id':'current-time-anchor-drift','kind':'settled','title':'progress\x20current_time\x20drifts\x20on\x20every\x20migration\x20—\x20purchase-anchored\x20windows\x20pin\x20order.time,\x20delivery-anchored\x20windows\x20need\x20a\x20witness\x20anchor','statement':'Anchoring\x20a\x20window\x20on\x20the\x20order\x27s\x20purchase\x20time\x20uses\x20order.time\x20(path-independent).\x20Anchoring\x20on\x20a\x20delivery/progress\x20timestamp\x20needs\x20a\x20witness-anchored\x20entry;\x20a\x20native\x20history-timestamp\x20query\x20is\x20the\x20pending\x20gap\x20(move\x20approval\x20R75-F-17).\x20Until\x20then\x20a\x20Repository\x20time-oracle\x20row\x20serves\x20delivery-anchored\x20windows.','chain_ref':'order.time\x20query\x20vs\x20progress\x20entry\x20timestamps','verified_on':'run75747\x20F-04/F-17;\x20ETSY-C\x20current_time\x20drift\x20rationale'}];export const SV2_REPLAY_GATE_CLAUSE='REPLAY\x20GATE\x20(SV-2,\x20azx7-mn-261014\x20live\x20T8\x20—\x20supersedes\x20the\x20ofn-mn-261012\x20storeFromId\x20retraction,\x20which\x20live\x20A/B\x20testing\x20disproved):\x20scope\x20the\x20claim-records\x20query\x20BY\x20THE\x20ORDER\x20—\x20logic_not({type:\x27query_reward_record_exists\x27,\x20object:<reward\x20slot>,\x20where:{storeFromId:<order\x20slot>}});\x20a\x20recipient-only\x20EMPTY\x20where:{}\x20makes\x20the\x20pre-check\x20once-per-buyer-FOR-LIFE\x20and\x20silently\x20kills\x20the\x20buyer\x27s\x20second\x20order\x20(upw-mn-261014\x20F-48);\x20a\x20RAW\x20query\x20with\x20an\x20empty\x20VecU8\x20parameter\x20is\x20an\x20uncoded\x20VM\x20error\x20(\x27Query\x20bytes\x20is\x20empty\x27,\x20klk-mn-261013\x20F-05).\x20The\x20guard\x20ENTRY\x20stamp\x20is\x20what\x20makes\x20the\x20scope\x20REAL:\x20the\x20reward\x20guard_add\x20ENTRY\x20MUST\x20pin\x20store_from_id\x20=\x20the\x20table\x20slot\x20whose\x20submitted\x20value\x20is\x20the\x20per-order\x20stamp\x20(slot\x200\x20—\x20the\x20submitted\x20Order\x20address)\x20whenever\x20the\x20guard\x20consumes\x20claim\x20records\x20—\x20the\x20MCP\x20guard_add\x20stamp\x20gate\x20hard-REJECTS\x20record-consuming\x20guards\x20that\x20omit\x20it\x20(upw\x20F-13\x20→\x20UPW-K7,\x20crs-mn-261014\x20F-17);\x20the\x20chain\x20itself\x20accepts\x20an\x20unstamped\x20entry\x20but\x20never\x20stamps\x20its\x20claim\x20records,\x20silently\x20killing\x20the\x20per-order\x20replay\x20scope\x20(ofn-mn-261012\x20F-01),\x20and\x20re-adding\x20the\x20same\x20guard\x20overwrites\x20its\x20slot\x20in\x20place\x20(live\x20pools\x20repairable).\x20SCOPE\x20SPLIT\x20(SV-2):\x20entry-stamped\x20+\x20order-scoped\x20where\x20=\x20ONCE\x20PER\x20BUYER\x20PER\x20ORDER\x20—\x20the\x20native\x20RewardClaimKey\x20is\x20(recipient,\x20guard,\x20bcs(store_from)),\x20so\x20the\x20same\x20buyer\x20on\x20a\x20DIFFERENT\x20order\x20claims\x20again\x20and\x20only\x20a\x20same-order\x20replay\x20is\x20refused\x20natively\x20(LIVE-CONFIRMED);\x20entry-stamped\x20+\x20empty\x20where\x20=\x20once\x20per\x20buyer\x20for\x20life\x20—\x20choose\x20it\x20DELIBERATELY\x20for\x20one-bounty-per-buyer\x20designs.';export const SV2_UNARMED_PRESCRIPTION='Add\x20logic_not(query_reward_record_exists(object=<reward>,\x20where:{storeFromId:{identifier:<order\x20slot>}}))\x20—\x20the\x20'+'SV-2\x20ORDER-SCOPED\x20form,\x20once\x20per\x20buyer\x20per\x20order\x20(azx7-mn-261014\x20live\x20T8;\x20the\x20EMPTY-where\x20recipient-only\x20variant\x20'+'is\x20a\x20deliberate\x20once-per-buyer-FOR-LIFE\x20choice\x20and\x20must\x20never\x20back\x20per-order\x20bounty\x20wording,\x20upw\x20F-48)';export const SV2_PRIMARY_FORM_CLAUSE='PRIMARY\x20FORM\x20(SV-2,\x20azx7-mn-261014\x20live\x20T8\x20—\x20supersedes\x20the\x20ofn-mn-261012\x20storeFromId\x20retraction):\x20ENTRY-STAMPED\x20+\x20ORDER-SCOPED\x20—\x20pin\x20the\x20reward\x20guard_add\x20store_from_id\x20to\x20the\x20table\x20slot\x20whose\x20submitted\x20value\x20is\x20the\x20per-order\x20stamp\x20(slot\x200\x20—\x20the\x20submitted\x20Order\x20address)\x20and\x20scope\x20the\x20record\x20query\x20by\x20the\x20SAME\x20slot:\x20'+'logic_not({type:\x27query_reward_record_exists\x27,\x20object:<reward\x20identifier>,\x20where:{storeFromId:{identifier:0}}})\x20=\x20once\x20per\x20BUYER\x20per\x20ORDER\x20(the\x20same\x20buyer\x27s\x20next\x20order\x20still\x20claims).\x20The\x20ofn\x20F-01\x20\x27storeFromId\x20filter\x20is\x20a\x20silent\x20no-op\x27\x20verdict\x20described\x20UNSTAMPED/legacy\x20rewards\x20only:\x20a\x20guard\x20added\x20without\x20the\x20entry\x20stamp\x20writes\x20claim\x20records\x20with\x20store_from\x20=\x20none,\x20which\x20matches\x20no\x20storeFromId\x20predicate\x20—\x20on\x20stamped\x20guards\x20the\x20filter\x20is\x20live\x20and\x20A/B-verified.\x20';export const SV2_DELIBERATE_ALTERNATIVE_CLAUSE='DELIBERATE\x20ALTERNATIVE:\x20entry-stamped\x20+\x20EMPTY\x20where\x20({})\x20=\x20once\x20per\x20buyer\x20FOR\x20LIFE\x20—\x20the\x20SDK\x20encodes\x20empty\x20where-conditions\x20as\x20[VecU8\x20marker][all-None\x20RecordQueryConditions],\x20recipient\x20defaults\x20to\x20the\x20Signer,\x20so\x20the\x20gate\x20reads\x20\x27this\x20recipient\x20has\x20never\x20claimed\x20this\x20Reward\x27\x20(klk-mn-261014\x20live:\x20the\x20replay\x20aborts\x20at\x20the\x20passport\x20layer,\x20E_VERIFY_FAILED=7).\x20NEVER\x20pair\x20it\x20with\x20per-order\x20bounty\x20wording\x20—\x20it\x20silently\x20kills\x20the\x20buyer\x27s\x20second\x20order\x20(upw-mn-261014\x20F-48).\x20';
|