@wowok/agent-mcp 3.2.6 → 3.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chain-semantics/field-capability.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/communication/wts-attestation.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.d.ts +3 -2
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +17 -0
- package/dist/composition/inflight.js +1 -0
- package/dist/config/config-audit.spec.js +1 -1
- package/dist/customer/account-events.js +1 -1
- package/dist/customer/order-monitor.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/constraint-registry.d.ts +6 -1
- package/dist/extensions/constraint-registry.js +1 -1
- package/dist/extensions/index.d.ts +1 -1
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/industry-pack.d.ts +5 -0
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/mode-evaluator.d.ts +3 -2
- package/dist/extensions/mode-evaluator.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/anti-cheat.d.ts +32 -2
- package/dist/graph/onchain/anti-cheat.js +1 -1
- package/dist/graph/onchain/anti-cheat.spec.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/extract.js +1 -1
- package/dist/graph/onchain/graph-policy.spec.js +1 -1
- package/dist/graph/onchain/index.d.ts +2 -2
- package/dist/graph/onchain/index.js +1 -1
- package/dist/graph/onchain/project-relationship.js +1 -1
- package/dist/graph/onchain/table-ledger.spec.js +1 -1
- package/dist/graph/onchain/types.d.ts +3 -0
- package/dist/harness/recover.js +1 -1
- package/dist/index.js +1 -1
- package/dist/knowledge/arbitration-venue-order.d.ts +25 -0
- package/dist/knowledge/arbitration-venue-order.js +1 -0
- package/dist/knowledge/audit-rules.d.ts +10 -0
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
- package/dist/knowledge/baselines/rules/graph.json +81 -0
- package/dist/knowledge/baselines/rules/machine.json +3 -3
- package/dist/knowledge/baselines/rules/plan.json +80 -2
- package/dist/knowledge/builtin-templates.d.ts +17 -2
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-bindings.js +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.d.ts +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-node-gates.d.ts +4 -0
- package/dist/knowledge/guard-node-gates.js +1 -0
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-prompt.d.ts +1 -0
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +2 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +2 -2
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-topology.d.ts +6 -0
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/reputation-rules.d.ts +3 -9
- package/dist/knowledge/reputation-rules.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +10 -1
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/settlement-semantics.d.ts +1 -0
- package/dist/knowledge/settlement-semantics.js +1 -0
- package/dist/knowledge/template-loader.d.ts +22 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +14 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +1 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/allocation-advice.js +1 -1
- package/dist/participation/customer-interest.js +1 -1
- package/dist/participation/radar-core.d.ts +6 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +38 -15
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +7 -0
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
- package/dist/playbooks/service-build/pipeline-actions.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/risk-aggregator.d.ts +1 -1
- package/dist/playbooks/service-build/risk-aggregator.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/derivation.d.ts +1 -0
- package/dist/review/index.js +1 -1
- package/dist/runtime/instance-registry.d.ts +8 -0
- package/dist/runtime/instance-registry.js +1 -0
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +14 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +109 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +14 -0
- package/dist/schema/call/contact.js +1 -1
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/guard.d.ts +7 -0
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +7 -0
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/payment.js +1 -1
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/progress.d.ts +46 -0
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +8 -8
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +11 -0
- package/dist/schema/goal/planning.d.ts +32 -1
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +40 -0
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/keeper/index.d.ts +13 -0
- package/dist/schema/local/index.d.ts +75 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +17 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +39 -2
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.d.ts +64 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +94 -0
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.d.ts +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/utils/permission-machine-check.js +1 -1
- package/dist/schema/workspace/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +45 -0
- package/dist/schemas/benchmark_migration_operation.output.json +24 -4
- package/dist/schemas/benchmark_migration_operation.schema.json +70 -0
- package/dist/schemas/bridge_operation.output.json +45 -0
- package/dist/schemas/goal_operation.schema.json +78 -0
- package/dist/schemas/guard2file.output.json +6 -1
- package/dist/schemas/guard2file.schema.json +9 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +91 -0
- package/dist/schemas/industry_pack_operation.schema.json +19 -1
- package/dist/schemas/keeper_operation.output.json +44 -0
- package/dist/schemas/local_cache_operation.output.json +45 -0
- package/dist/schemas/local_history_operation.output.json +45 -0
- package/dist/schemas/local_info_operation.output.json +45 -0
- package/dist/schemas/local_mark_operation.output.json +45 -0
- package/dist/schemas/machineNode2file.output.json +6 -1
- package/dist/schemas/machineNode2file.schema.json +9 -0
- package/dist/schemas/messenger_operation.output.json +52 -0
- package/dist/schemas/monitor_events.output.json +44 -0
- package/dist/schemas/monitor_subscription.output.json +44 -0
- package/dist/schemas/onchain_events.output.json +44 -0
- package/dist/schemas/onchain_operations.output.json +133 -0
- package/dist/schemas/onchain_operations.schema.json +73 -16
- package/dist/schemas/onchain_operations_arbitration.schema.json +2 -1
- package/dist/schemas/onchain_operations_contact.schema.json +2 -2
- package/dist/schemas/onchain_operations_guard.schema.json +2 -2
- package/dist/schemas/onchain_operations_machine.schema.json +2 -2
- package/dist/schemas/onchain_operations_payment.schema.json +1 -1
- package/dist/schemas/onchain_operations_progress.schema.json +57 -0
- package/dist/schemas/onchain_operations_service.schema.json +7 -8
- package/dist/schemas/onchain_table_data.output.json +81 -13
- package/dist/schemas/onchain_table_data.schema.json +21 -21
- package/dist/schemas/query_toolkit.output.json +218 -9
- package/dist/schemas/query_toolkit.schema.json +50 -26
- package/dist/schemas/wowok_buildin_info.output.json +80 -1
- package/dist/schemas/wowok_buildin_info.schema.json +1 -1
- package/dist/tools/handlers/benchmark-migration.d.ts +1 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/review-chain.d.ts +22 -0
- package/dist/tools/handlers/review-chain.js +1 -0
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/config.js +1 -1
- package/dist/tools/registry/evaluation.js +1 -1
- package/dist/tools/registry/files.js +1 -1
- package/dist/tools/registry/identity.js +1 -1
- package/dist/tools/registry/local.js +1 -1
- package/dist/tools/registry/messenger.js +1 -1
- package/dist/tools/registry/monitor.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/runtime-health.d.ts +10 -0
- package/dist/tools/runtime-health.js +1 -0
- package/dist/tools/upgrade-check.d.ts +10 -1
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wrap.d.ts +3 -0
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
export const GUARD_TEMPLATES=[{'id':'tpl_buy_guard_whitelist','scene_id':'service_buy_guard','name':'Whitelist\x20purchase\x20validation','description':'Only\x20addresses\x20in\x20the\x20whitelist\x20can\x20purchase\x20the\x20service.\x20Suitable\x20for\x20limited-time\x20sales,\x20VIP\x20exclusives,\x20internal\x20testing\x20eligibility,\x20etc.','recommended_patterns':['P04','P03'],'parameters':[{'name':'whitelist','type':'vec_address','description':'List\x20of\x20authorized\x20addresses','required':!![],'constraint':'Each\x20address\x20must\x20be\x20valid\x20and\x20unique'},{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(used\x20for\x20circular\x20references)','required':![],'constraint':'If\x20P16\x20circular\x20reference\x20is\x20used,\x20a\x20name\x20must\x20be\x20provided\x20rather\x20than\x20an\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Vec<Address>','value':'${whitelist}','name':'Authorized\x20purchase\x20whitelist'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x0},'target':{'type':'context','context':'Signer'}},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-01','R-C3-01','R-C4-01'],'creation_notes':['Updating\x20the\x20whitelist\x20requires\x20rebuilding\x20the\x20Guard\x20(buy_guard\x20is\x20iterable)','If\x20the\x20Service\x20is\x20already\x20published,\x20the\x20table\x20can\x20use\x20the\x20address\x20directly;\x20otherwise\x20use\x20the\x20name\x20(P16\x20circular\x20reference)'],'example_use_case':'Internal\x20testing\x20phase\x20for\x20camera\x20equipment\x20rental,\x20allowing\x20only\x20the\x20first\x2050\x20seed\x20users\x20to\x20place\x20rental\x20orders.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_threshold','scene_id':'service_order_allocators_guard','name':'Allocation\x20amount\x20threshold\x20validation','description':'Selects\x20different\x20allocation\x20strategies\x20based\x20on\x20the\x20order\x20amount.\x20When\x20the\x20amount\x20exceeds\x20the\x20threshold,\x20advanced\x20allocation\x20is\x20used;\x20otherwise,\x20default\x20allocation\x20applies.','recommended_patterns':['P02','P10'],'parameters':[{'name':'threshold','type':'number','description':'Allocation\x20threshold\x20(unit:\x20smallest\x20precision)','required':!![],'constraint':'Must\x20be\x20>\x200;\x20a\x20reasonable\x20range\x20is\x20recommended\x20to\x20avoid\x20boundary\x20gaming'},{'name':'service_name','type':'string','description':'Service\x20object\x20name','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${threshold}','name':'Allocation\x20threshold'}],'example_root':{'type':'logic_as_u256_greater','left':{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-05','R-X1-08'],'creation_notes':['order_allocators\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20publish)','A\x20distribution\x20call\x20submits\x20ONE\x20guard;\x20every\x20allocator\x20bound\x20to\x20that\x20guard\x20fires\x20in\x20vector\x20order\x20against\x20the\x20shrinking\x20pool\x20(allocation.move:366-368)','Threshold\x20boundary\x20must\x20be\x20tested:\x20behavior\x20when\x20exactly\x20equal\x20to\x20the\x20threshold\x20(>\x20vs\x20>=)'],'example_use_case':'E-commerce\x20platform:\x20order\x20amount\x20>\x201000\x20WOW\x20triggers\x203-way\x20allocation\x20(platform\x20+\x20merchant\x20+\x20logistics);\x20otherwise\x202-way\x20allocation\x20(platform\x20+\x20merchant).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_treasury_personal','scene_id':'service_order_allocators_guard','name':'Treasury\x20+\x20personal\x20address\x20allocation\x20(Entity\x20sharing)','description':'2\x20allocators\x20representing\x202\x20merchant\x20collection\x20approaches:\x20(1)\x20named\x20Treasury\x20address\x20for\x20public\x20fund\x20aggregation,\x20(2)\x20fixed\x20personal\x20address.\x20'+'Uses\x20sharing.who=Entity\x20so\x20funds\x20always\x20flow\x20to\x20the\x20legitimate\x20recipient\x20regardless\x20of\x20caller\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20Guard.\x20'+'Guards\x20verify\x20the\x20order\x20is\x20at\x20the\x20Complete\x20node\x20+\x20belongs\x20to\x20the\x20service\x20(project\x20binding).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'},{'name':'complete_node_name','type':'string','description':'Expected\x20node\x20name\x20that\x20triggers\x20allocation\x20(e.g.\x20\x27Complete\x27)','required':!![],'default':'Complete','constraint':'Must\x20exactly\x20match\x20the\x20Machine\x20node\x20name\x20(case-sensitive)'},{'name':'treasury_name','type':'string','description':'Named\x20Treasury\x20object\x20(created\x20with\x20the\x20Service\x27s\x20permission)','required':!![],'constraint':'Treasury\x20must\x20be\x20created\x20before\x20the\x20Service;\x20use\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20for\x20consistency'},{'name':'personal_address','type':'address','description':'Fixed\x20personal\x20collection\x20address\x20(e.g.\x20the\x20permission\x20creator\x27s\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${complete_node_name}','name':'Expected\x20Complete\x20node\x20name\x20(case-sensitive)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['insurance','ecommerce','travel','rental','subscription'],'relevant_risks':['R-C3-05','R-C3-06','R-X1-05','R-X1-01'],'creation_notes':['2\x20Guard\x20objects\x20with\x20IDENTICAL\x20root/table\x20but\x20DIFFERENT\x20descriptions\x20(allocators\x20require\x20unique\x20guard\x20addresses\x20—\x20no\x20two\x20allocators\x20may\x20reference\x20the\x20same\x20Guard).','sharing.who=Entity\x20(Treasury/personal)\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20the\x20Guard\x20(R-C3-06\x20safe).','Each\x20allocator\x20is\x20bound\x20to\x20a\x20DIFFERENT\x20guard\x20—\x20the\x20caller\x27s\x20submitted\x20guard\x20selects\x20which\x20path\x20fires.\x20To\x20switch\x20from\x20Treasury\x20to\x20personal\x20collection,\x20submit\x20the\x20personal\x20allocator\x27s\x20guard\x20instead','Treasury\x20should\x20be\x20created\x20with\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20(permission\x20consistency\x20—\x20different\x20permissions\x20=\x20minor\x20risk).','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass\x20prevents\x20premature\x20allocation\x20on\x20foreign\x20orders).','order_allocators\x20is\x20immutable\x20after\x20Service\x20publish\x20—\x20verify\x20the\x20Guard\x20logic\x20and\x20sharing\x20config\x20before\x20publishing.'],'example_use_case':'Insurance\x20service:\x20after\x20a\x20claim\x20reaches\x20the\x20Complete\x20node,\x20order\x20funds\x20are\x20allocated\x20to\x20the\x20insurance\x20Treasury\x20'+'(approach\x201,\x20for\x20operational\x20fund\x20aggregation)\x20or\x20to\x20the\x20provider\x27s\x20personal\x20address\x20(approach\x202,\x20for\x20direct\x20income).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_identity_set_order_holder','scene_id':'service_order_allocators_guard','name':'Order-holder\x20identity-set\x20allocation\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding:\x20Signer\x20is\x20order.owner\x20(1562,\x20Address)\x20OR\x20order.agent\x20(1567,\x20Bool\x20with\x20[Signer]\x20param).\x20'+'Demonstrates\x20the\x20mixed\x20return-type\x20construction\x20pattern\x20—\x20Address-returning\x20queries\x20are\x20wrapped\x20in\x20logic_equal,\x20'+'while\x20Bool-returning\x20queries\x20(suffix\x20\x27has\x27)\x20are\x20used\x20directly\x20as\x20logic_or\x20children.\x20'+'Combined\x20with\x20order.service\x20binding\x20(R-C3-05)\x20for\x20cross-service\x20theft\x20prevention.\x20'+'Use\x20when\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20should\x20be\x20able\x20to\x20trigger\x20allocation\x20(e.g.\x20refund\x20to\x20caller).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'order.agent\x20has','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['ecommerce','rental','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['MIXED\x20RETURN-TYPE\x20CONSTRUCTION\x20(key\x20Level\x202\x20pattern):\x20query\x201562\x20(order.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal\x20with\x20context(Signer);\x20query\x201567\x20(order.agent\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning)\x20—\x20this\x20is\x20the\x20recommended\x20Level\x202\x20alternative.','Use\x20this\x20pattern\x20when\x20sharing.who=Signer\x20(funds\x20flow\x20to\x20caller)\x20AND\x20either\x20the\x20owner\x20or\x20an\x20agent\x20should\x20be\x20authorized\x20to\x20trigger\x20allocation.','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass).','If\x20agents\x20are\x20not\x20needed,\x20use\x20the\x20simpler\x20Level\x202\x20dynamic\x20pattern:\x20logic_equal[query(1562),\x20context(Signer)]\x20without\x20logic_or.'],'example_use_case':'Refund\x20allocation:\x20when\x20an\x20order\x20is\x20cancelled,\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20can\x20trigger\x20the\x20refund.\x20'+'The\x20Guard\x20verifies\x20Signer\x20is\x20order.owner\x20OR\x20order.agent,\x20and\x20that\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_identity_set_service_provider_dynamic','scene_id':'service_order_allocators_guard','name':'Service-provider\x20identity-set\x20allocation\x20with\x20dynamic\x20permission\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding\x20with\x20DYNAMIC\x20permission\x20address:\x20Signer\x20is\x20permission.owner\x20(1002,\x20Address)\x20OR\x20'+'has\x20admin\x20(1004,\x20Bool\x20with\x20[Signer]\x20param).\x20The\x20permission\x20address\x20is\x20submitted\x20by\x20the\x20caller\x20and\x20verified\x20'+'against\x20service.permission\x20(1488)\x20—\x20this\x20survives\x20permission\x20rotation\x20without\x20rebuilding\x20the\x20Guard.\x20'+'Use\x20when\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board)\x20and\x20a\x20static\x20permission\x20'+'address\x20would\x20break\x20the\x20Guard.','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','object_type':'Permission','name':'Permission\x20object\x20(submitted\x20by\x20caller\x20—\x20must\x20equal\x20service.permission)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'service.permission','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]},{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'permission.owner','object':{'identifier':0x2},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'permission.admin\x20has','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'}]}]}]},'applicable_industries':['ecommerce','rental','insurance','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['DYNAMIC\x20PERMISSION\x20VERIFICATION\x20(key\x20pattern):\x20caller\x20submits\x20a\x20Permission\x20address\x20(identifier\x202);\x20Guard\x20verifies\x20query(1488:\x20service.permission)\x20==\x20submitted\x20permission,\x20then\x20checks\x201002/1004\x20against\x20the\x20submitted\x20permission.\x20This\x20survives\x20permission\x20rotation\x20—\x20if\x20the\x20Service\x20changes\x20its\x20permission,\x20the\x20Guard\x20still\x20works\x20without\x20rebuilding.','MIXED\x20RETURN-TYPE\x20CONSTRUCTION:\x20query\x201002\x20(permission.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal;\x20query\x201004\x20(permission.admin\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning).','THREE\x20conditions\x20in\x20logic_and:\x20(1)\x20order.service\x20binding\x20(R-C3-05),\x20(2)\x20dynamic\x20permission\x20verification,\x20(3)\x20identity\x20set\x20(owner\x20OR\x20admin).','Static\x20permission\x20alternative\x20(simpler\x20but\x20breaks\x20on\x20rotation):\x20use\x20a\x20table\x20constant\x20for\x20the\x20permission\x20address\x20instead\x20of\x20b_submission=true\x20+\x201488\x20verification.','Repository-based\x20address\x20set\x20(most\x20flexible,\x20most\x20complex):\x20store\x20the\x20permission\x20address\x20set\x20in\x20a\x20Repository\x20and\x20query\x20dynamically\x20—\x20only\x20for\x20extreme\x20flexibility\x20needs.'],'example_use_case':'Merchant\x20allocation:\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board).\x20'+'The\x20caller\x20submits\x20the\x20current\x20permission\x20address;\x20the\x20Guard\x20verifies\x20it\x20matches\x20service.permission\x20(1488),\x20'+'then\x20checks\x20that\x20Signer\x20is\x20the\x20permission\x20owner\x20or\x20has\x20admin\x20rights.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_node_check','scene_id':'machine_forward_guard','name':'Workflow\x20node\x20state\x20validation','description':'Verifies\x20that\x20the\x20order\x20is\x20currently\x20at\x20the\x20correct\x20Machine\x20node\x20before\x20advancing\x20to\x20the\x20next\x20step.\x20Prevents\x20skipping\x20nodes\x20or\x20reverse\x20operations.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_node','type':'string','description':'Expected\x20current\x20node\x20name','required':!![],'constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_node}','name':'Expected\x20current\x20node\x20name'}],'example_root':{'type':'logic_equal','left':{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['Forward.guard\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20Machine\x20publish)','witness\x20100\x20(Order→Progress)\x20is\x20a\x20single\x20hop;\x20no\x20risk\x20of\x20chained-derivation\x20breakage','Node\x20names\x20are\x20case-sensitive;\x20query\x20returns\x20a\x20String\x20type'],'example_use_case':'Camera\x20equipment\x20rental\x20flow:\x20the\x20user\x20must\x20be\x20at\x20the\x20\x27pending\x20return\x27\x20node\x20to\x20perform\x20the\x20return\x20operation.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_privacy_delivery_proof','scene_id':'machine_forward_guard','name':'Privacy-delivery\x20Proof\x20verification\x20(strict\x20mode,\x20Messenger\x20→\x20on-chain\x20Proof)','description':'Strict-mode\x20guard\x20for\x20\x27privacy\x20information\x20delivered\x20via\x20Messenger\x20but\x20not\x20suitable\x20for\x20on-chain\x20publication\x27\x20'+'(e.g.\x20shipping\x20details,\x20return\x20addresses,\x20private\x20credentials).\x20The\x20verifier\x20submits\x20BOTH\x20a\x20Proof\x20object\x20address\x20'+'(generated\x20by\x20messenger.submitChainProof)\x20AND\x20the\x20Order\x20object\x20address.\x20Three\x20conditions\x20verify:\x20'+'(1)\x20Signer\x20==\x20proof.signer\x20(submitter\x20accountability\x20—\x20\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27),\x20'+'(2)\x20proof.time\x20>\x20order.time\x20(proof\x20created\x20after\x20the\x20order\x20—\x20freshness,\x20prevents\x20stale-proof\x20replay),\x20'+'(3)\x20order.service\x20==\x20service\x20(project\x20binding,\x20suppresses\x20R-C3-05\x20cross-project\x20bypass).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility.\x20The\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20'+'Messenger\x20conversation.\x20Broad-mode\x20alternative\x20(verify\x20Merkle\x20Root\x20string\x20length\x20==\x2066\x20via\x20P15)\x20is\x20documented\x20'+'in\x20creation_notes\x20—\x20broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty\x20and\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20'+'arbitration\x20basis\x20rather\x20than\x20a\x20fund-flow\x20gate.','recommended_patterns':['P10','P15'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Proof','name':'proof_object\x20(Proof\x20address\x20generated\x20by\x20messenger.submitChainProof,\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20a\x20Proof\x20object\x20created\x20AFTER\x20the\x20order;\x20signer\x20must\x20equal\x20the\x20transaction\x20Signer'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_object\x20(Order\x20address\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20belong\x20to\x20the\x20service\x20declared\x20in\x20identifier\x202\x20(order.service\x20==\x20service)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'proof.signer','object':{'identifier':0x0},'parameters':[]}]},{'type':'logic_as_u256_greater','nodes':[{'type':'query','query':'proof.time','object':{'identifier':0x0},'parameters':[]},{'type':'query','query':'order.time','object':{'identifier':0x1},'parameters':[]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','logistics','service','privacy\x20delivery'],'relevant_risks':['R-C3-01','R-C3-05','R-X1-12'],'creation_notes':['STRICT\x20MODE\x20(this\x20template):\x20verifier\x20submits\x20Proof\x20+\x20Order\x20addresses.\x20Three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27beneficiary\x20bears\x20burden\x20of\x20proof\x27\x20principle).','BROAD\x20MODE\x20ALTERNATIVE:\x20use\x20P15\x20retained_submission\x20with\x20a\x20String\x20submission\x20(the\x20Merkle\x20Root)\x20and\x20verify\x20calc_string_length\x20==\x2066\x20(0x\x20prefix\x20+\x2064\x20hex\x20chars).\x20Broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20Broad\x20mode\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','Guard\x20table\x20supports\x20MULTIPLE\x20b_submission=true\x20Address\x20identifiers\x20(no\x20submission\x20count\x20limit)\x20—\x20this\x20template\x20uses\x20two:\x20Proof\x20(identifier\x200)\x20and\x20Order\x20(identifier\x201).','submitChainProof(env,\x20peerAddress,\x20description?)\x20sets\x20Proof.about\x20=\x20peerAddress\x20(the\x20counterparty\x27s\x20address).\x20PRIVACY:\x20about\x20records\x20ONLY\x20the\x20contact\x20—\x20it\x20has\x20no\x20on-chain-enforced\x20meaning\x20and\x20must\x20NEVER\x20be\x20a\x20guard\x20decision\x20condition;\x20NEVER\x20pass\x20an\x20order\x20id\x20or\x20any\x20order\x20reference\x20in\x20the\x20description\x20(a\x20description\x20like\x20\x27order:0x…\x27\x20would\x20publicly\x20link\x20the\x20Proof\x20to\x20the\x20Order\x20on\x20chain).\x20All\x20order/business\x20linkage\x20stays\x20inside\x20the\x20Messenger\x20conversation;\x20acceptance\x20of\x20delivered\x20info\x20is\x20the\x20merchant\x27s\x20confirming\x20forward,\x20not\x20the\x20recorded\x20about\x20value.','Query\x20IDs\x20(all\x20zero-parameter):\x20proof.signer=1958,\x20proof.time=1960\x20(invariant\x20clock_derived,\x20always\x20>0),\x20order.time=1574,\x20order.service=1563.','Forward.guard\x20is\x20immutable\x20after\x20Machine\x20publish\x20—\x20choose\x20broad\x20vs\x20strict\x20before\x20publishing.','The\x20same\x20strict\x20Guard\x20can\x20be\x20reused\x20across\x20ALL\x20Machine\x20forwards\x20that\x20need\x20merkle-root\x20verification\x20(shipping,\x20lost,\x20returns,\x20etc.)\x20—\x20the\x20verifier\x20just\x20submits\x20the\x20relevant\x20Proof\x20+\x20Order\x20each\x20time.','Condition\x20(1)\x20Signer==proof.signer\x20suppresses\x20R-C3-01\x20(submission\x20not\x20bound\x20to\x20Signer).\x20Condition\x20(3)\x20order.service==service\x20suppresses\x20R-C3-05\x20(cross-project\x20submission\x20bypass).'],'example_use_case':'MyShop\x20e-commerce:\x20after\x20delivering\x20shipping\x20details\x20/\x20return\x20addresses\x20via\x20Messenger\x20(privacy\x20info\x20not\x20suitable\x20for\x20on-chain\x20publication),\x20'+'the\x20provider\x20generates\x20a\x20Proof\x20via\x20submitChainProof\x20and\x20submits\x20it\x20with\x20the\x20Order\x20address\x20to\x20advance\x20the\x20Machine\x20forward.\x20'+'The\x20Guard\x20verifies\x20the\x20submitter\x20is\x20the\x20Proof\x27s\x20signer,\x20the\x20Proof\x20was\x20created\x20after\x20the\x20order,\x20and\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_submission_signer_binding','scene_id':'progress_submission_guard','name':'Submission\x20data\x20signer\x20binding\x20validation','description':'Verifies\x20that\x20the\x20user\x20submitting\x20the\x20data\x20is\x20a\x20legitimate\x20Progress\x20participant\x20and\x20that\x20the\x20submitted\x20value\x20matches\x20expectations.','recommended_patterns':['P08','P15'],'parameters':[{'name':'expected_value','type':'string','description':'Expected\x20submitted\x20value\x20(e.g.\x20node\x20name,\x20status\x20code)','required':!![]},{'name':'provider_address','type':'address','description':'Service\x20provider\x20address\x20(used\x20for\x20identity\x20verification)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'String','name':'User-submitted\x20operation\x20type\x20(e.g.\x20\x27return\x27\x20/\x20\x27damage\x27)','binding_constraint':'Must\x20be\x20one\x20of\x20the\x20predefined\x20operation\x20types'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${provider_address}','name':'Service\x20provider\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'String','value':'${expected_value}','name':'Expected\x20submitted\x20value'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['rental','ecommerce','education','travel'],'relevant_risks':['R-C3-01','R-C3-03','R-X1-12'],'creation_notes':['submission\x20guard\x20cannot\x20be\x20modified\x20after\x20binding','The\x20name\x20of\x20b_submission=true\x20entries\x20must\x20be\x20a\x20complete\x20natural-language\x20description\x20(≥10\x20characters)','Providing\x20a\x20binding_constraint\x20field\x20describing\x20value\x20rules\x20is\x20recommended\x20(R-X1-12)'],'example_use_case':'On\x20equipment\x20return,\x20the\x20user\x20submits\x20the\x20\x27return\x27\x20operation;\x20the\x20Guard\x20verifies\x20that\x20the\x20submitter\x20is\x20the\x20service\x20provider\x20and\x20that\x20the\x20operation\x20type\x20is\x20correct.','verifier_constraint_level':'level1_strict'},{'id':'tpl_reward_one_time_claim','scene_id':'reward_claim','name':'One-time\x20reward\x20claim\x20validation','description':'Verifies\x20that\x20the\x20user\x20is\x20claiming\x20the\x20reward\x20for\x20the\x20first\x20time,\x20preventing\x20duplicate\x20claims.\x20Implemented\x20by\x20querying\x20the\x20historical\x20record\x20count\x20via\x20Repository.','recommended_patterns':['P07','P13'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address\x20(stores\x20claim\x20records)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Reward\x20claim\x20record\x20Repository','object_type':'Repository'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'0','name':'First-claim\x20threshold\x20(record_count\x20==\x200)'}],'example_root':{'type':'logic_equal','left':{'type':'query','query':'repository.data','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-03','R-X1-01','R-X1-10'],'creation_notes':['Repository\x20with\x20quote_guard:\x20rigid\x20verification\x20—\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard\x20(see\x20R-X1-10,\x20pattern.repository_quote_guard_subscription)','repository.data\x20query\x20returns\x20U64\x20(record\x20count),\x20compared\x20with\x20identifier[1]\x20(value\x200)','Reward\x20guard\x20is\x20iterable;\x20duplicate-claim\x20protection\x20requires\x20rebuilding\x20the\x20Guard\x20to\x20update\x20the\x20Repository\x20address'],'example_use_case':'New-user\x20first-order\x20reward:\x20query\x20the\x20user\x27s\x20historical\x20order\x20count\x20via\x20Repository;\x20allow\x20claim\x20only\x20when\x20record_count==0.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_write_guard_type_check','scene_id':'repository_write_guard','name':'Storage\x20write\x20type\x20validation','description':'Verifies\x20that\x20the\x20data\x20type\x20written\x20to\x20the\x20Repository\x20matches\x20the\x20declaration\x20and\x20that\x20the\x20writer\x27s\x20identity\x20is\x20legitimate.','recommended_patterns':['P08','P11'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':![],'constraint':'Must\x20be\x20the\x20address\x20of\x20an\x20already-published\x20Repository'},{'name':'entity_registrar','type':'address','description':'EntityRegistrar\x20address\x20(fixed\x200xaab)','required':![],'default':'0xaab'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Writer\x20address\x20(submitted\x20by\x20caller)','binding_constraint':'Must\x20be\x20a\x20valid\x20Entity\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'String','name':'Write\x20data\x20key\x20name\x20(submitted\x20by\x20caller)','binding_constraint':'Key\x20name\x20format\x20must\x20be\x20\x27category:key\x27'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${entity_registrar}','name':'EntityRegistrar\x20system\x20address','is_system_address':!![]}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},{'type':'logic_not_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-02','R-C3-03','R-C3-04'],'creation_notes':['id_from_submission\x20in\x20write_guard\x20must\x20be\x20of\x20Address\x20type','data_from_submission\x20must\x20match\x20the\x20Repository\x20value_type','EntityRegistrar\x20(0xaab)\x20and\x20EntityLinker\x20(0xaaa)\x20are\x20fixed\x20system\x20addresses'],'example_use_case':'E-commerce\x20platform\x20merchant\x20writes\x20product\x20review\x20data;\x20the\x20Guard\x20verifies\x20that\x20the\x20writer\x20is\x20a\x20registered\x20Entity\x20and\x20not\x20a\x20system\x20address.','verifier_constraint_level':'level1_strict'},{'id':'tpl_usage_guard_threshold','scene_id':'arbitration_usage_guard','name':'Dispute\x20initiation\x20threshold\x20validation','description':'Verifies\x20that\x20the\x20dispute\x20initiator\x20meets\x20minimum\x20conditions\x20(e.g.\x20order\x20amount,\x20time\x20window),\x20filtering\x20out\x20meaningless\x20disputes.','recommended_patterns':['P02','P10'],'parameters':[{'name':'min_amount','type':'number','description':'Minimum\x20dispute\x20amount\x20threshold','required':!![],'constraint':'A\x20reasonable\x20threshold\x20is\x20recommended;\x20too\x20high\x20hinders\x20user\x20rights\x20protection,\x20too\x20low\x20produces\x20many\x20invalid\x20disputes'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Dispute-related\x20Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${min_amount}','name':'Minimum\x20dispute\x20amount\x20threshold'}],'example_root':{'type':'logic_as_u256_greater_or_equal','left':{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},'right':{'type':'identifier','identifier':0x1}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-07','R-C3-03'],'creation_notes':['usage_guard\x20is\x20iterable\x20(Arbitration\x20can\x20be\x20updated)','AND\x20conditions\x20should\x20not\x20be\x20too\x20many\x20(R-X1-07);\x20≤3\x20conditions\x20recommended','When\x20Arbitration\x20bPaused=true,\x20blocking\x20takes\x20priority\x20(checked\x20before\x20Guard)'],'example_use_case':'Rental\x20service\x20dispute:\x20only\x20disputes\x20with\x20order\x20amount\x20≥\x2010\x20WOW\x20are\x20accepted,\x20filtering\x20out\x20small-amount\x20conflicts.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_voting_guard_numeric_weight','scene_id':'arbitration_voting_guard','name':'Numeric\x20voting\x20weight\x20validation','description':'Assigns\x20numeric\x20voting\x20weights\x20based\x20on\x20arbitrator\x20rank;\x20higher-rank\x20arbitrators\x20have\x20greater\x20weight.','recommended_patterns':['P12'],'parameters':[{'name':'arbiter_weights','type':'vec_address','description':'Arbitrator\x20address\x20to\x20weight\x20mapping\x20(address:weight\x20pairs)','required':!![],'constraint':'Weights\x20must\x20be\x20numeric\x20types\x20U8-U256'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Arbitrator\x20address\x20(submitted\x20by\x20caller)','object_type':'Arb'},{'identifier':0x1,'b_submission':![],'value_type':'Vec<Address>','value':'${arbiter_weights}','name':'Authorized\x20arbitrator\x20address\x20list'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x1},'target':{'type':'identifier','identifier':0x0}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-C3-02','R-C2-01','R-C2-02'],'creation_notes':['The\x20GuardIdentifier\x20for\x20voting_guard\x20must\x20be\x20numeric\x20(U8-U256),\x20otherwise\x20E_GUARD_IDENTIFIER_NOT_NUMBER','Weights\x20from\x20submitted\x20data\x20(b_submission=true)\x20carry\x20forgery\x20risk\x20(R-C3-02\x20critical)','Deriving\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20is\x20recommended,\x20rather\x20than\x20submitting\x20them\x20directly'],'example_use_case':'3-person\x20arbitration\x20panel:\x20chief\x20arbitrator\x20weight\x203,\x20regular\x20arbitrators\x20weight\x201,\x20majority\x20vote\x20decision.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_arb_ruling_won','scene_id':'machine_forward_guard','name':'Arbitration\x20ruling-won\x20refund\x20gate\x20(stable\x20indemnity\x20state,\x20two-slot\x20order+arb)','description':'Guard\x20for\x20a\x20Machine\x20forward\x20that\x20pays\x20a\x20refund\x20when\x20the\x20buyer\x20WON\x20the\x20arbitration\x20'+'(e.g.\x20a\x20booking\x20\x27arb_refund\x27\x20edge\x20from\x20disputed\x20→\x20refunded).\x20The\x20verifier\x20submits\x20BOTH\x20'+'the\x20Order\x20address\x20(slot\x200)\x20and\x20the\x20Arb\x20case\x20object\x20address\x20(slot\x201);\x20the\x20gate\x20checks:\x20'+'(1)\x20arb.order\x20==\x20order\x20—\x20the\x20Arb\x20case\x20IS\x20this\x20order\x27s\x20dispute,\x20and\x20(2)\x20arb.indemnity\x20some\x20==\x20true\x20'+'(Bool\x20—\x20set\x20by\x20the\x20ruling;\x20arb_withdraw\x20sweeps\x20ONLY\x20the\x20fee\x20balance\x20and\x20never\x20touches\x20it,\x20so\x20a\x20fee\x20'+'withdrawal\x20cannot\x20clear\x20it;\x20a\x20reset\x20(objection\x20cycle)\x20clears\x20it,\x20correctly\x20re-gating\x20an\x20'+'overturned\x20ruling).\x20The\x20two-slot\x20form\x20makes\x20the\x20pair\x20'+'self-certifying:\x20a\x20merchant\x20holding\x20a\x20favourable\x20ruling\x20on\x20their\x20own\x20order\x20cannot\x20pair\x20it\x20'+'with\x20a\x20victim\x20order\x27s\x20address\x20to\x20redirect\x20that\x20victim\x27s\x20escrow\x20(F-02).','recommended_patterns':['P06','P09'],'parameters':[],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20address\x20(recipient\x20—\x20must\x20equal\x20payment_info.for_object;\x20submitted\x20by\x20the\x20forward\x20executor)'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Arb','name':'Arb\x20case\x20object\x20address\x20(submitted\x20by\x20the\x20forward\x20executor\x20at\x20runtime)'},{'identifier':0x2,'b_submission':![],'value_type':'Bool','value':!![],'name':'Expected\x20indemnity\x20state\x20(true\x20=\x20ruling\x20in\x20buyer\x27s\x20favor)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'arb.order','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x0}]},{'type':'logic_equal','nodes':[{'type':'query','query':'arb.indemnity\x20some','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['travel','ecommerce','rental','education','subscription'],'relevant_risks':['R-X1-16'],'creation_notes':['⚠️\x20TRANSIENT-STATE\x20TRAP\x20(verified\x20on\x20testnet,\x20booking\x20o10):\x20gating\x20on\x20arb.status\x20==\x205\x20(Finished)\x20is\x20WRONG\x20—\x20arb.status\x20is\x20transient:\x20after\x20the\x20award\x20is\x20settled,\x20a\x20legitimate\x20arb_withdraw\x20by\x20the\x20arbitrator\x20advances\x20the\x20case\x205\x20(Finished)\x20→\x206\x20(Withdrawn),\x20permanently\x20killing\x20the\x20refund\x20edge.\x20Because\x20Guard\x20AND\x20Machine\x20are\x20immutable\x20after\x20publish\x20(IMMUT-001),\x20a\x20mistyped\x20arb.status\x20gate\x20strands\x20the\x20refund\x20funds\x20forever\x20(o10:\x201.5\x20WOW\x20locked\x20with\x20no\x20on-chain\x20exit).','arb.indemnity\x20some\x20(Bool)\x20is\x20the\x20stable\x20signal\x20for\x20\x27buyer\x20won\x27:\x20set\x20when\x20the\x20ruling\x20awards\x20an\x20indemnity,\x20never\x20touched\x20by\x20arb_withdraw\x20(the\x20fee\x20sweep\x20pulls\x20only\x20from\x20the\x20fee\x20balance).\x20It\x20IS\x20cleared\x20by\x20a\x20reset\x20(objection\x20cycle)\x20—\x20which\x20is\x20correct:\x20the\x20ruling\x20was\x20overturned,\x20the\x20gate\x20fails\x20shut\x20during\x20the\x20objection\x20cycle\x20and\x20re-arms\x20only\x20after\x20a\x20fresh\x20ruling.','Time-sensitive\x20alternative:\x20arb.indemnity.time\x20(U64\x20ruling\x20timestamp)\x20combined\x20with\x20a\x20deadline\x20—\x20also\x20survives\x20fee\x20withdrawal.','arb.indemnity.amount\x20(U64)\x20exposes\x20the\x20awarded\x20amount\x20if\x20the\x20refund\x20leg\x20must\x20match\x20the\x20ruling\x20exactly;\x20the\x20native\x20query\x20errors\x20on\x20a\x20None\x20field,\x20so\x20an\x20amount-equality\x20leg\x20is\x20fail-closed\x20against\x20never-ruled\x20and\x20reset\x20states.','A\x20reset\x20(state\x204\x20objection\x20cycle)\x20CLEARS\x20the\x20indemnity\x20—\x20arb.indemnity\x20some\x20correctly\x20re-gates\x20to\x20false,\x20so\x20a\x20voided\x20ruling\x20cannot\x20trigger\x20the\x20refund\x20edge.','TWO-SLOT\x20DESIGN\x20(F-02\x20fix):\x20the\x20refund\x20rail\x20has\x20TWO\x20consumers\x20of\x20the\x20same\x20submission\x20—\x20the\x20forward\x20guard\x20needs\x20the\x20Arb\x20object\x20(to\x20read\x20the\x20ruling),\x20while\x20the\x20allocator\x20recipient\x20GuardIdentifier(0)\x20needs\x20the\x20Order\x20object\x20(payment_info.for_object\x20binding).\x20A\x20single\x20slot\x20cannot\x20satisfy\x20both.\x20This\x20two-slot\x20form\x20(slot\x200\x20=\x20Order,\x20slot\x201\x20=\x20Arb)\x20makes\x20the\x20pair\x20self-certifying\x20via\x20the\x20arb.order\x20==\x20order\x20binding\x20assertion,\x20closing\x20the\x20redirect\x20attack\x20where\x20a\x20merchant\x20pairs\x20their\x20own\x20favourable\x20ruling\x20with\x20a\x20victim\x20order\x27s\x20address.','The\x20allocator\x20only\x20reads\x20slot\x200\x20(GuardIdentifier(0)\x20→\x20Order),\x20so\x20the\x20refund\x20recipient\x20resolves\x20correctly;\x20the\x20forward\x20guard\x20reads\x20slot\x201\x20(Arb)\x20for\x20the\x20ruling\x20state.'],'example_use_case':'Accommodation\x20overbooking\x20dispute:\x20buyer\x20files,\x20arbitrators\x20rule\x20in\x20favor\x20(indemnity\x20=\x20fund\x20boundary);\x20the\x20merchant\x27s\x20refund\x20forward\x20opens\x20only\x20while\x20arb.indemnity\x20some\x20==\x20true,\x20regardless\x20of\x20whether\x20the\x20arbitrator\x20has\x20already\x20withdrawn\x20the\x20case\x20fee.\x20The\x20forward\x20executor\x20submits\x20the\x20Order\x20and\x20Arb\x20addresses\x20together;\x20the\x20allocator\x20pays\x20the\x20Order-anchored\x20recipient\x20only\x20when\x20the\x20binding\x20assertion\x20holds.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_arb_ruling_dismissed','scene_id':'machine_forward_guard','name':'Arbitration\x20ruling-dismissed\x20gate\x20(a\x20real\x20ruling\x20exists\x20AND\x20it\x20favoured\x20the\x20merchant,\x20two-slot\x20order+arb)','description':'Guard\x20for\x20a\x20Machine\x20forward\x20that\x20closes\x20a\x20claim\x20when\x20the\x20arbitration\x20DISMISSED\x20it\x20'+'(e.g.\x20\x27claim_dismissed\x27\x20edge\x20from\x20a\x20post-stay\x20claim\x20node\x20to\x20payout,\x20or\x20\x27claim_dismissed_resume\x27\x20'+'restoring\x20the\x20booking).\x20The\x20verifier\x20submits\x20BOTH\x20the\x20Order\x20address\x20(slot\x200)\x20and\x20the\x20Arb\x20case\x20'+'object\x20address\x20(slot\x201);\x20the\x20gate\x20checks:\x20(1)\x20arb.order\x20==\x20order\x20—\x20the\x20Arb\x20case\x20IS\x20this\x20order\x27s\x20'+'dispute,\x20and\x20(2)\x20arb.indemnity.amount\x20==\x200\x20—\x20the\x20ruling\x20awarded\x20the\x20buyer\x20NOTHING\x20'+'(the\x20merchant-favor\x20outcome;\x20the\x20buyer-favor\x20outcome\x20is\x20indemnity.amount\x20>\x200,\x20which\x20gates\x20the\x20'+'companion\x20tpl_forward_arb_ruling_won\x20refund\x20edge).\x20Without\x20this\x20gate\x20a\x20bare-permission\x20dismissal\x20'+'edge\x20lets\x20the\x20platform\x20kill\x20a\x20buyer\x27s\x20claim\x20and\x20release\x20the\x20pool\x20with\x20zero\x20on-chain\x20ruling\x20'+'evidence\x20(N-T2\x20/\x20D2-DISMISS-EDGE-GUARD).','recommended_patterns':['P06','P09'],'parameters':[],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20address\x20(must\x20equal\x20arb.order;\x20submitted\x20by\x20the\x20forward\x20executor)'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Arb','name':'Arb\x20case\x20object\x20address\x20(submitted\x20by\x20the\x20forward\x20executor\x20at\x20runtime)'},{'identifier':0x2,'b_submission':![],'value_type':'U64','value':'0','name':'Expected\x20indemnity\x20amount\x20(0\x20=\x20ruling\x20favoured\x20the\x20merchant)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'arb.order','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x0}]},{'type':'logic_as_u256_equal','left':{'type':'query','query':'arb.indemnity.amount','object':{'identifier':0x1},'parameters':[]},'right':{'type':'identifier','identifier':0x2}}]},'applicable_industries':['travel','ecommerce','rental','education','subscription'],'relevant_risks':['R-X1-16','R-C3-05'],'creation_notes':['WHY\x20amount\x20==\x200\x20alone\x20is\x20decisive:\x20the\x20native\x20arb.indemnity.amount\x20query\x20ERRORS\x20on\x20a\x20None\x20field,\x20and\x20a\x20guard-query\x20error\x20fails\x20the\x20verification\x20closed\x20—\x20so\x20the\x20leg\x20passes\x20ONLY\x20when\x20indemnity\x20is\x20Some(0),\x20and\x20indemnity\x20is\x20Some\x20ONLY\x20after\x20a\x20ruling\x20(the\x20state\x20machine\x27s\x20reset\x20path\x20clears\x20the\x20indemnity\x20on\x20an\x20overturned\x20ruling\x20—\x20no\x20separate\x20generation\x20counter\x20is\x20needed).\x20A\x20case\x20nobody\x20ever\x20ruled\x20on\x20(None)\x20and\x20a\x20reset/objection\x20case\x20(None)\x20both\x20fail\x20shut,\x20so\x20the\x20platform\x20can\x20never\x20dismiss\x20with\x20zero\x20ruling\x20evidence.','OVERTURN\x20SEMANTICS:\x20a\x20reset\x20clears\x20indemnity,\x20so\x20the\x20amount\x20==\x200\x20leg\x20errors\x20on\x20the\x20None\x20field\x20and\x20the\x20guard\x20verification\x20fails\x20closed.\x20After\x20a\x20re-ruling\x20the\x20gate\x20reads\x20the\x20NEW\x20amount,\x20so\x20the\x20gate\x20reflects\x20the\x20standing\x20ruling\x20—\x20the\x20correct\x20business\x20semantics:\x20a\x20fresh\x20merchant-favor\x20ruling\x20justifies\x20dismissal\x20exactly\x20as\x20much\x20as\x20the\x20overturned\x20one\x20did.','Same\x20two-slot\x20shape\x20as\x20tpl_forward_arb_ruling_won\x20(slot\x200\x20=\x20Order\x20for\x20the\x20arb.order\x20binding,\x20slot\x201\x20=\x20Arb\x20for\x20the\x20ruling\x20state)\x20—\x20ONE\x20INSTANCE\x20PER\x20EXIT\x20EDGE,\x20never\x20share\x20a\x20guard\x20between\x20two\x20forwards.','NEVER\x20express\x20\x27favoured\x20the\x20merchant\x27\x20as\x20arb.indemnity\x20some\x20==\x20false:\x20it\x20conflates\x20never-ruled,\x20reset,\x20and\x20ruled-zero\x20states.\x20The\x20single\x20decisive\x20form\x20is\x20arb.indemnity.amount\x20==\x200\x20(fail-closed\x20on\x20None\x20via\x20the\x20native\x20query\x20error).'],'example_use_case':'Post-stay\x20claim\x20dismissed:\x20the\x20arbitrator\x20ruled\x20the\x20evidence\x20does\x20not\x20support\x20the\x20guest\x27s\x20claim\x20(indemnity\x200);\x20the\x20platform\x27s\x20claim_dismissed\x20forward\x20opens\x20only\x20when\x20THAT\x20ruling\x20is\x20on-chain\x20and\x20unoverturned,\x20then\x20the\x20settlement\x20release\x20pays\x20out\x20of\x20the\x20intact\x20pool.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_gen_passport_identity','scene_id':'gen_passport_guard','name':'Passport\x20identity\x20credential\x20generation\x20validation','description':'Standalone\x20Guard;\x20after\x20verifying\x20the\x20user\x27s\x20identity,\x20generates\x20a\x20Passport\x20with\x20a\x20credential,\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations.','recommended_patterns':['P03','P14'],'parameters':[{'name':'authorized_address','type':'address','description':'Authorized\x20address\x20(or\x20use\x20Vec<Address>\x20whitelist)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${authorized_address}','name':'Authorized\x20address'}],'example_root':{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-01','R-X1-10','R-X1-13'],'creation_notes':['gen_passport\x20is\x20a\x20standalone\x20Guard;\x20it\x20does\x20not\x20bind\x20a\x20Host\x20Object\x20(host_object:\x20Standalone)','quote_guard\x20is\x20a\x20rigid\x20requirement:\x20if\x20the\x20Guard\x20queries\x20Repository\x20data\x20with\x20quote_guard\x20set,\x20the\x20quote_guard\x20must\x20be\x20verified\x20(see\x20R-X1-10)','The\x20Guard\x20can\x20be\x20depended\x20on\x20by\x20other\x20Guards\x20via\x20rely\x20(requires\x20rep=true)','The\x20generated\x20Passport\x20can\x20be\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations'],'example_use_case':'After\x20the\x20user\x20passes\x20identity\x20verification,\x20a\x20Passport\x20is\x20generated;\x20this\x20Passport\x20is\x20then\x20submitted\x20as\x20an\x20identity\x20credential\x20in\x20subsequent\x20service\x20purchases.','verifier_constraint_level':'level1_strict'},{'id':'tpl_repository_quote_guard_subscription','scene_id':'repository_write','name':'Repository\x20data\x20subscription\x20with\x20payment\x20verification','description':'Repository\x20quote_guard\x20requires\x20payment\x20proof\x20for\x20data\x20access.\x20When\x20any\x20Guard\x20queries\x20this\x20Repository\x27s\x20data\x20(query\x201167),\x20the\x20quote_guard\x20is\x20rigidly\x20verified.\x20Enables\x20data\x20subscription\x20revenue\x20model\x20(e.g.,\x20weather\x20data,\x20market\x20oracle\x20data).','recommended_patterns':['P03','P07'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':!![]},{'name':'subscription_price','type':'number','description':'Subscription\x20payment\x20amount\x20required\x20for\x20data\x20access','required':!![]},{'name':'payment_for_object','type':'address','description':'Payment\x20for_object\x20(Repository\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Repository\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'U256','value':'${subscription_price}','name':'Subscription\x20price'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(for_object\x20verification)'},{'identifier':0x3,'b_submission':!![],'value_type':'U256','name':'Submitted\x20Payment\x20amount'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x2}},{'type':'identifier','identifier':0x0}]},{'type':'logic_as_u256_ge','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x2}},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['subscription','travel','rental','education'],'relevant_risks':['R-X1-10'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20valid\x20Payment\x20via\x20Passport\x20(b_submission=true),\x20quote_guard\x20verifies\x20Payment\x20fields','quote_guard\x20must\x20be\x20a\x20standalone\x20repository-backed\x20guard:\x20immutable=true,\x20relies\x20empty,\x20rep=true','Repository.owner_receive<T>\x20accepts\x20Payment\x20as\x20subscription\x20revenue','Rigid\x20verification:\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard','Two-phase:\x20passport\x20generation\x20scans\x20+\x20prepares,\x20passport\x20verification\x20re-checks\x20+\x20verifies','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.amount\x20(id\x201100,\x20U256)'],'example_use_case':'Weather\x20data\x20provider\x20publishes\x20daily\x20temperature\x20data\x20to\x20Repository.\x20Insurance\x20Machine\x20queries\x20weather\x20data;\x20user\x20must\x20pay\x20subscription\x20(Payment)\x20to\x20access\x20data\x20in\x20their\x20insurance\x20claim\x20flow.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_buy_guard_order_holder','scene_id':'service_buy_guard','name':'Supply\x20chain\x20sub-order\x20purchase\x20verification','description':'Sub-service\x20buy_guard\x20verifies\x20the\x20user\x20owns\x20a\x20main\x20service\x20order.\x20Enables\x20supply\x20chain\x20milestone\x20unlock:\x20each\x20milestone\x20=\x20one\x20sub-order,\x20sub-service\x20only\x20purchasable\x20by\x20users\x20who\x20bought\x20the\x20main\x20service.','recommended_patterns':['P03','P04'],'parameters':[{'name':'main_service_address','type':'address','description':'Main\x20Service\x20object\x20address','required':!![]},{'name':'main_order_address','type':'address','description':'Submitted\x20main\x20Order\x20address\x20(b_submission=true)','required':![],'constraint':'If\x20using\x20P16\x20circular\x20reference,\x20use\x20service\x20name\x20instead\x20of\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${main_service_address}','name':'Main\x20service\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','name':'Submitted\x20main\x20Order\x20(ownership\x20verification)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x1}},{'type':'context','context':'Signer'}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1}},{'type':'identifier','identifier':0x0}]}]},'applicable_industries':['travel','rental','education','freelance'],'relevant_risks':['R-C3-05'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20main\x20Order\x20as\x20evidence\x20(b_submission=true),\x20buy_guard\x20verifies\x20ownership\x20+\x20service\x20match','No\x20parent_order\x20field\x20needed\x20—\x20relationship\x20verified\x20via\x20buy_guard\x20querying\x20submitted\x20Order\x20fields','Each\x20milestone\x20=\x20one\x20sub-order\x20with\x20its\x20own\x20Service\x20+\x20buy_guard','Main\x20flow\x20can\x20branch\x20to\x20different\x20sub-services\x20based\x20on\x20Machine\x20node\x20progression','VERIFIED\x20QUERY\x20NAMES:\x20order.owner\x20(id\x201202,\x20Address),\x20order.service\x20(id\x201203,\x20Address)'],'example_use_case':'Travel\x20package:\x20main\x20service\x20=\x20tour\x20booking.\x20Sub-services\x20=\x20hotel,\x20guide,\x20transfer\x20—\x20each\x20with\x20buy_guard\x20verifying\x20the\x20user\x20purchased\x20the\x20main\x20tour\x20order.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_payment_exception_compensation','scene_id':'machine_forward_guard','name':'Exception\x20branch\x20compensation\x20Payment','description':'Machine\x20forward\x20guard\x20for\x20exception\x20handling:\x20verifies\x20a\x20compensation\x20Payment\x20bound\x20to\x20specific\x20order\x20+\x20guard\x20+\x20unique\x20progress\x20step\x20(history\x20count)\x20+\x20node\x20name.\x20Enables\x20user-friendly\x20exception\x20branches\x20(e.g.,\x20delivery\x20delay\x20>\x2030min\x20triggers\x20auto-compensation).','recommended_patterns':['P03','P07','P09'],'parameters':[{'name':'order_address','type':'address','description':'Order\x20object\x20address\x20(Payment\x20for_object\x20target)','required':!![]},{'name':'this_guard_address','type':'address','description':'This\x20guard\x27s\x20own\x20address\x20(Payment\x20for_guard\x20target)','required':!![]},{'name':'compensation_amount','type':'number','description':'Minimum\x20compensation\x20amount','required':!![]},{'name':'expected_node_name','type':'string','description':'Expected\x20node\x20name\x20(stored\x20in\x20PaymentInfo.remark,\x20compared\x20with\x20progress.current)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${order_address}','name':'Order\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${this_guard_address}','name':'This\x20guard\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'U256','value':'${compensation_amount}','name':'Compensation\x20amount'},{'identifier':0x3,'b_submission':![],'value_type':'String','value':'${expected_node_name}','name':'Expected\x20node\x20name\x20(for\x20remark\x20comparison)'},{'identifier':0x4,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(compensation\x20proof)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x4}},{'type':'identifier','identifier':0x0}]},{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.guard','object':{'identifier':0x4}},{'type':'identifier','identifier':0x1}]},{'type':'logic_as_u256_ge','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x4}},{'type':'identifier','identifier':0x2}]},{'type':'logic_as_u256_equal','nodes':[{'type':'query','query':'payment.info.index','object':{'identifier':0x4}},{'type':'query','query':'progress.history\x20count'}]},{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'payment.info.remark','object':{'identifier':0x4}},{'type':'query','query':'progress.current'}]}]},'applicable_industries':['rental','travel','ecommerce','freelance'],'relevant_risks':[],'creation_notes':['VERIFIED:\x20PaymentInfo\x20(for_object,\x20for_guard,\x20remark,\x20index),\x20payment_info_with_guard','VERIFIED:\x20withdraw\x20creates\x20the\x20Payment\x20as\x20a\x20fresh\x20singleton\x20object\x20from\x20the\x20withdrawn\x20object\x20set','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.info.guard\x20(id\x201109,\x20Address),\x20payment.info.index\x20(id\x201111,\x20U64),\x20payment.info.remark\x20(id\x201110,\x20String),\x20payment.amount\x20(id\x201100,\x20U64;\x20logic_as_u256_ge\x20casts\x20U64→U256\x20for\x20comparison)','VERIFIED\x20INDEX:\x20progress.history\x20count\x20(id\x201273,\x20U64)\x20=\x20unique\x20monotonically\x20increasing\x20step\x20index.\x20Even\x20in\x20cycles,\x20each\x20entry\x20has\x20a\x20different\x20count.','VERIFIED\x20NODE\x20NAME:\x20progress.current\x20(id\x201253,\x20String)\x20=\x20current\x20node\x20name.\x20A\x20node\x20can\x20be\x20entered\x20multiple\x20times\x20in\x20cycles,\x20but\x20the\x20history\x20count\x20is\x20unique\x20each\x20time.','DESIGN:\x20payment.info.index\x20stores\x20the\x20step\x20index\x20set\x20by\x20Treasury\x20at\x20creation\x20time;\x20progress.history\x20count\x20provides\x20the\x20current\x20unique\x20step.\x20Comparing\x20them\x20ensures\x20the\x20Payment\x20was\x20created\x20for\x20THIS\x20specific\x20progress\x20step.','DESIGN:\x20payment.info.remark\x20stores\x20the\x20node\x20name;\x20progress.current\x20provides\x20the\x20current\x20node\x20name.\x20Comparing\x20them\x20provides\x20semantic\x20verification\x20of\x20which\x20node\x20triggered\x20the\x20compensation.','ANTI-REUSE:\x204-dimensional\x20binding:\x20for_object\x20(Order)\x20+\x20for_guard\x20(Guard)\x20+\x20index\x20(unique\x20step)\x20+\x20remark\x20(node\x20name).\x20Same\x20Payment\x20cannot\x20be\x20reused\x20in\x20other\x20contexts.','Payment\x20is\x20freeze_object\x20(immutable)\x20—\x20cannot\x20be\x20modified\x20after\x20creation','VERIFIER-EVIDENCE\x20DESIGN:\x20customer\x20submits\x20Payment,\x20guard\x20verifies\x20binding\x20fields\x20match\x20current\x20context','Treasury\x20withdraws\x20compensation\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=history_count_at_creation,\x20remark=node_name)'],'example_use_case':'Food\x20delivery:\x20if\x20delivery\x20delayed\x20>\x2030min\x20at\x20node\x20\x27delayed\x27\x20(history\x20count=5),\x20restaurant\x20Treasury\x20auto-compensates\x20$5\x20to\x20customer\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=5,\x20remark=\x27delayed\x27).\x20Customer\x20submits\x20Payment\x20via\x20Passport,\x20guard\x20verifies\x20index\x20matches\x20current\x20history\x20count\x20AND\x20remark\x20matches\x20current\x20node\x20name.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_content_subscription_deliver','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20delivery\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20delivery\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-delivery\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20author\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Prevents\x20unauthorized\x20parties\x20from\x20publishing\x20content\x20on\x20behalf\x20of\x20the\x20author.\x20'+'Designed\x20for\x20Substack-style\x20content\x20subscription:\x20Paid\x20→\x20ContentPublished\x20→\x20Completed\x20(success\x20path),\x20'+'with\x20Cancelled\x20and\x20Disputed\x20branches\x20using\x20separate\x20guards\x20(tpl_forward_content_subscription_cancel,\x20'+'tpl_forward_content_subscription_refund).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_delivery_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20delivery\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).\x20This\x20is\x20the\x20node\x20from\x20which\x20the\x20\x27Deliver\x27\x20forward\x20advances.'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(author\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'author_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20author\x20role\x20(who\x20can\x20publish\x20content)','required':!![],'default':'1000','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator,\x20reader\x20uses\x20namedOperator=\x27\x27\x20(no\x20specific\x20operator).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20an\x20Order\x20belonging\x20to\x20the\x20bound\x20Service;\x20progress.current\x20must\x20match\x20expected_pre_delivery_node'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_delivery_node}','name':'Expected\x20pre-delivery\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20author\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${author_permission_index}','name':'Author\x20permission\x20index\x20(e.g.\x201000)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String)\x20—\x20current\x20node\x20name;\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index)','SUBSTACK\x20DEPLOYMENT:\x20this\x20guard\x20was\x20used\x20in\x20Substack\x20v2\x20Service.\x20Original\x20v1\x20Service\x20was\x20published\x20without\x20arbitrations\x20—\x20had\x20to\x20be\x20recreated\x20as\x20v2\x20with\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21).','AUTHOR\x20ROLE:\x20permission\x20index\x201000\x20=\x20author\x20(publish\x20+\x20cancel).\x20namedOperator=\x27\x27\x20for\x20reader\x20role\x20(open\x20—\x20any\x20subscriber).\x20Arbitrator\x20uses\x20index\x201500.','FORWARD\x20DESIGN:\x20\x27Deliver\x27\x20forward\x20advances\x20from\x20\x27Ordered\x27\x20→\x20\x27ContentPublished\x27.\x20Threshold=1,\x20weight=1,\x20permissionIndex=1000\x20(author\x20only).','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.\x20Subscribers\x20cannot\x20double-claim\x20by\x20triggering\x20multiple\x20forwards.','IMMUTABILITY:\x20Forward.guard\x20cannot\x20be\x20modified\x20after\x20Machine\x20publish.\x20Verify\x20all\x203\x20guards\x20(deliver/cancel/refund)\x20are\x20correctly\x20bound\x20BEFORE\x20publishing\x20the\x20Machine.','CIRCULAR\x20REF:\x20if\x20Permission\x20is\x20not\x20yet\x20created,\x20use\x20its\x20name\x20(not\x20address)\x20in\x20value\x20field\x20—\x20Guard\x20resolves\x20names\x20at\x20evaluation\x20time,\x20not\x20at\x20creation\x20time.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5/month.\x20Author\x20publishes\x20content\x20→\x20\x27Deliver\x27\x20forward\x20advances\x20Ordered→ContentPublished.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20node\x20(not\x20already\x20delivered),\x20AND\x20(2)\x20Signer\x20holds\x20permission\x20index\x201000\x20on\x20author\x27s\x20Permission\x20object.\x20'+'Prevents\x20a\x20malicious\x20party\x20from\x20publishing\x20fake\x20content.\x20Subscriber\x20cannot\x20trigger\x20\x27Deliver\x27\x20(lacks\x20permission).','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_cancel','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20cancel\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20cancel\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-cancel\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20is\x20the\x20order\x20owner\x20(subscriber).\x20Allows\x20subscriber\x20to\x20cancel\x20within\x20grace\x20period\x20'+'for\x20full\x20refund.\x20Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Cancelled\x20(terminal-cancel),\x20with\x20refund\x20via\x20Allocation\x20template.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_cancel_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20cancel\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_cancel_node}','name':'Expected\x20pre-cancel\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20order.owner\x20(id\x201202,\x20Address)\x20—\x20order\x20holder\x20(subscriber).','SUBSCRIBER-ONLY:\x20only\x20the\x20order\x20owner\x20can\x20cancel\x20—\x20prevents\x20third-party\x20griefing.\x20Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.','GRACE\x20PERIOD:\x20this\x20guard\x20does\x20NOT\x20enforce\x20a\x20time\x20window.\x20If\x20a\x20grace\x20period\x20is\x20needed\x20(e.g.\x20cancel\x20within\x2024h\x20of\x20payment),\x20add\x20a\x20third\x20condition:\x20context(Clock)\x20<=\x20order.time\x20+\x20grace_period.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Cancelled\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5,\x20then\x20changes\x20mind\x20before\x20content\x20is\x20published.\x20\x27Cancel\x27\x20forward\x20advances\x20Ordered→Cancelled.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20(not\x20yet\x20delivered),\x20AND\x20(2)\x20Signer\x20is\x20the\x20order\x20owner.\x20'+'Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.\x20Refund\x20triggers\x20automatically\x20via\x20Allocation\x20on\x20\x27Cancelled\x27\x20node.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_refund','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20refund\x20verification\x20(Substack-style,\x20arbitration-triggered)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20dispute/refund\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-dispute\x20node\x20'+'(e.g.\x20\x27Disputed\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20arbitrator\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Only\x20the\x20arbitrator\x20can\x20advance\x20Disputed→Refunded,\x20ensuring\x20dispute\x20resolution\x20is\x20impartial.\x20'+'Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Disputed\x20→\x20Refunded\x20(terminal-dispute).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_refund_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20refund\x20(e.g.\x20\x27Disputed\x27)','required':!![],'default':'Disputed','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(arbitrator\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'arbitrator_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20arbitrator\x20role\x20(who\x20can\x20resolve\x20disputes)','required':!![],'default':'1500','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator.'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_refund_node}','name':'Expected\x20pre-refund\x20node\x20name\x20(e.g.\x20\x27Disputed\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20arbitrator\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${arbitrator_permission_index}','name':'Arbitrator\x20permission\x20index\x20(e.g.\x201500)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index).','ARBITRATOR-ONLY:\x20only\x20the\x20arbitrator\x20(permission\x20index\x201500)\x20can\x20advance\x20Disputed→Refunded.\x20Neither\x20author\x20nor\x20subscriber\x20can\x20self-resolve.','ARBITRATIONS\x20BINDING:\x20Service\x20MUST\x20have\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21\x20—\x20post-publish\x20immutable).\x20ConfirmGate\x20C-S-19\x20+\x20QS11\x20will\x20warn\x20if\x20publish\x20is\x20attempted\x20without\x20arbitrations.','DISPUTE\x20ENTRY:\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed)\x20is\x20triggered\x20by\x20subscriber\x20(order.owner).\x20After\x20Disputed,\x20only\x20arbitrator\x20can\x20resolve.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Refunded\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Disputed\x27\x20has\x20competing\x20forwards\x20(Resolve-Refund|Resolve-Reject),\x20each\x20with\x20its\x20own\x20guard.\x20First\x20guard\x20to\x20verify\x20wins.'],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20disputes\x20content\x20quality.\x20Subscriber\x20triggers\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed).\x20'+'Arbitrator\x20reviews\x20evidence\x20and\x20triggers\x20\x27Resolve-Refund\x27\x20forward\x20(Disputed→Refunded).\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Disputed\x27\x20(dispute\x20properly\x20opened),\x20AND\x20(2)\x20Signer\x20holds\x20arbitrator\x20permission\x20index\x201500.\x20'+'Author\x20cannot\x20self-resolve.\x20Subscriber\x20cannot\x20self-refund.','verifier_constraint_level':'level2_identity_set'}];export function getTemplatesByScene(a){return GUARD_TEMPLATES['filter'](b=>b['scene_id']===a);}export function getTemplateById(a){return GUARD_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByIndustry(a){return GUARD_TEMPLATES['filter'](b=>b['applicable_industries']['includes'](a));}export function getTemplatesByPattern(a){return GUARD_TEMPLATES['filter'](b=>b['recommended_patterns']['includes'](a));}export function listGuardTemplates(){return GUARD_TEMPLATES;}export function suggestTemplateForScene(a){return GUARD_TEMPLATES['find'](b=>b['scene_id']===a);}export function getTemplateParameters(a){const b=getTemplateById(a);return b?.['parameters']??[];}export function validateTemplateParams(a,b){const c=getTemplateById(a);if(!c)return{'valid':![],'missing':['template_not_found']};const d=c['parameters']['filter'](e=>e['required']&&!(e['name']in b))['map'](e=>e['name']);return{'valid':d['length']===0x0,'missing':d};}function deepSubstitute(a,b){if(typeof a==='string'){const c=a['match'](/^\$\{(\w+)\}$/);if(c&&c[0x1]in b)return b[c[0x1]];return a['replace'](/\$\{(\w+)\}/g,(d,e)=>e in b?String(b[e]):'${'+e+'}');}if(Array['isArray'](a))return a['map'](d=>deepSubstitute(d,b));if(a&&typeof a==='object'){const d={};for(const [e,f]of Object['entries'](a)){d[e]=deepSubstitute(f,b);}return d;}return a;}export function fillGuardTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20not\x20found:\x20'+a};const {valid:d,missing:e}=validateTemplateParams(a,b);if(!d)return{'ok':![],'error':'Missing\x20required\x20parameters:\x20'+e['join'](',\x20'),'missing':e};const f={...b};for(const j of c['parameters']){!(j['name']in f)&&j['default']!==undefined&&(f[j['name']]=j['default']);}const g=deepSubstitute(c['example_table'],f),h=deepSubstitute(c['example_root'],f),i=JSON['stringify']({'table':g,'root':h})['match'](/\$\{(\w+)\}/);if(i)return{'ok':![],'error':'Unresolved\x20placeholder\x20${'+i[0x1]+'}\x20—\x20not\x20declared\x20in\x20template\x20parameters'};return{'ok':!![],'table':g,'root':h};}import{z}from'zod';const GuardTemplateParamSchema=z['object']({'name':z['string']()['min'](0x1),'type':z['enum'](['address','string','number','boolean','vec_address']),'description':z['string']()['min'](0x1),'required':z['boolean'](),'default':z['string']()['optional'](),'constraint':z['string']()['optional']()})['strict'](),GuardTemplateSchema=z['object']({'id':z['string']()['regex'](/^tpl_[a-z0-9_]+$/,'guard\x20template\x20id\x20must\x20be\x20\x27tpl_*\x27'),'scene_id':z['string']()['min'](0x1),'name':z['string']()['min'](0x1),'description':z['string']()['min'](0x1),'recommended_patterns':z['array'](z['string']()['min'](0x1)),'parameters':z['array'](GuardTemplateParamSchema),'example_table':z['array'](z['record'](z['string'](),z['unknown']())),'example_root':z['record'](z['string'](),z['unknown']()),'applicable_industries':z['array'](z['string']()['min'](0x1)),'relevant_risks':z['array'](z['string']()['min'](0x1)),'creation_notes':z['array'](z['string']()['min'](0x1)),'example_use_case':z['string']()['min'](0x1),'verifier_constraint_level':z['enum'](['level1_strict','level2_identity_set','level3_scene_combined'])['optional']()})['strict']();function validateGuardTemplates(){for(const a of GUARD_TEMPLATES){const b=GuardTemplateSchema['safeParse'](a);if(!b['success']){const f=b['error']['issues']['map'](g=>'\x20\x20'+g['path']['join']('.')+':\x20'+g['message'])['join']('\x0a');throw new Error('[guard-templates]\x20\x27'+a['id']+'\x27\x20fails\x20schema\x20validation:\x0a'+f+'\x0a'+'Fix\x20the\x20entry\x20—\x20the\x20schema\x20is\x20the\x20single\x20source\x20of\x20truth\x20for\x20guard-template\x20validity.');}const c=new Set(a['parameters']['map'](g=>g['name'])),d=JSON['stringify']({'table':a['example_table'],'root':a['example_root']}),e=new Set([...d['matchAll'](/\$\{(\w+)\}/g)]['map'](g=>g[0x1]));for(const g of e){if(!c['has'](g))throw new Error('[guard-templates]\x20\x27'+a['id']+'\x27\x20references\x20${'+g+'}\x20in\x20example_table/example_root\x20'+('but\x20\x27'+g+'\x27\x20is\x20not\x20declared\x20in\x20parameters\x20—\x20fillGuardTemplate\x20would\x20leave\x20it\x20unresolved.'));}}}validateGuardTemplates();export const GUARD_TEMPLATES_VERSION='1.1.0';export const GUARD_TEMPLATES_COUNT=GUARD_TEMPLATES['length'];
|
|
1
|
+
export const PROTOCOL_SLOT_254_NOTE='PROTOCOL\x20SLOT\x20254:\x20the\x20task-binding\x20row\x20is\x20mandatory\x20on\x20every\x20forward-bound\x20guard\x20—\x20progress::assert_task_binding\x20aborts\x20(code\x2011)\x20without\x20it;\x20the\x20value\x20is\x20written\x20by\x20order\x20creation,\x20never\x20submitted\x20by\x20hand';export const GUARD_TEMPLATES=[{'id':'tpl_buy_guard_whitelist','scene_id':'service_buy_guard','name':'Whitelist\x20purchase\x20validation','description':'Only\x20addresses\x20in\x20the\x20whitelist\x20can\x20purchase\x20the\x20service.\x20Suitable\x20for\x20limited-time\x20sales,\x20VIP\x20exclusives,\x20internal\x20testing\x20eligibility,\x20etc.','recommended_patterns':['P04','P03'],'parameters':[{'name':'whitelist','type':'vec_address','description':'List\x20of\x20authorized\x20addresses','required':!![],'constraint':'Each\x20address\x20must\x20be\x20valid\x20and\x20unique'},{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(used\x20for\x20circular\x20references)','required':![],'constraint':'If\x20P16\x20circular\x20reference\x20is\x20used,\x20a\x20name\x20must\x20be\x20provided\x20rather\x20than\x20an\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Vec<Address>','value':'${whitelist}','name':'Authorized\x20purchase\x20whitelist'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x0},'target':{'type':'context','context':'Signer'}},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-01','R-C3-01','R-C4-01'],'creation_notes':['Updating\x20the\x20whitelist\x20requires\x20rebuilding\x20the\x20Guard\x20(buy_guard\x20is\x20iterable)','If\x20the\x20Service\x20is\x20already\x20published,\x20the\x20table\x20can\x20use\x20the\x20address\x20directly;\x20otherwise\x20use\x20the\x20name\x20(P16\x20circular\x20reference)'],'example_use_case':'Internal\x20testing\x20phase\x20for\x20camera\x20equipment\x20rental,\x20allowing\x20only\x20the\x20first\x2050\x20seed\x20users\x20to\x20place\x20rental\x20orders.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_threshold','scene_id':'service_order_allocators_guard','name':'Allocation\x20amount\x20threshold\x20validation','description':'Selects\x20different\x20allocation\x20strategies\x20based\x20on\x20the\x20order\x20amount.\x20When\x20the\x20amount\x20exceeds\x20the\x20threshold,\x20advanced\x20allocation\x20is\x20used;\x20otherwise,\x20default\x20allocation\x20applies.','recommended_patterns':['P02','P10'],'parameters':[{'name':'threshold','type':'number','description':'Allocation\x20threshold\x20(unit:\x20smallest\x20precision)','required':!![],'constraint':'Must\x20be\x20>\x200;\x20a\x20reasonable\x20range\x20is\x20recommended\x20to\x20avoid\x20boundary\x20gaming'},{'name':'service_name','type':'string','description':'Service\x20object\x20name','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${threshold}','name':'Allocation\x20threshold'}],'example_root':{'type':'logic_as_u256_greater','nodes':[{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-05','R-X1-08'],'creation_notes':['order_allocators\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20publish)','A\x20distribution\x20call\x20submits\x20ONE\x20guard;\x20every\x20allocator\x20bound\x20to\x20that\x20guard\x20fires\x20in\x20vector\x20order\x20against\x20the\x20shrinking\x20pool\x20(allocation.move:366-368)','Threshold\x20boundary\x20must\x20be\x20tested:\x20behavior\x20when\x20exactly\x20equal\x20to\x20the\x20threshold\x20(>\x20vs\x20>=)'],'example_use_case':'E-commerce\x20platform:\x20order\x20amount\x20>\x201000\x20WOW\x20triggers\x203-way\x20allocation\x20(platform\x20+\x20merchant\x20+\x20logistics);\x20otherwise\x202-way\x20allocation\x20(platform\x20+\x20merchant).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_treasury_personal','scene_id':'service_order_allocators_guard','name':'Treasury\x20+\x20personal\x20address\x20allocation\x20(Entity\x20sharing)','description':'2\x20allocators\x20representing\x202\x20merchant\x20collection\x20approaches:\x20(1)\x20named\x20Treasury\x20address\x20for\x20public\x20fund\x20aggregation,\x20(2)\x20fixed\x20personal\x20address.\x20'+'Uses\x20sharing.who=Entity\x20so\x20funds\x20always\x20flow\x20to\x20the\x20legitimate\x20recipient\x20regardless\x20of\x20caller\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20Guard.\x20'+'Guards\x20verify\x20the\x20order\x20is\x20at\x20the\x20Complete\x20node\x20+\x20belongs\x20to\x20the\x20service\x20(project\x20binding).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'},{'name':'complete_node_name','type':'string','description':'Expected\x20node\x20name\x20that\x20triggers\x20allocation\x20(e.g.\x20\x27Complete\x27)','required':!![],'default':'Complete','constraint':'Must\x20exactly\x20match\x20the\x20Machine\x20node\x20name\x20(case-sensitive)'},{'name':'treasury_name','type':'string','description':'Named\x20Treasury\x20object\x20(created\x20with\x20the\x20Service\x27s\x20permission)','required':!![],'constraint':'Treasury\x20must\x20be\x20created\x20before\x20the\x20Service;\x20use\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20for\x20consistency'},{'name':'personal_address','type':'address','description':'Fixed\x20personal\x20collection\x20address\x20(e.g.\x20the\x20permission\x20creator\x27s\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${complete_node_name}','name':'Expected\x20Complete\x20node\x20name\x20(case-sensitive)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['insurance','ecommerce','travel','rental','subscription'],'relevant_risks':['R-C3-05','R-C3-06','R-X1-05','R-X1-01'],'creation_notes':['2\x20Guard\x20objects\x20with\x20IDENTICAL\x20root/table\x20but\x20DIFFERENT\x20descriptions\x20(allocators\x20require\x20unique\x20guard\x20addresses\x20—\x20no\x20two\x20allocators\x20may\x20reference\x20the\x20same\x20Guard).','sharing.who=Entity\x20(Treasury/personal)\x20—\x20no\x20Signer\x20binding\x20needed\x20in\x20the\x20Guard\x20(R-C3-06\x20safe).','Each\x20allocator\x20is\x20bound\x20to\x20a\x20DIFFERENT\x20guard\x20—\x20the\x20caller\x27s\x20submitted\x20guard\x20selects\x20which\x20path\x20fires.\x20To\x20switch\x20from\x20Treasury\x20to\x20personal\x20collection,\x20submit\x20the\x20personal\x20allocator\x27s\x20guard\x20instead','Treasury\x20should\x20be\x20created\x20with\x20the\x20SAME\x20permission\x20as\x20the\x20Service\x20(permission\x20consistency\x20—\x20different\x20permissions\x20=\x20minor\x20risk).','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass\x20prevents\x20premature\x20allocation\x20on\x20foreign\x20orders).','order_allocators\x20is\x20immutable\x20after\x20Service\x20publish\x20—\x20verify\x20the\x20Guard\x20logic\x20and\x20sharing\x20config\x20before\x20publishing.'],'example_use_case':'Insurance\x20service:\x20after\x20a\x20claim\x20reaches\x20the\x20Complete\x20node,\x20order\x20funds\x20are\x20allocated\x20to\x20the\x20insurance\x20Treasury\x20'+'(approach\x201,\x20for\x20operational\x20fund\x20aggregation)\x20or\x20to\x20the\x20provider\x27s\x20personal\x20address\x20(approach\x202,\x20for\x20direct\x20income).','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_identity_set_order_holder','scene_id':'service_order_allocators_guard','name':'Order-holder\x20identity-set\x20allocation\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding:\x20Signer\x20is\x20order.owner\x20(1562,\x20Address)\x20OR\x20order.agent\x20(1567,\x20Bool\x20with\x20[Signer]\x20param).\x20'+'Demonstrates\x20the\x20mixed\x20return-type\x20construction\x20pattern\x20—\x20Address-returning\x20queries\x20are\x20wrapped\x20in\x20logic_equal,\x20'+'while\x20Bool-returning\x20queries\x20(suffix\x20\x27has\x27)\x20are\x20used\x20directly\x20as\x20logic_or\x20children.\x20'+'Combined\x20with\x20order.service\x20binding\x20(R-C3-05)\x20for\x20cross-service\x20theft\x20prevention.\x20'+'Use\x20when\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20should\x20be\x20able\x20to\x20trigger\x20allocation\x20(e.g.\x20refund\x20to\x20caller).','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'order.agent\x20has','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['ecommerce','rental','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['MIXED\x20RETURN-TYPE\x20CONSTRUCTION\x20(key\x20Level\x202\x20pattern):\x20query\x201562\x20(order.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal\x20with\x20context(Signer);\x20query\x201567\x20(order.agent\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning)\x20—\x20this\x20is\x20the\x20recommended\x20Level\x202\x20alternative.','Use\x20this\x20pattern\x20when\x20sharing.who=Signer\x20(funds\x20flow\x20to\x20caller)\x20AND\x20either\x20the\x20owner\x20or\x20an\x20agent\x20should\x20be\x20authorized\x20to\x20trigger\x20allocation.','order.service\x20binding\x20(query\x201563)\x20suppresses\x20R-C3-05\x20(cross-project\x20bypass).','If\x20agents\x20are\x20not\x20needed,\x20use\x20the\x20simpler\x20Level\x202\x20dynamic\x20pattern:\x20logic_equal[query(1562),\x20context(Signer)]\x20without\x20logic_or.'],'example_use_case':'Refund\x20allocation:\x20when\x20an\x20order\x20is\x20cancelled,\x20either\x20the\x20order\x20owner\x20or\x20an\x20authorized\x20agent\x20can\x20trigger\x20the\x20refund.\x20'+'The\x20Guard\x20verifies\x20Signer\x20is\x20order.owner\x20OR\x20order.agent,\x20and\x20that\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_identity_set_service_provider_dynamic','scene_id':'service_order_allocators_guard','name':'Service-provider\x20identity-set\x20allocation\x20with\x20dynamic\x20permission\x20(Level\x202)','description':'Level\x202\x20identity-set\x20binding\x20with\x20DYNAMIC\x20permission\x20address:\x20Signer\x20is\x20permission.owner\x20(1002,\x20Address)\x20OR\x20'+'has\x20admin\x20(1004,\x20Bool\x20with\x20[Signer]\x20param).\x20The\x20permission\x20address\x20is\x20submitted\x20by\x20the\x20caller\x20and\x20verified\x20'+'against\x20service.permission\x20(1488)\x20—\x20this\x20survives\x20permission\x20rotation\x20without\x20rebuilding\x20the\x20Guard.\x20'+'Use\x20when\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board)\x20and\x20a\x20static\x20permission\x20'+'address\x20would\x20break\x20the\x20Guard.','recommended_patterns':['P02','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','object_type':'Permission','name':'Permission\x20object\x20(submitted\x20by\x20caller\x20—\x20must\x20equal\x20service.permission)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'service.permission','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]},{'type':'logic_or','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'permission.owner','object':{'identifier':0x2},'parameters':[]},{'type':'context','context':'Signer'}]},{'type':'query','query':'permission.admin\x20has','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'}]}]}]},'applicable_industries':['ecommerce','rental','insurance','travel','subscription'],'relevant_risks':['R-C3-01','R-C3-05','R-C3-06','R-C4-04'],'creation_notes':['DYNAMIC\x20PERMISSION\x20VERIFICATION\x20(key\x20pattern):\x20caller\x20submits\x20a\x20Permission\x20address\x20(identifier\x202);\x20Guard\x20verifies\x20query(1488:\x20service.permission)\x20==\x20submitted\x20permission,\x20then\x20checks\x201002/1004\x20against\x20the\x20submitted\x20permission.\x20This\x20survives\x20permission\x20rotation\x20—\x20if\x20the\x20Service\x20changes\x20its\x20permission,\x20the\x20Guard\x20still\x20works\x20without\x20rebuilding.','MIXED\x20RETURN-TYPE\x20CONSTRUCTION:\x20query\x201002\x20(permission.owner)\x20returns\x20Address\x20→\x20wrap\x20in\x20logic_equal;\x20query\x201004\x20(permission.admin\x20has)\x20returns\x20Bool\x20→\x20use\x20directly\x20as\x20logic_or\x20child\x20with\x20parameters:\x20[context(Signer)].','logic_or\x20wrapping\x20of\x20the\x20Signer\x20check\x20suppresses\x20R-C4-04\x20(Level\x201\x20strict\x20binding\x20convenience\x20warning).','THREE\x20conditions\x20in\x20logic_and:\x20(1)\x20order.service\x20binding\x20(R-C3-05),\x20(2)\x20dynamic\x20permission\x20verification,\x20(3)\x20identity\x20set\x20(owner\x20OR\x20admin).','Static\x20permission\x20alternative\x20(simpler\x20but\x20breaks\x20on\x20rotation):\x20use\x20a\x20table\x20constant\x20for\x20the\x20permission\x20address\x20instead\x20of\x20b_submission=true\x20+\x201488\x20verification.','Repository-based\x20address\x20set\x20(most\x20flexible,\x20most\x20complex):\x20store\x20the\x20permission\x20address\x20set\x20in\x20a\x20Repository\x20and\x20query\x20dynamically\x20—\x20only\x20for\x20extreme\x20flexibility\x20needs.'],'example_use_case':'Merchant\x20allocation:\x20the\x20Service\x20may\x20rotate\x20its\x20permission\x20(like\x20a\x20company\x20changing\x20its\x20board).\x20'+'The\x20caller\x20submits\x20the\x20current\x20permission\x20address;\x20the\x20Guard\x20verifies\x20it\x20matches\x20service.permission\x20(1488),\x20'+'then\x20checks\x20that\x20Signer\x20is\x20the\x20permission\x20owner\x20or\x20has\x20admin\x20rights.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_allocator_node_gate_settle','scene_id':'service_order_allocators_guard','name':'Node-gated\x20settlement\x20rail\x20(node\x20gate\x20+\x20order\x20anchor\x20+\x20period\x20once-key)','description':'Settlement\x20allocator\x20guard\x20that\x20fires\x20ONLY\x20when\x20the\x20order\x20is\x20at\x20the\x20settlement\x20node:\x20progress.current\x20==\x20settle_node,\x20'+'plus\x20the\x20order.service\x20project\x20binding\x20(R-C3-05)\x20and\x20the\x20protocol-255\x20once-per-period\x20key\x20pinned\x20to\x20the\x20monotonic\x20'+'progress.history\x20count\x20(replay-proof\x20on\x20renewal\x20loops;\x20OFN\x20#P-04,\x20mainnet-proven).\x20Canonical\x20guard\x20design\x20for\x20settlement\x20'+'allocator\x20rows\x20(catalog-tiers\x20style)\x20—\x20do\x20NOT\x20borrow\x20tpl_forward_node_check\x20(machine_forward\x20scene).','recommended_patterns':['P02','P06','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'},{'name':'settle_node','type':'string','description':'Machine\x20node\x20whose\x20arrival\x20triggers\x20settlement\x20(e.g.\x20\x27completed\x27)','required':!![],'default':'completed','constraint':'Must\x20exactly\x20match\x20the\x20Machine\x20node\x20name\x20(case-sensitive)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${settle_node}','name':'Settlement\x20node\x20name\x20(case-sensitive)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'},{'identifier':0xff,'b_submission':!![],'value_type':'U64','name':'ONCE\x20byte-key\x20slot\x20(protocol\x20255):\x20caller\x20submits\x20the\x20current\x20period\x20step;\x20the\x20guard\x20leg\x20pins\x20it\x20to\x20the\x20monotonic\x20progress.history\x20count\x20so\x20each\x20period\x20gets\x20a\x20fresh\x20key'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x2}]},{'type':'logic_equal','nodes':[{'type':'identifier','identifier':0xff},{'type':'query','query':'progress.history\x20count','object':{'identifier':0x0},'parameters':[]}]}]},'applicable_industries':['ecommerce','rental','education','travel','subscription','freelance'],'relevant_risks':['R-C3-05','R-X1-05','R-X1-01'],'creation_notes':['THREE\x20legs\x20in\x20logic_and:\x20(1)\x20node\x20gate\x20progress.current\x20==\x20settle_node\x20(the\x20arrival\x20precondition),\x20(2)\x20order.service\x20binding\x20(suppresses\x20R-C3-05\x20cross-project\x20allocation\x20on\x20foreign\x20orders),\x20(3)\x20protocol-255\x20once\x20leg\x20pinned\x20to\x20progress.history\x20count\x20(monotonic,\x20unforgeable\x20—\x20each\x20period\x20gets\x20a\x20fresh\x20OnceKey;\x20OFN\x20#P-04,\x20mainnet-proven\x20261010).','The\x20guard\x20table\x20MUST\x20declare\x20identifier\x20255\x20(b_submission:\x20true)\x20—\x20the\x20chain\x20drops\x20undeclared\x20slots\x20when\x20it\x20assembles\x20the\x20passport\x20from\x20the\x20guard\x20table,\x20so\x20the\x20once\x20leg\x20could\x20never\x20pass\x20without\x20the\x20declaration.','Pair\x20the\x20settlement\x20rows\x20with\x20a\x20Rate-0\x20{GuardIdentifier:\x200}\x20ORDER\x20anchor\x20row\x20(pattern.allocator_order_anchor)\x20sharing\x20this\x20guard_key,\x20so\x20the\x20submitted\x20ORDER\x20becomes\x20the\x20binding\x20target\x20and\x20a\x20sibling\x20period\x27s\x20passport\x20satisfies\x20nothing\x20(testnet\x20CR-01).','Drop\x20the\x20255\x20leg\x20ONLY\x20when\x20the\x20settle\x20node\x20is\x20reachable\x20exactly\x20once\x20per\x20order\x20lifetime\x20AND\x20no\x20renewal\x20loop\x20exists\x20(single-shot\x20services);\x20a\x20re-enterable\x20settle\x20node\x20without\x20it\x20is\x20replayable.','order_allocators\x20cannot\x20be\x20modified\x20after\x20Service\x20publish\x20(immutable)\x20—\x20verify\x20node\x20names\x20against\x20the\x20Machine\x20before\x20publishing.'],'example_use_case':'Subscription\x20settlement:\x20each\x20period\x20settles\x20to\x20the\x20creator\x20when\x20the\x20fan\x20confirms\x20(completed);\x20the\x20255\x20leg\x20keyed\x20to\x20the\x20period\x27s\x20history\x20count\x20lets\x20periods\x201..N\x20each\x20settle\x20exactly\x20once.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_node_gate_refund','scene_id':'service_order_allocators_guard','name':'Node-gated\x20refund\x20rail\x20(node\x20gate\x20+\x20order\x20anchor;\x20NEVER\x20slot\x20254)','description':'Refund\x20allocator\x20guard\x20for\x20ONE\x20cancel/refund\x20node:\x20progress.current\x20==\x20refund_node\x20plus\x20the\x20order.service\x20project\x20binding\x20'+'(R-C3-05).\x20Designed\x20for\x20order-anchored\x20refund\x20rows\x20(recipient\x20GuardIdentifier(0)\x20—\x20funds\x20land\x20on\x20the\x20Order,\x20extracted\x20by\x20a\x20'+'separate\x20owner_receive\x20step).\x20Deliberately\x20arms\x20NO\x20254\x20slot:\x20254\x20keys\x20on\x20payment_info.for_object\x20which\x20never\x20changes\x20across\x20'+'renewal\x20periods,\x20so\x20a\x20refund\x20rail\x20with\x20254\x20aborts\x20E_ONCE_TRIGGERED(16)\x20forever\x20from\x20period\x202\x20(OFN\x20#P-04).\x20Once-semantics\x20'+'comes\x20from\x20the\x20terminal-node\x20topology\x20instead.','recommended_patterns':['P02','P06','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'},{'name':'refund_node','type':'string','description':'Machine\x20node\x20at\x20which\x20the\x20refund\x20fires\x20(e.g.\x20\x27closed_cancel\x27)','required':!![],'constraint':'Must\x20exactly\x20match\x20the\x20Machine\x20node\x20name\x20(case-sensitive);\x20per-node\x20rails\x20are\x20the\x20default\x20form\x20(a\x20node\x20set\x20is\x20also\x20expressible\x20via\x20the\x20relies\x20two-level\x20tree\x20—\x20OR-subguard\x20per\x20node\x20under\x20an\x20AND\x20parent)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${refund_node}','name':'Refund\x20node\x20name\x20(case-sensitive)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','rental','education','travel','subscription','freelance'],'relevant_risks':['R-C3-05','R-X1-05','R-X1-08'],'creation_notes':['TWO\x20legs\x20in\x20logic_and:\x20(1)\x20node\x20gate\x20progress.current\x20==\x20refund_node,\x20(2)\x20order.service\x20binding\x20(R-C3-05).\x20The\x20signer==order.owner\x20leg\x20is\x20OPTIONAL\x20on\x20an\x20order-anchored\x20rail\x20—\x20the\x20recipient\x20(GuardIdentifier(0))\x20is\x20already\x20hard-bound\x20to\x20the\x20order\x20owner.','NEVER\x20arm\x20identifier\x20254\x20on\x20a\x20refund\x20rail:\x20254\x20keys\x20on\x20payment_info.for_object,\x20which\x20the\x20order\x27s\x20payment\x20intake\x20never\x20rewrites\x20—\x20the\x20OnceKey\x20is\x20identical\x20in\x20every\x20renewal\x20period,\x20so\x20refund\x20period\x202+\x20aborts\x20and\x20the\x20escrow\x20strands\x20with\x20no\x20recovery\x20(OFN\x20#P-04).\x20OBSERVABILITY:\x20on\x20a\x20full-drain\x20rail\x20the\x20EMPTIED-POOL\x20abort\x20(14,\x20EZERO\x20at\x20allocation.move:418)\x20fires\x20BEFORE\x20the\x20once\x20slot\x20is\x20read\x20—\x2014\x20on\x20a\x20refund\x20replay\x20IS\x20the\x20254-replay\x20signature;\x2016\x20(E_ONCE_TRIGGERED)\x20only\x20surfaces\x20when\x20a\x20residual\x20balance\x20keeps\x20the\x20pool\x20alive.\x20Once-semantics\x20on\x20refunds\x20comes\x20from\x20the\x20terminal-node\x20topology\x20(a\x20cancelled\x20terminal\x20is\x20reachable\x20once),\x20not\x20from\x20a\x20once\x20slot.','Renewal\x20loops\x20that\x20legitimately\x20RE-ENTER\x20a\x20refund\x20node\x20(cancel\x20in\x20period\x201,\x20cancel\x20again\x20in\x20period\x203)\x20arm\x20identifier\x20255\x20with\x20a\x20\x27period-<N>\x27\x20equality\x20leg\x20(logic_equal[id255,\x20progress.history\x20count])\x20instead\x20—\x20byte-keyed,\x20fresh\x20per\x20period.','One\x20rail\x20per\x20refundable\x20node\x20(default\x20form;\x20a\x20node\x20set\x20is\x20also\x20expressible\x20via\x20the\x20relies\x20two-level\x20tree\x20—\x20OR-subguard\x20per\x20node\x20under\x20an\x20AND\x20parent).\x20Cover\x20EVERY\x20refundable\x20node\x20—\x20omitting\x20the\x20mid-period\x20cancel\x20node\x20deadlocks\x20the\x20escrow\x20(OFN\x20#P-02);\x20every\x20terminal\x20must\x20keep\x20a\x20fund\x20exit.','Where\x20a\x20paid\x20arbitration\x20award\x20must\x20preclude\x20refund,\x20add\x20an\x20order.claimed_by\x20some\x20==\x20false\x20leg\x20(query\x201570)\x20and\x20PAIR\x20a\x20merchant-recovery\x20allocator\x20with\x20claimed_by\x20some\x20==\x20true\x20(escrow-exit\x20invariant,\x20az-mn-261007)\x20—\x20exactly\x20one\x20of\x20the\x20two\x20legs\x20can\x20ever\x20pass\x20(D-BUG-2).','order_allocators\x20cannot\x20be\x20modified\x20after\x20Service\x20publish\x20(immutable)\x20—\x20verify\x20node\x20names\x20against\x20the\x20Machine\x20before\x20publishing.'],'example_use_case':'Fan\x20cancels\x20mid-period:\x20the\x20refund\x20rail\x20fires\x20at\x20closed_cancel,\x20paying\x20100%\x20back\x20to\x20the\x20subscriber\x27s\x20Order\x20(two-step\x20owner_receive\x20payout);\x20the\x20mid-period\x20node\x20rail\x20is\x20mandatory\x20—\x20omitting\x20it\x20strands\x20the\x20escrow.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_allocator_node_gate_recover','scene_id':'service_order_allocators_guard','name':'Node-gated\x20award-recovery\x20rail\x20(claimed_by\x20some\x20polarity;\x20NEVER\x20slot\x20254)','description':'Polarity\x20twin\x20of\x20tpl_allocator_node_gate_refund\x20for\x20the\x20MERCHANT\x20side\x20of\x20the\x20escrow-exit\x20invariant\x20(az-mn-261007):\x20fires\x20only\x20where\x20an\x20arbitration\x20award\x20has\x20ACTUALLY\x20paid\x20—\x20the\x20order.claimed_by\x20some\x20==\x20true\x20leg\x20(query\x20\x27order.claimed_by\x20some\x27,\x20Bool\x20identifier)\x20—\x20sweeping\x20the\x20escrow\x20principal\x20out\x20at\x20the\x20node\x20awarded\x20orders\x20rest\x20on,\x20so\x20a\x20refund-blocked\x20(claimed_by\x20some)\x20order\x20still\x20has\x20a\x20fund\x20exit.\x20The\x20paired\x20Allocator\x20row\x20(not\x20this\x20Guard)\x20pays\x20Rate\x2010000\x20to\x20the\x20merchant/creator\x20Entity:\x20exactly\x20one\x20of\x20the\x20refund\x20(some\x20==\x20false)\x20and\x20recovery\x20(some\x20==\x20true)\x20legs\x20can\x20ever\x20pass\x20(D-BUG-2).\x20Deliberately\x20arms\x20NO\x20254\x20slot\x20—\x20same\x20rationale\x20as\x20the\x20refund\x20twin\x20(payment_info.for_object\x20never\x20changes\x20across\x20renewal\x20periods;\x20a\x20254\x20recovery\x20rail\x20aborts\x20E_ONCE_TRIGGERED(16)\x20from\x20period\x202,\x20OFN\x20#P-04).','recommended_patterns':['P02','P06','P10','P16'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'},{'name':'recover_node','type':'string','description':'Machine\x20node\x20at\x20which\x20awarded\x20orders\x20rest\x20when\x20the\x20recovery\x20rail\x20sweeps\x20the\x20escrow\x20(e.g.\x20\x27disputed_awarded\x27)','required':!![],'constraint':'Must\x20exactly\x20match\x20the\x20Machine\x20node\x20name\x20(case-sensitive);\x20choose\x20the\x20node\x20the\x20dispute\x20topology\x20lands\x20awarded\x20orders\x20on\x20—\x20a\x20recovery\x20rail\x20on\x20a\x20node\x20awarded\x20orders\x20never\x20reach\x20is\x20dead\x20weight\x20and\x20the\x20principal\x20strands'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(Order\x20object\x20submitted\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${recover_node}','name':'Recovery\x20node\x20name\x20(case-sensitive)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'},{'identifier':0x3,'b_submission':![],'value_type':'Bool','value':!![],'name':'Expected\x20claimed_by\x20polarity:\x20true\x20=\x20award\x20has\x20ACTUALLY\x20paid\x20(query\x20\x27order.claimed_by\x20some\x27)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x2}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.claimed_by\x20some','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x3}]}]},'applicable_industries':['ecommerce','rental','education','travel','subscription','freelance'],'relevant_risks':['R-C3-05','R-X1-05','R-X1-08'],'creation_notes':['THREE\x20legs\x20in\x20logic_and:\x20(1)\x20node\x20gate\x20progress.current\x20==\x20recover_node,\x20(2)\x20order.service\x20binding\x20(R-C3-05),\x20(3)\x20order.claimed_by\x20some\x20==\x20true\x20—\x20the\x20POLARITY\x20FLIP\x20that\x20distinguishes\x20this\x20rail\x20from\x20its\x20refund\x20twin:\x20the\x20refund\x20guard\x20asserts\x20the\x20Bool\x20identifier\x20false\x20(claimed_by\x20none),\x20this\x20one\x20true\x20(an\x20award\x20ACTUALLY\x20paid,\x20single-shot\x20order.compensate\x20wrote\x20claimed_by).\x20Exactly\x20one\x20of\x20the\x20two\x20polarities\x20can\x20ever\x20pass\x20(D-BUG-2).','The\x20Guard\x20only\x20GATES\x20—\x20the\x20money\x20shape\x20lives\x20on\x20the\x20paired\x20Allocator\x20row:\x20Rate\x2010000\x20to\x20the\x20merchant/creator\x20ENTITY\x20(an\x20empty\x20Entity\x20never\x20reaches\x20the\x20deployer;\x20on\x20chain\x20a\x20zero-address\x20recipient\x20burns\x20the\x20share\x20permanently).\x20Using\x20the\x20REFUND\x20template\x20here\x20inverts\x20the\x20polarity:\x20the\x20rail\x20only\x20passes\x20BEFORE\x20the\x20award\x20pays,\x20so\x20once\x20claimed_by\x20is\x20set\x20the\x20awarded\x20order\x27s\x20escrow\x20strands\x20forever\x20—\x20the\x20az-mn-261007\x20stranded-escrow\x20shape\x20(2.38\x20locked\x20at\x20reviewed).','PAIR\x20it\x20with\x20the\x20refund\x20rail\x20around\x20every\x20full-drain\x20settle\x20rail\x20(escrow-exit\x20invariant):\x20pre-settle\x20dispute\x20blocks\x20settle\x20permanently\x20(claimed_by\x20some\x20==\x20false\x20makes\x20the\x20refund\x20leg\x20pass\x20and\x20settle\x20can\x20no\x20longer\x20fire),\x20and\x20this\x20recovery\x20rail\x20is\x20then\x20the\x20ONLY\x20exit\x20for\x20the\x20principal.','NEVER\x20arm\x20identifier\x20254\x20on\x20this\x20rail:\x20254\x20keys\x20on\x20payment_info.for_object,\x20identical\x20in\x20every\x20renewal\x20period\x20—\x20recovery\x20period\x202+\x20aborts\x20E_ONCE_TRIGGERED(16)\x20and\x20the\x20principal\x20strands\x20(OFN\x20#P-04).\x20A\x20recovery\x20rail\x20is\x20single-shot\x20by\x20construction\x20(claimed_by\x20is\x20written\x20once;\x20the\x20second\x20compensate\x20aborts\x20E_ORDER_ALREADY_CLAIMED),\x20so\x20it\x20needs\x20no\x20once\x20slot\x20at\x20all.','Renewal\x20loops\x20that\x20legitimately\x20re-enter\x20the\x20recovery\x20node\x20arm\x20identifier\x20255\x20with\x20a\x20\x27period-<N>\x27\x20equality\x20leg\x20(logic_equal[id255,\x20progress.history\x20count])\x20instead\x20—\x20byte-keyed,\x20fresh\x20per\x20period\x20(same\x20remedy\x20as\x20the\x20refund\x20twin).','order_allocators\x20cannot\x20be\x20modified\x20after\x20Service\x20publish\x20(immutable)\x20—\x20verify\x20node\x20names\x20against\x20the\x20Machine\x20before\x20publishing.'],'example_use_case':'Arbitrator\x20awards\x20the\x20buyer\x201.00\x20from\x20the\x20compensation\x20fund\x20(claimed_by\x20set):\x20the\x20escrow\x20principal\x20is\x20now\x20refund-blocked;\x20the\x20recovery\x20rail\x20fires\x20at\x20disputed_awarded\x20and\x20sweeps\x20the\x20remaining\x20principal\x20to\x20the\x20merchant\x20Entity,\x20so\x20the\x20awarded\x20order\x20still\x20exits\x20with\x20a\x20zero\x20balance.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_node_check','scene_id':'machine_forward_guard','name':'Workflow\x20node\x20state\x20validation','description':'Verifies\x20that\x20the\x20order\x20is\x20currently\x20at\x20the\x20correct\x20Machine\x20node\x20before\x20advancing\x20to\x20the\x20next\x20step.\x20Prevents\x20skipping\x20nodes\x20or\x20reverse\x20operations.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_node','type':'string','description':'Expected\x20current\x20node\x20name','required':!![],'constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_node}','name':'Expected\x20current\x20node\x20name'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},'applicable_industries':['rental','ecommerce','education','travel','subscription'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['Forward.guard\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20Machine\x20publish)','witness\x20100\x20(Order→Progress)\x20is\x20a\x20single\x20hop;\x20no\x20risk\x20of\x20chained-derivation\x20breakage','Node\x20names\x20are\x20case-sensitive;\x20query\x20returns\x20a\x20String\x20type',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Camera\x20equipment\x20rental\x20flow:\x20the\x20user\x20must\x20be\x20at\x20the\x20\x27pending\x20return\x27\x20node\x20to\x20perform\x20the\x20return\x20operation.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_fund_gate','scene_id':'machine_forward_guard','name':'Escrow\x20fund\x20gate\x20(order-anchored\x20balance\x20check\x20on\x20a\x20forward)','description':'Gates\x20a\x20forward\x20—\x20canonically\x20a\x20RENEWAL-LOOP\x20edge\x20(post-period\x20node\x20back\x20into\x20a\x20charging\x20node)\x20—\x20on\x20the\x20order\x27s\x20'+'escrow\x20balance:\x20allocation.balance\x20(query\x201051)\x20derived\x20from\x20the\x20submitted\x20Order\x20via\x20witness\x20TypeOrderAllocation(109)\x20'+'must\x20be\x20>=\x20the\x20declared\x20per-period\x20price.\x20Closing\x20the\x20unfunded-advance\x20window:\x20the\x20edge\x20cannot\x20be\x20advanced\x20until\x20the\x20'+'new\x20period\x20is\x20paid\x20into\x20the\x20Allocation\x20(order_renew\x20one-PTB\x20convention\x20funds\x20+\x20records\x20+\x20advances\x20atomically).','recommended_patterns':['P02','P06','P10'],'parameters':[{'name':'min_balance','type':'number','description':'Minimum\x20escrow\x20balance\x20in\x20smallest\x20units\x20(the\x20per-period\x20price)','required':!![],'constraint':'Must\x20be\x20a\x20plain\x20integer\x20in\x20smallest\x20units\x20(no\x20decimals,\x20no\x20unit\x20suffix)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${min_balance}','name':'Minimum\x20escrow\x20balance\x20(per-period\x20price,\x20smallest\x20units)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_as_u256_greater_or_equal','nodes':[{'type':'query','query':'allocation.balance','object':{'identifier':0x0,'convert_witness':'OrderAllocation'},'parameters':[]},{'type':'identifier','identifier':0x1}]},'applicable_industries':['subscription','rental','education','travel','ecommerce','freelance'],'relevant_risks':['R-X1-01','R-C2-03'],'creation_notes':['THE\x20renewal-loop\x20fund\x20gate\x20(crs\x20P2-3,\x20ruling\x202026-10-10\x20⑦):\x20bind\x20on\x20the\x20post-period→charging\x20edge\x20so\x20a\x20revisit\x20without\x20a\x20fresh\x20deposit\x20aborts\x20at\x20the\x20guard,\x20never\x20reaches\x20work\x20states\x20unfunded.','witness\x20109\x20(Order→Allocation)\x20is\x20a\x20single\x20hop\x20via\x20order.allocation\x20(query\x201569);\x20it\x20resolves\x20at\x20verification\x20time,\x20so\x20the\x20guard\x20is\x20authored\x20on\x20the\x20Order\x20address\x20and\x20never\x20needs\x20the\x20Allocation\x20address.','Pair\x20with\x20the\x20order\x20call\x27s\x20order_renew\x20field:\x20ONE\x20PTB\x20pays\x20the\x20period\x20amount\x20into\x20the\x20Allocation\x20and\x20advances\x20the\x20renew\x20forward\x20atomically\x20(fund\x20+\x20record\x20+\x20advance,\x20no\x20unfunded-advance\x20window).','The\x20balance\x20check\x20is\x20a\x20GATE,\x20not\x20a\x20debit\x20—\x20distribution\x20still\x20runs\x20through\x20the\x20allocators\x20(allocation.alloc)\x20bound\x20to\x20their\x20own\x20guards.','Forward.guard\x20cannot\x20be\x20modified\x20after\x20binding\x20(immutable\x20after\x20Machine\x20publish);\x20verify\x20the\x20renewal\x20node\x20names\x20against\x20the\x20Machine\x20before\x20publishing.',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Monthly\x20subscription:\x20advancing\x20\x27completed\x27\x20->\x20\x27working\x27\x20(period\x202)\x20requires\x20escrow\x20balance\x20>=\x20one\x20period\x20price;\x20the\x20order_renew\x20PTB\x20deposits\x20the\x20new\x20period\x20and\x20advances\x20atomically.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_privacy_delivery_proof','scene_id':'machine_forward_guard','name':'Privacy-delivery\x20Proof\x20verification\x20(strict\x20mode,\x20Messenger\x20→\x20on-chain\x20Proof)','description':'Strict-mode\x20guard\x20for\x20\x27privacy\x20information\x20delivered\x20via\x20Messenger\x20but\x20not\x20suitable\x20for\x20on-chain\x20publication\x27\x20'+'(e.g.\x20shipping\x20details,\x20return\x20addresses,\x20private\x20credentials).\x20The\x20verifier\x20submits\x20BOTH\x20a\x20Proof\x20object\x20address\x20'+'(generated\x20by\x20messenger.submitChainProof)\x20AND\x20the\x20Order\x20object\x20address.\x20Three\x20conditions\x20verify:\x20'+'(1)\x20Signer\x20==\x20proof.signer\x20(submitter\x20accountability\x20—\x20\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27),\x20'+'(2)\x20proof.time\x20>\x20order.time\x20(proof\x20created\x20after\x20the\x20order\x20—\x20freshness,\x20prevents\x20stale-proof\x20replay),\x20'+'(3)\x20order.service\x20==\x20service\x20(project\x20binding,\x20suppresses\x20R-C3-05\x20cross-project\x20bypass).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility.\x20The\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20'+'Messenger\x20conversation.\x20Broad-mode\x20alternative\x20(verify\x20Merkle\x20Root\x20string\x20length\x20==\x2066\x20via\x20P15)\x20is\x20documented\x20'+'in\x20creation_notes\x20—\x20broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty\x20and\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20'+'arbitration\x20basis\x20rather\x20than\x20a\x20fund-flow\x20gate.','recommended_patterns':['P10','P15'],'parameters':[{'name':'service_name','type':'string','description':'Service\x20object\x20name\x20(circular\x20ref\x20via\x20P16\x20—\x20resolved\x20after\x20Service\x20publish)','required':!![],'constraint':'Must\x20be\x20a\x20name,\x20not\x20an\x20address\x20(the\x20Service\x20is\x20not\x20yet\x20published\x20when\x20the\x20Guard\x20is\x20created)'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Proof','name':'proof_object\x20(Proof\x20address\x20generated\x20by\x20messenger.submitChainProof,\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20a\x20Proof\x20object\x20created\x20AFTER\x20the\x20order;\x20signer\x20must\x20equal\x20the\x20transaction\x20Signer'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_object\x20(Order\x20address\x20submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20belong\x20to\x20the\x20service\x20declared\x20in\x20identifier\x202\x20(order.service\x20==\x20service)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${service_name}','name':'Service\x20object\x20(project\x20binding,\x20circular\x20ref\x20via\x20name)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'proof.signer','object':{'identifier':0x0},'parameters':[]}]},{'type':'logic_as_u256_greater','nodes':[{'type':'query','query':'proof.time','object':{'identifier':0x0},'parameters':[]},{'type':'query','query':'order.time','object':{'identifier':0x1},'parameters':[]}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['ecommerce','logistics','service','privacy\x20delivery'],'relevant_risks':['R-C3-01','R-C3-05','R-X1-12'],'creation_notes':['STRICT\x20MODE\x20(this\x20template):\x20verifier\x20submits\x20Proof\x20+\x20Order\x20addresses.\x20Three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27beneficiary\x20bears\x20burden\x20of\x20proof\x27\x20principle).','BROAD\x20MODE\x20ALTERNATIVE:\x20use\x20P15\x20retained_submission\x20with\x20a\x20String\x20submission\x20(the\x20Merkle\x20Root)\x20and\x20verify\x20calc_string_length\x20==\x2066\x20(0x\x20prefix\x20+\x2064\x20hex\x20chars).\x20Broad\x20mode\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20Broad\x20mode\x20is\x20suitable\x20when\x20the\x20Guard\x20is\x20mainly\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','Guard\x20table\x20supports\x20MULTIPLE\x20b_submission=true\x20Address\x20identifiers\x20(no\x20submission\x20count\x20limit)\x20—\x20this\x20template\x20uses\x20two:\x20Proof\x20(identifier\x200)\x20and\x20Order\x20(identifier\x201).','submitChainProof(env,\x20peerAddress,\x20description?)\x20sets\x20Proof.about\x20=\x20peerAddress\x20(the\x20counterparty\x27s\x20address).\x20PRIVACY:\x20about\x20records\x20ONLY\x20the\x20contact\x20—\x20it\x20has\x20no\x20on-chain-enforced\x20meaning\x20and\x20must\x20NEVER\x20be\x20a\x20guard\x20decision\x20condition;\x20NEVER\x20pass\x20an\x20order\x20id\x20or\x20any\x20order\x20reference\x20in\x20the\x20description\x20(a\x20description\x20like\x20\x27order:0x…\x27\x20would\x20publicly\x20link\x20the\x20Proof\x20to\x20the\x20Order\x20on\x20chain).\x20All\x20order/business\x20linkage\x20stays\x20inside\x20the\x20Messenger\x20conversation;\x20acceptance\x20of\x20delivered\x20info\x20is\x20the\x20merchant\x27s\x20confirming\x20forward,\x20not\x20the\x20recorded\x20about\x20value.','Query\x20IDs\x20(all\x20zero-parameter):\x20proof.signer=1958,\x20proof.time=1960\x20(invariant\x20clock_derived,\x20always\x20>0),\x20order.time=1574,\x20order.service=1563.','Forward.guard\x20is\x20immutable\x20after\x20Machine\x20publish\x20—\x20choose\x20broad\x20vs\x20strict\x20before\x20publishing.',PROTOCOL_SLOT_254_NOTE,'The\x20same\x20strict\x20Guard\x20can\x20be\x20reused\x20across\x20ALL\x20Machine\x20forwards\x20that\x20need\x20merkle-root\x20verification\x20(shipping,\x20lost,\x20returns,\x20etc.)\x20—\x20the\x20verifier\x20just\x20submits\x20the\x20relevant\x20Proof\x20+\x20Order\x20each\x20time.','Condition\x20(1)\x20Signer==proof.signer\x20suppresses\x20R-C3-01\x20(submission\x20not\x20bound\x20to\x20Signer).\x20Condition\x20(3)\x20order.service==service\x20suppresses\x20R-C3-05\x20(cross-project\x20submission\x20bypass).'],'example_use_case':'MyShop\x20e-commerce:\x20after\x20delivering\x20shipping\x20details\x20/\x20return\x20addresses\x20via\x20Messenger\x20(privacy\x20info\x20not\x20suitable\x20for\x20on-chain\x20publication),\x20'+'the\x20provider\x20generates\x20a\x20Proof\x20via\x20submitChainProof\x20and\x20submits\x20it\x20with\x20the\x20Order\x20address\x20to\x20advance\x20the\x20Machine\x20forward.\x20'+'The\x20Guard\x20verifies\x20the\x20submitter\x20is\x20the\x20Proof\x27s\x20signer,\x20the\x20Proof\x20was\x20created\x20after\x20the\x20order,\x20and\x20the\x20order\x20belongs\x20to\x20this\x20service.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_submission_signer_binding','scene_id':'progress_submission_guard','name':'Submission\x20data\x20signer\x20binding\x20validation','description':'Verifies\x20that\x20the\x20user\x20submitting\x20the\x20data\x20is\x20a\x20legitimate\x20Progress\x20participant\x20and\x20that\x20the\x20submitted\x20value\x20matches\x20expectations.','recommended_patterns':['P08','P15'],'parameters':[{'name':'expected_value','type':'string','description':'Expected\x20submitted\x20value\x20(e.g.\x20node\x20name,\x20status\x20code)','required':!![]},{'name':'provider_address','type':'address','description':'Service\x20provider\x20address\x20(used\x20for\x20identity\x20verification)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'String','name':'User-submitted\x20operation\x20type\x20(e.g.\x20\x27return\x27\x20/\x20\x27damage\x27)','binding_constraint':'Must\x20be\x20one\x20of\x20the\x20predefined\x20operation\x20types'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${provider_address}','name':'Service\x20provider\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'String','value':'${expected_value}','name':'Expected\x20submitted\x20value'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['rental','ecommerce','education','travel'],'relevant_risks':['R-C3-01','R-C3-03','R-X1-12'],'creation_notes':['submission\x20guard\x20cannot\x20be\x20modified\x20after\x20binding','The\x20name\x20of\x20b_submission=true\x20entries\x20must\x20be\x20a\x20complete\x20natural-language\x20description\x20(≥10\x20characters)','Providing\x20a\x20binding_constraint\x20field\x20describing\x20value\x20rules\x20is\x20recommended\x20(R-X1-12)'],'example_use_case':'On\x20equipment\x20return,\x20the\x20user\x20submits\x20the\x20\x27return\x27\x20operation;\x20the\x20Guard\x20verifies\x20that\x20the\x20submitter\x20is\x20the\x20service\x20provider\x20and\x20that\x20the\x20operation\x20type\x20is\x20correct.','verifier_constraint_level':'level1_strict'},{'id':'tpl_reward_one_time_claim','scene_id':'reward_claim','name':'One-time\x20reward\x20claim\x20validation','description':'Verifies\x20that\x20the\x20user\x20is\x20claiming\x20the\x20reward\x20for\x20the\x20first\x20time,\x20preventing\x20duplicate\x20claims.\x20Implemented\x20by\x20querying\x20the\x20historical\x20record\x20count\x20via\x20Repository.','recommended_patterns':['P07','P13'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address\x20(stores\x20claim\x20records)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Reward\x20claim\x20record\x20Repository','object_type':'Repository'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'0','name':'First-claim\x20threshold\x20(record_count\x20==\x200)'}],'example_root':{'type':'logic_equal','nodes':[{'type':'query','query':'repository.data','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]},{'type':'identifier','identifier':0x1}]},'applicable_industries':['ecommerce','education','travel','subscription'],'relevant_risks':['R-C1-03','R-X1-01','R-X1-10'],'creation_notes':['Repository\x20with\x20quote_guard:\x20rigid\x20verification\x20—\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard\x20(see\x20R-X1-10,\x20pattern.repository_quote_guard_subscription)','repository.data\x20query\x20returns\x20U64\x20(record\x20count),\x20compared\x20with\x20identifier[1]\x20(value\x200)','Reward\x20guard\x20is\x20iterable;\x20duplicate-claim\x20protection\x20requires\x20rebuilding\x20the\x20Guard\x20to\x20update\x20the\x20Repository\x20address'],'example_use_case':'New-user\x20first-order\x20reward:\x20query\x20the\x20user\x27s\x20historical\x20order\x20count\x20via\x20Repository;\x20allow\x20claim\x20only\x20when\x20record_count==0.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_write_guard_type_check','scene_id':'repository_write_guard','name':'Storage\x20write\x20type\x20validation','description':'Verifies\x20that\x20the\x20data\x20type\x20written\x20to\x20the\x20Repository\x20matches\x20the\x20declaration\x20and\x20that\x20the\x20writer\x27s\x20identity\x20is\x20legitimate.','recommended_patterns':['P08','P11'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':![],'constraint':'Must\x20be\x20the\x20address\x20of\x20an\x20already-published\x20Repository'},{'name':'entity_registrar','type':'address','description':'EntityRegistrar\x20address\x20(fixed\x200xaab)','required':![],'default':'0xaab'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Writer\x20address\x20(submitted\x20by\x20caller)','binding_constraint':'Must\x20be\x20a\x20valid\x20Entity\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'String','name':'Write\x20data\x20key\x20name\x20(submitted\x20by\x20caller)','binding_constraint':'Key\x20name\x20format\x20must\x20be\x20\x27category:key\x27'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${entity_registrar}','name':'EntityRegistrar\x20system\x20address','is_system_address':!![]}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},{'type':'logic_not','node':{'type':'logic_equal','nodes':[{'type':'identifier','identifier':0x0},{'type':'identifier','identifier':0x2}]}}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-02','R-C3-03','R-C3-04'],'creation_notes':['id_from_submission\x20in\x20write_guard\x20must\x20be\x20of\x20Address\x20type','data_from_submission\x20must\x20match\x20the\x20Repository\x20value_type','EntityRegistrar\x20(0xaab)\x20and\x20EntityLinker\x20(0xaaa)\x20are\x20fixed\x20system\x20addresses'],'example_use_case':'E-commerce\x20platform\x20merchant\x20writes\x20product\x20review\x20data;\x20the\x20Guard\x20verifies\x20that\x20the\x20writer\x20is\x20a\x20registered\x20Entity\x20and\x20not\x20a\x20system\x20address.','verifier_constraint_level':'level1_strict'},{'id':'tpl_usage_guard_threshold','scene_id':'arbitration_usage_guard','name':'Dispute\x20initiation\x20threshold\x20validation','description':'Verifies\x20that\x20the\x20dispute\x20initiator\x20meets\x20minimum\x20conditions\x20(e.g.\x20order\x20amount,\x20time\x20window),\x20filtering\x20out\x20meaningless\x20disputes.','recommended_patterns':['P02','P10'],'parameters':[{'name':'min_amount','type':'number','description':'Minimum\x20dispute\x20amount\x20threshold','required':!![],'constraint':'A\x20reasonable\x20threshold\x20is\x20recommended;\x20too\x20high\x20hinders\x20user\x20rights\x20protection,\x20too\x20low\x20produces\x20many\x20invalid\x20disputes'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Dispute-related\x20Order\x20object\x20address','object_type':'Order'},{'identifier':0x1,'b_submission':![],'value_type':'U64','value':'${min_amount}','name':'Minimum\x20dispute\x20amount\x20threshold'}],'example_root':{'type':'logic_as_u256_greater_or_equal','nodes':[{'type':'query','query':'order.amount','object':{'identifier':0x0},'parameters':[]},{'type':'identifier','identifier':0x1}]},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-X1-01','R-X1-07','R-C3-03'],'creation_notes':['usage_guard\x20is\x20iterable\x20(Arbitration\x20can\x20be\x20updated)','AND\x20conditions\x20should\x20not\x20be\x20too\x20many\x20(R-X1-07);\x20≤3\x20conditions\x20recommended','When\x20Arbitration\x20bPaused=true,\x20blocking\x20takes\x20priority\x20(checked\x20before\x20Guard)'],'example_use_case':'Rental\x20service\x20dispute:\x20only\x20disputes\x20with\x20order\x20amount\x20≥\x2010\x20WOW\x20are\x20accepted,\x20filtering\x20out\x20small-amount\x20conflicts.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_voting_guard_numeric_weight','scene_id':'arbitration_voting_guard','name':'Numeric\x20voting\x20weight\x20validation','description':'Assigns\x20numeric\x20voting\x20weights\x20based\x20on\x20arbitrator\x20rank;\x20higher-rank\x20arbitrators\x20have\x20greater\x20weight.','recommended_patterns':['P12'],'parameters':[{'name':'arbiter_weights','type':'vec_address','description':'Arbitrator\x20address\x20to\x20weight\x20mapping\x20(address:weight\x20pairs)','required':!![],'constraint':'Weights\x20must\x20be\x20numeric\x20types\x20U8-U256'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','name':'Arbitrator\x20address\x20(submitted\x20by\x20caller)','object_type':'Arb'},{'identifier':0x1,'b_submission':![],'value_type':'Vec<Address>','value':'${arbiter_weights}','name':'Authorized\x20arbitrator\x20address\x20list'}],'example_root':{'type':'vec_contains_address','vec':{'type':'identifier','identifier':0x1},'target':{'type':'identifier','identifier':0x0}},'applicable_industries':['ecommerce','rental','education','travel'],'relevant_risks':['R-C3-02','R-C2-01','R-C2-02'],'creation_notes':['The\x20GuardIdentifier\x20for\x20voting_guard\x20must\x20be\x20numeric\x20(U8-U256),\x20otherwise\x20E_GUARD_IDENTIFIER_NOT_NUMBER','Weights\x20from\x20submitted\x20data\x20(b_submission=true)\x20carry\x20forgery\x20risk\x20(R-C3-02\x20critical)','Deriving\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20is\x20recommended,\x20rather\x20than\x20submitting\x20them\x20directly'],'example_use_case':'3-person\x20arbitration\x20panel:\x20chief\x20arbitrator\x20weight\x203,\x20regular\x20arbitrators\x20weight\x201,\x20majority\x20vote\x20decision.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_arb_ruling_won','scene_id':'machine_forward_guard','name':'Arbitration\x20ruling-won\x20refund\x20gate\x20(stable\x20indemnity\x20state,\x20two-slot\x20order+arb)','description':'Guard\x20for\x20a\x20Machine\x20forward\x20that\x20pays\x20a\x20refund\x20when\x20the\x20buyer\x20WON\x20the\x20arbitration\x20'+'(e.g.\x20a\x20booking\x20\x27arb_refund\x27\x20edge\x20from\x20disputed\x20→\x20refunded).\x20The\x20verifier\x20submits\x20BOTH\x20'+'the\x20Order\x20address\x20(slot\x200)\x20and\x20the\x20Arb\x20case\x20object\x20address\x20(slot\x201);\x20the\x20gate\x20checks:\x20'+'(1)\x20arb.order\x20==\x20order\x20—\x20the\x20Arb\x20case\x20IS\x20this\x20order\x27s\x20dispute,\x20and\x20(2)\x20arb.indemnity\x20some\x20==\x20true\x20'+'(Bool\x20—\x20set\x20by\x20the\x20ruling;\x20arb_withdraw\x20sweeps\x20ONLY\x20the\x20fee\x20balance\x20and\x20never\x20touches\x20it,\x20so\x20a\x20fee\x20'+'withdrawal\x20cannot\x20clear\x20it;\x20a\x20reset\x20(objection\x20cycle)\x20clears\x20it,\x20correctly\x20re-gating\x20an\x20'+'overturned\x20ruling).\x20The\x20two-slot\x20form\x20makes\x20the\x20pair\x20'+'self-certifying:\x20a\x20merchant\x20holding\x20a\x20favourable\x20ruling\x20on\x20their\x20own\x20order\x20cannot\x20pair\x20it\x20'+'with\x20a\x20victim\x20order\x27s\x20address\x20to\x20redirect\x20that\x20victim\x27s\x20escrow\x20(F-02).','recommended_patterns':['P06','P09'],'parameters':[],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20address\x20(recipient\x20—\x20must\x20equal\x20payment_info.for_object;\x20submitted\x20by\x20the\x20forward\x20executor)'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Arb','name':'Arb\x20case\x20object\x20address\x20(submitted\x20by\x20the\x20forward\x20executor\x20at\x20runtime)'},{'identifier':0x2,'b_submission':![],'value_type':'Bool','value':!![],'name':'Expected\x20indemnity\x20PRESENCE\x20(true\x20=\x20a\x20ruling\x20exists.\x20PRESENCE\x20ONLY\x20—\x20a\x20Some(0)\x20merchant-favor\x20ruling\x20ALSO\x20passes\x20this\x20leg;\x20require\x20arb.indemnity.amount\x20>\x200\x20to\x20demand\x20a\x20non-zero\x20award)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'arb.order','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x0}]},{'type':'logic_equal','nodes':[{'type':'query','query':'arb.indemnity\x20some','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['travel','ecommerce','rental','education','subscription'],'relevant_risks':['R-X1-16'],'creation_notes':['⚠️\x20TRANSIENT-STATE\x20TRAP\x20(verified\x20on\x20testnet,\x20booking\x20o10):\x20gating\x20on\x20arb.status\x20==\x205\x20(Finished)\x20is\x20WRONG\x20—\x20arb.status\x20is\x20transient:\x20after\x20the\x20award\x20is\x20settled,\x20a\x20legitimate\x20arb_withdraw\x20by\x20the\x20arbitrator\x20advances\x20the\x20case\x205\x20(Finished)\x20→\x206\x20(Withdrawn),\x20permanently\x20killing\x20the\x20refund\x20edge.\x20Because\x20Guard\x20AND\x20Machine\x20are\x20immutable\x20after\x20publish\x20(IMMUT-001),\x20a\x20mistyped\x20arb.status\x20gate\x20strands\x20the\x20refund\x20funds\x20forever\x20(o10:\x201.5\x20WOW\x20locked\x20with\x20no\x20on-chain\x20exit).','arb.indemnity\x20some\x20(Bool)\x20is\x20a\x20PRESENCE\x20signal\x20—\x20\x27a\x20ruling\x20is\x20on\x20chain\x27\x20(klk-ln-261011\x20F18:\x20arb.rs\x20indemnity_some\x20checks\x20the\x20Option,\x20NOT\x20the\x20amount;\x20a\x20zero-award\x20merchant-favor\x20ruling\x20ALSO\x20sets\x20Some(0)\x20and\x20passes\x20a\x20some==true\x20leg,\x20verified\x20in\x20T5).\x20It\x20is\x20NOT\x20by\x20itself\x20a\x20\x27buyer\x20won\x27\x20proof:\x20to\x20require\x20an\x20actual\x20award\x20add\x20an\x20arb.indemnity.amount\x20>\x200\x20leg.\x20Never\x20touched\x20by\x20arb_withdraw\x20(the\x20fee\x20sweep\x20pulls\x20only\x20from\x20the\x20fee\x20balance);\x20cleared\x20by\x20a\x20reset\x20(objection\x20cycle)\x20—\x20the\x20gate\x20fails\x20shut\x20during\x20the\x20objection\x20cycle\x20and\x20re-arms\x20only\x20after\x20a\x20fresh\x20ruling.','Time-sensitive\x20alternative:\x20arb.indemnity.time\x20(U64\x20ruling\x20timestamp)\x20combined\x20with\x20a\x20deadline\x20—\x20also\x20survives\x20fee\x20withdrawal.','arb.indemnity.amount\x20(U64)\x20exposes\x20the\x20awarded\x20amount\x20if\x20the\x20refund\x20leg\x20must\x20match\x20the\x20ruling\x20exactly;\x20the\x20native\x20query\x20errors\x20on\x20a\x20None\x20field,\x20so\x20an\x20amount-equality\x20leg\x20is\x20fail-closed\x20against\x20never-ruled\x20and\x20reset\x20states.','A\x20reset\x20(state\x204\x20objection\x20cycle)\x20CLEARS\x20the\x20indemnity\x20—\x20arb.indemnity\x20some\x20correctly\x20re-gates\x20to\x20false,\x20so\x20a\x20voided\x20ruling\x20cannot\x20trigger\x20the\x20refund\x20edge.','TWO-SLOT\x20DESIGN\x20(F-02\x20fix):\x20the\x20refund\x20rail\x20has\x20TWO\x20consumers\x20of\x20the\x20same\x20submission\x20—\x20the\x20forward\x20guard\x20needs\x20the\x20Arb\x20object\x20(to\x20read\x20the\x20ruling),\x20while\x20the\x20allocator\x20recipient\x20GuardIdentifier(0)\x20needs\x20the\x20Order\x20object\x20(payment_info.for_object\x20binding).\x20A\x20single\x20slot\x20cannot\x20satisfy\x20both.\x20This\x20two-slot\x20form\x20(slot\x200\x20=\x20Order,\x20slot\x201\x20=\x20Arb)\x20makes\x20the\x20pair\x20self-certifying\x20via\x20the\x20arb.order\x20==\x20order\x20binding\x20assertion,\x20closing\x20the\x20redirect\x20attack\x20where\x20a\x20merchant\x20pairs\x20their\x20own\x20favourable\x20ruling\x20with\x20a\x20victim\x20order\x27s\x20address.','The\x20allocator\x20only\x20reads\x20slot\x200\x20(GuardIdentifier(0)\x20→\x20Order),\x20so\x20the\x20refund\x20recipient\x20resolves\x20correctly;\x20the\x20forward\x20guard\x20reads\x20slot\x201\x20(Arb)\x20for\x20the\x20ruling\x20state.',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Accommodation\x20overbooking\x20dispute:\x20buyer\x20files,\x20arbitrators\x20rule\x20in\x20favor\x20(indemnity\x20=\x20fund\x20boundary);\x20the\x20merchant\x27s\x20refund\x20forward\x20opens\x20only\x20while\x20arb.indemnity\x20some\x20==\x20true,\x20regardless\x20of\x20whether\x20the\x20arbitrator\x20has\x20already\x20withdrawn\x20the\x20case\x20fee.\x20The\x20forward\x20executor\x20submits\x20the\x20Order\x20and\x20Arb\x20addresses\x20together;\x20the\x20allocator\x20pays\x20the\x20Order-anchored\x20recipient\x20only\x20when\x20the\x20binding\x20assertion\x20holds.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_arb_ruling_dismissed','scene_id':'machine_forward_guard','name':'Arbitration\x20ruling-dismissed\x20gate\x20(a\x20real\x20ruling\x20exists\x20AND\x20it\x20favoured\x20the\x20merchant,\x20two-slot\x20order+arb)','description':'Guard\x20for\x20a\x20Machine\x20forward\x20that\x20closes\x20a\x20claim\x20when\x20the\x20arbitration\x20DISMISSED\x20it\x20'+'(e.g.\x20\x27claim_dismissed\x27\x20edge\x20from\x20a\x20post-stay\x20claim\x20node\x20to\x20payout,\x20or\x20\x27claim_dismissed_resume\x27\x20'+'restoring\x20the\x20booking).\x20The\x20verifier\x20submits\x20BOTH\x20the\x20Order\x20address\x20(slot\x200)\x20and\x20the\x20Arb\x20case\x20'+'object\x20address\x20(slot\x201);\x20the\x20gate\x20checks:\x20(1)\x20arb.order\x20==\x20order\x20—\x20the\x20Arb\x20case\x20IS\x20this\x20order\x27s\x20'+'dispute,\x20and\x20(2)\x20arb.indemnity.amount\x20==\x200\x20—\x20the\x20ruling\x20awarded\x20the\x20buyer\x20NOTHING\x20'+'(the\x20merchant-favor\x20outcome;\x20the\x20buyer-favor\x20outcome\x20is\x20indemnity.amount\x20>\x200,\x20which\x20gates\x20the\x20'+'companion\x20tpl_forward_arb_ruling_won\x20refund\x20edge).\x20Without\x20this\x20gate\x20a\x20bare-permission\x20dismissal\x20'+'edge\x20lets\x20the\x20platform\x20kill\x20a\x20buyer\x27s\x20claim\x20and\x20release\x20the\x20pool\x20with\x20zero\x20on-chain\x20ruling\x20'+'evidence\x20(N-T2\x20/\x20D2-DISMISS-EDGE-GUARD).','recommended_patterns':['P06','P09'],'parameters':[],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20address\x20(must\x20equal\x20arb.order;\x20submitted\x20by\x20the\x20forward\x20executor)'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','object_type':'Arb','name':'Arb\x20case\x20object\x20address\x20(submitted\x20by\x20the\x20forward\x20executor\x20at\x20runtime)'},{'identifier':0x2,'b_submission':![],'value_type':'U64','value':'0','name':'Expected\x20indemnity\x20amount\x20(0\x20=\x20ruling\x20favoured\x20the\x20merchant)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'arb.order','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x0}]},{'type':'logic_as_u256_equal','nodes':[{'type':'query','query':'arb.indemnity.amount','object':{'identifier':0x1},'parameters':[]},{'type':'identifier','identifier':0x2}]}]},'applicable_industries':['travel','ecommerce','rental','education','subscription'],'relevant_risks':['R-X1-16','R-C3-05'],'creation_notes':['WHY\x20amount\x20==\x200\x20alone\x20is\x20decisive:\x20the\x20native\x20arb.indemnity.amount\x20query\x20ERRORS\x20on\x20a\x20None\x20field,\x20and\x20a\x20guard-query\x20error\x20fails\x20the\x20verification\x20closed\x20—\x20so\x20the\x20leg\x20passes\x20ONLY\x20when\x20indemnity\x20is\x20Some(0),\x20and\x20indemnity\x20is\x20Some\x20ONLY\x20after\x20a\x20ruling\x20(the\x20state\x20machine\x27s\x20reset\x20path\x20clears\x20the\x20indemnity\x20on\x20an\x20overturned\x20ruling\x20—\x20no\x20separate\x20generation\x20counter\x20is\x20needed).\x20A\x20case\x20nobody\x20ever\x20ruled\x20on\x20(None)\x20and\x20a\x20reset/objection\x20case\x20(None)\x20both\x20fail\x20shut,\x20so\x20the\x20platform\x20can\x20never\x20dismiss\x20with\x20zero\x20ruling\x20evidence.','OVERTURN\x20SEMANTICS:\x20a\x20reset\x20clears\x20indemnity,\x20so\x20the\x20amount\x20==\x200\x20leg\x20errors\x20on\x20the\x20None\x20field\x20and\x20the\x20guard\x20verification\x20fails\x20closed.\x20After\x20a\x20re-ruling\x20the\x20gate\x20reads\x20the\x20NEW\x20amount,\x20so\x20the\x20gate\x20reflects\x20the\x20standing\x20ruling\x20—\x20the\x20correct\x20business\x20semantics:\x20a\x20fresh\x20merchant-favor\x20ruling\x20justifies\x20dismissal\x20exactly\x20as\x20much\x20as\x20the\x20overturned\x20one\x20did.','Same\x20two-slot\x20shape\x20as\x20tpl_forward_arb_ruling_won\x20(slot\x200\x20=\x20Order\x20for\x20the\x20arb.order\x20binding,\x20slot\x201\x20=\x20Arb\x20for\x20the\x20ruling\x20state)\x20—\x20ONE\x20INSTANCE\x20PER\x20EXIT\x20EDGE,\x20never\x20share\x20a\x20guard\x20between\x20two\x20forwards.','NEVER\x20express\x20\x27favoured\x20the\x20merchant\x27\x20as\x20arb.indemnity\x20some\x20==\x20false:\x20it\x20conflates\x20never-ruled,\x20reset,\x20and\x20ruled-zero\x20states.\x20The\x20single\x20decisive\x20form\x20is\x20arb.indemnity.amount\x20==\x200\x20(fail-closed\x20on\x20None\x20via\x20the\x20native\x20query\x20error).',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Post-stay\x20claim\x20dismissed:\x20the\x20arbitrator\x20ruled\x20the\x20evidence\x20does\x20not\x20support\x20the\x20guest\x27s\x20claim\x20(indemnity\x200);\x20the\x20platform\x27s\x20claim_dismissed\x20forward\x20opens\x20only\x20when\x20THAT\x20ruling\x20is\x20on-chain\x20and\x20unoverturned,\x20then\x20the\x20settlement\x20release\x20pays\x20out\x20of\x20the\x20intact\x20pool.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_gen_passport_identity','scene_id':'gen_passport_guard','name':'Passport\x20identity\x20credential\x20generation\x20validation','description':'Standalone\x20Guard;\x20after\x20verifying\x20the\x20user\x27s\x20identity,\x20generates\x20a\x20Passport\x20with\x20a\x20credential,\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations.','recommended_patterns':['P03','P14'],'parameters':[{'name':'authorized_address','type':'address','description':'Authorized\x20address\x20(or\x20use\x20Vec<Address>\x20whitelist)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${authorized_address}','name':'Authorized\x20address'}],'example_root':{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x0}]},'applicable_industries':['ecommerce','education','travel','subscription','rental'],'relevant_risks':['R-C1-01','R-X1-10','R-X1-13'],'creation_notes':['gen_passport\x20is\x20a\x20standalone\x20Guard;\x20it\x20does\x20not\x20bind\x20a\x20Host\x20Object\x20(host_object:\x20Standalone)','quote_guard\x20is\x20a\x20rigid\x20requirement:\x20if\x20the\x20Guard\x20queries\x20Repository\x20data\x20with\x20quote_guard\x20set,\x20the\x20quote_guard\x20must\x20be\x20verified\x20(see\x20R-X1-10)','The\x20Guard\x20can\x20be\x20depended\x20on\x20by\x20other\x20Guards\x20via\x20rely\x20(requires\x20rep=true)','The\x20generated\x20Passport\x20can\x20be\x20used\x20as\x20submission\x20data\x20for\x20subsequent\x20operations'],'example_use_case':'After\x20the\x20user\x20passes\x20identity\x20verification,\x20a\x20Passport\x20is\x20generated;\x20this\x20Passport\x20is\x20then\x20submitted\x20as\x20an\x20identity\x20credential\x20in\x20subsequent\x20service\x20purchases.','verifier_constraint_level':'level1_strict'},{'id':'tpl_repository_quote_guard_subscription','scene_id':'repository_write','name':'Repository\x20data\x20subscription\x20with\x20payment\x20verification','description':'Repository\x20quote_guard\x20requires\x20payment\x20proof\x20for\x20data\x20access.\x20When\x20any\x20Guard\x20queries\x20this\x20Repository\x27s\x20data\x20(query\x201167),\x20the\x20quote_guard\x20is\x20rigidly\x20verified.\x20Enables\x20data\x20subscription\x20revenue\x20model\x20(e.g.,\x20weather\x20data,\x20market\x20oracle\x20data).','recommended_patterns':['P03','P07'],'parameters':[{'name':'repository_address','type':'address','description':'Repository\x20object\x20address','required':!![]},{'name':'subscription_price','type':'number','description':'Subscription\x20payment\x20amount\x20required\x20for\x20data\x20access','required':!![]},{'name':'payment_for_object','type':'address','description':'Payment\x20for_object\x20(Repository\x20address)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${repository_address}','name':'Repository\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'U256','value':'${subscription_price}','name':'Subscription\x20price'},{'identifier':0x2,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(for_object\x20verification)'},{'identifier':0x3,'b_submission':!![],'value_type':'U256','name':'Submitted\x20Payment\x20amount'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x2}},{'type':'identifier','identifier':0x0}]},{'type':'logic_as_u256_greater_or_equal','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x2}},{'type':'identifier','identifier':0x1}]}]},'applicable_industries':['subscription','travel','rental','education'],'relevant_risks':['R-X1-10'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20valid\x20Payment\x20via\x20Passport\x20(b_submission=true),\x20quote_guard\x20verifies\x20Payment\x20fields','quote_guard\x20must\x20be\x20a\x20standalone\x20repository-backed\x20guard:\x20immutable=true,\x20relies\x20empty,\x20rep=true','Repository.owner_receive<T>\x20accepts\x20Payment\x20as\x20subscription\x20revenue','Rigid\x20verification:\x20any\x20guard\x20querying\x20this\x20Repository\x27s\x20data\x20MUST\x20satisfy\x20the\x20quote_guard','Two-phase:\x20passport\x20generation\x20scans\x20+\x20prepares,\x20passport\x20verification\x20re-checks\x20+\x20verifies','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.amount\x20(id\x201100,\x20U256)'],'example_use_case':'Weather\x20data\x20provider\x20publishes\x20daily\x20temperature\x20data\x20to\x20Repository.\x20Insurance\x20Machine\x20queries\x20weather\x20data;\x20user\x20must\x20pay\x20subscription\x20(Payment)\x20to\x20access\x20data\x20in\x20their\x20insurance\x20claim\x20flow.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_buy_guard_order_holder','scene_id':'service_buy_guard','name':'Supply\x20chain\x20sub-order\x20purchase\x20verification','description':'Sub-service\x20buy_guard\x20verifies\x20the\x20user\x20owns\x20a\x20main\x20service\x20order.\x20Enables\x20supply\x20chain\x20milestone\x20unlock:\x20each\x20milestone\x20=\x20one\x20sub-order,\x20sub-service\x20only\x20purchasable\x20by\x20users\x20who\x20bought\x20the\x20main\x20service.','recommended_patterns':['P03','P04'],'parameters':[{'name':'main_service_address','type':'address','description':'Main\x20Service\x20object\x20address','required':!![]},{'name':'main_order_address','type':'address','description':'Submitted\x20main\x20Order\x20address\x20(b_submission=true)','required':![],'constraint':'If\x20using\x20P16\x20circular\x20reference,\x20use\x20service\x20name\x20instead\x20of\x20address'}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${main_service_address}','name':'Main\x20service\x20address'},{'identifier':0x1,'b_submission':!![],'value_type':'Address','name':'Submitted\x20main\x20Order\x20(ownership\x20verification)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'order.owner','object':{'identifier':0x1}},{'type':'context','context':'Signer'}]},{'type':'logic_equal','nodes':[{'type':'query','query':'order.service','object':{'identifier':0x1}},{'type':'identifier','identifier':0x0}]}]},'applicable_industries':['travel','rental','education','freelance'],'relevant_risks':['R-C3-05'],'creation_notes':['VERIFIER-EVIDENCE\x20DESIGN:\x20user\x20submits\x20main\x20Order\x20as\x20evidence\x20(b_submission=true),\x20buy_guard\x20verifies\x20ownership\x20+\x20service\x20match','No\x20parent_order\x20field\x20needed\x20—\x20relationship\x20verified\x20via\x20buy_guard\x20querying\x20submitted\x20Order\x20fields','Each\x20milestone\x20=\x20one\x20sub-order\x20with\x20its\x20own\x20Service\x20+\x20buy_guard','Main\x20flow\x20can\x20branch\x20to\x20different\x20sub-services\x20based\x20on\x20Machine\x20node\x20progression','VERIFIED\x20QUERY\x20NAMES:\x20order.owner\x20(id\x201202,\x20Address),\x20order.service\x20(id\x201203,\x20Address)'],'example_use_case':'Travel\x20package:\x20main\x20service\x20=\x20tour\x20booking.\x20Sub-services\x20=\x20hotel,\x20guide,\x20transfer\x20—\x20each\x20with\x20buy_guard\x20verifying\x20the\x20user\x20purchased\x20the\x20main\x20tour\x20order.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_payment_exception_compensation','scene_id':'machine_forward_guard','name':'Exception\x20branch\x20compensation\x20Payment','description':'Machine\x20forward\x20guard\x20for\x20exception\x20handling:\x20verifies\x20a\x20compensation\x20Payment\x20bound\x20to\x20specific\x20order\x20+\x20guard\x20+\x20unique\x20progress\x20step\x20(history\x20count)\x20+\x20node\x20name.\x20Enables\x20user-friendly\x20exception\x20branches\x20(e.g.,\x20delivery\x20delay\x20>\x2030min\x20triggers\x20auto-compensation).','recommended_patterns':['P03','P07','P09'],'parameters':[{'name':'order_address','type':'address','description':'Order\x20object\x20address\x20(Payment\x20for_object\x20target)','required':!![]},{'name':'this_guard_address','type':'address','description':'This\x20guard\x27s\x20own\x20address\x20(Payment\x20for_guard\x20target)','required':!![]},{'name':'compensation_amount','type':'number','description':'Minimum\x20compensation\x20amount','required':!![]},{'name':'expected_node_name','type':'string','description':'Expected\x20node\x20name\x20(stored\x20in\x20PaymentInfo.remark,\x20compared\x20with\x20progress.current)','required':!![]}],'example_table':[{'identifier':0x0,'b_submission':![],'value_type':'Address','value':'${order_address}','name':'Order\x20address'},{'identifier':0x1,'b_submission':![],'value_type':'Address','value':'${this_guard_address}','name':'This\x20guard\x20address'},{'identifier':0x2,'b_submission':![],'value_type':'U256','value':'${compensation_amount}','name':'Compensation\x20amount'},{'identifier':0x3,'b_submission':![],'value_type':'String','value':'${expected_node_name}','name':'Expected\x20node\x20name\x20(for\x20remark\x20comparison)'},{'identifier':0x4,'b_submission':!![],'value_type':'Address','name':'Submitted\x20Payment\x20(compensation\x20proof)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.for','object':{'identifier':0x4}},{'type':'identifier','identifier':0x0}]},{'type':'logic_equal','nodes':[{'type':'query','query':'payment.info.guard','object':{'identifier':0x4}},{'type':'identifier','identifier':0x1}]},{'type':'logic_as_u256_greater_or_equal','nodes':[{'type':'query','query':'payment.amount','object':{'identifier':0x4}},{'type':'identifier','identifier':0x2}]},{'type':'logic_as_u256_equal','nodes':[{'type':'query','query':'payment.info.index','object':{'identifier':0x4}},{'type':'query','query':'progress.history\x20count'}]},{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'payment.info.remark','object':{'identifier':0x4}},{'type':'query','query':'progress.current'}]}]},'applicable_industries':['rental','travel','ecommerce','freelance'],'relevant_risks':[],'creation_notes':['VERIFIED:\x20PaymentInfo\x20(for_object,\x20for_guard,\x20remark,\x20index),\x20payment_info_with_guard','VERIFIED:\x20withdraw\x20creates\x20the\x20Payment\x20as\x20a\x20fresh\x20singleton\x20object\x20from\x20the\x20withdrawn\x20object\x20set','VERIFIED\x20QUERY\x20NAMES:\x20payment.info.for\x20(id\x201107,\x20Address),\x20payment.info.guard\x20(id\x201109,\x20Address),\x20payment.info.index\x20(id\x201111,\x20U64),\x20payment.info.remark\x20(id\x201110,\x20String),\x20payment.amount\x20(id\x201100,\x20U64;\x20logic_as_u256_ge\x20casts\x20U64→U256\x20for\x20comparison)','VERIFIED\x20INDEX:\x20progress.history\x20count\x20(id\x201273,\x20U64)\x20=\x20unique\x20monotonically\x20increasing\x20step\x20index.\x20Even\x20in\x20cycles,\x20each\x20entry\x20has\x20a\x20different\x20count.','VERIFIED\x20NODE\x20NAME:\x20progress.current\x20(id\x201253,\x20String)\x20=\x20current\x20node\x20name.\x20A\x20node\x20can\x20be\x20entered\x20multiple\x20times\x20in\x20cycles,\x20but\x20the\x20history\x20count\x20is\x20unique\x20each\x20time.','DESIGN:\x20payment.info.index\x20stores\x20the\x20step\x20index\x20set\x20by\x20Treasury\x20at\x20creation\x20time;\x20progress.history\x20count\x20provides\x20the\x20current\x20unique\x20step.\x20Comparing\x20them\x20ensures\x20the\x20Payment\x20was\x20created\x20for\x20THIS\x20specific\x20progress\x20step.','DESIGN:\x20payment.info.remark\x20stores\x20the\x20node\x20name;\x20progress.current\x20provides\x20the\x20current\x20node\x20name.\x20Comparing\x20them\x20provides\x20semantic\x20verification\x20of\x20which\x20node\x20triggered\x20the\x20compensation.','ANTI-REUSE:\x204-dimensional\x20binding:\x20for_object\x20(Order)\x20+\x20for_guard\x20(Guard)\x20+\x20index\x20(unique\x20step)\x20+\x20remark\x20(node\x20name).\x20Same\x20Payment\x20cannot\x20be\x20reused\x20in\x20other\x20contexts.','Payment\x20is\x20freeze_object\x20(immutable)\x20—\x20cannot\x20be\x20modified\x20after\x20creation','VERIFIER-EVIDENCE\x20DESIGN:\x20customer\x20submits\x20Payment,\x20guard\x20verifies\x20binding\x20fields\x20match\x20current\x20context','Treasury\x20withdraws\x20compensation\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=history_count_at_creation,\x20remark=node_name)',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Food\x20delivery:\x20if\x20delivery\x20delayed\x20>\x2030min\x20at\x20node\x20\x27delayed\x27\x20(history\x20count=5),\x20restaurant\x20Treasury\x20auto-compensates\x20$5\x20to\x20customer\x20with\x20PaymentInfo(for_object=order,\x20for_guard=this,\x20index=5,\x20remark=\x27delayed\x27).\x20Customer\x20submits\x20Payment\x20via\x20Passport,\x20guard\x20verifies\x20index\x20matches\x20current\x20history\x20count\x20AND\x20remark\x20matches\x20current\x20node\x20name.','verifier_constraint_level':'level3_scene_combined'},{'id':'tpl_forward_content_subscription_deliver','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20delivery\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20delivery\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-delivery\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20author\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Prevents\x20unauthorized\x20parties\x20from\x20publishing\x20content\x20on\x20behalf\x20of\x20the\x20author.\x20'+'Designed\x20for\x20Substack-style\x20content\x20subscription:\x20Paid\x20→\x20ContentPublished\x20→\x20Completed\x20(success\x20path),\x20'+'with\x20Cancelled\x20and\x20Disputed\x20branches\x20using\x20separate\x20guards\x20(tpl_forward_content_subscription_cancel,\x20'+'tpl_forward_content_subscription_refund).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_delivery_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20delivery\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).\x20This\x20is\x20the\x20node\x20from\x20which\x20the\x20\x27Deliver\x27\x20forward\x20advances.'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(author\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'author_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20author\x20role\x20(who\x20can\x20publish\x20content)','required':!![],'default':'1000','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator,\x20reader\x20uses\x20namedOperator=\x27\x27\x20(no\x20specific\x20operator).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)','binding_constraint':'Must\x20be\x20an\x20Order\x20belonging\x20to\x20the\x20bound\x20Service;\x20progress.current\x20must\x20match\x20expected_pre_delivery_node'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_delivery_node}','name':'Expected\x20pre-delivery\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20author\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${author_permission_index}','name':'Author\x20permission\x20index\x20(e.g.\x201000)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String)\x20—\x20current\x20node\x20name;\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index)','SUBSTACK\x20DEPLOYMENT:\x20this\x20guard\x20was\x20used\x20in\x20Substack\x20v2\x20Service.\x20Original\x20v1\x20Service\x20was\x20published\x20without\x20arbitrations\x20—\x20had\x20to\x20be\x20recreated\x20as\x20v2\x20with\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21).','AUTHOR\x20ROLE:\x20permission\x20index\x201000\x20=\x20author\x20(publish\x20+\x20cancel).\x20namedOperator=\x27\x27\x20for\x20reader\x20role\x20(open\x20—\x20any\x20subscriber).\x20Arbitrator\x20uses\x20index\x201500.','FORWARD\x20DESIGN:\x20\x27Deliver\x27\x20forward\x20advances\x20from\x20\x27Ordered\x27\x20→\x20\x27ContentPublished\x27.\x20Threshold=1,\x20weight=1,\x20permissionIndex=1000\x20(author\x20only).','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.\x20Subscribers\x20cannot\x20double-claim\x20by\x20triggering\x20multiple\x20forwards.','IMMUTABILITY:\x20Forward.guard\x20cannot\x20be\x20modified\x20after\x20Machine\x20publish.\x20Verify\x20all\x203\x20guards\x20(deliver/cancel/refund)\x20are\x20correctly\x20bound\x20BEFORE\x20publishing\x20the\x20Machine.','CIRCULAR\x20REF:\x20if\x20Permission\x20is\x20not\x20yet\x20created,\x20use\x20its\x20name\x20(not\x20address)\x20in\x20value\x20field\x20—\x20Guard\x20resolves\x20names\x20at\x20evaluation\x20time,\x20not\x20at\x20creation\x20time.',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5/month.\x20Author\x20publishes\x20content\x20→\x20\x27Deliver\x27\x20forward\x20advances\x20Ordered→ContentPublished.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20node\x20(not\x20already\x20delivered),\x20AND\x20(2)\x20Signer\x20holds\x20permission\x20index\x201000\x20on\x20author\x27s\x20Permission\x20object.\x20'+'Prevents\x20a\x20malicious\x20party\x20from\x20publishing\x20fake\x20content.\x20Subscriber\x20cannot\x20trigger\x20\x27Deliver\x27\x20(lacks\x20permission).','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_cancel','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20cancel\x20verification\x20(Substack-style)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20cancel\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-cancel\x20node\x20'+'(e.g.\x20\x27Ordered\x27),\x20AND\x20(2)\x20the\x20Signer\x20is\x20the\x20order\x20owner\x20(subscriber).\x20Allows\x20subscriber\x20to\x20cancel\x20within\x20grace\x20period\x20'+'for\x20full\x20refund.\x20Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Cancelled\x20(terminal-cancel),\x20with\x20refund\x20via\x20Allocation\x20template.','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_cancel_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20cancel\x20(e.g.\x20\x27Ordered\x27)','required':!![],'default':'Ordered','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_cancel_node}','name':'Expected\x20pre-cancel\x20node\x20name\x20(e.g.\x20\x27Ordered\x27)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20order.owner\x20(id\x201202,\x20Address)\x20—\x20order\x20holder\x20(subscriber).','SUBSCRIBER-ONLY:\x20only\x20the\x20order\x20owner\x20can\x20cancel\x20—\x20prevents\x20third-party\x20griefing.\x20Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.','GRACE\x20PERIOD:\x20this\x20guard\x20does\x20NOT\x20enforce\x20a\x20time\x20window.\x20If\x20a\x20grace\x20period\x20is\x20needed\x20(e.g.\x20cancel\x20within\x2024h\x20of\x20payment),\x20add\x20a\x20third\x20condition:\x20context(Clock)\x20<=\x20order.time\x20+\x20grace_period.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Cancelled\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Ordered\x27\x20has\x20competing\x20forwards\x20(Deliver|Cancel|Dispute),\x20each\x20with\x20its\x20own\x20guard,\x20the\x20first\x20guard\x20to\x20verify\x20wins.',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20pays\x20$5,\x20then\x20changes\x20mind\x20before\x20content\x20is\x20published.\x20\x27Cancel\x27\x20forward\x20advances\x20Ordered→Cancelled.\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Ordered\x27\x20(not\x20yet\x20delivered),\x20AND\x20(2)\x20Signer\x20is\x20the\x20order\x20owner.\x20'+'Author\x20cannot\x20cancel\x20on\x20behalf\x20of\x20subscriber.\x20Refund\x20triggers\x20automatically\x20via\x20Allocation\x20on\x20\x27Cancelled\x27\x20node.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_forward_content_subscription_refund','scene_id':'machine_forward_guard','name':'Content\x20subscription\x20refund\x20verification\x20(Substack-style,\x20arbitration-triggered)','description':'Forward\x20guard\x20for\x20content\x20subscription\x20dispute/refund\x20flow.\x20Verifies\x20that\x20(1)\x20the\x20order\x20is\x20at\x20the\x20expected\x20pre-dispute\x20node\x20'+'(e.g.\x20\x27Disputed\x27),\x20AND\x20(2)\x20the\x20Signer\x20holds\x20the\x20arbitrator\x27s\x20permission\x20index\x20on\x20the\x20bound\x20Permission\x20object.\x20'+'Only\x20the\x20arbitrator\x20can\x20advance\x20Disputed→Refunded,\x20ensuring\x20dispute\x20resolution\x20is\x20impartial.\x20'+'Designed\x20for\x20Substack-style:\x20Paid\x20→\x20Disputed\x20→\x20Refunded\x20(terminal-dispute).','recommended_patterns':['P06','P09'],'parameters':[{'name':'expected_pre_refund_node','type':'string','description':'Expected\x20current\x20node\x20name\x20BEFORE\x20refund\x20(e.g.\x20\x27Disputed\x27)','required':!![],'default':'Disputed','constraint':'Must\x20exactly\x20match\x20the\x20name\x20defined\x20in\x20Machine\x20nodes\x20(case-sensitive).'},{'name':'permission_object','type':'address','description':'Permission\x20object\x20address\x20bound\x20to\x20the\x20Machine\x20(arbitrator\x20role\x20lives\x20here)','required':!![],'constraint':'Must\x20be\x20the\x20same\x20Permission\x20object\x20bound\x20to\x20the\x20Machine.\x20Use\x20name\x20(not\x20address)\x20if\x20Permission\x20is\x20not\x20yet\x20created.'},{'name':'arbitrator_permission_index','type':'number','description':'Permission\x20index\x20reserved\x20for\x20the\x20arbitrator\x20role\x20(who\x20can\x20resolve\x20disputes)','required':!![],'default':'1500','constraint':'Must\x20match\x20the\x20index\x20configured\x20in\x20the\x20Permission\x20object.\x20Substack\x20convention:\x201000=author,\x201500=arbitrator.'}],'example_table':[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(submitted\x20by\x20verifier\x20at\x20runtime)'},{'identifier':0x1,'b_submission':![],'value_type':'String','value':'${expected_pre_refund_node}','name':'Expected\x20pre-refund\x20node\x20name\x20(e.g.\x20\x27Disputed\x27)'},{'identifier':0x2,'b_submission':![],'value_type':'Address','value':'${permission_object}','name':'Permission\x20object\x20address\x20(bound\x20to\x20Machine,\x20holds\x20arbitrator\x20role)'},{'identifier':0x3,'b_submission':![],'value_type':'U64','value':'${arbitrator_permission_index}','name':'Arbitrator\x20permission\x20index\x20(e.g.\x201500)'},{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}],'example_root':{'type':'logic_and','nodes':[{'type':'logic_string_nocase_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':0x1}]},{'type':'logic_equal','nodes':[{'type':'context','context':'Signer'},{'type':'query','query':'permission.permitted','object':{'identifier':0x2},'parameters':[{'type':'context','context':'Signer'},{'type':'identifier','identifier':0x3}]}]}]},'applicable_industries':['subscription','content','newsletter','media'],'relevant_risks':['R-C2-01','R-C2-03','R-X1-08'],'creation_notes':['VERIFIED\x20QUERY\x20NAMES:\x20progress.current\x20(id\x201253,\x20String);\x20permission.permitted\x20(Permission\x20object\x20query,\x20returns\x20Address\x20of\x20permitted\x20operator\x20for\x20the\x20given\x20index).','ARBITRATOR-ONLY:\x20only\x20the\x20arbitrator\x20(permission\x20index\x201500)\x20can\x20advance\x20Disputed→Refunded.\x20Neither\x20author\x20nor\x20subscriber\x20can\x20self-resolve.','ARBITRATIONS\x20BINDING:\x20Service\x20MUST\x20have\x20arbitrations\x20bound\x20BEFORE\x20publish\x20(F-S-21\x20—\x20post-publish\x20immutable).\x20ConfirmGate\x20C-S-19\x20+\x20QS11\x20will\x20warn\x20if\x20publish\x20is\x20attempted\x20without\x20arbitrations.','DISPUTE\x20ENTRY:\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed)\x20is\x20triggered\x20by\x20subscriber\x20(order.owner).\x20After\x20Disputed,\x20only\x20arbitrator\x20can\x20resolve.','REFUND\x20ALLOCATION:\x20pair\x20this\x20guard\x20with\x20an\x20Allocation\x20template\x20that\x20refunds\x20100%\x20to\x20the\x20subscriber\x20(order.owner).\x20Trigger\x20node\x20=\x20\x27Refunded\x27.','GUARD-FIRST-WINS:\x20when\x20\x27Disputed\x27\x20has\x20competing\x20forwards\x20(Resolve-Refund|Resolve-Reject),\x20each\x20with\x20its\x20own\x20guard.\x20First\x20guard\x20to\x20verify\x20wins.',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Substack\x20newsletter:\x20subscriber\x20disputes\x20content\x20quality.\x20Subscriber\x20triggers\x20\x27Dispute\x27\x20forward\x20(Ordered→Disputed).\x20'+'Arbitrator\x20reviews\x20evidence\x20and\x20triggers\x20\x27Resolve-Refund\x27\x20forward\x20(Disputed→Refunded).\x20'+'This\x20guard\x20verifies\x20(1)\x20order\x20is\x20at\x20\x27Disputed\x27\x20(dispute\x20properly\x20opened),\x20AND\x20(2)\x20Signer\x20holds\x20arbitrator\x20permission\x20index\x201500.\x20'+'Author\x20cannot\x20self-resolve.\x20Subscriber\x20cannot\x20self-refund.','verifier_constraint_level':'level2_identity_set'},{'id':'tpl_required_info_present','scene_id':'machine_forward_guard','name':'Required-info\x20presence\x20gate','description':'Presence-only\x20gate\x20on\x20the\x20fulfilment\x20forward:\x20order.required_info\x20must\x20be\x20recorded\x20(Option\x20some,\x20query\x201572)\x20'+'before\x20the\x20forward\x20that\x20needs\x20the\x20data\x20can\x20advance.\x20This\x20is\x20the\x20ONLY\x20on-chain\x20enforcement\x20of\x20'+'Service.customer_required\x20—\x20the\x20purchase\x20entry\x20never\x20reads\x20the\x20list\x20(declarative-only,\x20testnet\x20HIGH-05).\x20'+'Presence-only\x20by\x20design:\x201573\x20aborts\x20while\x20the\x20Option\x20is\x20empty,\x20and\x20the\x20recorded\x20address\x20is\x20unvalidated\x20'+'buyer\x20input\x20with\x20no\x20on-chain\x20meaning\x20—\x20acceptance\x20is\x20the\x20merchant\x27s\x20confirming\x20forward,\x20never\x20the\x20value.','recommended_patterns':['P09'],'parameters':[],'example_table':[{'identifier':0xfe,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Submitted\x20Order\x20—\x20protocol\x20slot\x20254\x20task\x20binding\x20(written\x20by\x20order\x20creation)'}],'example_root':{'type':'query','query':'order.required_info\x20some','object':{'identifier':0xfe,'convert_witness':'OrderProgress'},'parameters':[]},'applicable_industries':['retail','travel','education','rental','general'],'relevant_risks':[],'creation_notes':['GATE\x20PRESENCE\x20(1572)\x20FIRST:\x20query\x201573\x20returns\x20the\x20Option\x27s\x20inner\x20address\x20and\x20ABORTS\x20the\x20guard\x20evaluation\x20when\x20nothing\x20is\x20recorded\x20—\x201573\x20is\x20for\x20reading/comparing\x20AFTER\x20the\x20presence\x20gate\x20passed.','No\x20parameters\x20by\x20design:\x20presence-only.\x20Never\x20make\x20the\x20recorded\x20address\x20(or\x20a\x20Proof\x27s\x20content)\x20a\x20guard\x20decision\x20condition\x20—\x20the\x20credential\x20is\x20buyer-writable\x20and\x20unvalidated;\x20route\x20content-grade\x20checks\x20through\x20a\x20Repository\x20with\x20a\x20quote_guard.','Gate\x20the\x20forward\x20that\x20DEPENDS\x20on\x20the\x20information\x20(ship\x20/\x20hand-over\x20/\x20accept-before-crafting),\x20never\x20the\x20buy:\x20a\x20buy_guard\x20cannot\x20query\x20the\x20Order\x20—\x20it\x20does\x20not\x20exist\x20yet\x20at\x20buy\x20time.','Slot\x20254\x20is\x20declared\x20here\x20(the\x20kernel\x20skips\x20its\x20injection\x20when\x20a\x20guard\x20already\x20declares\x20it):\x20the\x20trigger\x20passport\x20submits\x20{254:\x20order}.',PROTOCOL_SLOT_254_NOTE],'example_use_case':'Handmade/custom\x20storefront:\x20the\x20shop\x20declares\x20customer_required\x20(personalisation\x20spec,\x20measurements).\x20'+'The\x20\x27confirmed\x27\x20(seller\x20acceptance)\x20or\x20\x27ship\x27\x20forward\x20carries\x20this\x20gate,\x20so\x20an\x20order\x20whose\x20buyer\x20never\x20'+'recorded\x20the\x20required\x20credential\x20cannot\x20advance\x20—\x20without\x20the\x20gate\x20such\x20an\x20order\x20is\x20created\x20and\x20'+'progresses\x20silently\x20(the\x20purchase\x20entry\x20never\x20reads\x20the\x20list).','verifier_constraint_level':'level3_scene_combined'}];export function getTemplatesByScene(a){return GUARD_TEMPLATES['filter'](b=>b['scene_id']===a);}export function getTemplateById(a){return GUARD_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByIndustry(a){return GUARD_TEMPLATES['filter'](b=>b['applicable_industries']['includes'](a));}export function getTemplatesByPattern(a){return GUARD_TEMPLATES['filter'](b=>b['recommended_patterns']['includes'](a));}export function listGuardTemplates(){return GUARD_TEMPLATES;}export function suggestTemplateForScene(a){return GUARD_TEMPLATES['find'](b=>b['scene_id']===a);}export function getTemplateParameters(a){const b=getTemplateById(a);return b?.['parameters']??[];}export function validateTemplateParams(a,b){const c=getTemplateById(a);if(!c)return{'valid':![],'missing':['template_not_found']};const d=c['parameters']['filter'](e=>e['required']&&e['default']===undefined&&!(e['name']in b))['map'](e=>e['name']);return{'valid':d['length']===0x0,'missing':d};}function deepSubstitute(a,b){if(typeof a==='string'){const c=a['match'](/^\$\{(\w+)\}$/);if(c&&c[0x1]in b)return b[c[0x1]];return a['replace'](/\$\{(\w+)\}/g,(d,e)=>e in b?String(b[e]):'${'+e+'}');}if(Array['isArray'](a))return a['map'](d=>deepSubstitute(d,b));if(a&&typeof a==='object'){const d={};for(const [e,f]of Object['entries'](a)){d[e]=deepSubstitute(f,b);}return d;}return a;}export function fillGuardTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20not\x20found:\x20'+a};const {valid:d,missing:e}=validateTemplateParams(a,b);if(!d)return{'ok':![],'error':'Missing\x20required\x20parameters:\x20'+e['join'](',\x20'),'missing':e};const f={...b};for(const j of c['parameters']){!(j['name']in f)&&j['default']!==undefined&&(f[j['name']]=j['default']);}const g=deepSubstitute(c['example_table'],f),h=deepSubstitute(c['example_root'],f),i=JSON['stringify']({'table':g,'root':h})['match'](/\$\{(\w+)\}/);if(i)return{'ok':![],'error':'Unresolved\x20placeholder\x20${'+i[0x1]+'}\x20—\x20not\x20declared\x20in\x20template\x20parameters'};return{'ok':!![],'table':g,'root':h};}import{z}from'zod';const GuardTemplateParamSchema=z['object']({'name':z['string']()['min'](0x1),'type':z['enum'](['address','string','number','boolean','vec_address']),'description':z['string']()['min'](0x1),'required':z['boolean'](),'default':z['string']()['optional'](),'constraint':z['string']()['optional']()})['strict'](),GuardTemplateSchema=z['object']({'id':z['string']()['regex'](/^tpl_[a-z0-9_]+$/,'guard\x20template\x20id\x20must\x20be\x20\x27tpl_*\x27'),'scene_id':z['string']()['min'](0x1),'name':z['string']()['min'](0x1),'description':z['string']()['min'](0x1),'recommended_patterns':z['array'](z['string']()['min'](0x1)),'parameters':z['array'](GuardTemplateParamSchema),'example_table':z['array'](z['record'](z['string'](),z['unknown']())),'example_root':z['record'](z['string'](),z['unknown']()),'applicable_industries':z['array'](z['string']()['min'](0x1)),'relevant_risks':z['array'](z['string']()['min'](0x1)),'creation_notes':z['array'](z['string']()['min'](0x1)),'example_use_case':z['string']()['min'](0x1),'verifier_constraint_level':z['enum'](['level1_strict','level2_identity_set','level3_scene_combined'])['optional']()})['strict']();function validateGuardTemplates(){for(const a of GUARD_TEMPLATES){const b=GuardTemplateSchema['safeParse'](a);if(!b['success']){const f=b['error']['issues']['map'](g=>'\x20\x20'+g['path']['join']('.')+':\x20'+g['message'])['join']('\x0a');throw new Error('[guard-templates]\x20\x27'+a['id']+'\x27\x20fails\x20schema\x20validation:\x0a'+f+'\x0a'+'Fix\x20the\x20entry\x20—\x20the\x20schema\x20is\x20the\x20single\x20source\x20of\x20truth\x20for\x20guard-template\x20validity.');}const c=new Set(a['parameters']['map'](g=>g['name'])),d=JSON['stringify']({'table':a['example_table'],'root':a['example_root']}),e=new Set([...d['matchAll'](/\$\{(\w+)\}/g)]['map'](g=>g[0x1]));for(const g of e){if(!c['has'](g))throw new Error('[guard-templates]\x20\x27'+a['id']+'\x27\x20references\x20${'+g+'}\x20in\x20example_table/example_root\x20'+('but\x20\x27'+g+'\x27\x20is\x20not\x20declared\x20in\x20parameters\x20—\x20fillGuardTemplate\x20would\x20leave\x20it\x20unresolved.'));}}}validateGuardTemplates();export const GUARD_TEMPLATES_VERSION='1.4.0';export const GUARD_TEMPLATES_COUNT=GUARD_TEMPLATES['length'];
|