@wowok/agent-mcp 3.4.0 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/chain-semantics/composition-truth.d.ts +102 -0
- package/dist/chain-semantics/composition-truth.js +1 -0
- package/dist/chain-semantics/eval-order.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/index.d.ts +1 -0
- package/dist/chain-semantics/index.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/blueprint-view.d.ts +3 -3
- package/dist/composition/blueprint-view.js +1 -1
- package/dist/composition/compile.d.ts +24 -3
- package/dist/composition/compile.js +1 -1
- package/dist/composition/emit-phases.d.ts +206 -0
- package/dist/composition/emit-phases.js +1 -0
- package/dist/composition/generate.d.ts +40 -0
- package/dist/composition/generate.js +1 -0
- package/dist/composition/guard-fill.d.ts +44 -0
- package/dist/composition/guard-fill.js +1 -0
- package/dist/composition/inflight.d.ts +20 -2
- package/dist/composition/inflight.js +1 -1
- package/dist/composition/input-normalize.d.ts +15 -0
- package/dist/composition/input-normalize.js +1 -0
- package/dist/composition/materialize.d.ts +18 -13
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/mode-gates.d.ts +35 -0
- package/dist/composition/mode-gates.js +1 -0
- package/dist/composition/param-disclosure.js +1 -1
- package/dist/composition/plan-retry-ledger.d.ts +21 -0
- package/dist/composition/plan-retry-ledger.js +1 -0
- package/dist/composition/plan.d.ts +7 -2
- package/dist/composition/plan.js +1 -1
- package/dist/composition/product-card.d.ts +94 -0
- package/dist/composition/product-card.js +1 -0
- package/dist/composition/supply-chain-emit.d.ts +46 -0
- package/dist/composition/supply-chain-emit.js +1 -0
- package/dist/config/config-audit.spec.js +1 -1
- package/dist/config/config-warnings.d.ts +2 -0
- package/dist/config/config-warnings.js +1 -0
- package/dist/config/exposure.d.ts +2 -2
- package/dist/config/judgment.d.ts +31 -5
- package/dist/config/judgment.js +1 -1
- package/dist/config/judgment.spec.js +1 -1
- package/dist/config/match-policy-file.d.ts +34 -0
- package/dist/config/match-policy-file.js +1 -0
- package/dist/config/match-policy-file.spec.d.ts +1 -0
- package/dist/config/match-policy-file.spec.js +1 -0
- package/dist/config/rule-engine.d.ts +5 -5
- package/dist/config/rule-engine.js +1 -1
- package/dist/config/runtime.d.ts +0 -1
- package/dist/config/runtime.js +1 -1
- package/dist/config/severity.d.ts +0 -2
- package/dist/config/severity.js +1 -1
- package/dist/config/store-policy.spec.js +1 -1
- package/dist/config/template-params.d.ts +42 -0
- package/dist/config/template-params.js +1 -0
- package/dist/config/template-params.spec.d.ts +1 -0
- package/dist/config/template-params.spec.js +1 -0
- package/dist/data/api/api.spec.js +1 -1
- package/dist/data/api/server.js +1 -1
- package/dist/data/projection/store.d.ts +2 -1
- package/dist/data/projection/store.js +1 -1
- package/dist/data/projection/types.d.ts +22 -0
- package/dist/data/sync/cdc.d.ts +1 -2
- package/dist/data/sync/cdc.js +1 -1
- package/dist/evaluation/acceptance.d.ts +8 -0
- package/dist/evaluation/acceptance.js +1 -1
- package/dist/evaluation/builtins/demand-match.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/capability.d.ts +2 -0
- package/dist/evaluation/category-match-rules.d.ts +0 -1
- package/dist/evaluation/category-match-rules.js +1 -1
- package/dist/evaluation/composer.d.ts +25 -0
- package/dist/evaluation/composer.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/extract.d.ts +7 -0
- package/dist/evaluation/extract.js +1 -1
- package/dist/evaluation/game-strategy.d.ts +0 -3
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/match-operation.d.ts +9 -0
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/evaluation/match-policy-resolver.d.ts +9 -0
- package/dist/evaluation/match-policy-resolver.js +1 -0
- package/dist/evaluation/match-policy.d.ts +3 -1
- package/dist/evaluation/match-policy.js +1 -1
- package/dist/evaluation/region.d.ts +0 -6
- package/dist/evaluation/region.js +1 -1
- package/dist/evaluation/standards.d.ts +2 -1
- package/dist/evaluation/standards.js +1 -1
- package/dist/evaluation/structured-lines.d.ts +8 -0
- package/dist/evaluation/structured-lines.js +1 -0
- package/dist/evaluation/types.d.ts +6 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/capability-manifest.d.ts +1 -0
- package/dist/extensions/capability-manifest.js +1 -1
- package/dist/extensions/capability.d.ts +91 -0
- package/dist/extensions/capability.js +1 -0
- package/dist/extensions/industry-audit.spec.js +1 -1
- package/dist/extensions/industry-pack.d.ts +13 -0
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/extensions/registry.d.ts +0 -2
- package/dist/extensions/registry.js +1 -1
- package/dist/goal/GoalEngine.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/facts.js +1 -1
- package/dist/graph/onchain/order-status.d.ts +0 -1
- package/dist/graph/onchain/order-status.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/harness/verify.d.ts +0 -3
- package/dist/harness/verify.js +1 -1
- package/dist/intent/types.d.ts +0 -1
- package/dist/intent/types.js +1 -1
- package/dist/keeper/detectors.js +1 -1
- package/dist/keeper/types.d.ts +0 -1
- package/dist/keeper/types.js +1 -1
- package/dist/knowledge/allocation-risk.d.ts +1 -0
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +6 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-puzzle.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +2 -2
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/judgment-baselines.json +21 -2
- package/dist/knowledge/baselines/rules/oracle.json +120 -0
- package/dist/knowledge/baselines/rules/plan.json +384 -17
- package/dist/knowledge/baselines/rules/progress.json +20 -2
- package/dist/knowledge/builtin-templates.d.ts +12 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/component-schema.js +1 -1
- package/dist/knowledge/contact-templates.d.ts +0 -1
- package/dist/knowledge/contact-templates.js +1 -1
- package/dist/knowledge/dynamic-pricing.js +1 -1
- package/dist/knowledge/fee-param-bindings.js +1 -1
- package/dist/knowledge/fund-layer.d.ts +1 -0
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/game-scenarios.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-binding-table.d.ts +52 -0
- package/dist/knowledge/guard-binding-table.js +1 -0
- package/dist/knowledge/guard-binding-verifier.d.ts +30 -0
- package/dist/knowledge/guard-binding-verifier.js +1 -0
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-blueprint.d.ts +68 -0
- package/dist/knowledge/guard-blueprint.js +1 -0
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-host-context.d.ts +24 -0
- package/dist/knowledge/guard-host-context.js +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-node-gates.d.ts +3 -0
- package/dist/knowledge/guard-node-gates.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-prompt.d.ts +11 -0
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-generalizer.d.ts +6 -1
- package/dist/knowledge/industry-generalizer.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.d.ts +38 -0
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/object-dependency.d.ts +31 -0
- package/dist/knowledge/object-dependency.js +1 -0
- package/dist/knowledge/onchain-constants.d.ts +2 -0
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/param-schema.d.ts +23 -0
- package/dist/knowledge/param-schema.js +1 -1
- package/dist/knowledge/param-tiers.js +1 -1
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/path-oracle/coverage.d.ts +16 -0
- package/dist/knowledge/path-oracle/coverage.js +1 -0
- package/dist/knowledge/path-oracle/index.d.ts +5 -0
- package/dist/knowledge/path-oracle/index.js +1 -0
- package/dist/knowledge/path-oracle/products/food-delivery.d.ts +2 -0
- package/dist/knowledge/path-oracle/products/food-delivery.js +1 -0
- package/dist/knowledge/path-oracle/schema.d.ts +188 -0
- package/dist/knowledge/path-oracle/schema.js +1 -0
- package/dist/knowledge/pattern-resolutions.d.ts +2 -0
- package/dist/knowledge/pattern-resolutions.js +1 -1
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/progress-risk.js +1 -1
- package/dist/knowledge/projection.spec.js +1 -1
- package/dist/knowledge/protocol-facts.js +1 -1
- package/dist/knowledge/requirement-families.d.ts +13 -0
- package/dist/knowledge/requirement-families.js +1 -0
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +1 -0
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/semantic-ir.d.ts +4 -0
- package/dist/knowledge/semantic-ir.js +1 -1
- package/dist/knowledge/service-ledger.d.ts +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/sku-name-gate.d.ts +17 -0
- package/dist/knowledge/sku-name-gate.js +1 -0
- package/dist/knowledge/supply-chain.d.ts +9 -0
- package/dist/knowledge/supply-chain.js +1 -1
- package/dist/knowledge/template-loader.d.ts +14 -6
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-nav.d.ts +3 -1
- package/dist/knowledge/template-nav.js +1 -1
- package/dist/knowledge/template-prose.d.ts +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +62 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-test-profiles.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +5 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/participation/time-window.js +1 -1
- package/dist/persona/address-format.d.ts +0 -1
- package/dist/persona/address-format.js +1 -1
- package/dist/persona/bridge.js +1 -1
- package/dist/persona/index.d.ts +0 -2
- package/dist/persona/index.js +1 -1
- package/dist/persona/model.js +1 -1
- package/dist/persona/persona-audit.spec.js +1 -1
- package/dist/persona/types.d.ts +6 -0
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/game-theory.d.ts +2 -2
- package/dist/playbooks/service-build/intent-analyzer.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +50 -23
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +2 -0
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/mode-actions.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +8 -0
- 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/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping.d.ts +6 -0
- package/dist/playbooks/service-build/reverse-mapping.js +1 -1
- package/dist/playbooks/service-build/service-panorama.d.ts +1 -0
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/playbooks/service-build/workflow-design-assessment.d.ts +10 -1
- package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/repository.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +104 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +15 -6
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/base.d.ts +256 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +32 -6
- package/dist/schema/call/demand.d.ts +15 -6
- package/dist/schema/call/demand.js +1 -1
- package/dist/schema/call/guard.d.ts +8 -8
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/handler.d.ts +3 -0
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +32 -8
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +26 -8
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/payment.d.ts +20 -8
- package/dist/schema/call/payment.js +1 -1
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/permission.d.ts +330 -114
- package/dist/schema/call/permission.js +1 -1
- package/dist/schema/call/personal.d.ts +10 -4
- package/dist/schema/call/personal.js +1 -1
- package/dist/schema/call/progress.d.ts +16 -4
- package/dist/schema/call/reward.d.ts +10 -4
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.d.ts +1 -0
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +128 -40
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +15 -6
- package/dist/schema/call/treasury.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +61 -0
- package/dist/schema/config/index.js +1 -1
- package/dist/schema/envelope-unify.d.ts +4 -0
- package/dist/schema/envelope-unify.js +1 -0
- package/dist/schema/evaluation/index.d.ts +216 -19
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +47 -0
- package/dist/schema/goal/planning.d.ts +115 -1
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +137 -6
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/industry-pack/modes.d.ts +6 -6
- package/dist/schema/keeper/index.d.ts +26 -0
- package/dist/schema/local/index.d.ts +137 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.d.ts +6 -0
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +26 -0
- package/dist/schema/operations.d.ts +342 -83
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +2907 -640
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +145 -4
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +266 -73
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +1 -1
- package/dist/schema/schema-query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/utils/permission-machine-check.d.ts +2 -0
- package/dist/schema/utils/permission-machine-check.js +1 -1
- package/dist/schema/watch/index.d.ts +16 -0
- package/dist/schema/watch/index.js +1 -1
- package/dist/schema/workflow/index.d.ts +2 -2
- package/dist/schema/workflow/index.js +1 -1
- package/dist/schema-query-impl/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +94 -0
- package/dist/schemas/benchmark_migration_operation.output.json +338 -9
- package/dist/schemas/benchmark_migration_operation.schema.json +26 -1
- package/dist/schemas/bridge_operation.output.json +94 -0
- package/dist/schemas/config_operation.output.json +352 -0
- package/dist/schemas/config_operation.schema.json +20 -2
- package/dist/schemas/evaluation_operation.output.json +570 -4
- package/dist/schemas/evaluation_operation.schema.json +194 -3
- package/dist/schemas/goal_operation.schema.json +183 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +621 -0
- package/dist/schemas/industry_pack_operation.schema.json +20 -2
- package/dist/schemas/keeper_operation.output.json +94 -0
- package/dist/schemas/local_cache_operation.output.json +94 -0
- package/dist/schemas/local_history_operation.output.json +94 -0
- package/dist/schemas/local_info_operation.output.json +94 -0
- package/dist/schemas/local_mark_operation.output.json +94 -0
- package/dist/schemas/messenger_operation.output.json +94 -0
- package/dist/schemas/monitor_events.output.json +94 -0
- package/dist/schemas/monitor_subscription.output.json +94 -0
- package/dist/schemas/onchain_events.output.json +94 -0
- package/dist/schemas/onchain_operations.output.json +313 -1
- package/dist/schemas/onchain_operations.schema.json +1248 -664
- package/dist/schemas/onchain_operations_allocation.schema.json +30 -15
- package/dist/schemas/onchain_operations_arbitration.schema.json +9 -2
- package/dist/schemas/onchain_operations_contact.schema.json +8 -1
- package/dist/schemas/onchain_operations_demand.schema.json +29 -14
- package/dist/schemas/onchain_operations_gen_passport.schema.json +8 -1
- package/dist/schemas/onchain_operations_guard.schema.json +290 -105
- package/dist/schemas/onchain_operations_machine.schema.json +49 -34
- package/dist/schemas/onchain_operations_order.schema.json +63 -40
- package/dist/schemas/onchain_operations_payment.schema.json +26 -11
- package/dist/schemas/onchain_operations_permission.schema.json +362 -235
- package/dist/schemas/onchain_operations_personal.schema.json +27 -15
- package/dist/schemas/onchain_operations_progress.schema.json +45 -30
- package/dist/schemas/onchain_operations_proof.schema.json +8 -1
- package/dist/schemas/onchain_operations_repository.schema.json +8 -1
- package/dist/schemas/onchain_operations_reward.schema.json +32 -17
- package/dist/schemas/onchain_operations_service.schema.json +221 -124
- package/dist/schemas/onchain_operations_treasury.schema.json +32 -17
- package/dist/schemas/onchain_table_data.output.json +258 -6
- package/dist/schemas/onchain_table_data.schema.json +92 -52
- package/dist/schemas/persona_operation.output.json +7752 -0
- package/dist/schemas/persona_operation.schema.json +1232 -4
- package/dist/schemas/query_toolkit.output.json +756 -116
- package/dist/schemas/query_toolkit.schema.json +138 -7
- package/dist/schemas/schema_query.schema.json +1 -1
- package/dist/schemas/watch_operation.output.json +83 -0
- package/dist/schemas/wip_file.output.json +8 -0
- package/dist/schemas/workflow_operation.schema.json +2 -2
- package/dist/tools/handlers/benchmark-migration.d.ts +11 -3
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/evaluation.spec.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +20 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/persona.js +1 -1
- package/dist/tools/handlers/query.d.ts +8 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/winner-derivation.d.ts +20 -0
- package/dist/tools/handlers/winner-derivation.js +1 -0
- package/dist/tools/handlers/wip-upload.js +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.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/identity.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/transport-integrity.d.ts +7 -0
- package/dist/tools/transport-integrity.js +1 -0
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wrap.d.ts +5 -0
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
- package/dist/extensions/business-modules.d.ts +0 -54
- package/dist/extensions/business-modules.js +0 -1
- package/dist/schemas/guard-templates.json +0 -379
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const CORE_BUSINESS_MODULES=[{'id':'milestone_escrow','name':'Milestone\x20Escrow','description':'Funds\x20held\x20in\x20Order\x20and\x20released\x20per\x20milestone\x20completion.\x20Protects\x20both\x20merchant\x20and\x20user.','objectTypes':['service','machine','order','allocation'],'templateRefs':[{'template_id':'freelance-machine','object_type':'machine','purpose':'Milestone\x20workflow\x20with\x20accept/reject\x20nodes'},{'template_id':'milestone-allocation','object_type':'allocation','purpose':'Per-milestone\x20fund\x20release'}],'requiredConstraints':[{'constraint_id':'order_allocators_bound','description':'Order\x20must\x20have\x20allocators\x20bound\x20before\x20publish','level':'hard','blocking':!![]},{'constraint_id':'machine_published','description':'Machine\x20must\x20be\x20published\x20and\x20bound\x20to\x20Service','level':'hard','blocking':!![]},{'constraint_id':'milestone_forward_guarded','description':'Each\x20milestone\x20forward\x20must\x20have\x20a\x20guard','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'boost','description':'Escrow\x20ensures\x20funds\x20not\x20released\x20until\x20verification'},{'dimension':'escrow_quality','effect':'required','description':'Module\x20requires\x20proper\x20escrow\x20configuration'},{'dimension':'operational_risk','effect':'boost','description':'Milestones\x20reduce\x20single-point\x20delivery\x20risk'}],'industryFit':{'freelance':0x5f,'education':0x50,'rental':0x3c,'retail':0x28,'subscription':0x1e,'travel':0x32,'licensing':0x55,'crowdfunding':0x55,'general':0x46},'addressesPainPoints':['Client\x20never\x20approves\x20deliverables','Merchant\x20delivers\x20but\x20cannot\x20get\x20paid','Full\x20upfront\x20payment\x20with\x20no\x20delivery\x20guarantee'],'intentSignals':[/milestone/i,/escrow/i,/pay(ment)? (per|on|at|upon) (each )?(milestone|stage|delivery|approval)/i,/staged? (payment|release)/i,/progress payment/i,/hold funds until/i],'userProtections':['Funds\x20held\x20in\x20escrow\x20until\x20milestone\x20verified','Can\x20reject\x20substandard\x20deliverables','Refund\x20for\x20unstarted\x20milestones'],'merchantObligations':['Must\x20deliver\x20each\x20milestone\x20to\x20defined\x20acceptance\x20criteria','Must\x20configure\x20Machine\x20with\x20proper\x20forward\x20guards'],'requiresKeeper':!![],'keeperHint':'Keeper\x20must\x20monitor\x20Machine\x20node\x20timeouts\x20and\x20trigger\x20adminUnhold\x20if\x20user\x20does\x20not\x20respond'},{'id':'independent_arbitration','name':'Independent\x20Arbitration','description':'Third-party\x20arbitration\x20with\x20Guard-weighted\x20voting.\x20Arbitration\x20Permission\x20MUST\x20differ\x20from\x20Service\x20Permission\x20(contract-enforced).','objectTypes':['arb','permission','guard'],'templateRefs':[{'template_id':'arbitration-3-voters','object_type':'arb','purpose':'3-voter\x20arbitration\x20with\x20weighted\x20voting'},{'template_id':'voting-guard-weighted','object_type':'guard','purpose':'Vote\x20weight\x20from\x20Guard\x20config'}],'requiredConstraints':[{'constraint_id':'arbitration_permission_independent','description':'Arbitration.permission\x20!=\x20Service.permission','level':'hard','blocking':!![]},{'constraint_id':'voting_guard_configured','description':'At\x20least\x20one\x20voting_guard\x20must\x20be\x20configured','level':'soft','blocking':![]},{'constraint_id':'arbitration_bound_to_service','description':'Arbitration\x20must\x20be\x20in\x20Service.arbitrations\x20list','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'arbitration_coverage','effect':'required','description':'Module\x20requires\x20arbitration\x20configuration'},{'dimension':'arbitration_fairness','effect':'required','description':'Independent\x20permission\x20ensures\x20neutrality'},{'dimension':'governance_risk','effect':'boost','description':'Reduces\x20platform-as-judge\x20risk'}],'industryFit':{'freelance':0x5a,'education':0x4b,'rental':0x55,'retail':0x4b,'subscription':0x3c,'travel':0x50,'licensing':0x5a,'crowdfunding':0x50,'general':0x46},'addressesPainPoints':['Platform\x20acts\x20as\x20both\x20judge\x20and\x20party','Arbitration\x20fees\x20too\x20high\x20for\x20small\x20claims','No\x20binding\x20dispute\x20resolution'],'intentSignals':[/arbitrat/i,/dispute/i,/mediat/i,/third[ -]?party (resolution|judgement|judgment|venue)/i,/voting/i,/ruling/i,/appeal/i],'userProtections':['Independent\x20arbitrators\x20(not\x20merchant\x20or\x20platform)','Guard-weighted\x20voting\x20prevents\x20Sybil\x20attacks','Micro-arbitration:\x20no\x20per-case\x20fees'],'merchantObligations':['Must\x20accept\x20arbitration\x20verdict','Must\x20maintain\x20compensation_fund\x20for\x20indemnities'],'requiresKeeper':![]},{'id':'wip_provenance','name':'WIP\x20Provenance','description':'Work-in-progress\x20hash\x20commitments\x20on-chain\x20via\x20Repository.\x20Prevents\x20tampering\x20of\x20delivery\x20evidence.','objectTypes':['repository','guard','proof'],'templateRefs':[{'template_id':'wip-hash-guard','object_type':'guard','purpose':'Verify\x20WIP\x20hash\x20matches\x20commitment'},{'template_id':'delivery-proof','object_type':'proof','purpose':'On-chain\x20delivery\x20confirmation'}],'requiredConstraints':[{'constraint_id':'repository_published','description':'Repository\x20must\x20be\x20published','level':'hard','blocking':!![]},{'constraint_id':'wip_hash_before_delivery','description':'WIP\x20hash\x20must\x20be\x20committed\x20before\x20delivery','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'proof_integrity','effect':'required','description':'WIP\x20hash\x20provides\x20tamper-proof\x20evidence'},{'dimension':'transparency','effect':'boost','description':'On-chain\x20commitment\x20is\x20publicly\x20verifiable'}],'industryFit':{'freelance':0x5a,'education':0x55,'rental':0x5f,'retail':0x46,'subscription':0x3c,'travel':0x46,'licensing':0x5f,'crowdfunding':0x55,'general':0x4b},'addressesPainPoints':['Evidence\x20stored\x20on\x20platform\x20servers\x20can\x20be\x20tampered','No\x20proof\x20of\x20pre-delivery\x20state\x20(e.g.\x20rental\x20condition)','Dispute\x20resolution\x20relies\x20on\x20trust\x20in\x20platform'],'intentSignals':[/\bwip\b/i,/work[ -]?in[ -]?progress/i,/\bhash\b/i,/evidence/i,/tamper/i,/proof of (work|progress|delivery)/i],'userProtections':['WIP\x20hash\x20commitment\x20is\x20immutable\x20on-chain','Guard\x20automatically\x20verifies\x20hash\x20match','Repository\x20history\x20is\x20auditable'],'merchantObligations':['Must\x20commit\x20WIP\x20hash\x20at\x20defined\x20checkpoints','Must\x20use\x20Repository\x20for\x20evidence\x20storage'],'requiresKeeper':![]},{'id':'multi_tier_allocation','name':'Multi-Tier\x20Allocation','description':'Order\x20funds\x20automatically\x20split\x20among\x20multiple\x20recipients.\x20Fully\x20transparent\x20on-chain.','objectTypes':['allocation','treasury','payment'],'templateRefs':[{'template_id':'multi-tier-allocation','object_type':'allocation','purpose':'Waterfall\x20fund\x20distribution'},{'template_id':'supplier-waterfall','object_type':'allocation','purpose':'Supplier\x20payment\x20tiers'}],'requiredConstraints':[{'constraint_id':'allocators_configured','description':'Allocators\x20must\x20be\x20configured\x20with\x20recipients','level':'hard','blocking':!![]},{'constraint_id':'sharing_sum_100','description':'Allocation\x20percentages\x20must\x20sum\x20to\x20100%','level':'hard','blocking':!![]},{'constraint_id':'platform_fee_zero','description':'Platform\x20fee\x20should\x20be\x200\x20or\x20user-defined','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fee_transparency','effect':'required','description':'All\x20allocations\x20visible\x20on-chain'},{'dimension':'supplier_visibility','effect':'boost','description':'Supplier\x20payments\x20are\x20auditable'}],'industryFit':{'freelance':0x3c,'education':0x32,'rental':0x28,'retail':0x50,'subscription':0x46,'travel':0x5f,'licensing':0x62,'crowdfunding':0x50,'general':0x46},'addressesPainPoints':['Multi-layer\x20commission\x20hidden\x20from\x20users','Suppliers\x20paid\x20opaquely','Platform\x20takes\x20undisclosed\x20FX\x20spread'],'intentSignals':[/multi[ -]?tier/i,/waterfall/i,/\bsplit/i,/divide/i,/distribut/i,/tiered payout/i],'userProtections':['Full\x20allocation\x20waterfall\x20visible\x20on-chain','No\x20hidden\x20fees','Can\x20verify\x20supplier\x20payments'],'merchantObligations':['Must\x20declare\x20all\x20allocation\x20recipients\x20upfront','Cannot\x20change\x20allocation\x20after\x20publish'],'requiresKeeper':![]},{'id':'subscription_with_proof','name':'Subscription\x20with\x20Delivery\x20Proof','description':'Each\x20billing\x20cycle\x20requires\x20proof\x20of\x20content\x20delivery\x20before\x20charging.\x20Prevents\x20creator\x20abandonment.','objectTypes':['service','guard','repository','progress'],'templateRefs':[{'template_id':'subscription-machine','object_type':'machine','purpose':'Cycle-based\x20workflow'},{'template_id':'delivery-guard-cycle','object_type':'guard','purpose':'Verify\x20content\x20delivery\x20per\x20cycle'}],'requiredConstraints':[{'constraint_id':'delivery_guard_per_cycle','description':'Each\x20cycle\x20must\x20have\x20a\x20delivery\x20guard','level':'hard','blocking':!![]},{'constraint_id':'repository_updated','description':'Repository\x20must\x20be\x20updated\x20with\x20cycle\x20content\x20hash','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'content_commitment','effect':'required','description':'Delivery\x20proof\x20required\x20before\x20each\x20charge'},{'dimension':'timeout_protection','effect':'boost','description':'Cycles\x20enforce\x20regular\x20delivery'}],'industryFit':{'freelance':0x28,'education':0x55,'rental':0x1e,'retail':0x14,'subscription':0x62,'travel':0x1e,'licensing':0x28,'crowdfunding':0x19,'general':0x32},'addressesPainPoints':['Creator\x20abandons\x20after\x20collecting\x20subscriptions','Silent\x20auto-renewal\x20with\x20no\x20delivery\x20proof','No\x20mechanism\x20to\x20hold\x20creators\x20accountable'],'intentSignals':[/subscri/i,/recurring/i,/billing cycle/i,/auto[ -]?renew/i,/renewal/i,/membership/i],'userProtections':['Payment\x20only\x20after\x20delivery\x20proof\x20verified','Can\x20cancel\x20if\x20delivery\x20guard\x20fails','Cycle\x20history\x20on-chain'],'merchantObligations':['Must\x20deliver\x20content\x20and\x20commit\x20hash\x20each\x20cycle','Must\x20configure\x20delivery_guard\x20per\x20cycle'],'requiresKeeper':!![],'keeperHint':'Keeper\x20triggers\x20cycle\x20transitions\x20and\x20verifies\x20delivery_guard\x20conditions'},{'id':'accept_timeout_protection','name':'Accept\x20Timeout\x20Protection','description':'If\x20user\x20does\x20not\x20accept/reject\x20within\x20N\x20days,\x20auto-accept\x20advances\x20the\x20Machine.\x20Protects\x20merchant\x20from\x20indefinite\x20stalls.','objectTypes':['machine','guard'],'templateRefs':[{'template_id':'timeout-forward','object_type':'machine','purpose':'Forward\x20with\x20time_guard\x20+\x20adminUnhold\x20fallback'}],'requiredConstraints':[{'constraint_id':'time_guard_configured','description':'time_guard\x20must\x20be\x20set\x20on\x20accept\x20forward','level':'hard','blocking':!![]},{'constraint_id':'adminUnhold_permission','description':'Admin\x20must\x20have\x20PROGRESS_UNHOLD\x20(224)\x20permission','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'timeout_protection','effect':'required','description':'Auto-advance\x20prevents\x20indefinite\x20user\x20stalls'},{'dimension':'operational_risk','effect':'boost','description':'Reduces\x20delivery\x20timeline\x20uncertainty'}],'industryFit':{'freelance':0x5f,'education':0x46,'rental':0x50,'retail':0x3c,'subscription':0x28,'travel':0x3c,'licensing':0x55,'crowdfunding':0x46,'general':0x4b},'addressesPainPoints':['Buyer\x20never\x20approves\x20deliverables\x20(common\x20on\x20incumbent\x20talent\x20marketplaces)','Merchant\x20cash\x20flow\x20blocked\x20by\x20inactive\x20buyer','Infinite\x20revision\x20loops\x20without\x20resolution'],'intentSignals':[/timeout/i,/time[ -]?out/i,/auto[ -]?accept/i,/never (approves?|responds?|accepts?)/i,/unresponsive/i,/inactive (buyer|client)/i,/\bstall/i,/\bdeadline\b/i],'userProtections':['Still\x20has\x20full\x20N\x20days\x20to\x20review\x20and\x20reject','Rejection\x20triggers\x20arbitration\x20if\x20configured'],'merchantObligations':['Must\x20configure\x20time_guard\x20on\x20forward','Timeout\x20value\x20comes\x20from\x20the\x20template\x27s\x20window\x20fee_params\x20(e.g.\x20escrow_release_days;\x20override\x20per\x20build\x20via\x20fee_overrides)\x20—\x20never\x20a\x20hardcoded\x20number'],'requiresKeeper':!![],'keeperHint':'Keeper\x20monitors\x20time_guard\x20deadlines\x20and\x20advances\x20the\x20timeout\x20forward\x20when\x20the\x20window\x20elapses\x20(adminUnhold\x20is\x20only\x20the\x20hold-release\x20escape\x20hatch,\x20never\x20the\x20timeout\x20path)'},{'id':'refund_guarantee','name':'Refund\x20Guarantee','description':'Service\x20maintains\x20compensation_fund\x20for\x20refunds.\x20Refund_guard\x20validates\x20eligibility\x20and\x20transfers\x20funds\x20back\x20to\x20Order.','objectTypes':['service','guard','order'],'templateRefs':[{'template_id':'refund-guard','object_type':'guard','purpose':'Validate\x20refund\x20eligibility'}],'requiredConstraints':[{'constraint_id':'compensation_fund_positive','description':'compensation_fund_add\x20>\x200','level':'hard','blocking':!![]},{'constraint_id':'refund_guard_configured','description':'Service\x20must\x20have\x20refund_guard','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'boost','description':'Compensation\x20fund\x20backs\x20refund\x20promise'},{'dimension':'consumer_diligence','effect':'boost','description':'Shows\x20merchant\x20confidence\x20in\x20service\x20quality'}],'industryFit':{'freelance':0x46,'education':0x55,'rental':0x5a,'retail':0x5f,'subscription':0x50,'travel':0x55,'licensing':0x4b,'crowdfunding':0x5f,'general':0x50},'addressesPainPoints':['Refund\x20trapped\x20in\x20incumbent\x20platform\x20balance','No\x20refund\x20mechanism\x20for\x20service\x20failure','Refund\x20decision\x20centralized\x20at\x20platform'],'intentSignals':[/refund/i,/money[ -]?back/i,/guarantee/i],'userProtections':['Refund\x20goes\x20back\x20to\x20Order\x20(not\x20platform\x20balance)','Guard\x20validates\x20eligibility\x20(not\x20platform\x20discretion)','Compensation\x20fund\x20guarantees\x20liquidity'],'merchantObligations':['Must\x20maintain\x20compensation_fund\x20>\x200','Must\x20configure\x20refund_guard\x20rules'],'requiresKeeper':![]},{'id':'reputation_on_chain','name':'On-Chain\x20Reputation','description':'Merchant\x20and\x20user\x20behavior\x20permanently\x20recorded\x20on\x20Registrar.\x20Evaluations,\x20completions,\x20and\x20disputes\x20contribute\x20to\x20reputation\x20score.','objectTypes':['service','order','arb'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'service_published','description':'Service\x20must\x20be\x20published\x20to\x20accumulate\x20reputation','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'reputation_verifiability','effect':'required','description':'On-chain\x20history\x20is\x20tamper-proof'},{'dimension':'trust','effect':'boost','description':'Reputation\x20signals\x20reduce\x20information\x20asymmetry'}],'industryFit':{'freelance':0x5a,'education':0x50,'rental':0x55,'retail':0x5a,'subscription':0x55,'travel':0x50,'licensing':0x50,'crowdfunding':0x41,'general':0x55},'addressesPainPoints':['Fake\x20reviews\x20and\x20rating\x20manipulation','No\x20cross-platform\x20reputation\x20portability','Platform\x20can\x20delete\x20negative\x20reviews'],'intentSignals':[/reputation/i,/\breviews?\b/i,/\brating/i,/track record/i,/feedback/i],'userProtections':['Reputation\x20is\x20on-chain\x20and\x20immutable','Can\x20verify\x20merchant\x27s\x20complete\x20transaction\x20history','Dispute\x20outcomes\x20affect\x20reputation\x20permanently'],'merchantObligations':['All\x20service\x20interactions\x20become\x20part\x20of\x20permanent\x20record','Cannot\x20hide\x20negative\x20outcomes'],'requiresKeeper':![]},{'id':'supplier_collaboration','name':'Supplier\x20Collaboration','description':'Enable\x20merchant\x20to\x20delegate\x20sub-services\x20to\x20suppliers\x20with\x20transparent\x20payment\x20splitting.\x20No\x20platform\x20intermediary.','objectTypes':['service','allocation','demand'],'templateRefs':[{'template_id':'supplier-demand','object_type':'demand','purpose':'Create\x20sub-service\x20demand\x20for\x20suppliers'},{'template_id':'supplier-allocation','object_type':'allocation','purpose':'Split\x20order\x20payment\x20with\x20suppliers'}],'requiredConstraints':[{'constraint_id':'demand_configured','description':'Demand\x20must\x20reference\x20main\x20Service','level':'soft','blocking':![]},{'constraint_id':'allocation_sharing_configured','description':'Allocation\x20sharing\x20must\x20include\x20suppliers','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'supplier_visibility','effect':'required','description':'Supplier\x20payments\x20transparent\x20on-chain'},{'dimension':'governance_risk','effect':'boost','description':'No\x20platform\x20controls\x20supplier\x20relationships'}],'industryFit':{'freelance':0x3c,'education':0x46,'rental':0x28,'retail':0x55,'subscription':0x32,'travel':0x5a,'licensing':0x41,'crowdfunding':0x1e,'general':0x3c},'addressesPainPoints':['Supplier\x20payments\x20opaque\x20to\x20end\x20user','Platform\x20controls\x20supplier\x20relationships','No\x20direct\x20merchant-supplier\x20collaboration'],'intentSignals':[/supplier/i,/subcontract/i,/outsourc/i,/vendor/i,/sub[ -]?service/i,/delegate to/i],'userProtections':['Can\x20see\x20all\x20suppliers\x20involved\x20in\x20service','Supplier\x20payments\x20are\x20on-chain\x20auditable','Merchant\x20remains\x20accountable\x20for\x20supplier\x20quality'],'merchantObligations':['Must\x20declare\x20all\x20suppliers\x20upfront','Must\x20ensure\x20supplier\x20deliverables\x20meet\x20criteria'],'requiresKeeper':![]},{'id':'damage_attestation','name':'Damage\x20Attestation','description':'Rental-specific:\x20pre/post\x20condition\x20photos\x20hashed\x20to\x20Repository.\x20Guard\x20compares\x20hashes\x20to\x20automatically\x20enforce\x20damage\x20deductions.','objectTypes':['repository','guard','service'],'templateRefs':[{'template_id':'rental-condition-guard','object_type':'guard','purpose':'Compare\x20pre/post\x20rental\x20condition\x20hashes'},{'template_id':'condition-repository','object_type':'repository','purpose':'Store\x20rental\x20condition\x20evidence'}],'requiredConstraints':[{'constraint_id':'pre_rental_hash','description':'Pre-rental\x20condition\x20hash\x20must\x20be\x20committed','level':'hard','blocking':!![]},{'constraint_id':'post_rental_hash','description':'Post-rental\x20condition\x20hash\x20must\x20be\x20committed','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'proof_integrity','effect':'required','description':'Condition\x20hashes\x20prevent\x20tampering'},{'dimension':'arbitration_fairness','effect':'boost','description':'Objective\x20evidence\x20reduces\x20dispute\x20bias'}],'industryFit':{'freelance':0x14,'education':0x1e,'rental':0x62,'retail':0x28,'subscription':0x14,'travel':0x3c,'licensing':0x19,'crowdfunding':0x14,'general':0x28},'addressesPainPoints':['Landlord\x20claims\x20damage\x20without\x20proof\x20(common\x20on\x20incumbent\x20short-stay\x20platforms)','No\x20mandatory\x20pre-rental\x20photo\x20(vehicle-rental\x20damage\x20claims\x20denied)','Platform\x20arbitrates\x20damage\x20disputes\x20opaquely'],'intentSignals':[/damage/i,/condition (photo|report|check|record)/i,/pre[ -]?rental/i,/post[ -]?rental/i,/attest/i,/wear and tear/i],'userProtections':['Pre-rental\x20hash\x20commits\x20baseline\x20condition','Guard\x20automatically\x20compares\x20post-rental\x20state','Cannot\x20be\x20charged\x20for\x20pre-existing\x20damage'],'merchantObligations':['Must\x20commit\x20pre-rental\x20condition\x20hash','Must\x20commit\x20post-rental\x20condition\x20hash','Must\x20use\x20Repository\x20for\x20evidence\x20storage'],'requiresKeeper':!![],'keeperHint':'Keeper\x20triggers\x20post-rental\x20hash\x20collection\x20and\x20initiates\x20damage\x20Guard\x20comparison'},{'id':'discount_lifecycle','name':'Discount\x20Lifecycle','description':'Coupon\x20promotions\x20bound\x20to\x20a\x20Service\x20(percentage\x20or\x20fixed-amount\x20off):\x20minted\x20to\x20recipients,\x20redeemed\x20automatically\x20at\x20buy,\x20burned\x20on\x20use.\x20Chain\x20truth:\x20a\x20redeemed\x20coupon\x27s\x20balance\x20decrements\x20PERMANENTLY\x20(no\x20restock,\x20no\x20revert),\x20and\x20standing\x20renewal\x20discounts\x20are\x20NOT\x20constructible\x20(the\x20renew\x20path\x20has\x20no\x20discount\x20hook\x20—\x20every\x20renewal\x20re-prices\x20from\x20the\x20SKU\x20price).','objectTypes':['service'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'discount_budget_planned','description':'Total\x20discount\x20budget\x20(max_uses\x20x\x20discount_value)\x20planned\x20before\x20minting\x20—\x20the\x20burn\x20is\x20irreversible','level':'hard','blocking':!![]},{'constraint_id':'discount_burn_disclosed','description':'Burn-on-use\x20semantics\x20(permanent\x20decrement,\x20no\x20revert)\x20disclosed\x20in\x20the\x20promotion\x20terms','level':'hard','blocking':!![]},{'constraint_id':'discount_renewal_disclosed','description':'\x27First\x20period\x20X%\x20off,\x20then\x20standard\x27\x20disclosed\x20in\x20the\x20listing/WIP\x20BEFORE\x20purchase\x20(renewals\x20re-price\x20from\x20the\x20SKU\x20price\x20—\x20anti-dark-pattern)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'promotion_integrity','effect':'required','description':'Coupon\x20budget\x20and\x20burn\x20semantics\x20are\x20planned\x20and\x20disclosed,\x20never\x20improvised'},{'dimension':'fee_transparency','effect':'boost','description':'The\x20discounted\x20price\x20at\x20redemption\x20is\x20computed\x20by\x20the\x20chain,\x20not\x20asserted\x20by\x20prose'}],'industryFit':{'freelance':0x2d,'education':0x46,'rental':0x32,'retail':0x5f,'subscription':0x55,'travel':0x50,'licensing':0x3c,'crowdfunding':0x37,'general':0x46},'addressesPainPoints':['Coupon\x20systems\x20locked\x20inside\x20incumbent\x20platforms','Promotions\x20improvised\x20after\x20publish\x20with\x20no\x20budget\x20plan','Discount\x20promises\x20that\x20silently\x20change\x20at\x20renewal'],'intentSignals':[/coupon/i,/discount/i,/\bpromo/i,/voucher/i,/percentage off/i,/first[ -]?period off/i],'userProtections':['Redemption\x20is\x20computed\x20on-chain\x20at\x20buy\x20(no\x20manual\x20discount\x20approval)','Renewal\x20price\x20is\x20the\x20SKU\x20price\x20—\x20a\x20first-period\x20coupon\x20cannot\x20silently\x20renew\x20at\x20the\x20discounted\x20price','Expired\x20coupons\x20cannot\x20redeem'],'merchantObligations':['Plan\x20the\x20total\x20discount\x20budget\x20(max_uses\x20x\x20value)\x20before\x20minting','Disclose\x20burn-on-use\x20and\x20renewal\x20re-pricing\x20in\x20the\x20promotion\x20terms','Never\x20promise\x20a\x20standing\x20renewal\x20discount\x20(not\x20constructible\x20on-chain)'],'requiresKeeper':![]},{'id':'praise_incentive','name':'Review\x20Praise\x20Incentive','description':'Sale-time-planned\x20claim\x20Reward\x20for\x20buyer\x20reviews\x20(template\x20review_mode\x20\x27review_reward\x27):\x20the\x20build\x20emits\x20the\x20Reward\x20object,\x20attaches\x20the\x20replay-armed\x20claim\x20guard,\x20binds\x20it\x20to\x20the\x20Service,\x20and\x20funds\x20it\x20via\x20the\x20reward_funding\x20input\x20—\x20so\x20the\x20incentive\x20is\x20perceivable\x20by\x20the\x20buyer\x20BEFORE\x20ordering,\x20and\x20an\x20unfunded\x20or\x20unguarded\x20incentive\x20promise\x20must\x20not\x20publish.','objectTypes':['service','reward','guard'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'reward_pool_funded','description':'reward_funding\x20input\x20present\x20at\x20build\x20(an\x20unfunded\x20incentive\x20promise\x20must\x20not\x20publish)','level':'hard','blocking':!![]},{'constraint_id':'reward_claim_replay_armed','description':'Claim\x20guard\x20carries\x20the\x20record-gate\x20idempotency\x20leg\x20(replay-drain\x20target\x20otherwise)','level':'hard','blocking':!![]}],'evaluationImpact':[{'dimension':'trust','effect':'boost','description':'Funded,\x20perceivable\x20review\x20incentives\x20raise\x20honest\x20review\x20volume'},{'dimension':'promotion_integrity','effect':'required','description':'Incentive\x20terms\x20are\x20chain-enforced\x20(funded\x20pool\x20+\x20guarded\x20claim),\x20not\x20prose\x20promises'}],'industryFit':{'freelance':0x4b,'education':0x41,'rental':0x2d,'retail':0x55,'subscription':0x4b,'travel':0x41,'licensing':0x2d,'crowdfunding':0x2d,'general':0x41},'addressesPainPoints':['No\x20mechanism\x20to\x20incentivize\x20honest\x20buyer\x20reviews','Review\x20rewards\x20locked\x20inside\x20incumbent\x20platforms','Incentive\x20promises\x20that\x20evaporate\x20after\x20purchase'],'intentSignals':[/incentive/i,/reward/i,/cashback/i,/rebate/i,/bonus/i,/\btips?\b/i],'userProtections':['Incentive\x20perceivable\x20BEFORE\x20ordering\x20(funded\x20at\x20build,\x20not\x20after)','Claim\x20terms\x20chain-enforced\x20with\x20replay\x20protection','Rating\x20polarity\x20recorded\x20as\x20range-queryable\x20on-chain\x20rows\x20(1-5\x20rating\x20column)'],'merchantObligations':['Fund\x20the\x20reward\x20pool\x20at\x20build\x20time\x20(reward_funding)','Keep\x20the\x20claim\x20guard\x20replay-armed\x20(record-gate\x20leg)','Disclose\x20claim\x20terms\x20in\x20the\x20listing/WIP\x20promise'],'requiresKeeper':![]},{'id':'after_sales_guarantee','name':'After-Sales\x20Guarantee','description':'Declared\x20buyer\x20after-sales\x20remedy\x20(template\x20after_sales_mode\x20\x27return\x27\x20|\x20\x27exchange\x27\x20|\x20\x27warranty\x27):\x20the\x20machine_shape\x20ships\x20the\x20backing\x20rail\x20(e.g.\x20return_requested\x20->\x20returned),\x20riding\x20a\x20claimed_by\x20polarity\x20pair\x20—\x20the\x20refund\x20leg\x20pays\x20the\x20buyer\x20at\x20claimed_by\x20none,\x20the\x20merchant-recovery\x20leg\x20at\x20claimed_by\x20some\x20—\x20with\x20the\x20remedy\x20window\x20anchored\x20on\x20the\x20delivered\x20ENTRY\x20time\x20so\x20a\x20buyer\x20cannot\x20stall\x20the\x20merchant,\x20and\x20de-conflicted\x20against\x20settlement\x20so\x20refund\x20and\x20ruling\x20payouts\x20never\x20double-pay.','objectTypes':['machine','guard','allocation','order'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'after_sales_rail_present','description':'machine_shape\x20carries\x20a\x20node\x20backing\x20the\x20declared\x20after_sales_mode\x20(compile\x20AFTER_SALES_RAIL_MISSING\x20/\x20scanner\x20R-AFTER-SALES-RAIL)','level':'hard','blocking':!![]},{'constraint_id':'after_sales_polarity_pair','description':'refund\x20leg\x20claimed_by\x20some==false\x20paired\x20with\x20merchant-recovery\x20leg\x20some==true\x20(INV-C1,\x20RAIL_POLARITY_COLLISION\x20backstop)','level':'hard','blocking':!![]},{'constraint_id':'after_sales_window_anchored','description':'remedy\x20window\x20anchored\x20on\x20the\x20delivered\x20ENTRY\x20time,\x20not\x20a\x20drifting\x20current_time\x20(INV-C2,\x20TIME-ANCHOR-01)','level':'hard','blocking':!![]},{'constraint_id':'after_sales_no_double_remedy','description':'after-sales\x20refund\x20and\x20arbitration/award\x20payout\x20are\x20mutually\x20exclusive\x20rails\x20(INV-C3,\x20DUAL-RAIL-01)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'required','description':'The\x20claimed_by\x20polarity\x20pair\x20means\x20an\x20order\x20is\x20refunded\x20OR\x20recovered,\x20never\x20both'},{'dimension':'consumer_diligence','effect':'boost','description':'A\x20declared,\x20structurally-backed\x20remedy\x20window\x20is\x20verifiable\x20before\x20purchase'}],'industryFit':{'freelance':0x28,'education':0x2d,'rental':0x46,'retail':0x62,'subscription':0x23,'travel':0x37,'licensing':0x41,'crowdfunding':0x37,'general':0x3c},'addressesPainPoints':['Return/refund\x20policy\x20locked\x20inside\x20incumbent\x20platforms','No\x20enforced\x20return\x20window\x20—\x20buyer\x20stalls\x20or\x20merchant\x20refuses','Refund\x20and\x20dispute\x20payout\x20both\x20fire\x20(double-pay)','Exchange/warranty\x20promised\x20in\x20prose\x20with\x20no\x20on-chain\x20rail'],'intentSignals':[/after[ -]?sales/i,/\breturn/i,/exchange/i,/warranty/i,/remedy/i],'userProtections':['Remedy\x20window\x20is\x20chain-anchored\x20on\x20delivery\x20entry\x20(verifiable,\x20not\x20merchant\x20discretion)','Refund\x20returns\x20to\x20the\x20Order\x20(not\x20a\x20platform\x20balance)','The\x20polarity\x20pair\x20guarantees\x20exactly\x20one\x20remedy\x20pays'],'merchantObligations':['Ship\x20the\x20backing\x20rail\x20for\x20the\x20declared\x20after_sales_mode','Anchor\x20the\x20remedy\x20window\x20on\x20the\x20delivered\x20entry\x20time','Keep\x20the\x20refund\x20and\x20recovery\x20legs\x20a\x20claimed_by\x20polarity\x20pair\x20(never\x20both\x20satisfiable)'],'requiresKeeper':![]},{'id':'acceptance_judging','name':'Acceptance\x20&\x20Judging','description':'Declared\x20acceptance_mode\x20(\x27milestone\x27\x20|\x20\x27contest\x27\x20|\x20\x27bounty\x27\x20|\x20\x27agent\x27):\x20who\x20decides\x20the\x20escrow\x20releases\x20and\x20how\x20many\x20redelivery\x20rounds\x20are\x20allowed.\x20A\x20judge-decided\x20mode\x20routes\x20the\x20release\x20decision\x20to\x20an\x20independent\x20venue\x20(arbitration_mode\x20\x27third_party\x27)\x20so\x20the\x20payout-owing\x20party\x20never\x20self-adjudicates;\x20a\x20finite\x20revision_rounds_max\x20is\x20backed\x20by\x20a\x20counter\x20Repository\x20guard\x20because\x20the\x20chain\x20bounds\x20edges,\x20not\x20visits;\x20the\x20acceptance\x20and\x20timeout\x20siblings\x20are\x20distinct\x20forwards\x20so\x20the\x20buyer\x27s\x20approval\x20and\x20the\x20auto-accept\x20deadline\x20never\x20race\x20into\x20one\x20node.','objectTypes':['machine','guard','allocation','arb','repository'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'acceptance_judge_independent','description':'a\x20judge-decided\x20acceptance_mode\x20(contest/bounty/agent)\x20declares\x20arbitration_mode\x20\x27third_party\x27\x20(INV-A3,\x20compile\x20ACCEPTANCE_JUDGE_NOT_INDEPENDENT\x20/\x20scanner\x20R-ACCEPTANCE-JUDGE)','level':'hard','blocking':!![]},{'constraint_id':'acceptance_revision_bounded','description':'a\x20finite\x20revision_rounds_max\x20is\x20backed\x20by\x20a\x20counter\x20Repository\x20guard,\x20or\x20declared\x20\x27unlimited\x27\x20(INV-A1,\x20compile\x20ACCEPTANCE_REVISION_UNBOUNDED\x20/\x20scanner\x20R-ACCEPTANCE-REVISION)','level':'hard','blocking':!![]},{'constraint_id':'acceptance_race_free','description':'the\x20acceptance\x20forward\x20and\x20its\x20timeout\x20complement\x20are\x20distinct\x20siblings,\x20never\x20a\x20dual-prev\x20race\x20into\x20one\x20node\x20(INV-A2,\x20widened\x20R-REVIEW-NORACE)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'arbitration_fairness','effect':'required','description':'A\x20judge-decided\x20release\x20routes\x20through\x20an\x20independent\x20venue,\x20not\x20the\x20payout-owing\x20party'},{'dimension':'fund_safety','effect':'boost','description':'A\x20finite\x20revision\x20cap\x20the\x20chain\x20can\x20actually\x20enforce\x20(counter-backed)\x20prevents\x20an\x20unbounded\x20redelivery\x20drain'},{'dimension':'operational_risk','effect':'boost','description':'Distinct\x20accept/timeout\x20siblings\x20keep\x20the\x20buyer\x27s\x20decision\x20and\x20the\x20auto-accept\x20deadline\x20from\x20deadlocking\x20the\x20node'}],'industryFit':{'freelance':0x60,'education':0x37,'rental':0x1e,'retail':0x23,'subscription':0x1e,'travel':0x28,'licensing':0x4b,'crowdfunding':0x23,'general':0x3c},'addressesPainPoints':['Contest/bounty\x20winner\x20picked\x20by\x20the\x20party\x20holding\x20the\x20escrow\x20(self-adjudication)','Revision\x20rounds\x20promised\x20as\x20finite\x20in\x20prose\x20but\x20unbounded\x20on-chain\x20(the\x20on-chain\x20Progress\x20caps\x20edges,\x20not\x20visits)','Buyer\x20approval\x20and\x20auto-accept\x20timeout\x20racing\x20into\x20one\x20node\x20(deadlock\x20or\x20double-advance)','Agent-task\x20evaluator\x20not\x20identity-bound\x20to\x20the\x20delivery'],'intentSignals':[/acceptance/i,/judg(e|ing)/i,/contest/i,/bounty/i,/revision/i,/redeliver/i,/deliverable approv/i,/who decides/i],'userProtections':['A\x20judge-decided\x20release\x20is\x20ruled\x20by\x20an\x20independent\x20venue,\x20verifiable\x20before\x20purchase','A\x20finite\x20revision\x20cap\x20is\x20genuinely\x20enforceable\x20(counter\x20guard),\x20not\x20a\x20prose\x20promise','Auto-accept\x20only\x20fires\x20on\x20its\x20own\x20distinct\x20timeout\x20forward,\x20never\x20by\x20racing\x20the\x20buyer\x27s\x20decision'],'merchantObligations':['Declare\x20arbitration_mode\x20\x27third_party\x27\x20for\x20any\x20judge-decided\x20acceptance_mode','Back\x20a\x20finite\x20revision_rounds_max\x20with\x20a\x20counter\x20Repository\x20guard,\x20or\x20declare\x20it\x20\x27unlimited\x27\x20honestly','Keep\x20the\x20acceptance\x20and\x20timeout\x20forwards\x20distinct\x20siblings\x20(distinct\x20forward\x20names)'],'requiresKeeper':!![],'keeperHint':'A\x20judge-decided\x20acceptance\x20needs\x20a\x20keeper\x20to\x20push\x20the\x20ruling/placement\x20terminal\x20forward\x20once\x20the\x20independent\x20venue\x20decides;\x20the\x20accept-timeout\x20forward\x20also\x20needs\x20a\x20keeper\x20at\x20the\x20window\x20deadline'},{'id':'installment_deposit','name':'Installment\x20&\x20Deposit','description':'Declared\x20installment_mode\x20(\x27deposit_balance\x27\x20|\x20\x27milestone_n\x27):\x20the\x20buyer\x20pays\x20in\x20stages\x20—\x20a\x20deposit\x20now\x20and\x20the\x20balance\x20later,\x20or\x20N\x20milestone\x20captures.\x20Each\x20later\x20capture\x20rides\x20the\x20one-PTB\x20order_renew\x20call\x20(fund\x20+\x20record\x20+\x20advance).\x20PRE-STATE\x20CONSTRAINT\x20(esound-mn-261021\x20B-1,\x20mainnet-verified):\x20a\x20guard\x20reading\x20allocation.balance\x20sees\x20only\x20the\x20COMMITTED\x20pre-transaction\x20balance\x20—\x20the\x20same-PTB\x20payment\x20is\x20INVISIBLE\x20to\x20it,\x20so\x20a\x20balance-gated\x20capture\x20forward\x20ALWAYS\x20aborts\x20when\x20advanced\x20by\x20order_renew.\x20A\x20capture\x20forward\x20therefore\x20EITHER\x20binds\x20the\x20fund\x20gate\x20and\x20draws\x20on\x20funds\x20committed\x20in\x20a\x20prior\x20transaction\x20(prepaid-full\x20at\x20buy\x20—\x20staged-release\x20semantics),\x20OR\x20is\x20gate-less\x20and\x20relies\x20on\x20this\x20module\x27s\x20order_renew\x20routing\x20to\x20land\x20the\x20funds;\x20every\x20deposit-held\x20state\x20carries\x20a\x20refund/cancel\x20exit\x20rail\x20(a\x20full\x20refund\x20or\x20a\x20declared\x20kill\x20fee)\x20because\x20the\x20chain\x20imposes\x20no\x20obligation\x20to\x20pay\x20the\x20balance,\x20so\x20a\x20buyer\x20who\x20walks\x20away\x20never\x20strands\x20the\x20paid\x20portion.','objectTypes':['machine','guard','allocation','order','payment'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'installment_funding_gated','description':'every\x20capture\x20forward\x20(a\x20due\x20state\x20advancing\x20into\x20a\x20paid\x20state)\x20either\x20binds\x20a\x20fund-gate\x20Guard\x20reading\x20allocation.balance\x20(satisfiable\x20only\x20against\x20funds\x20committed\x20in\x20a\x20PRIOR\x20transaction\x20—\x20prepaid\x20shape,\x20INV-B1,\x20compile\x20INSTALLMENT_FUNDING_UNGATED\x20/\x20scanner\x20R-INSTALLMENT-FUNDING)\x20or\x20is\x20gate-less\x20and\x20relies\x20on\x20the\x20order_renew\x20routing\x20to\x20land\x20the\x20funds\x20same-PTB\x20(a\x20balance\x20gate\x20+\x20same-PTB\x20order_renew\x20ALWAYS\x20aborts\x20—\x20esound-mn-261021\x20B-1)','level':'soft','blocking':![]},{'constraint_id':'installment_deposit_exit','description':'every\x20deposit-held\x20state\x20carries\x20a\x20refund/cancel/forfeit\x20exit\x20rail\x20so\x20the\x20paid\x20portion\x20is\x20never\x20stranded\x20(INV-B2,\x20compile\x20INSTALLMENT_DEPOSIT_STRANDED\x20/\x20scanner\x20R-INSTALLMENT-DEPOSIT)','level':'soft','blocking':![]},{'constraint_id':'installment_release_once','description':'the\x20release\x20allocator\x20is\x20once_per_order\x20and\x20order-anchored\x20so\x20a\x20replay\x20cannot\x20re-capture\x20(INV-B3,\x20rides\x20the\x20existing\x20E-2\x20/\x20once-slot\x20/\x20order-anchor\x20audit)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'required','description':'The\x20capture\x20cannot\x20zero-value-advance:\x20gate-less\x20captures\x20land\x20funds\x20via\x20the\x20order_renew\x20routing;\x20balance-gated\x20captures\x20draw\x20on\x20prior-transaction\x20funds\x20(PRE-STATE\x20CONSTRAINT\x20—\x20same-PTB\x20funding\x20is\x20invisible\x20to\x20guards,\x20esound-mn-261021\x20B-1)'},{'dimension':'consumer_diligence','effect':'boost','description':'A\x20declared\x20deposit-exit\x20policy\x20(full\x20refund\x20vs\x20kill\x20fee)\x20is\x20verifiable\x20before\x20the\x20buyer\x20commits\x20the\x20deposit'},{'dimension':'operational_risk','effect':'boost','description':'once_per_order\x20+\x20order\x20anchor\x20on\x20the\x20release\x20keeps\x20a\x20replay\x20from\x20re-capturing\x20or\x20double-releasing'}],'industryFit':{'freelance':0x46,'education':0x2d,'rental':0x37,'retail':0x5a,'subscription':0x28,'travel':0x32,'licensing':0x1e,'crowdfunding':0x37,'general':0x3c},'addressesPainPoints':['Pre-order\x20/\x20deposit-then-balance\x20sales\x20locked\x20inside\x20incumbent\x20platforms','A\x20later\x20payment\x20recorded\x20without\x20the\x20funds\x20actually\x20landing\x20(zero-value\x20advance)','A\x20buyer\x20who\x20walks\x20away\x20strands\x20the\x20deposit\x20with\x20no\x20on-chain\x20exit','Milestone\x20billing\x20where\x20a\x20replay\x20re-charges\x20or\x20double-releases'],'intentSignals':[/installment/i,/deposit/i,/pay in stages/i,/down[ -]?payment/i,/balance (later|afterwards?)/i,/part(ial)? payment/i,/staged? payment/i],'userProtections':['A\x20capture\x20forward\x20cannot\x20zero-value-advance\x20(gate-less\x20captures\x20land\x20funds\x20via\x20the\x20order_renew\x20routing;\x20balance-gated\x20captures\x20require\x20prior-transaction\x20funds)','The\x20deposit-exit\x20policy\x20is\x20declared\x20and\x20structurally\x20backed\x20before\x20purchase','The\x20release\x20is\x20once-per-order\x20and\x20order-anchored,\x20so\x20no\x20replay\x20double-charges'],'merchantObligations':['Give\x20every\x20capture\x20forward\x20a\x20funding\x20story:\x20gate-less\x20+\x20order_renew\x20routing,\x20or\x20a\x20balance\x20fund\x20gate\x20fed\x20by\x20PRIOR-transaction\x20funds\x20(prepaid\x20shape\x20—\x20a\x20gate\x20plus\x20same-PTB\x20order_renew\x20always\x20aborts,\x20esound-mn-261021\x20B-1)','Ship\x20a\x20deposit-exit\x20rail\x20(refund\x20or\x20declared\x20kill\x20fee)\x20from\x20every\x20deposit-held\x20state','Make\x20the\x20release\x20allocator\x20once_per_order\x20and\x20order-anchored','Disclose\x20the\x20deposit\x20amount,\x20balance\x20window,\x20and\x20exit\x20policy\x20in\x20the\x20listing/WIP\x20promise'],'requiresKeeper':!![],'keeperHint':'The\x20balance-window\x20deadline\x20(a\x20buyer\x20who\x20never\x20pays\x20the\x20balance)\x20needs\x20a\x20keeper\x20to\x20drive\x20the\x20deposit-exit\x20rail\x20at\x20the\x20window\x20close;\x20a\x20milestone\x20capture\x20timeout\x20likewise'},{'id':'affiliate_commission','name':'Affiliate\x20Commission','description':'Declared\x20affiliate_mode\x20(\x27commission\x27):\x20the\x20merchant\x20sells\x20through\x20referral/affiliate\x20partners\x20and\x20owes\x20the\x20referring\x20partner\x20an\x20independent\x20commission\x20leg.\x20The\x20commission\x20is\x20window-anchored\x20—\x20it\x20accrues\x20at\x20attribution\x20but\x20is\x20claimable\x20only\x20after\x20the\x20attribution/refund\x20window\x20closes,\x20so\x20an\x20in-window\x20refund\x20never\x20has\x20to\x20reverse\x20an\x20already-paid\x20partner\x20(the\x20chain\x20has\x20no\x20debit/clawback\x20primitive,\x20so\x20a\x20released\x20commission\x20is\x20unrecoverable\x20and\x20the\x20template\x20must\x20disclose\x20that\x20honestly).\x20The\x20commission\x20leg\x20is\x20an\x20INDEPENDENT\x20allocation\x20off\x20a\x20dedicated\x20pool,\x20never\x20a\x20drain\x20of\x20the\x20buyer\x27s\x20goods\x20escrow.','objectTypes':['machine','guard','allocation','repository'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'affiliate_rail_present','description':'a\x20declared\x20commission\x20overlay\x20has\x20a\x20commission-family\x20machine\x20node\x20or\x20a\x20commission\x20allocator\x20row,\x20and\x20the\x20leg\x20is\x20INDEPENDENT\x20of\x20the\x20goods\x20escrow\x20(INV-D3,\x20compile\x20AFFILIATE_RAIL_MISSING\x20/\x20scanner\x20R-AFFILIATE-RAIL)','level':'soft','blocking':![]},{'constraint_id':'affiliate_clawback_disclosed','description':'a\x20build_note\x20discloses\x20the\x20post-lock\x20no-clawback\x20truth\x20—\x20a\x20released\x20commission\x20cannot\x20be\x20reversed\x20on\x20chain\x20(INV-D2,\x20compile\x20AFFILIATE_CLAWBACK_UNDISCLOSED\x20/\x20scanner\x20R-AFFILIATE-DISCLOSURE)','level':'soft','blocking':![]},{'constraint_id':'affiliate_window_anchored','description':'the\x20commission\x20claim\x20is\x20gated\x20by\x20a\x20window-anchored\x20guard\x20so\x20it\x20is\x20claimable\x20only\x20after\x20the\x20attribution/refund\x20window\x20closes\x20(INV-D1,\x20rides\x20the\x20generic\x20TIME-ANCHOR-01\x20audit)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'required','description':'The\x20commission\x20leg\x20is\x20an\x20independent\x20allocation\x20off\x20its\x20own\x20pool,\x20never\x20a\x20Surplus/Rate\x20drain\x20of\x20the\x20buyer\x27s\x20goods\x20escrow\x20(anti-grab-pool)'},{'dimension':'consumer_diligence','effect':'boost','description':'The\x20post-lock\x20no-clawback\x20truth\x20is\x20disclosed\x20before\x20purchase,\x20so\x20a\x20buyer/merchant\x20never\x20assumes\x20a\x20reversal\x20the\x20chain\x20cannot\x20do'},{'dimension':'operational_risk','effect':'boost','description':'The\x20window\x20anchor\x20means\x20an\x20in-window\x20refund\x20never\x20has\x20to\x20reverse\x20an\x20already-paid\x20partner\x20—\x20the\x20unrecoverable\x20surface\x20is\x20minimized\x20by\x20construction'}],'industryFit':{'freelance':0x3c,'education':0x37,'rental':0x23,'retail':0x50,'subscription':0x41,'travel':0x3c,'licensing':0x46,'crowdfunding':0x3c,'general':0x3c},'addressesPainPoints':['Referral/affiliate\x20payouts\x20locked\x20inside\x20incumbent\x20affiliate\x20networks\x20with\x20opaque\x20attribution','A\x20commission\x20drained\x20from\x20the\x20buyer\x27s\x20goods\x20escrow\x20instead\x20of\x20an\x20independent\x20pool\x20(pool-grabbing)','A\x20refund\x20after\x20commission\x20release\x20falsely\x20assumed\x20to\x20claw\x20back\x20the\x20partner\x20payout\x20(no\x20on-chain\x20debit\x20exists)','Attribution\x20claimed\x20instantly,\x20before\x20the\x20refund\x20window,\x20then\x20unrecoverable\x20when\x20the\x20order\x20refunds'],'intentSignals':[/affiliate/i,/referral/i,/referr/i,/commission/i,/revenue[ -]?shar/i,/partner[ -]?payout/i],'userProtections':['The\x20commission\x20is\x20paid\x20from\x20a\x20dedicated\x20pool,\x20so\x20the\x20buyer\x27s\x20goods\x20escrow\x20is\x20never\x20drained\x20by\x20the\x20partner\x20leg','The\x20post-lock\x20no-clawback\x20reality\x20is\x20disclosed\x20before\x20purchase,\x20not\x20discovered\x20at\x20refund\x20time','The\x20commission\x20is\x20only\x20claimable\x20after\x20the\x20attribution/refund\x20window\x20closes,\x20so\x20an\x20in-window\x20refund\x20is\x20clean'],'merchantObligations':['Route\x20the\x20commission\x20through\x20an\x20INDEPENDENT\x20allocation\x20leg\x20to\x20an\x20explicit\x20non-empty\x20partner\x20Entity','Gate\x20the\x20claim\x20with\x20a\x20window-anchored\x20guard\x20(claimable\x20only\x20after\x20the\x20attribution/refund\x20window)','Disclose\x20the\x20post-lock\x20no-clawback\x20truth\x20in\x20a\x20build_note\x20and\x20the\x20listing\x20promise','Declare\x20the\x20commission\x20rate/bps\x20and\x20the\x20attribution\x20window\x20in\x20the\x20listing\x20so\x20a\x20partner\x20can\x20price\x20it\x20before\x20referral'],'requiresKeeper':!![],'keeperHint':'The\x20attribution/refund\x20window\x20deadline\x20needs\x20a\x20keeper\x20to\x20open\x20the\x20commission\x20claim\x20once\x20the\x20window\x20closes\x20(the\x20claim\x20guard\x27s\x20time\x20gate\x20arms\x20at\x20entry_time\x20+\x20window)'},{'id':'crowdfunding','name':'Crowdfunding\x20Campaign','description':'Declared\x20crowdfunding_mode\x20(\x27threshold\x27\x20all-or-nothing\x20/\x20\x27flexible\x27\x20keep-it-all):\x20backers\x20each\x20escrow\x20a\x20contribution\x20in\x20its\x20OWN\x20unpooled\x20Allocation\x20(for_object\x20=\x20their\x20order,\x20never\x20balance-joined,\x20so\x20attribution\x20survives).\x20A\x20shared\x20campaign\x20Repository\x20records\x20one\x20writer-bound\x20numeric\x20row\x20per\x20contribution\x20(id_from\x20signer,\x20value\x20=\x20amount).\x20At\x20an\x20ABSOLUTE\x20campaign\x20deadline\x20a\x20settlement\x20guard\x20reads\x20the\x20on-chain\x20aggregate\x20(repository.data\x20sum-where,\x20query\x201174\x20→\x20U256)\x20and\x20decides:\x20aggregate\x20>=\x20goal\x20→\x20release\x20every\x20contribution\x20to\x20the\x20project\x20Entity;\x20aggregate\x20<\x20goal\x20(threshold\x20model)\x20→\x20refund\x20each\x20backer\x20their\x20own\x20contribution\x20(slot\x200\x20—\x20the\x20submitted\x20Order,\x20extracted\x20by\x20owner_receive;\x20NEVER\x20slot\x20254\x20on\x20a\x20refund\x20rail).\x20The\x20flexible\x20model\x20has\x20no\x20goal\x20and\x20no\x20refund\x20leg\x20—\x20contributions\x20release\x20at\x20the\x20deadline\x20and\x20are\x20non-refundable\x20(disclosed).\x20The\x20aggregate\x20is\x20attested-roster\x20evidence,\x20not\x20a\x20chain-verified\x20custody\x20proof;\x20a\x20raise\x20is\x20never\x20an\x20investment.','objectTypes':['machine','guard','allocation','repository'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'crowdfunding_exit_rail_present','description':'a\x20declared\x20campaign\x20has\x20a\x20release/settlement\x20rail,\x20and\x20a\x20threshold\x20campaign\x20additionally\x20has\x20a\x20refund\x20rail\x20—\x20the\x20two-leg\x20escrow-exit\x20(release\x20XOR\x20refund,\x20D-BUG-2)\x20so\x20contributions\x20never\x20strand\x20at\x20the\x20deadline\x20(INV-E1,\x20compile\x20CROWDFUNDING_THRESHOLD_GATE_MISSING\x20/\x20scanner\x20R-CROWDFUNDING-RAIL)','level':'soft','blocking':![]},{'constraint_id':'crowdfunding_aggregate_writer_bound','description':'a\x20threshold\x20aggregate\x20reads\x20the\x20ESCROW-BOUND\x20sum\x20(query\x201179,\x20per-row\x20min(row,\x20order.amount))\x20over\x20ORDER-KEYED\x20rows\x20(policy\x20id_from\x20unset,\x20row\x20id\x20=\x20the\x20funder\x27s\x20Order\x20address\x20+\x20an\x20identity\x20write_guard\x20order.owner==Signer),\x20never\x20a\x20self-reported\x20free-form\x20sum\x20over\x20wallet-keyed\x20rows\x20(INV-E2\x20/\x20R-X1-17,\x20compile\x20CROWDFUNDING_AGGREGATE_UNBOUND\x20/\x20CROWDFUNDING_SIGNER_KEYED_ROWS\x20/\x20scanner\x20R-CROWDFUNDING-AGGREGATE)','level':'soft','blocking':![]},{'constraint_id':'crowdfunding_disclosure_present','description':'build_notes\x20disclose\x20the\x20L-04\x20aggregate\x20trust\x20boundary\x20(threshold),\x20the\x20L-01\x20non-investment\x20statement,\x20the\x20L-05\x20KYC/AML\x20caution,\x20and\x20—\x20for\x20a\x20flexible\x20build\x20—\x20the\x20NO-REFUND\x20keep-it-all\x20posture\x20(INV-E3,\x20compile\x20CROWDFUNDING_DISCLOSURE_MISSING\x20/\x20scanner\x20R-CROWDFUNDING-DISCLOSURE)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'fund_safety','effect':'required','description':'Each\x20contribution\x20is\x20escrowed\x20UNPOOLED\x20(for_object\x20=\x20its\x20own\x20order,\x20never\x20balance::join)\x20so\x20a\x20missed\x20campaign\x20refunds\x20every\x20backer\x20their\x20OWN\x20money;\x20the\x20release/refund\x20legs\x20are\x20mutually\x20exclusive\x20(D-BUG-2)'},{'dimension':'consumer_diligence','effect':'boost','description':'The\x20aggregate-trust\x20boundary,\x20the\x20non-investment\x20posture\x20and\x20(flexible)\x20the\x20no-refund\x20reality\x20are\x20disclosed\x20before\x20contribution,\x20so\x20a\x20backer\x20never\x20assumes\x20a\x20chain-verified\x20custody\x20proof\x20or\x20a\x20refund\x20the\x20model\x20does\x20not\x20have'},{'dimension':'operational_risk','effect':'boost','description':'One\x20ABSOLUTE\x20shared\x20deadline\x20(not\x20per-order\x20entry+duration)\x20means\x20every\x20backer\x20settles\x20at\x20the\x20same\x20cutoff;\x20the\x20writer-bound\x20ledger\x20makes\x20the\x20raise\x20total\x20attributable\x20and\x20honest'}],'industryFit':{'freelance':0x1e,'education':0x28,'rental':0x14,'retail':0x3c,'subscription':0x23,'travel':0x19,'licensing':0x2d,'crowdfunding':0x64,'general':0x37},'addressesPainPoints':['An\x20all-or-nothing\x20raise\x20where\x20a\x20missed\x20goal\x20must\x20refund\x20every\x20backer,\x20but\x20pooled\x20custody\x20loses\x20per-backer\x20attribution','A\x20funding\x20total\x20presented\x20as\x20a\x20chain-verified\x20custody\x20proof\x20when\x20it\x20is\x20only\x20an\x20attested\x20sum\x20over\x20keeper-supplied\x20rows','A\x20backer\x20mistaking\x20a\x20flexible\x20keep-it-all\x20raise\x20for\x20a\x20refundable\x20all-or-nothing\x20campaign','Pooled\x20cross-border\x20fundraising\x20treated\x20as\x20a\x20casual\x20purchase\x20despite\x20HIGH\x20securities\x20/\x20money-transmission\x20/\x20KYC-AML\x20exposure'],'intentSignals':[/crowdfund/i,/\bbackers?\b/i,/campaign/i,/all[ -]?or[ -]?nothing/i,/fundrais/i,/\bpledge/i,/raise (funds|money)/i,/keep[ -]?it[ -]?all/i],'userProtections':['Each\x20contribution\x20is\x20escrowed\x20to\x20the\x20backer\x27s\x20OWN\x20order\x20(unpooled),\x20so\x20a\x20missed\x20threshold\x20refunds\x20exactly\x20their\x20money','The\x20aggregate-trust\x20boundary\x20and\x20the\x20non-investment\x20posture\x20are\x20disclosed\x20before\x20contribution','A\x20flexible\x20raise\x20states\x20the\x20NO-REFUND\x20keep-it-all\x20posture\x20up\x20front,\x20never\x20blurred\x20with\x20all-or-nothing','Delivery\x20after\x20a\x20successful\x20raise\x20is\x20backed\x20by\x20the\x20compensation\x20fund\x20+\x20third-party\x20arbitration'],'merchantObligations':['Escrow\x20each\x20contribution\x20UNPOOLED\x20(for_object\x20=\x20the\x20funder\x27s\x20order),\x20never\x20balance-joined\x20into\x20a\x20shared\x20pot','Bind\x20the\x20campaign\x20Repository\x20write_guard\x20to\x20the\x20contributing\x20backer\x20(id_from\x20signer,\x20order.owner==Signer)\x20so\x20the\x20aggregate\x20cannot\x20be\x20forged','Gate\x20release\x20on\x20the\x20sum-where\x20aggregate\x20ANDed\x20with\x20an\x20ABSOLUTE\x20shared\x20campaign\x20deadline;\x20pair\x20the\x20refund\x20leg\x20with\x20a\x20recover_gate\x20rail\x20(D-BUG-2)','Disclose\x20the\x20L-04\x20aggregate\x20trust\x20boundary,\x20the\x20L-01\x20non-investment\x20statement,\x20the\x20L-05\x20KYC/AML\x20caution,\x20and\x20(flexible)\x20the\x20no-refund\x20posture\x20in\x20build_notes\x20and\x20the\x20listing'],'requiresKeeper':!![],'keeperHint':'The\x20ABSOLUTE\x20campaign\x20deadline\x20needs\x20a\x20keeper\x20to\x20drive\x20settlement\x20once\x20Clock\x20>=\x20deadline:\x20on\x20a\x20met\x20goal\x20advance\x20each\x20order\x20to\x20the\x20release\x20terminal;\x20on\x20a\x20missed\x20threshold\x20enumerate\x20contributor\x20ids\x20via\x20find-where\x20(1176)\x20/\x20keys-where\x20(1177,\x20max\x20100\x20per\x20batch)\x20and\x20advance\x20each\x20refund\x20leg.\x20WITNESS\x20BOUNDARY\x20(S12-③):\x20the\x20100-cap\x20is\x20the\x20guard-table\x20id\x20vector;\x20the\x20guard\x27s\x20inline\x20witness\x20holds\x20≤\x20~7\x20addresses\x20(256\x20BCS\x20bytes)\x20—\x20keep\x20roster\x20enumeration\x20in\x20the\x20vector'},{'id':'logistics_fulfillment','name':'Logistics\x20&\x20Fulfillment','description':'Declared\x20logistics_mode\x20(\x27carrier\x27\x20|\x20\x27merchant_managed\x27\x20|\x20\x27courier\x27\x20|\x20\x27pickup_point\x27):\x20how\x20the\x20physical\x20good\x20reaches\x20the\x20buyer.\x20carrier\x20=\x20third-party\x20carrier\x20with\x20mandatory\x20tracking\x20evidence;\x20merchant_managed\x20=\x20the\x20merchant\x27s\x20own\x20staff\x20(handover/inspection);\x20courier\x20=\x20per-order\x20dispatched\x20riders\x20riding\x20namedOperator\x20roster\x20rails\x20(the\x20ONLY\x20forward\x20a\x20third-party\x20rider\x20can\x20pass\x20—\x20no\x20permission\x20entity,\x20no\x20buyer\x20identity);\x20pickup_point\x20=\x20batch\x20consolidation\x20anchored\x20on\x20an\x20ABSOLUTE\x20shared\x20cutoff\x20with\x20a\x20bounded\x20unclaimed-goods\x20exit.\x20Every\x20physical\x20mode\x20carries\x20a\x20transit-loss\x20story\x20(an\x20express\x20loss\x20rail\x20or\x20a\x20disclosed\x20arbitration→refund\x20remedy).\x20The\x20delivery\x20fee\x20is\x20known\x20at\x20order\x20time\x20and\x20must\x20be\x20an\x20INDEPENDENT\x20leg\x20—\x20never\x20a\x20Surplus/Rate\x20drain\x20of\x20the\x20buyer\x27s\x20goods\x20escrow.','objectTypes':['machine','guard','allocation','repository'],'templateRefs':[],'requiredConstraints':[{'constraint_id':'logistics_rail_present','description':'the\x20declared\x20topology\x20is\x20structurally\x20expressed:\x20courier\x20builds\x20bind\x20namedOperator\x20handover\x20rails\x20(compile\x20LOGISTICS_COURIER_RAIL_MISSING)\x20with\x20exclusive\x20admission\x20via\x20kernel\x20query\x201575\x20(order.named_operator\x20member,\x20protocol\x20v138\x20—\x20the\x20rail\x20alone\x20AUTHORIZES\x20members\x20and\x20never\x20bars\x20non-members;\x20template\x20tpl_forward_roster_member_gate),\x20pickup_point\x20builds\x20carry\x20the\x20absolute\x20batch\x20cutoff\x20+\x20the\x20unclaimed-goods\x20exit\x20window\x20(LOGISTICS_PICKUP_CUTOFF_MISSING),\x20carrier\x20builds\x20bind\x20tracking\x20evidence\x20(LOGISTICS_CARRIER_EVIDENCE_MISSING)','level':'soft','blocking':![]},{'constraint_id':'logistics_loss_covered','description':'every\x20physical\x20mode\x20carries\x20a\x20transit-loss\x20story\x20—\x20an\x20express\x20loss\x20rail\x20or\x20a\x20disclosed\x20arbitration→refund\x20remedy\x20(compile\x20LOGISTICS_TRANSIT_LOSS_UNCOVERED\x20/\x20scanner\x20R-LOGISTICS-TRANSIT)','level':'soft','blocking':![]},{'constraint_id':'logistics_fee_independent','description':'the\x20delivery\x20fee\x20is\x20an\x20INDEPENDENT\x20Amount/Rate\x20leg\x20off\x20its\x20own\x20pool\x20—\x20never\x20a\x20Surplus\x20drain\x20of\x20the\x20buyer\x27s\x20goods\x20escrow\x20(compile\x20LOGISTICS_COURIER_FEE_POOLED;\x20the\x20anti-grab-pool\x20family)','level':'soft','blocking':![]},{'constraint_id':'logistics_dispatch_disclosed','description':'courier/pickup_point\x20builds\x20disclose\x20the\x20two\x20dispatch\x20SOLE-TRUTHs:\x20no\x20on-chain\x20dispatch\x20scheduler\x20(off-chain\x20keeper,\x20roster\x20via\x20permission\x20index\x20221)\x20and\x20no\x20distance/weight/weather\x20oracle\x20(compile\x20LOGISTICS_DISPATCH_UNDISCLOSED\x20/\x20scanner\x20R-LOGISTICS-DISCLOSURE)','level':'soft','blocking':![]}],'evaluationImpact':[{'dimension':'consumer_diligence','effect':'required','description':'The\x20fulfillment\x20topology\x20is\x20declared\x20and\x20enforced\x20before\x20purchase\x20—\x20the\x20buyer\x20knows\x20whether\x20goods\x20ride\x20a\x20carrier\x20(with\x20tracking\x20evidence),\x20the\x20merchant\x27s\x20own\x20staff,\x20a\x20dispatched\x20rider,\x20or\x20a\x20pickup\x20batch'},{'dimension':'fund_safety','effect':'boost','description':'The\x20delivery\x20fee\x20never\x20drains\x20the\x20goods\x20escrow\x20(independent\x20leg)\x20and\x20every\x20physical\x20mode\x20carries\x20a\x20transit-loss\x20route,\x20so\x20an\x20undeliverable\x20order\x20never\x20strands\x20the\x20buyer\x27s\x20funds\x20silently'},{'dimension':'operational_risk','effect':'boost','description':'Dispatch\x20is\x20honestly\x20disclosed\x20as\x20an\x20off-chain\x20keeper\x20duty\x20(no\x20on-chain\x20scheduler/oracle\x20exists),\x20so\x20ETA\x20and\x20pricing\x20promises\x20never\x20masquerade\x20as\x20chain\x20guarantees'}],'industryFit':{'freelance':0x1e,'education':0x19,'rental':0x37,'retail':0x46,'subscription':0x23,'travel':0x1e,'licensing':0x14,'crowdfunding':0x28,'general':0x28},'addressesPainPoints':['Fulfillment\x20topology\x20correctness\x20audited\x20by\x20prose\x20instead\x20of\x20structure\x20(a\x20courier\x20build\x20with\x20no\x20rider\x20rail,\x20a\x20pickup\x20batch\x20with\x20no\x20cutoff)','A\x20delivery\x20fee\x20drained\x20from\x20the\x20buyer\x27s\x20goods\x20escrow\x20instead\x20of\x20an\x20independent\x20leg\x20(pool-grabbing)','Goods\x20lost\x20in\x20transit\x20with\x20no\x20taught\x20remedy\x20route,\x20silently\x20stranding\x20the\x20buyer\x27s\x20funds','Builders\x20assuming\x20an\x20on-chain\x20dispatch\x20scheduler\x20or\x20distance\x20oracle\x20the\x20chain\x20does\x20not\x20have'],'intentSignals':[/deliver(y|ies)?/i,/\bshipping\b/i,/courier/i,/\brider\b/i,/dispatch/i,/pickup point/i,/self[- ]pick/i,/fulfillment/i,/\blogistics\b/i],'userProtections':['The\x20fulfillment\x20mode\x20is\x20declared\x20and\x20structurally\x20enforced,\x20not\x20a\x20prose\x20promise','A\x20lost-in-transit\x20order\x20has\x20a\x20disclosed\x20remedy\x20route\x20(arbitration\x20→\x20refund),\x20never\x20silence','The\x20delivery\x20fee\x20comes\x20out\x20of\x20its\x20own\x20pool,\x20never\x20out\x20of\x20the\x20buyer\x27s\x20goods\x20escrow','Dispatch\x20and\x20ETA\x20claims\x20are\x20disclosed\x20as\x20off-chain\x20keeper\x20operations,\x20not\x20chain\x20guarantees','Courier\x20handovers\x20are\x20roster-exclusive:\x20a\x20rider\x20not\x20on\x20the\x20order\x27s\x20named-operator\x20roster\x20is\x20kernel-barred\x20from\x20advancing\x20(query\x201575)'],'merchantObligations':['Declare\x20logistics_mode\x20and\x20honor\x20its\x20semantics\x20(rails,\x20evidence,\x20cutoffs)\x20—\x20compile\x20blocks\x20a\x20declared\x20topology\x20the\x20shape\x20cannot\x20express','Keep\x20the\x20delivery\x20fee\x20on\x20an\x20independent\x20leg\x20off\x20its\x20own\x20pool','Give\x20every\x20physical\x20build\x20a\x20transit-loss\x20story\x20(loss\x20rail\x20or\x20disclosed\x20arbitration→refund\x20remedy)','For\x20courier/pickup_point:\x20run\x20the\x20dispatch\x20keeper\x20(roster\x20writes\x20via\x20permission\x20index\x20221)\x20and\x20disclose\x20that\x20ETA/pricing\x20live\x20off-chain'],'requiresKeeper':!![],'keeperHint':'Dynamic\x20modes\x20(courier/pickup_point)\x20need\x20the\x20dispatch\x20keeper:\x20fill\x20the\x20namedOperator\x20roster\x20per\x20order/shift\x20via\x20permission\x20index\x20221\x20(miss\x20=\x20the\x20order\x20waits\x20at\x20the\x20handover\x20state);\x20pickup\x20batches\x20need\x20the\x20keeper\x20to\x20drive\x20the\x20cutoff\x20release\x20and\x20the\x20unclaimed-goods\x20exit\x20at\x20the\x20window\x20deadline'}];export function getBusinessModule(a){return CORE_BUSINESS_MODULES['find'](b=>b['id']===a);}export function getModulesForIndustry(a){return[...CORE_BUSINESS_MODULES]['sort']((c,d)=>(d['industryFit'][a]??0x0)-(c['industryFit'][a]??0x0));}export function recommendModules(a,b,c){const d=c?.['minFit']??0x32,e=c?.['maxModules']??0x5,f=CORE_BUSINESS_MODULES['map'](g=>{let h=g['industryFit'][a]??0x32;const i=b['toLowerCase']();for(const j of g['addressesPainPoints']){const k=j['toLowerCase']()['split'](/\s+/),l=k['filter'](n=>i['includes'](n))['length'];h+=l*0x5;}return{'module':g,'score':Math['min'](h,0x64)};});return f['filter'](g=>g['score']>=d)['sort']((g,h)=>h['score']-g['score'])['slice'](0x0,e)['map'](g=>g['module']);}export function moduleHasIntentEvidence(a,b){if(!a['intentSignals']||a['intentSignals']['length']===0x0)return![];return a['intentSignals']['some'](c=>c['test'](b));}export function checkModuleConstraints(a,b,c){const d=a['requiredConstraints']['filter'](h=>h['blocking']&&!b['has'](h['constraint_id']))['map'](h=>h['constraint_id']),e=d['length']===0x0,f=a['evaluationImpact']['filter'](h=>h['effect']==='boost'||h['effect']==='required')['reduce']((h,i)=>h+(i['effect']==='required'?0xf:0x8),0x0),g=c?.['evidenceMatched']===![]?0x0:f;return{'module':a['id'],'adopted':e,'reason':e?undefined:'Missing\x20required\x20constraints:\x20'+d['join'](',\x20'),'missingConstraints':d['length']>0x0?d:undefined,'estimatedScoreBoost':Math['min'](g,0x64),'evidence_matched':c?.['evidenceMatched']};}export function calculateModuleScoreBoost(a){const b={};for(const c of a){for(const d of c['evaluationImpact']){const e=d['effect']==='required'?0xf:d['effect']==='boost'?0x8:0x3;b[d['dimension']]=(b[d['dimension']]??0x0)+e;}}return b;}
|
|
@@ -1,379 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://wowok.net/schemas/guard-templates.json",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "Guard creation templates for common validation patterns. Each template is a complete CallGuard_Data object that can be used as-is or customized. Use schema_query action='get_guard_templates' to retrieve these templates.",
|
|
5
|
-
"templates": [
|
|
6
|
-
{
|
|
7
|
-
"name": "signer_verification",
|
|
8
|
-
"title": "Signer Verification Guard",
|
|
9
|
-
"description": "Verifies that the transaction signer matches a specific address stored in the Guard table. Simplest possible Guard — use as a starting point.",
|
|
10
|
-
"use_case": "Only a specific account (e.g., the merchant) can perform an action. Common for Service buy_guard, Machine forward guard, Reward claim guard.",
|
|
11
|
-
"binding_hint": {
|
|
12
|
-
"action": "buy",
|
|
13
|
-
"host_object": "Service",
|
|
14
|
-
"binding_field": "buy_guard",
|
|
15
|
-
"rule_sentence": "Only the specified address can perform this action.",
|
|
16
|
-
"failure_conditions": ["Signer does not match the stored address."],
|
|
17
|
-
"circular_reference": false
|
|
18
|
-
},
|
|
19
|
-
"template": {
|
|
20
|
-
"namedNew": {
|
|
21
|
-
"name": "guard_signer_verification",
|
|
22
|
-
"replaceExistName": false
|
|
23
|
-
},
|
|
24
|
-
"description": "Verify signer matches the address stored at identifier 0 in the table.",
|
|
25
|
-
"table": [
|
|
26
|
-
{
|
|
27
|
-
"identifier": 0,
|
|
28
|
-
"b_submission": false,
|
|
29
|
-
"name": "allowed_address",
|
|
30
|
-
"value": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
31
|
-
"value_type": "Address"
|
|
32
|
-
}
|
|
33
|
-
],
|
|
34
|
-
"root": {
|
|
35
|
-
"type": "logic_equal",
|
|
36
|
-
"nodes": [
|
|
37
|
-
{ "type": "context", "context": "Signer" },
|
|
38
|
-
{ "type": "identifier", "identifier": 0 }
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
"customization": {
|
|
43
|
-
"table[0].value": "Replace with the allowed address (0x + 64 hex chars).",
|
|
44
|
-
"namedNew.name": "Set a unique Guard name.",
|
|
45
|
-
"namedNew.replaceExistName": "Set true to overwrite an existing Guard with the same name."
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"name": "progress_node_check",
|
|
50
|
-
"title": "Progress Node Check Guard",
|
|
51
|
-
"description": "Verifies that an Order's Progress is at a specific node. Uses convert_witness=100 (TypeOrderProgress) to access the submitted Order's Progress data.",
|
|
52
|
-
"use_case": "Allow an action only when the order is at a specific workflow node (e.g., 'Completed' for refunds, 'Delivered' for reward claims). Common for Allocation guard, Reward claim guard.",
|
|
53
|
-
"binding_hint": {
|
|
54
|
-
"action": "allocate",
|
|
55
|
-
"host_object": "Service",
|
|
56
|
-
"binding_field": "order_allocators",
|
|
57
|
-
"rule_sentence": "The order must be at the specified progress node.",
|
|
58
|
-
"failure_conditions": ["Order is not at the expected progress node."],
|
|
59
|
-
"circular_reference": false
|
|
60
|
-
},
|
|
61
|
-
"template": {
|
|
62
|
-
"namedNew": {
|
|
63
|
-
"name": "guard_progress_node_check",
|
|
64
|
-
"replaceExistName": false
|
|
65
|
-
},
|
|
66
|
-
"description": "Verify order progress is at the node name stored at identifier 1.",
|
|
67
|
-
"table": [
|
|
68
|
-
{
|
|
69
|
-
"identifier": 0,
|
|
70
|
-
"b_submission": true,
|
|
71
|
-
"name": "submitted_order",
|
|
72
|
-
"value_type": "Address"
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"identifier": 1,
|
|
76
|
-
"b_submission": false,
|
|
77
|
-
"name": "expected_node_name",
|
|
78
|
-
"value": "Completed",
|
|
79
|
-
"value_type": "String"
|
|
80
|
-
}
|
|
81
|
-
],
|
|
82
|
-
"root": {
|
|
83
|
-
"type": "logic_equal",
|
|
84
|
-
"nodes": [
|
|
85
|
-
{
|
|
86
|
-
"type": "query",
|
|
87
|
-
"query": 1253,
|
|
88
|
-
"object": { "identifier": 0, "convert_witness": 100 },
|
|
89
|
-
"parameters": []
|
|
90
|
-
},
|
|
91
|
-
{ "type": "identifier", "identifier": 1 }
|
|
92
|
-
]
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
"customization": {
|
|
96
|
-
"table[1].value": "Replace 'Completed' with the expected node name.",
|
|
97
|
-
"table[0].value_type": "Address — the submitted order address (b_submission=true).",
|
|
98
|
-
"namedNew.name": "Set a unique Guard name."
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"name": "order_owner_verification",
|
|
103
|
-
"title": "Order Owner Verification Guard",
|
|
104
|
-
"description": "Verifies that the transaction signer is the owner of the submitted Order. Uses query=1562 (order.owner) to dynamically fetch the owner.",
|
|
105
|
-
"use_case": "Only the order owner can trigger a refund or claim. Prevents fund theft — even if someone else knows the order ID, they cannot claim funds.",
|
|
106
|
-
"binding_hint": {
|
|
107
|
-
"action": "allocate",
|
|
108
|
-
"host_object": "Service",
|
|
109
|
-
"binding_field": "order_allocators",
|
|
110
|
-
"rule_sentence": "Only the order owner can trigger this allocation.",
|
|
111
|
-
"failure_conditions": ["Signer is not the order owner."],
|
|
112
|
-
"circular_reference": false
|
|
113
|
-
},
|
|
114
|
-
"template": {
|
|
115
|
-
"namedNew": {
|
|
116
|
-
"name": "guard_order_owner_verification",
|
|
117
|
-
"replaceExistName": false
|
|
118
|
-
},
|
|
119
|
-
"description": "Verify signer is the owner of the submitted order (identifier 0).",
|
|
120
|
-
"table": [
|
|
121
|
-
{
|
|
122
|
-
"identifier": 0,
|
|
123
|
-
"b_submission": true,
|
|
124
|
-
"name": "submitted_order",
|
|
125
|
-
"value_type": "Address"
|
|
126
|
-
}
|
|
127
|
-
],
|
|
128
|
-
"root": {
|
|
129
|
-
"type": "logic_equal",
|
|
130
|
-
"nodes": [
|
|
131
|
-
{ "type": "context", "context": "Signer" },
|
|
132
|
-
{
|
|
133
|
-
"type": "query",
|
|
134
|
-
"query": 1562,
|
|
135
|
-
"object": { "identifier": 0 },
|
|
136
|
-
"parameters": []
|
|
137
|
-
}
|
|
138
|
-
]
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
"customization": {
|
|
142
|
-
"namedNew.name": "Set a unique Guard name."
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
"name": "service_belonging_check",
|
|
147
|
-
"title": "Service Belonging Guard",
|
|
148
|
-
"description": "Verifies that the submitted Order belongs to a specific Service. Uses query=1563 (order.service) to dynamically fetch the service address.",
|
|
149
|
-
"use_case": "Prevents cross-service theft — even if an attacker has a valid order from a different service, they cannot claim funds from THIS service's allocation. Combine with order_owner_verification for full security.",
|
|
150
|
-
"binding_hint": {
|
|
151
|
-
"action": "allocate",
|
|
152
|
-
"host_object": "Service",
|
|
153
|
-
"binding_field": "order_allocators",
|
|
154
|
-
"rule_sentence": "The order must belong to this specific service.",
|
|
155
|
-
"failure_conditions": ["Order belongs to a different service."],
|
|
156
|
-
"circular_reference": false
|
|
157
|
-
},
|
|
158
|
-
"template": {
|
|
159
|
-
"namedNew": {
|
|
160
|
-
"name": "guard_service_belonging_check",
|
|
161
|
-
"replaceExistName": false
|
|
162
|
-
},
|
|
163
|
-
"description": "Verify the submitted order's service matches the address stored at identifier 1.",
|
|
164
|
-
"table": [
|
|
165
|
-
{
|
|
166
|
-
"identifier": 0,
|
|
167
|
-
"b_submission": true,
|
|
168
|
-
"name": "submitted_order",
|
|
169
|
-
"value_type": "Address"
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
"identifier": 1,
|
|
173
|
-
"b_submission": false,
|
|
174
|
-
"name": "this_service_address",
|
|
175
|
-
"value": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
176
|
-
"value_type": "Address"
|
|
177
|
-
}
|
|
178
|
-
],
|
|
179
|
-
"root": {
|
|
180
|
-
"type": "logic_equal",
|
|
181
|
-
"nodes": [
|
|
182
|
-
{
|
|
183
|
-
"type": "query",
|
|
184
|
-
"query": 1563,
|
|
185
|
-
"object": { "identifier": 0 },
|
|
186
|
-
"parameters": []
|
|
187
|
-
},
|
|
188
|
-
{ "type": "identifier", "identifier": 1 }
|
|
189
|
-
]
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
"customization": {
|
|
193
|
-
"table[1].value": "Replace with THIS Service's address (0x + 64 hex chars).",
|
|
194
|
-
"namedNew.name": "Set a unique Guard name."
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
"name": "reward_not_claimed",
|
|
199
|
-
"title": "Reward Not Claimed Guard",
|
|
200
|
-
"description": "Verifies that a reward has NOT been claimed yet by the recipient. Uses query_reward_record_exists + logic_not to invert the result.",
|
|
201
|
-
"use_case": "Prevents double-claiming of rewards. Combined with progress_node_check and order_owner_verification for a complete reward guard.",
|
|
202
|
-
"binding_hint": {
|
|
203
|
-
"action": "claim_reward",
|
|
204
|
-
"host_object": "Reward",
|
|
205
|
-
"binding_field": "guard",
|
|
206
|
-
"rule_sentence": "The reward must not have been claimed yet by the recipient.",
|
|
207
|
-
"failure_conditions": ["Reward already claimed by this recipient."],
|
|
208
|
-
"circular_reference": false
|
|
209
|
-
},
|
|
210
|
-
"template": {
|
|
211
|
-
"namedNew": {
|
|
212
|
-
"name": "guard_reward_not_claimed",
|
|
213
|
-
"replaceExistName": false
|
|
214
|
-
},
|
|
215
|
-
"description": "Verify no reward record exists for the submitted recipient (identifier 1) on the submitted reward object (identifier 0).",
|
|
216
|
-
"table": [
|
|
217
|
-
{
|
|
218
|
-
"identifier": 0,
|
|
219
|
-
"b_submission": true,
|
|
220
|
-
"name": "submitted_reward_object",
|
|
221
|
-
"value_type": "Address"
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
"identifier": 1,
|
|
225
|
-
"b_submission": true,
|
|
226
|
-
"name": "submitted_recipient",
|
|
227
|
-
"value_type": "Address"
|
|
228
|
-
}
|
|
229
|
-
],
|
|
230
|
-
"root": {
|
|
231
|
-
"type": "logic_not",
|
|
232
|
-
"node": {
|
|
233
|
-
"type": "query_reward_record_exists",
|
|
234
|
-
"object": { "identifier": 0 },
|
|
235
|
-
"recipient": { "identifier": 1 },
|
|
236
|
-
"where": {}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
"customization": {
|
|
241
|
-
"namedNew.name": "Set a unique Guard name."
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
"name": "combined_reward_guard",
|
|
246
|
-
"title": "Combined Reward Guard (3 conditions)",
|
|
247
|
-
"description": "Complete Reward Guard combining: (1) order at expected progress node, (2) signer is order owner, (3) reward not claimed. Use logic_and to require ALL conditions.",
|
|
248
|
-
"use_case": "Production-ready Reward claim guard. Prevents fund theft, ensures workflow completion, prevents double-claiming.",
|
|
249
|
-
"binding_hint": {
|
|
250
|
-
"action": "claim_reward",
|
|
251
|
-
"host_object": "Reward",
|
|
252
|
-
"binding_field": "guard",
|
|
253
|
-
"rule_sentence": "Order must be at expected node, signer must be order owner, and reward must not be claimed.",
|
|
254
|
-
"failure_conditions": [
|
|
255
|
-
"Order is not at the expected progress node.",
|
|
256
|
-
"Signer is not the order owner.",
|
|
257
|
-
"Reward already claimed by this recipient."
|
|
258
|
-
],
|
|
259
|
-
"circular_reference": false
|
|
260
|
-
},
|
|
261
|
-
"template": {
|
|
262
|
-
"namedNew": {
|
|
263
|
-
"name": "guard_combined_reward",
|
|
264
|
-
"replaceExistName": false
|
|
265
|
-
},
|
|
266
|
-
"description": "Combined Reward Guard: progress node check + order owner verification + reward not claimed.",
|
|
267
|
-
"table": [
|
|
268
|
-
{
|
|
269
|
-
"identifier": 0,
|
|
270
|
-
"b_submission": true,
|
|
271
|
-
"name": "submitted_order",
|
|
272
|
-
"value_type": "Address"
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
"identifier": 1,
|
|
276
|
-
"b_submission": false,
|
|
277
|
-
"name": "expected_node_name",
|
|
278
|
-
"value": "Completed",
|
|
279
|
-
"value_type": "String"
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
"identifier": 2,
|
|
283
|
-
"b_submission": true,
|
|
284
|
-
"name": "submitted_reward_object",
|
|
285
|
-
"value_type": "Address"
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
"identifier": 3,
|
|
289
|
-
"b_submission": true,
|
|
290
|
-
"name": "submitted_recipient",
|
|
291
|
-
"value_type": "Address"
|
|
292
|
-
}
|
|
293
|
-
],
|
|
294
|
-
"root": {
|
|
295
|
-
"type": "logic_and",
|
|
296
|
-
"nodes": [
|
|
297
|
-
{
|
|
298
|
-
"type": "logic_equal",
|
|
299
|
-
"nodes": [
|
|
300
|
-
{
|
|
301
|
-
"type": "query",
|
|
302
|
-
"query": 1253,
|
|
303
|
-
"object": { "identifier": 0, "convert_witness": 100 },
|
|
304
|
-
"parameters": []
|
|
305
|
-
},
|
|
306
|
-
{ "type": "identifier", "identifier": 1 }
|
|
307
|
-
]
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
"type": "logic_equal",
|
|
311
|
-
"nodes": [
|
|
312
|
-
{ "type": "context", "context": "Signer" },
|
|
313
|
-
{
|
|
314
|
-
"type": "query",
|
|
315
|
-
"query": 1562,
|
|
316
|
-
"object": { "identifier": 0 },
|
|
317
|
-
"parameters": []
|
|
318
|
-
}
|
|
319
|
-
]
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
"type": "logic_not",
|
|
323
|
-
"node": {
|
|
324
|
-
"type": "query_reward_record_exists",
|
|
325
|
-
"object": { "identifier": 2 },
|
|
326
|
-
"recipient": { "identifier": 3 },
|
|
327
|
-
"where": {}
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
]
|
|
331
|
-
}
|
|
332
|
-
},
|
|
333
|
-
"customization": {
|
|
334
|
-
"table[1].value": "Replace 'Completed' with the expected node name for your workflow.",
|
|
335
|
-
"namedNew.name": "Set a unique Guard name."
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
],
|
|
339
|
-
"query_reference": {
|
|
340
|
-
"description": "Common Guard query IDs. Use wowok_buildin_info with info='guard instructions' for the complete list.",
|
|
341
|
-
"queries": [
|
|
342
|
-
{ "id": 1253, "name": "order.progress.node", "returns": "String", "description": "Get current progress node name of an order", "witness": "TypeOrderProgress (100)" },
|
|
343
|
-
{ "id": 1562, "name": "order.owner", "returns": "Address", "description": "Get order owner address" },
|
|
344
|
-
{ "id": 1563, "name": "order.service", "returns": "Address", "description": "Get order service address" },
|
|
345
|
-
{ "id": 1564, "name": "order.payer", "returns": "Address", "description": "Get order payer address" }
|
|
346
|
-
],
|
|
347
|
-
"witness_types": [
|
|
348
|
-
{ "id": 100, "name": "TypeOrderProgress", "description": "Access order progress data" },
|
|
349
|
-
{ "id": 200, "name": "TypeOrder", "description": "Access order data" }
|
|
350
|
-
]
|
|
351
|
-
},
|
|
352
|
-
"node_return_types": {
|
|
353
|
-
"logic_bool": ["logic_and", "logic_or", "logic_not", "logic_equal", "logic_as_u256_equal", "logic_as_u256_greater", "logic_as_u256_lesser", "logic_as_u256_greater_or_equal", "logic_as_u256_lesser_or_equal", "logic_string_contains", "logic_string_nocase_contains", "logic_string_nocase_equal", "calc_string_contains", "calc_string_nocase_contains", "calc_string_nocase_equal", "vec_contains_bool", "vec_contains_address", "vec_contains_string", "vec_contains_string_nocase", "vec_contains_number", "query_reward_record_exists"],
|
|
354
|
-
"calc_numeric": ["calc_number_add", "calc_number_subtract", "calc_number_multiply", "calc_number_divide", "calc_number_mod"],
|
|
355
|
-
"calc_string": ["calc_string_length", "calc_string_indexof", "calc_string_nocase_indexof"],
|
|
356
|
-
"conversion": ["convert_number_address", "convert_address_number", "convert_number_string", "convert_string_number", "convert_safe_u8", "convert_safe_u16", "convert_safe_u32", "convert_safe_u64", "convert_safe_u128", "convert_safe_u256"],
|
|
357
|
-
"query": ["query (depends on query instruction)", "query_reward_record_find", "query_reward_record_count", "query_reward_record_exists", "query_progress_history_find", "query_progress_history_session_find", "query_progress_history_session_forward_find", "query_progress_history_session_count", "query_progress_history_session_forward_count", "query_progress_history_session_forward_retained_submission_count"],
|
|
358
|
-
"vector": ["vec_length", "vec_contains_bool", "vec_contains_address", "vec_contains_string", "vec_contains_string_nocase", "vec_contains_number"],
|
|
359
|
-
"context": ["Signer (Address)", "Clock (U64)", "Guard (Address)"]
|
|
360
|
-
},
|
|
361
|
-
"best_practices": [
|
|
362
|
-
"Root node MUST return Bool — always use a logic node (logic_and, logic_or, logic_not, logic_equal) as the root.",
|
|
363
|
-
"Use logic_and for multiple conditions — most common pattern for combining validations.",
|
|
364
|
-
"Check node return types: logic nodes expect Bool children; calculation nodes expect numeric children; comparison nodes expect matching types.",
|
|
365
|
-
"Use identifier references: store constants (addresses, strings, numbers) in the Guard table and reference them by identifier index.",
|
|
366
|
-
"Use convert_witness when querying object data: set convert_witness to the appropriate witness type (e.g., 100 for TypeOrderProgress) to access the data you need.",
|
|
367
|
-
"Handle optional fields in where clauses: only include fields you want to filter by; omitting a field means 'don't filter by this field'.",
|
|
368
|
-
"Guard is IMMUTABLE after creation — test your logic carefully before deploying. Use replaceExistName=true to replace with a corrected version.",
|
|
369
|
-
"COGNITIVE PRINCIPLE: Guard validation occurs BEFORE the operation. A Guard querying the SAME Progress object it operates on sees the PRE-transition value (source node), not the target node. For post-transition verification, bind the Guard to the Allocator instead."
|
|
370
|
-
],
|
|
371
|
-
"common_errors": [
|
|
372
|
-
"Type mismatch: comparing incompatible types (e.g., Address with String). Use conversion nodes to align types.",
|
|
373
|
-
"Missing identifier: referencing an identifier index that doesn't exist in the Guard table.",
|
|
374
|
-
"Wrong return type: using a non-Bool node as the root or as a child of a logic node.",
|
|
375
|
-
"Invalid query ID: using a query instruction ID that doesn't exist. Use wowok_buildin_info with info='guard instructions' for the complete list.",
|
|
376
|
-
"Missing convert_witness: querying object data without setting the appropriate witness type — the query returns empty/null.",
|
|
377
|
-
"Circular reference: Guard queries the state of the SAME object it validates, seeing pre-transition values instead of post-transition values."
|
|
378
|
-
]
|
|
379
|
-
}
|