@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
package/README.md
CHANGED
|
@@ -5,6 +5,14 @@ Skills: [https://github.com/wowok-ai/skills](https://github.com/wowok-ai/skills)
|
|
|
5
5
|
|
|
6
6
|
Docs: [https://github.com/wowok-ai/docs/](https://github.com/wowok-ai/docs)
|
|
7
7
|
|
|
8
|
+
## Configuration Priority Constitution
|
|
9
|
+
|
|
10
|
+
All configuration surfaces follow one user-ratified constitution (see [src/config/README.md](src/config/README.md)):
|
|
11
|
+
|
|
12
|
+
- **Industry rules chain**: system-code config < industry config < product-template rules < Prompt.
|
|
13
|
+
- **Persona chain**: engine built-ins < system persona < general config files (`judgment.json`, `match-policy.json`) < account persona < Prompt.
|
|
14
|
+
- **AI config writes are code-gated on human confirmation**: the AI may read, draft, and propose, but every persistent write (`judgment_doc_patch`, `match_policy_patch/clear`, persona `set` with `long_term`) throws unless the user explicitly confirms (`confirm=true`).
|
|
15
|
+
|
|
8
16
|
## Quick Start
|
|
9
17
|
|
|
10
18
|
### 1. Install MCP Server
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { SourceAnchor } from "./object-graph.js";
|
|
2
|
+
export interface SdkAnchor {
|
|
3
|
+
path: string;
|
|
4
|
+
pattern: string;
|
|
5
|
+
}
|
|
6
|
+
export type FulfillmentAxis = "self" | "internal_staff" | "merchant_procured" | "user_procured";
|
|
7
|
+
export type DeliveryForm = "carrier" | "courier" | "pickup_point" | "onsite" | "digital" | "none";
|
|
8
|
+
export declare const FULFILLMENT_AXES: {
|
|
9
|
+
axis: FulfillmentAxis;
|
|
10
|
+
contractingParty: "merchant" | "buyer";
|
|
11
|
+
primitives: PrimitiveId[];
|
|
12
|
+
legacyModes: string[];
|
|
13
|
+
sources: SourceAnchor[];
|
|
14
|
+
}[];
|
|
15
|
+
export declare const DELIVERY_FORMS: {
|
|
16
|
+
form: DeliveryForm;
|
|
17
|
+
legacyModes: string[];
|
|
18
|
+
}[];
|
|
19
|
+
export type VariantId = "V1" | "V2" | "V3" | "V4";
|
|
20
|
+
export interface CompositionVariant {
|
|
21
|
+
id: VariantId;
|
|
22
|
+
buyerOrderCount: 1 | 2;
|
|
23
|
+
fulfillmentAxis: FulfillmentAxis;
|
|
24
|
+
fulfilmentContractParty: "merchant" | "buyer";
|
|
25
|
+
deliveryInListedPrice: boolean;
|
|
26
|
+
liabilityToBuyer: "merchant" | "split";
|
|
27
|
+
merchantRecourse: "off_chain_employment" | "full_customer_rights" | "none";
|
|
28
|
+
buyerRecourseAgainstFulfilment: boolean;
|
|
29
|
+
dualRefundExposure: {
|
|
30
|
+
pools: 1 | 2;
|
|
31
|
+
sameBuyerBothPools: boolean;
|
|
32
|
+
maxRefundMultiple: number;
|
|
33
|
+
chainBlockable: boolean;
|
|
34
|
+
};
|
|
35
|
+
privacyPath: string;
|
|
36
|
+
chainReachability: "full" | "partial";
|
|
37
|
+
primitives: PrimitiveId[];
|
|
38
|
+
mandatoryDisclosures: string[];
|
|
39
|
+
sources: SourceAnchor[];
|
|
40
|
+
}
|
|
41
|
+
export declare const COMPOSITION_VARIANTS: Record<VariantId, CompositionVariant>;
|
|
42
|
+
export type PrimitiveId = "P1" | "P2" | "P3" | "P4" | "P5" | "P6";
|
|
43
|
+
export interface CompositionPrimitive {
|
|
44
|
+
id: PrimitiveId;
|
|
45
|
+
purpose: string;
|
|
46
|
+
shape: string;
|
|
47
|
+
invariants: string[];
|
|
48
|
+
requires: PrimitiveRequirement[];
|
|
49
|
+
failureModes: string[];
|
|
50
|
+
adoption: {
|
|
51
|
+
catalogVersion: string;
|
|
52
|
+
guardDeclarations: number;
|
|
53
|
+
note: string;
|
|
54
|
+
};
|
|
55
|
+
consumers: string[];
|
|
56
|
+
sources: SourceAnchor[];
|
|
57
|
+
sdkSources: SdkAnchor[];
|
|
58
|
+
}
|
|
59
|
+
export interface PrimitiveRequirement {
|
|
60
|
+
key: "pairing_key" | "provider_pin" | "owner_cross" | "once_slot" | "write_once" | "third_party_leg";
|
|
61
|
+
statement: string;
|
|
62
|
+
enforcedBy: string;
|
|
63
|
+
}
|
|
64
|
+
export declare const COMPOSITION_PRIMITIVES: Record<PrimitiveId, CompositionPrimitive>;
|
|
65
|
+
export type UnreachableId = "S1" | "S2" | "S3" | "S4" | "S5" | "S6" | "S7" | "S8" | "S9" | "S10" | "S11" | "S12" | "S13" | "S14" | "S15" | "S16" | "S17" | "S18" | "S19" | "S20" | "S21" | "S22" | "S23" | "S24";
|
|
66
|
+
export interface ChainUnreachable {
|
|
67
|
+
id: UnreachableId;
|
|
68
|
+
requirement: string;
|
|
69
|
+
whyUnreachable: string;
|
|
70
|
+
toolingMaximum: string;
|
|
71
|
+
disclosureObligation: string;
|
|
72
|
+
blocksPublish: boolean;
|
|
73
|
+
consumers: string[];
|
|
74
|
+
sources: SourceAnchor[];
|
|
75
|
+
}
|
|
76
|
+
export declare const CHAIN_UNREACHABLE: Record<UnreachableId, ChainUnreachable>;
|
|
77
|
+
export declare const CROSS_ORDER_QUERY_SURFACE: {
|
|
78
|
+
hostSlot: 0;
|
|
79
|
+
onceSlots: {
|
|
80
|
+
once: 255;
|
|
81
|
+
onceForObject: 254;
|
|
82
|
+
};
|
|
83
|
+
userSlotRange: [number, number];
|
|
84
|
+
directOrderVerbs: string[];
|
|
85
|
+
witnessVerbs: {
|
|
86
|
+
witness: string;
|
|
87
|
+
verbs: string[];
|
|
88
|
+
}[];
|
|
89
|
+
presenceOnlyVerbs: string[];
|
|
90
|
+
sources: SourceAnchor[];
|
|
91
|
+
sdkSources: SdkAnchor[];
|
|
92
|
+
};
|
|
93
|
+
export declare function variantFor(axis: FulfillmentAxis, opts: {
|
|
94
|
+
deliveryInListedPrice: boolean;
|
|
95
|
+
buyerProcures: boolean;
|
|
96
|
+
}): VariantId;
|
|
97
|
+
export declare function primitivesForVariant(id: VariantId): PrimitiveId[];
|
|
98
|
+
export declare function requirementsFor(primitives: PrimitiveId[]): PrimitiveRequirement[];
|
|
99
|
+
export declare function disclosuresFor(id: VariantId, unreachable?: UnreachableId[]): string[];
|
|
100
|
+
export declare function blockingUnreachable(): UnreachableId[];
|
|
101
|
+
export declare function compositionConsumers(): string[];
|
|
102
|
+
export declare function isPresenceOnlyVerb(name: string): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const FULFILLMENT_AXES=[{'axis':'self','contractingParty':'merchant','primitives':[],'legacyModes':['merchant_managed','none'],'sources':[]},{'axis':'internal_staff','contractingParty':'merchant','primitives':[],'legacyModes':['merchant_managed'],'sources':[{'file':'progress.move','line':0x19,'pattern':'const\x20MAX_NAMED_OPERATOR_COUNT:\x20u64\x20=\x2060;'}]},{'axis':'merchant_procured','contractingParty':'merchant','primitives':['P1','P2','P3','P4','P5'],'legacyModes':['courier','carrier'],'sources':[{'file':'service.move','line':0x459,'pattern':'//\x20the\x20MAIN\x20order\x20as\x20evidence)\x20use\x20other\x20slots\x20and\x20stay\x20legal.'},{'file':'service.move','line':0x45a,'pattern':'assert!(!guard::has_submissions(buy_guard,\x20&vector[0u8]),\x20E_BUY_GUARD_ORDER_SLOT);'}]},{'axis':'user_procured','contractingParty':'buyer','primitives':['P3'],'legacyModes':['courier','carrier','pickup_point'],'sources':[{'file':'service.move','line':0x45a,'pattern':'assert!(!guard::has_submissions(buy_guard,\x20&vector[0u8]),\x20E_BUY_GUARD_ORDER_SLOT);'},{'file':'arb.move','line':0xae,'pattern':'order:\x20address,'}]}];export const DELIVERY_FORMS=[{'form':'carrier','legacyModes':['carrier']},{'form':'courier','legacyModes':['courier']},{'form':'pickup_point','legacyModes':['pickup_point']},{'form':'onsite','legacyModes':['merchant_managed']},{'form':'digital','legacyModes':['none']},{'form':'none','legacyModes':['none']}];export const COMPOSITION_VARIANTS={'V1':{'id':'V1','buyerOrderCount':0x1,'fulfillmentAxis':'internal_staff','fulfilmentContractParty':'merchant','deliveryInListedPrice':!![],'liabilityToBuyer':'merchant','merchantRecourse':'off_chain_employment','buyerRecourseAgainstFulfilment':![],'dualRefundExposure':{'pools':0x1,'sameBuyerBothPools':![],'maxRefundMultiple':0x1,'chainBlockable':!![]},'privacyPath':'Merchant\x20and\x20staff\x20share\x20one\x20Permission\x20domain,\x20so\x20the\x20address\x20may\x20be\x20handed\x20over\x20inside\x20that\x20domain;\x20it\x20still\x20must\x20never\x20enter\x20a\x20public\x20face\x20(PRIV-PUBLICFACE-01).','chainReachability':'full','primitives':[],'mandatoryDisclosures':[],'sources':[{'file':'allocation.move','line':0xda,'pattern':'public\x20enum\x20Recipient\x20has\x20copy,\x20drop,\x20store\x20{'},{'file':'allocation.move','line':0x271,'pattern':'Recipient::Entity(entity)\x20=>\x20{'}]},'V2':{'id':'V2','buyerOrderCount':0x1,'fulfillmentAxis':'merchant_procured','fulfilmentContractParty':'merchant','deliveryInListedPrice':![],'liabilityToBuyer':'merchant','merchantRecourse':'full_customer_rights','buyerRecourseAgainstFulfilment':![],'dualRefundExposure':{'pools':0x2,'sameBuyerBothPools':![],'maxRefundMultiple':0x1,'chainBlockable':!![]},'privacyPath':'Merchant\x20->\x20sub\x20provider\x20over\x20Messenger\x20(E2EE).\x20On\x20chain\x20only\x20a\x20presence\x20gate;\x20the\x20address\x20itself\x20must\x20not\x20land\x20in\x20Progress\x20msg,\x20Repository\x20row,\x20Contact.location\x20or\x20Arb\x20description.','chainReachability':'full','primitives':['P1','P2','P3','P4','P5'],'mandatoryDisclosures':['The\x20fulfilment\x20leg\x20is\x20a\x20separate\x20Service\x20the\x20merchant\x20procures;\x20the\x20buyer\x20has\x20no\x20on-chain\x20relationship\x20with\x20the\x20fulfilment\x20party\x20and\x20must\x20claim\x20against\x20the\x20merchant.'],'sources':[{'file':'service.move','line':0x459,'pattern':'//\x20the\x20MAIN\x20order\x20as\x20evidence)\x20use\x20other\x20slots\x20and\x20stay\x20legal.'},{'file':'service.move','line':0x25b,'pattern':'order::owner(order));'}]},'V3':{'id':'V3','buyerOrderCount':0x2,'fulfillmentAxis':'user_procured','fulfilmentContractParty':'buyer','deliveryInListedPrice':![],'liabilityToBuyer':'split','merchantRecourse':'none','buyerRecourseAgainstFulfilment':!![],'dualRefundExposure':{'pools':0x2,'sameBuyerBothPools':!![],'maxRefundMultiple':0x2,'chainBlockable':![]},'privacyPath':'Buyer\x20->\x20fulfilment\x20provider\x20directly\x20over\x20Messenger.\x20The\x20merchant\x20must\x20NOT\x20relay\x20the\x20address:\x20it\x20is\x20not\x20a\x20party\x20to\x20the\x20fulfilment\x20contract\x20and\x20relaying\x20widens\x20the\x20disclosure\x20set\x20for\x20no\x20chain-side\x20benefit.','chainReachability':'partial','primitives':['P3'],'mandatoryDisclosures':['Double-refund\x20cannot\x20be\x20blocked\x20on\x20chain:\x20you\x20own\x20both\x20escrow\x20pools,\x20the\x20two\x20pools\x20have\x20different\x20counterparties,\x20and\x20neither\x20Service\x20can\x20read\x20the\x20other\x27s\x20claimed_by.\x20Refunding\x20on\x20both\x20orders\x20is\x20technically\x20reachable\x20and\x20is\x20your\x20own\x20liability.','Disputes\x20cannot\x20be\x20merged:\x20one\x20Arbitration\x20binds\x20exactly\x20one\x20Order,\x20so\x20enforcing\x20a\x20claim\x20costs\x20two\x20filings,\x20two\x20fees,\x20and\x20two\x20panels\x20that\x20may\x20rule\x20contradictorily.','The\x20merchant\x20has\x20no\x20recourse\x20against\x20your\x20fulfilment\x20provider\x20and\x20no\x20visibility\x20into\x20that\x20order;\x20the\x20merchant\x20is\x20liable\x20for\x20the\x20goods\x20only.'],'sources':[{'file':'arb.move','line':0xae,'pattern':'order:\x20address,'},{'file':'arbitration.move','line':0x121,'pattern':'order::assert_op_permission(order,\x20ctx);'},{'file':'order.move','line':0x3f,'pattern':'public\x20struct\x20Order\x20has\x20key\x20{'}]},'V4':{'id':'V4','buyerOrderCount':0x1,'fulfillmentAxis':'merchant_procured','fulfilmentContractParty':'merchant','deliveryInListedPrice':!![],'liabilityToBuyer':'merchant','merchantRecourse':'full_customer_rights','buyerRecourseAgainstFulfilment':![],'dualRefundExposure':{'pools':0x2,'sameBuyerBothPools':![],'maxRefundMultiple':0x1,'chainBlockable':!![]},'privacyPath':'Identical\x20to\x20V2;\x20the\x20only\x20difference\x20from\x20V2\x20is\x20that\x20the\x20sub-order\x20cost\x20is\x20folded\x20into\x20the\x20listed\x20price.','chainReachability':'full','primitives':['P1','P2','P3','P4','P5'],'mandatoryDisclosures':['This\x20listing\x20bundles\x20merchant-procured\x20fulfilment.\x20On\x20chain\x20it\x20is\x20ONE\x20order\x20whose\x20price\x20includes\x20delivery;\x20the\x20merchant\x27s\x20own\x20sub-order\x20is\x20a\x20separate\x20Order\x20the\x20buyer\x20is\x20not\x20party\x20to.'],'sources':[{'file':'order.move','line':0x47,'pattern':'service:\x20address,'},{'file':'service.move','line':0xfd,'pattern':'machine:\x20Option<address>,'}]}};export const COMPOSITION_PRIMITIVES={'P1':{'id':'P1','purpose':'Shared\x20Repository\x20rendezvous\x20—\x20the\x20preferred\x20cross-order\x20pairing\x20form.\x20The\x20main\x20order\x27s\x20money\x20or\x20flow\x20gate\x20depends\x20on\x20an\x20external\x20fulfilment\x20fact\x20having\x20been\x20recorded.','shape':'One\x20Repository\x20R\x20created\x20once\x20at\x20build\x20time,\x20its\x20address\x20injected\x20as\x20a\x20constant\x20into\x20both\x20the\x20main\x20and\x20the\x20sub\x20Service.\x20The\x20sub\x20flow\x20writes\x20row\x20(id\x20=\x20MAIN\x20order\x20address,\x20key\x20=\x20fulfilment\x20key)\x20at\x20its\x20completion\x20node,\x20gated\x20by\x20R\x27s\x20policy\x20write_guard.\x20The\x20main\x20side\x20reads\x20existence\x20via\x20`repository.data\x20has(R,\x20[key,\x20hostOrderSubmissionSlot])`.','invariants':['A\x20data\x20row\x27s\x20primary\x20key\x20is\x20(id:\x20address,\x20key:\x20String),\x20so\x20the\x20row\x20id\x20CAN\x20BE\x20the\x20host\x20order\x20address\x20—\x20the\x20pairing\x20key\x20is\x20unforgeable\x20because\x20only\x20a\x20party\x20holding\x20that\x20address\x20can\x20produce\x20it,\x20and\x20the\x20write\x20itself\x20must\x20pass\x20the\x20policy\x20write_guard.','Repository\x20data\x20is\x20publicly\x20readable\x20and\x20carries\x20NO\x20author\x20field,\x20so\x20a\x20row\x20proves\x20existence,\x20never\x20authorship.','The\x20write_guard\x20may\x20take\x20both\x20the\x20row\x20id\x20and\x20the\x20row\x20value\x20from\x20submissions\x20(id_from_submission\x20/\x20data_from_submission),\x20which\x20is\x20what\x20lets\x20the\x20sub\x20flow\x20name\x20the\x20main\x20order\x20it\x20serves.'],'requires':[{'key':'write_once','statement':'The\x20policy\x20rule\x20must\x20set\x20write_once.\x20Repository\x20overwrite\x20is\x20observable\x20(RepositoryDataOverwriteEvent)\x20but\x20NOT\x20blocked,\x20so\x20without\x20write_once\x20a\x20fulfilment\x20fact\x20can\x20be\x20rewritten\x20after\x20settlement.','enforcedBy':'COMPOSE-PAIR-01'},{'key':'provider_pin','statement':'The\x20write_guard\x20must\x20pin\x20the\x20writing\x20order\x27s\x20Service\x20to\x20a\x20constant\x20sub-Service\x20address.','enforcedBy':'COMPOSE-PROVIDER-PIN-01'}],'failureModes':['R\x27s\x20address\x20must\x20be\x20known\x20at\x20build\x20time\x20—\x20this\x20form\x20only\x20works\x20for\x20a\x20composition\x20built\x20in\x20one\x20batch,\x20or\x20against\x20a\x20governed\x20industry-level\x20Repository.','A\x20row\x20value\x20is\x20public\x20forever:\x20never\x20put\x20PII\x20in\x20it.\x20A\x20raw\x20tracking\x20number\x20is\x20a\x20quasi-identifier\x20(PRIV-TRACKING-RAW-01);\x20store\x20its\x20hash.'],'adoption':{'catalogVersion':'v132','guardDeclarations':0x3d,'note':'The\x20only\x20primitive\x20already\x20in\x20production\x20shape:\x2061\x20Repository-related\x20guard\x20declarations\x20across\x20retail\x20/\x20rental\x20/\x20travel\x20/\x20delivery\x20/\x20group_buy.\x20`tpl_repository_row_equals_order_field`\x20is\x20used\x20exactly\x20once\x20(travel/global-ota\x20checkin_evidence)\x20and\x20that\x20single\x20use\x20is\x20precisely\x20the\x20P1\x20shape\x20—\x20a\x20row\x20value\x20bound\x20to\x20another\x20object\x27s\x20field.'},'consumers':['COMPOSE-PAIR-01','COMPOSE-PROVIDER-PIN-01','PRIV-TRACKING-RAW-01'],'sources':[{'file':'repository.move','line':0x76,'pattern':'public\x20struct\x20PolicyRule\x20has\x20copy,\x20store,\x20drop\x20{'},{'file':'repository.move','line':0x82,'pattern':'write_once:\x20bool,'},{'file':'repository.move','line':0x5e,'pattern':'//\x20no\x20author\x20field,\x20so\x20without\x20this\x20the\x20previous\x20attestation\x20was\x20destroyed\x20with\x20nothing\x20an'}],'sdkSources':[{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22repository.data\x20has\x22'}]},'P2':{'id':'P2','purpose':'External-order\x20submission\x20slot\x20plus\x20witness\x20—\x20the\x20general\x20form\x20when\x20no\x20shared\x20Repository\x20exists.\x20The\x20caller\x20submits\x20a\x20foreign\x20Order\x20address\x20at\x20execution\x20time\x20and\x20the\x20gate\x20reads\x20it.','shape':'Guard\x20table\x20gains\x20{identifier:\x20N,\x20b_submission:\x20true,\x20value_type:\x20Address,\x20object_type:\x20Order}\x20for\x20the\x20fulfilment\x20order\x20and\x20{identifier:\x20M,\x20b_submission:\x20false,\x20value_type:\x20Address,\x20value:\x20<sub\x20Service\x20constant>}\x20for\x20the\x20pin.\x20Legs\x20read\x20order.service(N)\x20==\x20M,\x20order.owner(N)\x20==\x20order.owner(0),\x20and\x20—\x20via\x20convert_witness\x20OrderProgress\x20—\x20progress.current(N)\x20at\x20the\x20delivery\x20node.','invariants':['Build-time\x20validation\x20is\x20STATIC\x20and\x20skips\x20address\x20resolution\x20for\x20submission\x20slots,\x20so\x20a\x20second\x20Order\x20slot\x20is\x20legal\x20at\x20configuration\x20time.','At\x20execution\x20the\x20submitted\x20bytes\x20replace\x20the\x20constant\x20slot\x20and\x20join\x20evaluation\x20with\x20the\x20same\x20authority;\x20a\x20type-tag\x20mismatch\x20on\x20the\x20first\x20byte\x20aborts.','The\x20native\x20evaluator\x20resolves\x20the\x20REAL\x20on-chain\x20type\x20of\x20the\x20submitted\x20address\x20and\x20asserts\x20it\x20against\x20the\x20declared\x20object\x20type\x20and\x20against\x20the\x20witness\x20derivation,\x20so\x20a\x20Progress\x20or\x20Service\x20submitted\x20in\x20place\x20of\x20an\x20Order\x20necessarily\x20aborts.\x20Type\x20is\x20not\x20forgeable.','The\x20witness\x20set\x20has\x20ten\x20entries\x20and\x20contains\x20NO\x20Order->Order\x20and\x20NO\x20Service->Service\x20conversion:\x20a\x20submitted\x20Order\x20can\x20only\x20be\x20read\x20directly\x20or\x20converted\x20to\x20its\x20Progress\x20/\x20Machine\x20/\x20Service\x20/\x20Allocation.','The\x20only\x20slot\x20restriction\x20on\x20the\x20MCP\x20side\x20is\x20that\x20a\x20buy_guard\x20may\x20not\x20declare\x20identifier\x200\x20as\x20a\x20submission\x20slot\x20—\x20the\x20order\x20does\x20not\x20exist\x20yet\x20at\x20buy\x20time.\x20Order-bound\x20and\x20allocation\x20rails\x20may\x20keep\x20slot-0\x20submissions.'],'requires':[{'key':'provider_pin','statement':'order.service(fulfilmentSlot)\x20must\x20be\x20compared\x20against\x20a\x20CONSTANT\x20sub-Service\x20address,\x20else\x20any\x20foreign\x20order\x20can\x20be\x20submitted.','enforcedBy':'COMPOSE-PROVIDER-PIN-01'},{'key':'owner_cross','statement':'order.owner(fulfilmentSlot)\x20must\x20be\x20cross-checked\x20against\x20the\x20host\x20order\x27s\x20owner,\x20else\x20a\x20stranger\x27s\x20order\x20satisfies\x20the\x20gate.','enforcedBy':'COMPOSE-OWNER-CROSS-01'},{'key':'pairing_key','statement':'Owner\x20equality\x20plus\x20a\x20provider\x20pin\x20proves\x20only\x20\x27this\x20buyer\x20has\x20another\x20order\x20at\x20that\x20provider\x27,\x20NOT\x20that\x20the\x20order\x20served\x20THIS\x20order.\x20A\x20pairing\x20key\x20is\x20mandatory:\x20either\x20a\x20P1\x20row\x20keyed\x20by\x20the\x20host\x20order\x20address,\x20or\x20a\x20255\x20ONCE\x20slot\x20whose\x20key\x20includes\x20the\x20submitted\x20bytes.','enforcedBy':'COMPOSE-PAIR-01'},{'key':'once_slot','statement':'255\x20ONCE\x20is\x20the\x20cheapest\x20replay\x20block\x20(key\x20=\x20guard,\x20allocator\x20index,\x20submitted\x20bytes)\x20and\x20should\x20be\x20emitted\x20by\x20default\x20whenever\x20P2\x20gates\x20a\x20money\x20rail.','enforcedBy':'COMPOSE-PAIR-01'}],'failureModes':['Without\x20a\x20pairing\x20key\x20one\x20delivery\x20order\x20can\x20unlock\x20settlement\x20twice\x20for\x20a\x20buyer\x20who\x20ordered\x20food\x20twice\x20(measured\x20class,\x20see\x20P1\x20adoption\x20note).','Guard\x20evaluation\x20has\x20NO\x20short-circuit:\x20every\x20operand\x20is\x20evaluated,\x20so\x20a\x20payload\x20read\x20cannot\x20be\x20protected\x20by\x20a\x20sibling\x20variant\x20test.'],'adoption':{'catalogVersion':'v132','guardDeclarations':0x0,'note':'Zero\x20usage\x20across\x20475\x20guard\x20declarations\x20and\x2048\x20template\x20ids.\x20All\x20six\x20identity\x20patterns\x20point\x20at\x20the\x20HOST\x20order\x27s\x20own\x20holder\x20/\x20merchant\x20/\x20roster.\x20Mechanically\x20verified,\x20engineering-wise\x20completely\x20untilled\x20—\x20emission\x20needs\x20new\x20specs,\x20not\x20a\x20copy\x20of\x20an\x20existing\x20template.'},'consumers':['COMPOSE-PAIR-01','COMPOSE-PROVIDER-PIN-01','COMPOSE-OWNER-CROSS-01'],'sources':[{'file':'guard.move','line':0x4b,'pattern':'b_submission:\x20bool,'},{'file':'guard.move','line':0xce,'pattern':'public\x20fun\x20get_submission_object_type(guard:\x20&Guard,\x20identifier:\x20u8)\x20:\x20Option<u8>\x20{'},{'file':'guard.move','line':0x11a,'pattern':'public\x20fun\x20assert_submission_object_type(self:\x20&Guard,\x20identifier:\x20&vector<u8>,\x20object_type:\x20common::ObjectType)\x20{'},{'file':'demand.move','line':0x100,'pattern':'let\x20t\x20=\x20guard::get_submission_object_type(guard,\x20*i);'},{'file':'service.move','line':0x45a,'pattern':'assert!(!guard::has_submissions(buy_guard,\x20&vector[0u8]),\x20E_BUY_GUARD_ORDER_SLOT);'}],'sdkSources':[{'path':'ts-sdk/packages/wowok/src/w/common.ts','pattern':'TypeOrderProgress\x20=\x20100,'},{'path':'ts-sdk/packages/wowok/src/w/common.ts','pattern':'TypeOrderAllocation\x20=\x20109,'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.service\x22'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.claimed_by\x20some\x22'}]},'P3':{'id':'P3','purpose':'Sub-procurement\x20commitment\x20—\x20the\x20chain\x27s\x20own\x20supply-chain\x20idiom.\x20Fixed\x20at\x20build\x20time,\x20therefore\x20knowable\x20and\x20evaluable\x20by\x20the\x20buyer\x20BEFORE\x20ordering.','shape':'In\x20a\x20Forward\x20guard\x20table,\x20{b_submission:\x20false,\x20value_type:\x20Address}\x20is\x20the\x20immutable\x20address\x20of\x20the\x20procured\x20sub\x20Service\x20(a\x20commitment);\x20{b_submission:\x20true}\x20is\x20a\x20proof\x20field\x20the\x20caller\x20must\x20supply\x20at\x20execution.\x20A\x20Forward\x20may\x20additionally\x20declare\x20retained_submission\x20ids,\x20whose\x20raw\x20submitted\x20bytes\x20are\x20copied\x20permanently\x20into\x20public\x20history\x20once\x20the\x20guard\x20passes.','invariants':['The\x20buy_guard\x20comment\x20names\x20this\x20pattern\x20explicitly:\x20guards\x20that\x20verify\x20OTHER\x20objects\x20—\x20\x27supply-chain:\x20the\x20buyer\x20submits\x20the\x20MAIN\x20order\x20as\x20evidence\x27\x20—\x20use\x20non-zero\x20slots\x20and\x20stay\x20legal.','Machine\x20publication\x20freezes\x20the\x20graph,\x20so\x20the\x20whole\x20procurement\x20graph\x20is\x20public\x20and\x20stable\x20before\x20the\x20first\x20order\x20exists.\x20This\x20is\x20the\x20shared\x20base\x20for\x20buyer\x20due\x20diligence\x20and\x20shell-merchant\x20detection.','NO\x20protocol\x20function\x20ever\x20follows\x20a\x20retained\x20submission\x20to\x20check\x20the\x20sub-order\x27s\x20later\x20state.\x20Retention\x20is\x20evidence,\x20not\x20enforcement.'],'requires':[{'key':'third_party_leg','statement':'If\x20the\x20commitment\x20names\x20an\x20external\x20fulfilment\x20party,\x20an\x20arbitration-triggered\x20payout\x20path\x20for\x20that\x20party\x20must\x20be\x20pre-set\x20before\x20publish\x20(see\x20P6\x20and\x20S4).','enforcedBy':'COMPOSE-LIABILITY-01'}],'failureModes':['A\x20retained\x20submission\x20is\x20public\x20forever\x20—\x20it\x20must\x20never\x20carry\x20PII,\x20only\x20an\x20address\x20or\x20a\x20hash.','Because\x20nothing\x20follows\x20the\x20sub-order,\x20a\x20merchant\x20can\x20commit\x20to\x20a\x20sub\x20Service\x20it\x20never\x20actually\x20uses;\x20only\x20P1/P2\x20turn\x20the\x20commitment\x20into\x20a\x20gate.'],'adoption':{'catalogVersion':'v157','guardDeclarations':0x0,'note':'The\x20emitter\x20is\x20LIVE\x20and\x20wired:\x20a\x20dedicated\x20supply-chain\x20emitter\x20builds\x20real\x20Guard\x20ASTs,\x20plan\x20steps,\x20inputs,\x20primitives,\x20notes\x20and\x20a\x20sub-Service\x20handoff\x20(rendezvous\x20Repository\x20+\x20per-policy\x20row\x20duties\x20+\x20write_guard\x20+\x20submissions),\x20and\x20the\x20compiler\x20calls\x20it\x20—\x20splicing\x20its\x20blockers\x20into\x20the\x20publish\x20gate\x20and\x20its\x20emissions\x20into\x20the\x20plan.\x20The\x20gap\x20is\x20ADOPTION,\x20not\x20machinery:\x20supplyChain\x20is\x20reachable\x20only\x20as\x20a\x20generation-time\x20API\x20input,\x20it\x20is\x20ABSENT\x20from\x20the\x20compiler\x27s\x20compilable-template\x20field\x20whitelist,\x20and\x20zero\x20of\x20the\x2030\x20catalog\x20templates\x20declare\x20it.\x20Consequence:\x20no\x20template-driven\x20build\x20can\x20ever\x20put\x20a\x20supply-chain\x20promise\x20on\x20chain,\x20and\x20the\x20read-side\x20service_supply_chain\x20projection\x20still\x20has\x20nothing\x20to\x20read.\x20The\x20wowok-provider\x20description\x20promises\x20\x27supply\x20chain\x20promises\x27\x20against\x20that\x20empty\x20adoption.'},'consumers':['COMPOSE-VARIANT-01','COMPOSE-LIABILITY-01'],'sources':[{'file':'service.move','line':0x459,'pattern':'//\x20the\x20MAIN\x20order\x20as\x20evidence)\x20use\x20other\x20slots\x20and\x20stay\x20legal.'},{'file':'machine.move','line':0x54,'pattern':'retained_submission:\x20vector<u8>,\x20\x20//\x20identifiers\x20of\x20orders\x20in\x20guard'},{'file':'machine.move','line':0x6f,'pattern':'public\x20fun\x20forward_with_guard('},{'file':'progress.move','line':0x1cf,'pattern':'h.retained_submission\x20=\x20*retained_submission;'},{'file':'progress.move','line':0x270,'pattern':'//\x20(e.g.\x20procured\x20sub-service\x20/\x20sub-order)\x20AFTER\x20the\x20guard\x20passed.'}],'sdkSources':[]},'P4':{'id':'P4','purpose':'Staged\x20release\x20—\x20several\x20Allocator\x20rows,\x20each\x20with\x20its\x20own\x20guard,\x20so\x20food\x20money\x20and\x20delivery\x20money\x20unlock\x20on\x20different\x20facts.','shape':'Allocator\x20A\x20(goods\x20->\x20merchant\x20Entity\x20leg)\x20gated\x20on\x20the\x20preparation\x20node\x20plus\x20identity;\x20Allocator\x20B\x20(delivery\x20->\x20rider\x20Entity\x20or\x20Signer\x20leg)\x20gated\x20on\x20the\x20delivered\x20node\x20plus\x20P1/P2.\x20Each\x20row\x27s\x20sharing\x20must\x20independently\x20satisfy\x20its\x20mode\x20constraints.','invariants':['One\x20alloc\x20call\x20runs\x20EVERY\x20allocator\x20row\x20whose\x20guard\x20address\x20matches,\x20so\x20staging\x20is\x20expressed\x20as\x20several\x20rows\x20on\x20one\x20guard,\x20not\x20as\x20several\x20calls.','Recipient\x20is\x20an\x20enum\x20of\x20GuardIdentifier(u8)\x20|\x20Entity(address)\x20|\x20Signer.\x20The\x20for_object\x20binding\x20constrains\x20ONLY\x20the\x20GuardIdentifier\x20leg:\x20a\x20submitted\x20address\x20must\x20equal\x20for_object\x20or\x20the\x20call\x20aborts.\x20Entity\x20and\x20Signer\x20legs\x20are\x20NOT\x20so\x20constrained,\x20which\x20is\x20exactly\x20what\x20lets\x20a\x20delivery\x20leg\x20pay\x20a\x20rider.','Rate\x20legs\x20must\x20sum\x20to\x20exactly\x2010000\x20when\x20no\x20Surplus\x20leg\x20exists;\x20Surplus\x20legs\x20are\x20limited\x20to\x20one;\x20mixing\x20RateGross\x20with\x20Amount\x20requires\x20a\x20max.','Allocators\x20are\x20append-only\x20after\x20publish,\x20so\x20every\x20leg\x20must\x20exist\x20before\x20publication.'],'requires':[{'key':'once_slot','statement':'Emit\x20254\x20ONCE_FOR_OBJECT\x20by\x20default\x20so\x20the\x20same\x20order\x20cannot\x20release\x20the\x20same\x20stage\x20twice.','enforcedBy':'COMPOSE-PAIR-01'}],'failureModes':['A\x20leg\x20whose\x20recipient\x20is\x20resolved\x20from\x20a\x20submission\x20while\x20payment_info\x20declares\x20no\x20for_object\x20binding\x20is\x20an\x20UNBOUND\x20recipient:\x20the\x20chain\x20deliberately\x20leaves\x20the\x20due-diligence\x20obligation\x20to\x20the\x20tooling\x20layer,\x20so\x20this\x20audit\x20is\x20the\x20only\x20gate.','Allocators\x20are\x20append-only\x20—\x20a\x20missing\x20third-party\x20leg\x20cannot\x20be\x20added\x20after\x20publish\x20(this\x20is\x20why\x20S4\x20must\x20be\x20a\x20build-time\x20blocker).'],'adoption':{'catalogVersion':'v132','guardDeclarations':0x0,'note':'Multi-allocator\x20staging\x20exists\x20in\x20the\x20allocation\x20templates\x20but\x20is\x20never\x20combined\x20with\x20a\x20cross-order\x20gate.'},'consumers':['COMPOSE-PAIR-01','COMPOSE-LIABILITY-01'],'sources':[{'file':'allocation.move','line':0x1f4,'pattern':'public\x20fun\x20alloc<T>(self:&mut\x20Allocation<T>,\x20guard:&Guard,\x20passport:&mut\x20Passport'},{'file':'allocation.move','line':0x1ff,'pattern':'//\x20Run\x20EVERY\x20allocator\x20whose\x20guard\x20address\x20matches\x20the\x20supplied\x20guard:\x20one'},{'file':'allocation.move','line':0xda,'pattern':'public\x20enum\x20Recipient\x20has\x20copy,\x20drop,\x20store\x20{'},{'file':'allocation.move','line':0x271,'pattern':'Recipient::Entity(entity)\x20=>\x20{'},{'file':'allocation.move','line':0x5d,'pattern':'const\x20ONCE_FOR_OBJECT_IDENTIFIER:\x20u8\x20=\x20254;'}],'sdkSources':[]},'P5':{'id':'P5','purpose':'Formula\x20pricing\x20—\x20pay\x20the\x20fulfilment\x20party\x20as\x20a\x20function\x20of\x20measured\x20volume\x20or\x20value\x20rather\x20than\x20a\x20fixed\x20leg.','shape':'Sharing.mode\x20=\x20Formula\x20with\x20FormulaSpec{repo,\x20key,\x20selector,\x20predicate,\x20ids},\x20selector\x20in\x20COUNT\x20/\x20SUM\x20/\x20SUM_BOUND,\x20rows\x20keyed\x20by\x20order\x20address.\x20Rider\x20pay\x20=\x20f(deliveries)\x20or\x20f(delivered\x20value).','invariants':['A\x20Formula\x20slot\x20with\x20no\x20bound\x20spec\x20evaluates\x20to\x20scalar\x200\x20—\x20an\x20unbound\x20formula\x20silently\x20pays\x20nothing.','SUM_BOUND\x20clamps\x20every\x20row\x20to\x20min(row_value,\x20order.amount,\x20LIVE\x20allocation.balance\x20of\x20the\x20order\x20that\x20row\x27s\x20id\x20names),\x20so\x20a\x20forged\x20row\x20cannot\x20inflate\x20the\x20payout\x20beyond\x20what\x20that\x20order\x20actually\x20holds,\x20and\x20a\x20refunded\x20or\x20already-disbursed\x20order\x20contributes\x200\x20(v139\x20live\x20cap\x20—\x20only\x20funds\x20still\x20in\x20escrow\x20count).','An\x20empty\x20ids\x20list\x20matches\x20no\x20records\x20(scalar\x200).'],'requires':[],'failureModes':['Rows\x20are\x20public\x20and\x20author-less,\x20so\x20the\x20measured\x20volume\x20is\x20only\x20as\x20trustworthy\x20as\x20the\x20write_guard\x20that\x20admits\x20rows\x20(combine\x20with\x20P1).','RateGross\x20+\x20Amount\x20mixing\x20without\x20a\x20max\x20is\x20rejected\x20at\x20configuration\x20time.'],'adoption':{'catalogVersion':'v132','guardDeclarations':0x0,'note':'FormulaSpec\x20is\x20reachable\x20from\x20the\x20allocation\x20templates\x20but\x20no\x20builtin\x20template\x20prices\x20a\x20third\x20party\x20by\x20volume.'},'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'allocation.move','line':0xa3,'pattern':'public\x20struct\x20FormulaSpec\x20has\x20copy,\x20drop,\x20store\x20{'}],'sdkSources':[]},'P6':{'id':'P6','purpose':'Reward\x20self-claim\x20—\x20the\x20ONLY\x20permissionless\x20channel\x20that\x20can\x20pay\x20a\x20third\x20party.\x20Also\x20the\x20only\x20reachable\x20substitute\x20for\x20compensating\x20a\x20fulfilment\x20party\x20(S4).','shape':'RewardGuard{guard,\x20recipient:\x20GuardIdentifier\x20|\x20Entity\x20|\x20Signer,\x20amount,\x20expiration,\x20store_from_id}.\x20The\x20fulfilment\x20party\x20calls\x20claim\x20itself;\x20the\x20resolved\x20recipient\x20must\x20equal\x20the\x20transaction\x20sender.','invariants':['claim\x20asserts\x20recipient\x20==\x20tx\x20sender,\x20so\x20a\x20reward\x20can\x20never\x20be\x20claimed\x20on\x20someone\x20else\x27s\x20behalf\x20—\x20which\x20is\x20precisely\x20why\x20it\x20reaches\x20a\x20fulfilment\x20party\x20that\x20the\x20arbitration\x20compensation\x20rail\x20cannot:\x20that\x20rail\x20pays\x20the\x20order\x20owner\x20and\x20nobody\x20else.','Replay\x20is\x20bounded\x20by\x20(recipient,\x20guard,\x20store_from\x20value):\x20bind\x20store_from\x20to\x20a\x20Repository\x20row\x20so\x20each\x20fulfilment\x20pays\x20once.','EvidenceBind\x20ties\x20a\x20claim\x20to\x20the\x20store_from\x20row,\x20so\x20a\x20claimant\x20cannot\x20borrow\x20another\x20party\x27s\x20evidence\x20row.','guard_add\x20/\x20guard_remove\x20are\x20behind\x20a\x20publication\x20lock.'],'requires':[{'key':'third_party_leg','statement':'When\x20a\x20Reward\x20pool\x20is\x20the\x20chosen\x20third-party\x20payout\x20path,\x20it\x20must\x20exist\x20before\x20publish\x20and\x20its\x20store_from\x20must\x20be\x20pinned,\x20else\x20the\x20pool\x20is\x20either\x20unreachable\x20or\x20replayable.','enforcedBy':'COMPOSE-LIABILITY-01'}],'failureModes':['A\x20reward\x20is\x20a\x20voluntary\x20pool,\x20not\x20a\x20ruling:\x20it\x20cannot\x20be\x20forced\x20by\x20an\x20arbitration\x20verdict,\x20so\x20it\x20compensates\x20only\x20if\x20the\x20merchant\x20funded\x20it\x20and\x20the\x20party\x20claims.','Without\x20a\x20store_from\x20pin\x20the\x20same\x20fulfilment\x20can\x20be\x20claimed\x20repeatedly.'],'adoption':{'catalogVersion':'v132','guardDeclarations':0x0,'note':'Rewards\x20are\x20emitted\x20for\x20review\x20incentives\x20only;\x20never\x20as\x20a\x20third-party\x20liability\x20channel.'},'consumers':['COMPOSE-LIABILITY-01'],'sources':[{'file':'reward.move','line':0x84,'pattern':'public\x20struct\x20RewardGuard\x20has\x20store,\x20drop,\x20copy\x20{'},{'file':'reward.move','line':0x86,'pattern':'recipient:\x20Recipient,'},{'file':'reward.move','line':0x109,'pattern':'assert!(recipient\x20==\x20tx_context::sender(ctx),\x20E_CLAIM_RECIPIENT_NOT_SIGNER);'},{'file':'reward.move','line':0x71,'pattern':'public\x20struct\x20EvidenceBind\x20has\x20copy,\x20drop,\x20store\x20{'}],'sdkSources':[]}};export const CHAIN_UNREACHABLE={'S1':{'id':'S1','requirement':'One\x20order,\x20two\x20services\x20(food\x20+\x20delivery\x20sold\x20as\x20a\x20single\x20Order).','whyUnreachable':'Order.service\x20is\x20a\x20single\x20address\x20and\x20Service\x20has\x20no\x20composition\x20field;\x20`items:\x20vector<SaleItem>`\x20is\x20several\x20SKUs\x20of\x20the\x20SAME\x20Service,\x20not\x20several\x20services.','toolingMaximum':'V4\x20—\x20one\x20Order\x20at\x20a\x20bundled\x20price,\x20with\x20the\x20merchant\x20placing\x20its\x20own\x20sub-order\x20off\x20the\x20buyer\x27s\x20path.\x20On\x20chain\x20these\x20remain\x20two\x20independent\x20Orders;\x20only\x20the\x20PRICE\x20is\x20merged.','disclosureObligation':'The\x20listing\x20must\x20state\x20that\x20fulfilment\x20is\x20merchant-procured\x20and\x20that\x20on\x20chain\x20the\x20buyer\x20holds\x20one\x20order,\x20not\x20a\x20composite.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'order.move','line':0x47,'pattern':'service:\x20address,'},{'file':'service.move','line':0xfd,'pattern':'machine:\x20Option<address>,'}]},'S2':{'id':'S2','requirement':'Two\x20orders\x20grouped\x20on\x20chain,\x20so\x20a\x20third\x20party\x20can\x20verify\x20the\x20parent/child\x20or\x20sibling\x20relation.','whyUnreachable':'Order\x20carries\x20no\x20parent\x20/\x20child\x20/\x20bundle\x20/\x20linked_order\x20field;\x20entity_order\x20and\x20object_linker\x20are\x20reverse\x20indexes\x20with\x20no\x20transaction-grouping\x20semantics;\x20254\x20task\x20binding\x20actively\x20forbids\x20accounting\x20one\x20order\x27s\x20action\x20against\x20another\x20(Progress:Order\x20is\x201:1).','toolingMaximum':'A\x20P1\x20row\x20keyed\x20by\x20the\x20main\x20order\x20address\x20gives\x20the\x20two\x20parties\x20a\x20mutually\x20recognised\x20pairing\x20fact.\x20That\x20is\x20a\x20shared\x20attestation,\x20not\x20a\x20protocol-level\x20group.','disclosureObligation':'Never\x20describe\x20two\x20orders\x20as\x20\x27linked\x20on\x20chain\x27.\x20The\x20verifiable\x20statement\x20is\x20\x27the\x20fulfilment\x20order\x20recorded\x20a\x20row\x20keyed\x20by\x20this\x20order\x27s\x20address\x27.','blocksPublish':![],'consumers':['COMPOSE-PAIR-01','COMPOSE-DUALREFUND-01'],'sources':[{'file':'order.move','line':0x3f,'pattern':'public\x20struct\x20Order\x20has\x20key\x20{'},{'file':'entity_order.move','line':0x17,'pattern':'public\x20struct\x20OrderRoleItem\x20has\x20copy,\x20drop,\x20store\x20{'},{'file':'object_linker.move','line':0x14,'pattern':'public\x20struct\x20CoreLink\x20has\x20copy,\x20drop,\x20store\x20{'},{'file':'progress.move','line':0x242,'pattern':'fun\x20assert_task_binding(self:\x20&Progress,\x20passport:\x20&Passport,\x20guard:\x20&address)\x20{'},{'file':'progress.move','line':0xe3,'pattern':'assert!\x20(option::is_none(&self.task),\x20E_TASK_ALREADY_SET);'}]},'S3':{'id':'S3','requirement':'One\x20arbitration\x20covering\x20both\x20the\x20food\x20order\x20and\x20the\x20delivery\x20order.','whyUnreachable':'Arb.order\x20is\x20a\x20single\x20address\x20and\x20filing\x20requires\x20order-operation\x20permission\x20on\x20that\x20very\x20order,\x20so\x20a\x20rider\x20has\x20no\x20standing\x20on\x20the\x20food\x20order;\x20each\x20case\x20is\x20filed\x20and\x20paid\x20separately.','toolingMaximum':'Improve\x20the\x20arbitrator\x27s\x20OBSERVATION\x20surface:\x20read\x20the\x20P1\x20rendezvous\x20and\x20the\x20P3\x20commitment\x20graph\x20into\x20the\x20case\x20briefing\x20so\x20related\x20orders\x27\x20money\x20rails\x20are\x20visible.\x20Independence\x20is\x20a\x20permanent\x20ruling\x20—\x20the\x20protocol\x20coupling\x20stays\x20untouched.','disclosureObligation':'Under\x20V3\x20the\x20user\x20must\x20be\x20told,\x20before\x20purchase,\x20that\x20enforcing\x20a\x20claim\x20costs\x20two\x20filings,\x20two\x20fees,\x20and\x20two\x20panels\x20whose\x20rulings\x20may\x20contradict\x20each\x20other.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01','COMPOSE-DUALREFUND-01'],'sources':[{'file':'arb.move','line':0xae,'pattern':'order:\x20address,'},{'file':'arbitration.move','line':0x121,'pattern':'order::assert_op_permission(order,\x20ctx);'}]},'S4':{'id':'S4','requirement':'An\x20arbitration\x20ruling\x20that\x20pays\x20the\x20third-party\x20fulfilment\x20party\x20(compensate\x20the\x20rider).','whyUnreachable':'The\x20compensation\x20rail\x20transfers\x20to\x20the\x20order\x20owner\x20and\x20only\x20to\x20the\x20order\x20owner\x20—\x20the\x20recipient\x20is\x20hard-bound\x20—\x20and\x20indemnity\x20is\x20capped\x20at\x20MAX_INDEMNITY_MULTIPLE\x20(3)\x20times\x20the\x20order\x20amount.','toolingMaximum':'Pre-set,\x20before\x20publish,\x20either\x20an\x20arbitration-triggered\x20Entity\x20leg\x20(Recipient::Entity\x20is\x20not\x20for_object-constrained)\x20or\x20a\x20Reward\x20pool\x20the\x20party\x20claims\x20itself\x20(P6).\x20Reuse\x20`pattern.identity_check_service_provider_dynamic`,\x20already\x20proven\x20on\x20refund\x20legs,\x20as\x20the\x20identity\x20gate\x20on\x20that\x20leg.','disclosureObligation':'If\x20neither\x20is\x20pre-set,\x20the\x20build\x20must\x20say\x20plainly\x20that\x20a\x20ruling\x20in\x20the\x20fulfilment\x20party\x27s\x20favour\x20has\x20NO\x20on-chain\x20execution\x20path.','blocksPublish':!![],'consumers':['COMPOSE-LIABILITY-01'],'sources':[{'file':'service.move','line':0x25b,'pattern':'order::owner(order));'},{'file':'arb.move','line':0x15,'pattern':'const\x20MAX_INDEMNITY_MULTIPLE:u64\x20=\x203;'},{'file':'arb.move','line':0x1e0,'pattern':'let\x20cap\x20=\x20u64::saturating_mul(order::amount(order),\x20MAX_INDEMNITY_MULTIPLE);'},{'file':'allocation.move','line':0x271,'pattern':'Recipient::Entity(entity)\x20=>\x20{'}]},'S5':{'id':'S5','requirement':'Confidential\x20transfer\x20of\x20buyer\x20PII\x20(delivery\x20address,\x20meeting\x20point,\x20phone).','whyUnreachable':'The\x20chain\x20has\x20no\x20confidentiality\x20primitive\x20at\x20all:\x20the\x20Messenger\x20type\x20is\x20commented\x20out\x20of\x20the\x20registrar,\x20and\x20Contact\x20/\x20Proof\x20/\x20Repository\x20data\x20/\x20Entity\x20records\x20/\x20Progress\x20msg\x20/\x20Arb\x20description\x20are\x20all\x20public\x20and\x20permanent.\x20quote_guard\x20is\x20a\x20read\x20authorisation\x20INSIDE\x20a\x20guard\x20expression,\x20not\x20an\x20RPC-level\x20access\x20control.','toolingMaximum':'Messenger\x20E2EE\x20for\x20the\x20payload,\x20presence-only\x20gates\x20on\x20chain\x20(order.required_info\x20some),\x20and\x20PRIV-PUBLICFACE-01\x20as\x20a\x20content\x20gate\x20BEFORE\x20the\x20write.\x20The\x20gate\x20is\x20the\x20only\x20defence,\x20because\x20after\x20the\x20write\x20nothing\x20can\x20be\x20retracted.','disclosureObligation':'State\x20which\x20faces\x20are\x20permanent\x20and\x20public,\x20and\x20that\x20PII\x20must\x20travel\x20only\x20through\x20Messenger.','blocksPublish':!![],'consumers':['PRIV-PUBLICFACE-01','PRIV-PROOF-PERORDER-01'],'sources':[{'file':'registrar.move','line':0x278,'pattern':'public\x20struct\x20Messenger\x20has\x20key\x20{'},{'file':'contact.move','line':0x19,'pattern':'public\x20struct\x20Contact\x20has\x20key\x20{'},{'file':'proof.move','line':0x15,'pattern':'about:\x20Option<address>,'},{'file':'repository.move','line':0x5e,'pattern':'//\x20no\x20author\x20field,\x20so\x20without\x20this\x20the\x20previous\x20attestation\x20was\x20destroyed\x20with\x20nothing\x20an'}]},'S6':{'id':'S6','requirement':'Protocol-level\x20protection\x20of\x20the\x20PII\x20a\x20carrier\x20or\x20delivery\x20platform\x20holds\x20about\x20the\x20buyer.','whyUnreachable':'The\x20carrier\x27s\x20own\x20systems\x20are\x20outside\x20the\x20protocol\x27s\x20jurisdiction\x20entirely;\x20no\x20on-chain\x20construct\x20can\x20constrain\x20a\x20third-party\x20controller.','toolingMaximum':'Disclosure\x20only.','disclosureObligation':'Any\x20build\x20with\x20delivery\x20form\x20`carrier`\x20must\x20state\x20that\x20the\x20carrier\x20independently\x20holds\x20the\x20recipient\x20information\x20and\x20that\x20its\x20processing\x20is\x20not\x20governed\x20by\x20this\x20protocol.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[]},'S7':{'id':'S7','requirement':'On-chain\x20dispatch\x20or\x20pricing\x20oracle\x20(ETA,\x20distance,\x20weight,\x20weather)\x20and\x20automatic\x20late-delivery\x20penalty.','whyUnreachable':'No\x20oracle\x20and\x20no\x20dispatch\x20primitive\x20exist;\x20dispatch\x20is\x20an\x20off-chain\x20keeper\x20duty\x20rostered\x20through\x20a\x20permission\x20index.\x20There\x20is\x20also\x20no\x20debit\x20/\x20clawback\x20primitive,\x20so\x20a\x20penalty\x20cannot\x20be\x20taken\x20from\x20a\x20party.','toolingMaximum':'Never\x20an\x20automatic\x20deduction.\x20Two\x20sanctioned\x20shapes:\x20(a)\x20a\x20pre-funded\x20pool\x20the\x20injured\x20party\x20claims\x20(P6);\x20(b)\x20a\x20proactive\x20Payment\x20gate\x20—\x20the\x20liable\x20party\x20voluntarily\x20mints\x20a\x20Payment\x20carrying\x20info.for\x20=\x20the\x20order\x20and\x20info.remark\x20=\x20the\x20clause\x20marker,\x20and\x20a\x20forward\x20guard\x20verifies\x20signer/recipient/amount\x20before\x20the\x20flow\x20advances,\x20so\x20non-payment\x20blocks\x20settlement\x20instead\x20of\x20being\x20clawed\x20back.\x20Payment\x20is\x20immutable\x20and\x20self-authenticating,\x20which\x20is\x20what\x20makes\x20(b)\x20verifiable\x20without\x20a\x20debit\x20primitive.','disclosureObligation':'Any\x20\x27automatic\x20late\x20penalty\x27\x20promise\x20must\x20be\x20withdrawn\x20or\x20restated\x20as\x20either\x20a\x20claim\x20against\x20a\x20funded\x20pool\x20or\x20a\x20payment-gated\x20forward\x20the\x20liable\x20party\x20must\x20satisfy.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'allocation.move','line':0x79,'pattern':'F-BS-32\x20pool-drain\x20primitive\x20REJECTED'},{'file':'service.move','line':0x6b3,'pattern':'NO\x20drain\x20entry\x20exists'},{'file':'payment.move','line':0x72,'pattern':'public\x20fun\x20new_singleton'}]},'S8':{'id':'S8','requirement':'A\x20demand\x20that\x20concludes\x20on\x20chain\x20—\x20tender,\x20award,\x20and\x20resulting\x20order\x20provably\x20linked.','whyUnreachable':'present\x20only\x20registers\x20a\x20table\x20entry;\x20there\x20is\x20no\x20order-creating\x20function\x20on\x20Demand\x20and\x20no\x20stake\x20or\x20deposit,\x20only\x20a\x20presenter\x20cap.\x20Demand->Order\x20is\x20entirely\x20tooling-side.','toolingMaximum':'After\x20award,\x20have\x20the\x20demander\x20create\x20the\x20order\x20and\x20submit\x20the\x20Demand\x20address\x20as\x20buy_guard\x20evidence,\x20so\x20\x27this\x20order\x20references\x20that\x20demand\x27\x20is\x20verifiable.\x20It\x20is\x20still\x20not\x20a\x20protocol-level\x20grouping.','disclosureObligation':'Do\x20not\x20describe\x20an\x20award\x20as\x20an\x20on-chain\x20contract\x20formation.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'demand.move','line':0x76,'pattern':'public\x20fun\x20present(self:&mut\x20Demand,\x20recommend:&String,\x20clock:&Clock,\x20ctx:&TxContext)\x20{'},{'file':'demand.move','line':0x1b,'pattern':'const\x20MAX_PRESENTER_COUNT:\x20u64\x20=\x20200;'}]},'S9':{'id':'S9','requirement':'An\x20on-chain\x20SLA\x20or\x20consent\x20record\x20binding\x20an\x20external\x20service\x20provider.','whyUnreachable':'Adding\x20an\x20address\x20to\x20a\x20namedOperator\x20roster\x20requires\x20NO\x20on-chain\x20action\x20by\x20that\x20address,\x20so\x20a\x20merchant\x20can\x20list\x20any\x20address\x20as\x20its\x20rider\x20with\x20no\x20consent\x20record.','toolingMaximum':'Ask\x20the\x20provider\x20to\x20write\x20an\x20acceptance\x20statement\x20into\x20its\x20own\x20Registrar\x20Entity\x20records\x20(public,\x20permanent,\x20queryable)\x20and\x20have\x20the\x20main\x20order\x27s\x20guard\x20read\x20it.\x20Verifiable\x20consent,\x20but\x20voluntary\x20registration\x20rather\x20than\x20protocol\x20enforcement.','disclosureObligation':'State\x20that\x20roster\x20membership\x20is\x20not\x20consent,\x20and\x20that\x20liability\x20split\x20rests\x20on\x20the\x20tooling\x20ruling\x20plus\x20off-chain\x20contract\x20plus\x20Messenger/WTS\x20evidence.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'progress.move','line':0x10f,'pattern':'fun\x20IsNamedOperator(self:&Progress,\x20namedOperator:&Option<String>,\x20order:bool,\x20ctx:&TxContext)\x20:\x20bool\x20{'},{'file':'progress.move','line':0x19,'pattern':'const\x20MAX_NAMED_OPERATOR_COUNT:\x20u64\x20=\x2060;'}]},'S10':{'id':'S10','requirement':'Insurance\x20/\x20multi-party\x20risk\x20pool\x20—\x20rider\x20injury\x20cover,\x20delay\x20cover,\x20return-shipping\x20cover,\x20with\x20underwriting,\x20premium\x20and\x20deductible.','whyUnreachable':'No\x20Insurance\x20or\x20Policy(insurance\x20sense)\x20object\x20exists\x20among\x20the\x2028\x20`has\x20key`\x20types;\x20Repository.PolicyRule\x20is\x20a\x20data-write\x20policy,\x20not\x20an\x20underwriting\x20contract.\x20Service.compensation_fund\x20is\x20the\x20MERCHANT\x27S\x20OWN\x20deposit\x20(add/receive\x20permissioned,\x20withdraw\x20only\x20while\x20paused\x20and\x20past\x20the\x20lock),\x20so\x20it\x20cannot\x20pool\x20risk\x20across\x20parties.\x20No\x20actuarial\x20primitive:\x20no\x20premium,\x20no\x20rate\x20table,\x20no\x20deductible,\x20no\x20policy\x20lifecycle\x20state\x20machine.','toolingMaximum':'Merchant\x20self-insurance\x20only:\x20pre-fund\x20compensation_fund\x20or\x20a\x20Treasury,\x20add\x20a\x20pre-set\x20Allocator\x20leg\x20to\x20the\x20injured\x20party\x20gated\x20on\x20an\x20arbitration\x20ruling.\x20A\x20third-party\x20underwriter\x20can\x20hold\x20a\x20Treasury\x20with\x20an\x20external_withdraw_guard,\x20but\x20that\x20guard\x20can\x20only\x20pay\x20the\x20tx\x20sender,\x20so\x20direct\x20payment\x20to\x20a\x20repair\x20shop\x20needs\x20a\x20permissioned\x20channel\x20(centralised\x20trust).','disclosureObligation':'State\x20that\x20cover\x20is\x20off-chain\x20under\x20platform-work\x20and\x20traffic\x20law,\x20and\x20that\x20any\x20on-chain\x20pool\x20is\x20the\x20merchant\x27s\x20own\x20funds,\x20not\x20an\x20insurance\x20contract.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'service.move','line':0x2c9,'pattern':'fun\x20compensation_fund_withdraw_imp'},{'file':'treasury.move','line':0x1ad,'pattern':'E_EXTERNAL_RECIPIENT_NOT_SIGNER'},{'file':'repository.move','line':0x76,'pattern':'public\x20struct\x20PolicyRule'}]},'S11':{'id':'S11','requirement':'Subscription\x20auto-renewal\x20that\x20debits\x20the\x20next\x20period\x20from\x20the\x20subscriber\x20without\x20a\x20new\x20transaction\x20signed\x20by\x20them.','whyUnreachable':'There\x20is\x20no\x20delegation-of-payment\x20primitive.\x20Both\x20Payment\x20constructors\x20take\x20the\x20coins\x20as\x20a\x20call\x20argument,\x20so\x20the\x20payer\x20must\x20hand\x20them\x20over\x20inside\x20their\x20own\x20transaction,\x20and\x20the\x20recorded\x20signer\x20is\x20the\x20transaction\x20sender.\x20There\x20is\x20no\x20allowance\x20/\x20approval\x20/\x20mandate\x20structure\x20anywhere,\x20and\x20a\x20created\x20Payment\x20is\x20frozen,\x20so\x20it\x20cannot\x20be\x20amended\x20into\x20a\x20recurring\x20one\x20either.','toolingMaximum':'Pre-fund\x20the\x20whole\x20term:\x20escrow\x20N\x20periods\x20once,\x20then\x20release\x20one\x20per\x20period\x20with\x20a\x20255\x20once-slot\x20keyed\x20by\x20the\x20period\x20number\x20plus\x20a\x20Clock\x20guard.\x20A\x20keeper\x20may\x20remind\x20the\x20subscriber,\x20never\x20debit\x20them.\x20Lapse\x20gating\x20reads\x20a\x20Repository\x20roster\x20against\x20the\x20Clock.','disclosureObligation':'State\x20which\x20of\x20the\x20two\x20shapes\x20is\x20in\x20force:\x20either\x20the\x20subscriber\x20signs\x20again\x20each\x20period,\x20or\x20the\x20entire\x20term\x20was\x20prepaid\x20up\x20front.\x20Never\x20describe\x20either\x20as\x20\x27auto-renewal\x27.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'payment.move','line':0x67,'pattern':'public\x20fun\x20new<T>(recipient:&vector<address>,\x20coin:vector<Coin<T>>'},{'file':'payment.move','line':0x72,'pattern':'public\x20fun\x20new_singleton<T>(recipient:&address,\x20coin:Coin<T>'},{'file':'payment.move','line':0xb7,'pattern':'transfer::freeze_object(payment);'}]},'S12':{'id':'S12','requirement':'A\x20digital\x20deliverable\x20(file,\x20licence\x20key,\x20drawing,\x20source,\x20course\x20video)\x20that\x20the\x20chain\x20itself\x20marks\x20as\x20redeemed,\x20so\x20it\x20cannot\x20be\x20claimed\x20twice.','whyUnreachable':'Repository\x20stores\x20a\x20typed\x20scalar,\x20not\x20a\x20blob.\x20A\x20Proof\x20is\x20a\x20frozen\x20attestation\x20with\x20no\x20redeemed\x20/\x20verified\x20/\x20consumed\x20state\x20bit,\x20and\x20there\x20is\x20no\x20`redeem`,\x20`verify`\x20or\x20`checkin`\x20function\x20anywhere\x20in\x20the\x20framework\x20—\x20the\x20consumer\x20side\x20can\x20only\x20read\x20`about`\x20and\x20`creator`.','toolingMaximum':'Off-chain\x20delivery\x20plus\x20an\x20on-chain\x20hash\x20attestation:\x20bind\x20the\x20Proof\x20to\x20a\x20Machine\x20forward\x20guard,\x20so\x20advancing\x20the\x20order\x20with\x20a\x20passport\x20IS\x20the\x20redemption\x20act.\x20Afterwards\x20the\x20fact\x20is\x20auditable\x20through\x20the\x20progress\x20history\x20and\x20the\x20retained\x20submission,\x20and\x20the\x20hash\x20can\x20be\x20pinned\x20to\x20the\x20ordered\x20SKU\x20hash\x20by\x20equality.','disclosureObligation':'State\x20that\x20the\x20deliverable\x20itself\x20lives\x20off\x20chain\x20and\x20that\x20what\x20the\x20chain\x20records\x20is\x20the\x20advance,\x20not\x20a\x20transfer\x20of\x20the\x20artefact.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'proof.move','line':0x5f,'pattern':'transfer::freeze_object(obj);'},{'file':'progress.move','line':0x255,'pattern':'retained_submission'}]},'S13':{'id':'S13','requirement':'\x27The\x20bounty\x20has\x20already\x20been\x20paid\x27\x20as\x20a\x20precondition\x20of\x20some\x20later\x20gate.','whyUnreachable':'Claiming\x20a\x20reward\x20bypasses\x20the\x20Payment\x20type\x20entirely:\x20it\x20splits\x20the\x20pool\x20balance\x20and\x20transfers\x20the\x20coin\x20to\x20the\x20recipient\x20directly.\x20There\x20is\x20therefore\x20no\x20frozen\x20receipt\x20and\x20no\x20object-linker\x20attribution,\x20so\x20the\x20whole\x20`payment.*`\x20verb\x20family\x20(1100-1114)\x20cannot\x20see\x20a\x20bounty\x20payout.','toolingMaximum':'The\x20only\x20live\x20trace\x20is\x20`RewardClaimEvent`,\x20which\x20an\x20indexer\x20can\x20capture.\x20To\x20assert\x20it\x20inside\x20a\x20guard,\x20a\x20keeper\x20must\x20write\x20the\x20event\x20back\x20as\x20a\x20Repository\x20row\x20and\x20the\x20guard\x20reads\x20that\x20row\x20—\x20which\x20introduces\x20keeper\x20trust\x20and\x20must\x20be\x20disclosed\x20as\x20such.','disclosureObligation':'State\x20that\x20a\x20bounty\x20payout\x20is\x20not\x20verifiable\x20by\x20any\x20later\x20on-chain\x20gate\x20unless\x20a\x20keeper\x20writes\x20it\x20back,\x20and\x20name\x20the\x20keeper.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'reward.move','line':0x151,'pattern':'balance::split(&mut\x20self.balance,\x20amount)'},{'file':'reward.move','line':0x15b,'pattern':'transfer::public_transfer(coin,\x20recipient);'}]},'S14':{'id':'S14','requirement':'A\x20different\x20price\x20at\x20checkout\x20depending\x20on\x20the\x20buyer\x27s\x20history\x20—\x20member\x20tier\x20price,\x20volume\x20ladder,\x20returning-customer\x20price\x20applied\x20when\x20the\x20order\x20is\x20quoted.','whyUnreachable':'The\x20quote\x20calculation\x20reads\x20only\x20the\x20static\x20listed-price-times-quantity\x20product.\x20`Quote`\x20carries\x20`drop`\x20alone\x20and\x20is\x20bound\x20to\x20the\x20transaction\x20by\x20`quote.ctx\x20==\x20tx_context::digest(ctx)`,\x20so\x20it\x20has\x20no\x20read\x20channel\x20into\x20Repository\x20and\x20cannot\x20consult\x20any\x20per-buyer\x20history\x20at\x20quote\x20time.','toolingMaximum':'Charge\x20one\x20fixed\x20price\x20at\x20buy\x20time\x20and\x20settle\x20the\x20difference\x20afterwards:\x20`AllocationMode_Formula`\x20reads\x20a\x20scalar\x20from\x20Repository,\x20so\x20\x27pay\x20list\x20price,\x20get\x20the\x20tier\x20difference\x20back\x20at\x20settlement\x27\x20is\x20expressible.\x20\x27Pay\x20the\x20tier\x20price\x20at\x20checkout\x27\x20is\x20not.','disclosureObligation':'Rewrite\x20every\x20\x27tier\x20price\x27\x20/\x20\x27member\x20price\x27\x20/\x20\x27returning-customer\x20price\x27\x20claim\x20as\x20a\x20post-hoc\x20rebate\x20and\x20say\x20so\x20explicitly,\x20including\x20that\x20the\x20buyer\x27s\x20money\x20leaves\x20their\x20account\x20at\x20the\x20list\x20price.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'service.move','line':0x13c,'pattern':'public\x20struct\x20Quote\x20has\x20drop\x20{'},{'file':'service.move','line':0x157,'pattern':'u64::safe_mul(sale.price,\x20i.quantity)'},{'file':'service.move','line':0x209,'pattern':'tx_context::digest(ctx)'}]},'S15':{'id':'S15','requirement':'A\x20record\x20declared\x20as\x20an\x20on-chain\x20fact\x20that\x20no\x20privileged\x20party\x20can\x20silently\x20delete.','whyUnreachable':'The\x20Repository\x20row-removal\x20path\x20is\x20a\x20bare\x20contains-then-remove:\x20it\x20takes\x20no\x20`write_once`\x20parameter,\x20never\x20consults\x20the\x20policy,\x20and\x20emits\x20no\x20event.\x20The\x20add\x20path\x20does\x20both\x20(it\x20asserts\x20`E_POLICY_WRITE_ONCE_CONFLICT`\x20and\x20emits\x20`RepositoryDataOverwriteEvent`\x20on\x20overwrite),\x20so\x20the\x20asymmetry\x20is\x20in\x20the\x20remove\x20path\x20alone.\x20A\x20row\x20declared\x20as\x20an\x20on-chain\x20fact\x20can\x20therefore\x20be\x20erased\x20with\x20no\x20trace\x20for\x20an\x20indexer\x20or\x20a\x20guard\x20to\x20reconcile\x20against.','toolingMaximum':'Three\x20mitigations,\x20all\x20off\x20chain:\x20turn\x20`write_once`\x20on;\x20keep\x20the\x20permission\x20index\x20that\x20can\x20remove\x20separate\x20from\x20the\x20one\x20that\x20can\x20write\x20and\x20never\x20grant\x20it\x20to\x20the\x20fulfilling\x20party;\x20and\x20run\x20a\x20harness\x20scan\x20that\x20flags\x20any\x20`write_once`\x20policy\x20whose\x20Repository\x20exposes\x20a\x20remove\x20entry\x20to\x20a\x20non-governance\x20role.\x20The\x20chain\x20itself\x20cannot\x20prevent\x20the\x20deletion.','disclosureObligation':'Where\x20a\x20composition\x20relies\x20on\x20a\x20shared\x20Repository\x20row\x20as\x20a\x20fact,\x20state\x20that\x20the\x20row\x20is\x20append-only\x20by\x20permission\x20separation,\x20not\x20by\x20protocol,\x20and\x20name\x20who\x20holds\x20the\x20remove\x20permission.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'repository.move','line':0xb2,'pattern':'fun\x20data_remove_imp(self:&mut\x20Repository,\x20key:&String,\x20id:&address)'},{'file':'repository.move','line':0xc3,'pattern':'assert!(!write_once,\x20E_POLICY_WRITE_ONCE_CONFLICT);'}]},'S16':{'id':'S16','requirement':'An\x20automatic\x20penalty\x20deducted\x20from\x20the\x20liable\x20party\x20when\x20a\x20deadline\x20passes,\x20with\x20no\x20transaction\x20from\x20the\x20injured\x20party\x20and\x20no\x20voluntary\x20act\x20by\x20the\x20liable\x20one.','whyUnreachable':'Two\x20absences\x20compound.\x20No\x20function\x20can\x20debit\x20another\x20party\x27s\x20Balance\x20—\x20the\x20pool-drain\x20primitive\x20was\x20rejected\x20by\x20user\x20ruling,\x20so\x20the\x20only\x20way\x20funds\x20leave\x20a\x20pool\x20is\x20through\x20an\x20allocator\x20leg\x20whose\x20guard\x20passes.\x20And\x20nothing\x20mutates\x20state\x20on\x20a\x20timer:\x20every\x20state-changing\x20entry\x20takes\x20a\x20`TxContext`\x20and\x20identifies\x20a\x20signer,\x20so\x20a\x20keeper\x20can\x20push\x20a\x20forward\x20but\x20can\x20never\x20create\x20a\x20state\x20or\x20move\x20value\x20by\x20itself.','toolingMaximum':'Never\x20an\x20automatic\x20deduction.\x20Two\x20sanctioned\x20shapes:\x20(a)\x20a\x20pre-funded\x20pool\x20the\x20injured\x20party\x20claims;\x20(b)\x20a\x20proactive\x20Payment\x20gate\x20—\x20the\x20liable\x20party\x20voluntarily\x20mints\x20a\x20Payment\x20carrying\x20`info.for`,\x20and\x20the\x20release\x20edge\x20becomes\x20logic_or(on-time\x20evidence,\x20compensation\x20voucher),\x20so\x20not\x20compensating\x20costs\x20more\x20than\x20compensating.\x20Shape\x20(b)\x20is\x20what\x20makes\x20voluntary\x20compensation\x20rational.','disclosureObligation':'State\x20that\x20the\x20platform\x20cannot\x20deduct\x20from\x20anyone\x20automatically,\x20and\x20that\x20the\x20mechanism\x20is\x20\x27no\x20compensation,\x20no\x20release\x27\x20rather\x20than\x20\x27late\x20delivery\x20triggers\x20a\x20fine\x27.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'allocation.move','line':0x79,'pattern':'F-BS-32\x20pool-drain\x20primitive\x20REJECTED'},{'file':'allocation.move','line':0x7b,'pattern':'no\x20side\x20exit\x20is\x20added\x20to\x20Allocation'},{'file':'payment.move','line':0xa2,'pattern':'public\x20fun\x20create<T>(payment:\x20Payment<T>'}]},'S17':{'id':'S17','requirement':'A\x20per-unit\x20consumption\x20counter\x20the\x20merchant\x20can\x20read\x20back\x20—\x20nights\x20stayed,\x20classes\x20attended,\x20sessions\x20used\x20—\x20so\x20a\x20partial\x20refund\x20or\x20a\x20partial\x20settlement\x20is\x20computed\x20from\x20what\x20was\x20actually\x20consumed.','whyUnreachable':'The\x20order\x27s\x20purchased-items\x20field\x20holds\x20a\x20vector\x20of\x20line\x20items,\x20and\x20a\x20line\x20item\x20carries\x20only\x20a\x20SKU\x20and\x20a\x20quantity:\x20there\x20is\x20no\x20consumed-units\x20member.\x20Adding\x20one\x20would\x20change\x20the\x20layout\x20of\x20a\x20stored\x20value\x20type,\x20which\x20is\x20frozen.\x20The\x20witness-derived\x20ladder\x20can\x20read\x20timestamps\x20off\x20the\x20order\x27s\x20progress\x20history,\x20so\x20it\x20measures\x20elapsed\x20wall-clock\x20time\x20—\x20but\x20elapsed\x20time\x20is\x20not\x20nights\x20stayed\x20or\x20classes\x20attended,\x20and\x20nothing\x20on\x20chain\x20records\x20which\x20units\x20were\x20drawn\x20down.','toolingMaximum':'Two\x20sanctioned\x20shapes,\x20both\x20weaker\x20than\x20the\x20real\x20thing:\x20(a)\x20let\x20the\x20arbiter\x20rule\x20on\x20the\x20whole\x20order\x20with\x20discretion\x20over\x20the\x20consumed\x20share;\x20(b)\x20keep\x20a\x20consumed-units\x20figure\x20as\x20a\x20numeric\x20Repository\x20row\x20maintained\x20by\x20a\x20trusted\x20writer\x20and\x20read\x20it\x20in\x20the\x20settlement\x20guard\x20—\x20which\x20imports\x20writer\x20trust\x20exactly\x20where\x20the\x20chain\x20was\x20meant\x20to\x20remove\x20it.','disclosureObligation':'Where\x20a\x20partial\x20refund\x20depends\x20on\x20units\x20consumed,\x20state\x20that\x20the\x20consumed\x20figure\x20is\x20not\x20an\x20on-chain\x20fact,\x20and\x20name\x20who\x20supplies\x20it.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'order.move','line':0x1f,'pattern':'public\x20struct\x20SaleItem\x20has\x20copy,\x20drop,\x20store\x20{'},{'file':'order.move','line':0x41,'pattern':'items:\x20vector<SaleItem>,\x20//\x20items\x20purchased'}]},'S18':{'id':'S18','requirement':'A\x20platform-issued\x20stored\x20value\x20—\x20a\x20voucher\x20or\x20travel\x20credit\x20—\x20that\x20a\x20buyer\x20holds\x20across\x20orders\x20and\x20spends\x20against\x20a\x20future\x20one,\x20with\x20an\x20issue,\x20a\x20balance\x20and\x20an\x20expiry.','whyUnreachable':'A\x20refund\x20can\x20only\x20travel\x20back\x20along\x20the\x20payment\x20rail\x20it\x20arrived\x20on,\x20into\x20the\x20hands\x20of\x20the\x20order\x27s\x20own\x20holder;\x20there\x20is\x20no\x20primitive\x20that\x20mints\x20a\x20credit\x20payable\x20against\x20some\x20later,\x20not-yet-existing\x20order.\x20The\x20discount\x20object\x20is\x20close\x20but\x20is\x20a\x20different\x20animal\x20—\x20owned,\x20transferable,\x20burned\x20at\x20the\x20moment\x20of\x20purchase\x20—\x20so\x20it\x20is\x20a\x20coupon,\x20not\x20a\x20balance.\x20Nothing\x20carries\x20an\x20outstanding\x20amount\x20forward,\x20so\x20there\x20is\x20no\x20issue,\x20no\x20balance\x20and\x20no\x20expiry\x20to\x20enforce.','toolingMaximum':'Split\x20the\x20voucher\x20in\x20two.\x20Its\x20redemption\x20half\x20is\x20buildable\x20today:\x20a\x20Passport\x20carries\x20an\x20\x27awarded\x20travel\x20credit\x27\x20attestation\x20and\x20the\x20next\x20order\x27s\x20buy\x20guard\x20reads\x20it.\x20Its\x20issuance-and-balance\x20half\x20is\x20not\x20—\x20the\x20platform\x20cannot\x20hold\x20or\x20show\x20an\x20outstanding\x20credit\x20figure\x20on\x20chain.','disclosureObligation':'Never\x20describe\x20a\x20refund\x20as\x20a\x20credit\x20or\x20a\x20wallet\x20balance.\x20State\x20that\x20the\x20remedy\x20is\x20a\x20redemption\x20right\x20attached\x20to\x20the\x20buyer,\x20with\x20no\x20on-chain\x20balance\x20and\x20no\x20enforced\x20expiry.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'allocation.move','line':0x1f4,'pattern':'public\x20fun\x20alloc<T>(self:&mut\x20Allocation<T>'},{'file':'payment.move','line':0xa2,'pattern':'public\x20fun\x20create<T>(payment:\x20Payment<T>'}]},'S19':{'id':'S19','requirement':'A\x20pre-authorization:\x20hold\x20the\x20guest\x27s\x20or\x20renter\x27s\x20money\x20as\x20a\x20security\x20deposit\x20without\x20taking\x20it,\x20and\x20lift\x20the\x20hold\x20untouched\x20when\x20nothing\x20goes\x20wrong.','whyUnreachable':'The\x20allocation\x20pool\x20owns\x20one\x20real\x20balance,\x20and\x20the\x20only\x20operations\x20on\x20it\x20are\x20receiving\x20value\x20and\x20paying\x20value\x20out\x20through\x20a\x20guarded\x20leg\x20—\x20there\x20is\x20no\x20third\x20state\x20meaning\x20\x27reserved\x20but\x20still\x20the\x20payer\x27s\x27.\x20The\x20progress-level\x20hold\x20suspends\x20the\x20workflow,\x20not\x20the\x20money.\x20A\x20deposit\x20is\x20therefore\x20always\x20a\x20real\x20debit:\x20the\x20buyer\x27s\x20funds\x20genuinely\x20leave\x20their\x20account\x20for\x20the\x20whole\x20deposit\x20window.','toolingMaximum':'Model\x20it\x20as\x20a\x20real\x20debit\x20into\x20the\x20pool\x20plus\x20a\x20refund\x20leg\x20afterwards\x20—\x20the\x20shape\x20the\x20long-stay\x20deposit\x20leg\x20already\x20uses.\x20There\x20is\x20no\x20way\x20to\x20make\x20the\x20funds\x20not\x20move.','disclosureObligation':'Mandatory\x20and\x20adverse\x20to\x20the\x20marketing\x20copy:\x20any\x20text\x20promising\x20a\x20pre-authorization,\x20a\x20hold,\x20or\x20a\x20frozen-but-not-charged\x20deposit\x20must\x20disclose\x20that\x20the\x20amount\x20is\x20really\x20collected\x20and\x20only\x20returned\x20later,\x20and\x20must\x20state\x20how\x20many\x20days\x20it\x20stays\x20out\x20of\x20the\x20buyer\x27s\x20hands.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'allocation.move','line':0x1ed,'pattern':'balance:\x20Balance<T>,'},{'file':'progress.move','line':0x292,'pattern':'public\x20fun\x20hold(self:&mut\x20Progress,\x20machine:\x20&Machine,\x20permission:&Permission,'},{'file':'progress.move','line':0x298,'pattern':'public\x20fun\x20order_hold(self:&mut\x20Progress,\x20machine:\x20&Machine,\x20permission:&Permission,\x20order:&Order,'}]},'S20':{'id':'S20','requirement':'A\x20signed\x20or\x20ratio-shaped\x20reputation\x20gate\x20—\x20approval\x20rating,\x20response\x20rate,\x20cancellation\x20rate,\x20a\x20net\x20score\x20—\x20readable\x20by\x20a\x20guard\x20at\x20purchase\x20or\x20award\x20time.','whyUnreachable':'The\x20vote\x20tally\x20on\x20the\x20registry\x20is\x20a\x20mixed\x20counter:\x20like,\x20dislike\x20and\x20favor\x20each\x20occupy\x20their\x20own\x20bit\x20in\x20the\x20per-voter\x20byte,\x20but\x20the\x20tally\x20itself\x20is\x20bumped\x20whenever\x20all\x20bits\x20are\x20set\x20and\x20unbumped\x20whenever\x20all\x20bits\x20are\x20cleared,\x20so\x20it\x20counts\x20\x27how\x20many\x20votes\x20were\x20cast\x27\x20and\x20never\x20\x27how\x20many\x20were\x20positive\x27.\x20There\x20is\x20no\x20filtered\x20numerator\x20or\x20denominator\x20to\x20divide.\x20The\x20tally\x20is\x20also\x20bumped\x20by\x20the\x20eviction\x20path\x20when\x20an\x20overwritten\x20voter\x20had\x20voted,\x20so\x20it\x20is\x20not\x20even\x20a\x20clean\x20headcount.\x20A\x20guard\x20can\x20therefore\x20ask\x20exactly\x20one\x20reputation\x20question:\x20whether\x20at\x20least\x20one\x20vote\x20exists\x20at\x20all.','toolingMaximum':'One\x20honest\x20rung,\x20not\x20a\x20score:\x20the\x20boolean\x20\x27this\x20party\x20has\x20at\x20least\x20one\x20vote\x20on\x20record\x27.\x20Anything\x20shaped\x20like\x20\x27rated\x20at\x20least\x20four\x20stars\x27\x20or\x20\x27two\x20more\x20likes\x20than\x20dislikes\x27\x20is\x20not\x20buildable,\x20even\x20though\x20the\x20polarity\x20bits\x20that\x20would\x20decide\x20it\x20already\x20exist.\x20A\x20merchant\x20that\x20needs\x20a\x20real\x20score\x20must\x20maintain\x20a\x20reputation\x20row\x20in\x20its\x20own\x20Repository\x20with\x20a\x20trusted\x20writer.','disclosureObligation':'Where\x20buyer-facing\x20copy\x20quotes\x20a\x20rating,\x20a\x20percentage\x20or\x20a\x20score-based\x20rank,\x20disclose\x20that\x20the\x20on-chain\x20gate\x20is\x20a\x20presence\x20check\x20on\x20votes,\x20not\x20a\x20quality\x20threshold.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'registrar.move','line':0x22,'pattern':'const\x20BIT_DISLIKE:\x20u8\x20=\x200x04;'},{'file':'registrar.move','line':0x197,'pattern':'//\x20If\x20all\x20bits\x20set,\x20increment\x20count'},{'file':'registrar.move','line':0x1c5,'pattern':'if\x20(is_all_votes_cleared(overwritten.info))\x20{'}]},'S21':{'id':'S21','requirement':'Recover\x20an\x20advance\x20out\x20of\x20the\x20payee\x27s\x20future\x20earnings\x20by\x20proportional\x20deduction\x20—\x20amortize\x20a\x20fit-out\x20cost,\x20claw\x20back\x20a\x20signing\x20bonus,\x20net\x20a\x20monthly\x20charge\x20out\x20of\x20incoming\x20revenue.','whyUnreachable':'The\x20pool\x27s\x20balance\x20accepts\x20value\x20and\x20pays\x20value\x20out\x20through\x20guarded\x20legs;\x20nothing\x20debits\x20a\x20share\x20of\x20an\x20inflow\x20before\x20it\x20lands.\x20The\x20leg\x20that\x20could\x20express\x20a\x20residual\x20—\x20the\x20surplus\x20leg\x20—\x20is\x20deliberately\x20capped\x20at\x20one\x20per\x20allocation,\x20and\x20mixing\x20a\x20rate\x20base\x20with\x20a\x20gross-rate\x20base\x20in\x20the\x20same\x20allocation\x20is\x20rejected\x20outright,\x20so\x20a\x20proportional\x20claw-back\x20cannot\x20be\x20assembled\x20from\x20the\x20pieces\x20that\x20remain.','toolingMaximum':'Invert\x20it:\x20instead\x20of\x20deducting\x20from\x20what\x20arrives,\x20release\x20less\x20of\x20what\x20arrives.\x20Gross\x20earnings\x20enter\x20the\x20pool,\x20then\x20\x27earnings\x20minus\x20this\x20period\x27s\x20amortization\x27\x20is\x20paid\x20out\x20through\x20a\x20rate\x20leg,\x20with\x20the\x20once\x20slot\x20keyed\x20by\x20period\x20number\x20so\x20each\x20period\x20settles\x20exactly\x20once.\x20Economically\x20equivalent\x20to\x20a\x20deduction,\x20mechanically\x20a\x20smaller\x20release\x20—\x20and\x20it\x20only\x20works\x20while\x20earnings\x20exceed\x20the\x20amortization.','disclosureObligation':'State\x20that\x20the\x20recovery\x20is\x20a\x20reduced\x20release\x20and\x20not\x20a\x20deduction,\x20and\x20that\x20a\x20period\x20whose\x20earnings\x20fall\x20short\x20of\x20the\x20amortization\x20carries\x20the\x20shortfall\x20forward\x20only\x20if\x20the\x20merchant\x20builds\x20that\x20carry-forward\x20in.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'allocation.move','line':0x1ed,'pattern':'balance:\x20Balance<T>,'},{'file':'allocation.move','line':0x1a3,'pattern':'assert!(surplus_count\x20<=\x201,\x20EMULTIPLE_SURPLUS);'},{'file':'allocation.move','line':0x1a9,'pattern':'assert!(!(has_rate\x20&&\x20has_gross)\x20||\x20total_amount\x20==\x200,\x20EMIXED_RATE_BASES);'}]},'S22':{'id':'S22','requirement':'A\x20deadline\x20expressed\x20in\x20business\x20days\x20—\x20respond\x20within\x20three\x20working\x20days,\x20refund\x20within\x20seven\x20—\x20excluding\x20weekends\x20and\x20public\x20holidays.','whyUnreachable':'The\x20only\x20clock\x20the\x20chain\x20exposes\x20is\x20a\x20millisecond\x20timestamp,\x20and\x20every\x20deadline\x20is\x20written\x20as\x20a\x20duration\x20added\x20to\x20one.\x20The\x20context\x20opcode\x20set\x20carries\x20no\x20date\x20arithmetic\x20at\x20all:\x20no\x20day-of-week,\x20no\x20timezone,\x20no\x20holiday\x20test.\x20Business\x20days\x20cannot\x20be\x20counted\x20because\x20the\x20chain\x20has\x20no\x20calendar.','toolingMaximum':'Convert\x20at\x20authoring\x20time\x20and\x20disclose\x20the\x20conversion:\x20three\x20business\x20days\x20becomes\x20roughly\x20seventy-two\x20hours.\x20Where\x20real\x20calendar\x20accuracy\x20matters,\x20a\x20trusted\x20writer\x20may\x20maintain\x20a\x20holiday\x20table\x20as\x20Repository\x20rows\x20for\x20a\x20guard\x20to\x20read\x20—\x20again\x20importing\x20writer\x20trust.','disclosureObligation':'Never\x20let\x20buyer-facing\x20text\x20say\x20\x27business\x20days\x27\x20without\x20stating\x20the\x20hour-equivalent\x20actually\x20enforced,\x20and\x20state\x20that\x20public\x20holidays\x20are\x20not\x20excluded.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'arb.move','line':0x22e,'pattern':'WITHDRAW_DURATION_TIME,\x20E_WITHDRAW_DURATION_TIME_NOT_PASSED'},{'file':'common/common.move','line':0x111,'pattern':'public\x20macro\x20fun\x20TYPE_CLOCK():\x20u8\x20{\x2046\x20}'}]},'S23':{'id':'S23','requirement':'Amend\x20the\x20subject\x20matter\x20of\x20an\x20order\x20that\x20already\x20exists\x20—\x20exchange\x20the\x20delivered\x20item\x20for\x20a\x20different\x20one,\x20add\x20a\x20line,\x20reduce\x20a\x20quantity,\x20or\x20adjust\x20the\x20price\x20after\x20the\x20fact.','whyUnreachable':'The\x20purchased\x20lines\x20are\x20written\x20once,\x20when\x20the\x20order\x20is\x20created,\x20and\x20the\x20only\x20accessor\x20the\x20module\x20offers\x20hands\x20out\x20an\x20immutable\x20borrow\x20of\x20them.\x20Thirteen\x20mutators\x20exist\x20on\x20the\x20order\x20object\x20and\x20not\x20one\x20reaches\x20the\x20lines:\x20between\x20them\x20they\x20cover\x20the\x20arbitration\x20state,\x20the\x20one-shot\x20allocation\x20and\x20progress\x20bindings,\x20ownership,\x20the\x20agent\x20list,\x20and\x20the\x20buyer-supplied\x20information\x20slot.\x20The\x20line\x20type\x20is\x20a\x20plain\x20value\x20type\x20carrying\x20a\x20name,\x20a\x20price,\x20a\x20quantity\x20and\x20a\x20work-in-progress\x20hash,\x20so\x20giving\x20it\x20a\x20mutable\x20face\x20would\x20mean\x20changing\x20a\x20frozen\x20struct\x20layout.\x20Stock\x20is\x20decremented\x20on\x20the\x20listing\x20and\x20never\x20on\x20the\x20order,\x20so\x20there\x20is\x20no\x20reverse\x20path\x20either.','toolingMaximum':'Cancel\x20and\x20re-order.\x20The\x20amendment\x20becomes\x20two\x20orders:\x20the\x20first\x20is\x20refunded\x20along\x20its\x20own\x20rails,\x20the\x20second\x20is\x20created\x20with\x20the\x20corrected\x20lines.\x20That\x20is\x20fully\x20expressible\x20and\x20is\x20what\x20the\x20real\x20products\x20do\x20for\x20perishable\x20goods.\x20What\x20it\x20costs\x20—\x20two\x20allocations,\x20two\x20arbitration-fee\x20exposures,\x20two\x20progress\x20graphs,\x20and\x20no\x20on-chain\x20link\x20between\x20an\x20order\x20and\x20its\x20predecessor,\x20so\x20the\x20amendment\x20history\x20lives\x20only\x20off\x20chain.\x20A\x20partial\x20adjustment\x20cannot\x20be\x20expressed\x20at\x20all:\x20keep\x20most\x20of\x20the\x20order\x20and\x20change\x20one\x20line,\x20and\x20the\x20only\x20available\x20move\x20is\x20still\x20to\x20abandon\x20the\x20whole\x20order.','disclosureObligation':'Never\x20promise\x20in-place\x20exchange,\x20add-on\x20purchase,\x20quantity\x20reduction\x20or\x20post-order\x20price\x20adjustment\x20against\x20an\x20existing\x20order.\x20Say\x20that\x20an\x20amendment\x20is\x20a\x20cancellation\x20plus\x20a\x20new\x20order,\x20and\x20say\x20which\x20party\x20bears\x20the\x20second\x20fee\x20exposure.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'order.move','line':0xca,'pattern':'public\x20fun\x20items(self:&Order)\x20:\x20&vector<SaleItem>\x20{'},{'file':'order.move','line':0x41,'pattern':'items:\x20vector<SaleItem>,\x20//\x20items\x20purchased'},{'file':'order.move','line':0x1f,'pattern':'public\x20struct\x20SaleItem\x20has\x20copy,\x20drop,\x20store\x20{'},{'file':'service.move','line':0x17a,'pattern':'fun\x20decrement_stock<T>(self:&mut\x20Service<T>,\x20items:&vector<SaleItem>)\x20{'}]},'S24':{'id':'S24','requirement':'A\x20delivery\x20or\x20contact\x20amendment\x20that\x20is\x20bounded\x20in\x20time\x20and\x20leaves\x20a\x20record\x20—\x20the\x20address\x20can\x20be\x20corrected\x20before\x20pickup,\x20and\x20afterwards\x20the\x20version\x20that\x20was\x20live\x20at\x20each\x20moment\x20stays\x20provable.','whyUnreachable':'The\x20buyer-supplied\x20information\x20slot\x20is\x20freely\x20replaceable\x20by\x20the\x20order\x20owner\x20at\x20any\x20moment\x20of\x20the\x20lifecycle:\x20the\x20only\x20gate\x20is\x20an\x20ownership\x20check,\x20with\x20no\x20status\x20test,\x20no\x20clock\x20comparison\x20and\x20no\x20node\x20restriction.\x20The\x20write\x20replaces\x20the\x20whole\x20slot,\x20destroying\x20the\x20previous\x20value,\x20and\x20the\x20module\x20emits\x20exactly\x20one\x20event\x20in\x20its\x20entire\x20body\x20—\x20the\x20creation\x20event.\x20Neither\x20amendment\x20path\x20emits\x20anything.\x20The\x20chain\x20can\x20therefore\x20hold\x20an\x20address,\x20but\x20it\x20cannot\x20hold\x20the\x20history\x20of\x20one,\x20and\x20it\x20cannot\x20say\x20which\x20address\x20was\x20live\x20when\x20the\x20courier\x20picked\x20up.','toolingMaximum':'Two\x20shapes,\x20neither\x20complete.\x20The\x20controlled\x20binding\x20path\x20requires\x20a\x20stored\x20attestation\x20whose\x20subject\x20is\x20this\x20order\x20and\x20whose\x20creator\x20is\x20the\x20order\x20owner,\x20which\x20at\x20least\x20pins\x20provenance\x20—\x20but\x20it\x20too\x20overwrites\x20without\x20emitting\x20and\x20carries\x20no\x20time\x20bound.\x20For\x20a\x20real\x20trail\x20the\x20merchant\x20mirrors\x20every\x20amendment\x20into\x20a\x20Repository\x20row\x20under\x20a\x20write-once\x20policy\x20so\x20the\x20sequence\x20survives;\x20that\x20imports\x20writer\x20trust,\x20and\x20the\x20row\x20can\x20still\x20be\x20removed\x20without\x20an\x20event\x20unless\x20removal\x20permission\x20is\x20separated\x20from\x20write\x20permission.\x20A\x20time\x20bound\x20is\x20separately\x20expressible:\x20gate\x20the\x20amendment\x20behind\x20a\x20forward\x20that\x20only\x20exists\x20before\x20the\x20pickup\x20node,\x20or\x20read\x20a\x20clock-derived\x20guard,\x20so\x20the\x20workflow\x20rather\x20than\x20the\x20order\x20object\x20enforces\x20the\x20deadline.','disclosureObligation':'Do\x20not\x20tell\x20a\x20courier-facing\x20or\x20buyer-facing\x20audience\x20that\x20the\x20address\x20is\x20locked\x20after\x20pickup;\x20it\x20is\x20not.\x20State\x20that\x20the\x20buyer\x20may\x20change\x20it\x20at\x20any\x20time,\x20that\x20the\x20platform\x20keeps\x20no\x20on-chain\x20history\x20of\x20the\x20change,\x20and\x20that\x20any\x20deadline\x20on\x20amending\x20it\x20is\x20enforced\x20by\x20the\x20merchant\x27s\x20workflow\x20rather\x20than\x20by\x20the\x20order\x20object.','blocksPublish':![],'consumers':['COMPOSE-VARIANT-01'],'sources':[{'file':'order.move','line':0x50,'pattern':'public\x20fun\x20required_info_update(self:&mut\x20Order,\x20im_or_proof:&Option<address>,\x20ctx:&TxContext)\x20{'},{'file':'order.move','line':0x52,'pattern':'self.required_info\x20=\x20*im_or_proof;'},{'file':'order.move','line':0xf6,'pattern':'assert!\x20(self.owner\x20==\x20tx_context::sender(ctx),\x20E_NOT_THE_OWNER);'},{'file':'order.move','line':0xe0,'pattern':'event::emit(NewOrderEvent{object:\x20addr,\x20service:\x20self.service'},{'file':'order.move','line':0x60,'pattern':'*proof::about(proof)\x20==\x20option::some(object::id_address(self))\x20&&\x20*proof::creator(proof)\x20==\x20self.owner,'},{'file':'repository.move','line':0xc7,'pattern':'event::emit<RepositoryDataOverwriteEvent>(RepositoryDataOverwriteEvent{'}]}};export const CROSS_ORDER_QUERY_SURFACE={'hostSlot':0x0,'onceSlots':{'once':0xff,'onceForObject':0xfe},'userSlotRange':[0x0,0xdc],'directOrderVerbs':['order.service','order.owner','order.amount','order.claimed_by\x20some'],'witnessVerbs':[{'witness':'OrderProgress','verbs':['progress.current']},{'witness':'OrderAllocation','verbs':[]},{'witness':'OrderService','verbs':[]}],'presenceOnlyVerbs':['order.required_info\x20some'],'sources':[{'file':'allocation.move','line':0x4f,'pattern':'const\x20ONCE_IDENTIFIER:\x20u8\x20=\x20255;'},{'file':'allocation.move','line':0x5d,'pattern':'const\x20ONCE_FOR_OBJECT_IDENTIFIER:\x20u8\x20=\x20254;'},{'file':'allocation.move','line':0x8f,'pattern':'public\x20struct\x20OnceKey\x20has\x20copy,\x20drop,\x20store\x20{'}],'sdkSources':[{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.service\x22'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.owner\x22'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.amount\x22'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.claimed_by\x20some\x22'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22progress.current\x22'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.required_info\x20some\x22'},{'path':'ts-sdk/packages/wowok/src/w/call/guard-ins.ts','pattern':'name:\x20\x22order.named_operator\x20member\x22'}]};export function variantFor(a,b){if(b['buyerProcures']||a==='user_procured')return'V3';if(a==='self'||a==='internal_staff')return'V1';return b['deliveryInListedPrice']?'V4':'V2';}export function primitivesForVariant(a){return COMPOSITION_VARIANTS[a]['primitives'];}export function requirementsFor(a){const b=new Map();for(const c of a){for(const d of COMPOSITION_PRIMITIVES[c]['requires']){if(!b['has'](d['key']+':'+d['enforcedBy']))b['set'](d['key']+':'+d['enforcedBy'],d);}}return[...b['values']()];}export function disclosuresFor(a,b=[]){const c=[...COMPOSITION_VARIANTS[a]['mandatoryDisclosures']];for(const e of b){const f=CHAIN_UNREACHABLE[e]['disclosureObligation'];if(f&&!c['includes'](f))c['push'](f);}return c;}export function blockingUnreachable(){return Object['keys'](CHAIN_UNREACHABLE)['filter'](a=>CHAIN_UNREACHABLE[a]['blocksPublish']);}export function compositionConsumers(){const a=new Set();for(const b of Object['values'](COMPOSITION_PRIMITIVES))for(const d of b['consumers'])a['add'](d);for(const e of Object['values'](CHAIN_UNREACHABLE))for(const f of e['consumers'])a['add'](f);return[...a]['sort']();}export function isPresenceOnlyVerb(a){return CROSS_ORDER_QUERY_SURFACE['presenceOnlyVerbs']['some'](b=>a['startsWith'](b));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const EVAL_ORDER_FACTS={'machine_edge':{'site':'machine_edge','moment':'pre_move','progressCurrentAtEval':'edge.prev\x20—\x20the\x20node\x20being\x20LEFT;\x20the\x20move\x20has\x20not\x20happened\x20yet\x20'+'(current\x20is\x20written\x20only\x20by\x20the\x20node-accomplish\x20write\x20inside\x20the\x20'+'session,\x20which\x20runs\x20after\x20the\x20guard\x20check)','currentTimeAtEval':'arrival\x20time\x20of\x20edge.prev\x20(current_time\x20is\x20written\x20together\x20with\x20'+'current,\x20so\x20it\x20still\x20reads\x20the\x20moment\x20the\x20order\x20ENTERED\x20the\x20source)','dispatch':'triple\x20lookup\x20(progress.current,\x20next_node,\x20forward)\x20into\x20the\x20machine\x20'+'edge\x20table\x20—\x20dispatch\x20success\x20pins\x20the\x20visible\x20current\x20to\x20edge.prev','consumers':['FUND-EXIT-01','TIME-ANCHOR-01','NODE-MATCH-01'],'sources':[{'file':'progress.move','line':
|
|
1
|
+
export const EVAL_ORDER_FACTS={'machine_edge':{'site':'machine_edge','moment':'pre_move','progressCurrentAtEval':'edge.prev\x20—\x20the\x20node\x20being\x20LEFT;\x20the\x20move\x20has\x20not\x20happened\x20yet\x20'+'(current\x20is\x20written\x20only\x20by\x20the\x20node-accomplish\x20write\x20inside\x20the\x20'+'session,\x20which\x20runs\x20after\x20the\x20guard\x20check)','currentTimeAtEval':'arrival\x20time\x20of\x20edge.prev\x20(current_time\x20is\x20written\x20together\x20with\x20'+'current,\x20so\x20it\x20still\x20reads\x20the\x20moment\x20the\x20order\x20ENTERED\x20the\x20source)','dispatch':'triple\x20lookup\x20(progress.current,\x20next_node,\x20forward)\x20into\x20the\x20machine\x20'+'edge\x20table\x20—\x20dispatch\x20success\x20pins\x20the\x20visible\x20current\x20to\x20edge.prev','consumers':['FUND-EXIT-01','TIME-ANCHOR-01','NODE-MATCH-01'],'sources':[{'file':'progress.move','line':0x265,'pattern':'passport::result_for_guard'},{'file':'progress.move','line':0x209,'pattern':'self.current\x20=\x20*next_node'},{'file':'progress.move','line':0x20a,'pattern':'self.current_time\x20=\x20clock::timestamp_ms(clock)'},{'file':'progress.move','line':0x137,'pattern':'machine::info_borrow(machine,\x20&self.current,\x20next_node,\x20forward)'}]},'allocator':{'site':'allocator','moment':'post_rest','progressCurrentAtEval':'the\x20node\x20the\x20order\x20is\x20PARKED\x20on\x20—\x20alloc\x20is\x20a\x20standalone\x20entry\x20on\x20the\x20'+'resting\x20order,\x20independent\x20of\x20any\x20forward\x20traversal','currentTimeAtEval':'arrival\x20time\x20of\x20the\x20parked\x20node','dispatch':'rows\x20selected\x20by\x20guard-address\x20match;\x20one\x20guard\x20may\x20back\x20several\x20'+'allocator\x20rows\x20(fix\x20/\x20sharing\x20/\x20cap),\x20each\x20consumed\x20in\x20vector\x20order','consumers':['FUND-EXIT-01'],'sources':[{'file':'allocation.move','line':0x1ee,'pattern':'public\x20fun\x20alloc<T>'},{'file':'allocation.move','line':0x203,'pattern':'passport::result_for_guard(passport,\x20&alloc.guard,\x20ctx)'}]}};export const FIXTURE_CONSTITUTION={'markerRegex':/eval-order basis:\s*machine_edge pre_move/,'fixtureFiles':['agent/mcp/src/composition/__tests__/compile.spec.ts','agent/mcp/src/composition/__tests__/golden-trailhaven.spec.ts','agent/mcp/src/tools/__tests__/benchmark-migration-plan.spec.ts','agent/mcp/src/playbooks/service-build/__tests__/merchant-guide.spec.ts']};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const FUND_FLOWS={'buy_entry':{'kind':'entry','summary':'Buyer\x20pays:\x20coin\x20split\x20->\x20Order\x20+\x20Allocation\x20escrow\x20anchored\x20to\x20the\x20order.','path':['service\x20buy\x20(creates\x20the\x20Order,\x20the\x20on-chain\x20purchase\x20entry)','order-bound\x20Allocation\x20creation\x20(splits\x20coin,\x20sets\x20payment_info.for_object=order,\x20on\x20the\x20order-bound\x20funding\x20path)'],'invariants':['Allocation.balance\x20==\x20order\x20amount\x20at\x20creation','quote.ctx\x20binds\x20quote\x20to\x20tx\x20digest;\x20stock\x20deducted\x20in\x20same\x20tx\x20as\x20buy'],'sources':[{'file':'service.move','line':0x206,'pattern':'buy2_imp'},{'file':'service.move','line':0x1d3,'pattern':'order_allocation'}]},'exit_alloc':{'kind':'exit','summary':'Escrow\x20exit\x201\x20(settlement\x20/\x20refund):\x20guard-matched\x20allocators\x20distribute\x20the\x20pool.','path':['the\x20allocation\x20release\x20(on-chain\x20allocation\x20entry)','per\x20matched\x20allocator:\x20once-slot\x20(OnceKey{guard,\x20allocator\x20index,\x20key})\x20consumed','Payment<T>\x20created;\x20CoinWrapper<T>\x20transferred\x20to\x20each\x20recipient','recipient\x20unwraps\x20via\x20payment.unwrap\x20/\x20order.owner_receive'],'invariants':['balance\x20>=\x20allocators.threshold\x20(EINSUFFICIENT_BALANCE)','balance\x20>\x200\x20(EZERO_DISTRIBUTION)\x20—\x20replay\x20on\x20drained\x20pool\x20aborts','payment_info\x20must\x20be\x20some\x20(ENO_PAYMENT_INFO)','every\x20allocator\x20with\x20matching\x20guard\x20RUNS,\x20in\x20vector\x20order,\x20against\x20the\x20shrinking\x20pool','once-slot\x20per\x20allocator\x20index\x20makes\x20replay\x20of\x20the\x20same\x20guard\x20abort'],'findings':['A-3'],'sources':[{'file':'allocation.move','line':0x1ee,'pattern':'public\x20fun\x20alloc<T>'},{'file':'allocation.move','line':0x1f5,'pattern':'EZERO_DISTRIBUTION'}]},'allocation_pool_no_exit':{'kind':'fact','summary':'F-BS-32\x20FINAL\x20RULING\x20(b31\x20audit\x202026-10-22):\x20Allocation\x20has\x20NO\x20drain\x20exit\x20—\x20value\x20leaves\x20a\x20pool\x20ONLY\x20through\x20allocator\x20legs\x20whose\x20guards\x20PASS.','path':['the\x20ONLY\x20sanctioned\x20remedy\x20for\x20a\x20frozen\x20residual\x20is\x20PRE-PUBLISH:\x20extend\x20the\x20allocator\x20set\x20(append-only,\x20publish-gated)\x20with\x20a\x20leg\x20whose\x20guard\x20opens\x20under\x20consensus,\x20or\x20accept\x20the\x20freeze','no\x20order-anchored,\x20service-anchored,\x20or\x20flag-gated\x20side\x20exit\x20exists\x20—\x20a\x20guard-bypassing\x20drain\x20is\x20a\x20backdoor\x20by\x20construction\x20and\x20was\x20REJECTED\x20at\x20the\x20language\x20level'],'invariants':['every\x20on-chain\x20allocation\x20path\x20upholds\x20\x27no\x20value\x20moves\x20without\x20a\x20matching\x20guard\x27\x20—\x20a\x20drain\x20primitive\x20is\x20a\x20rejected\x20shape,\x20NEVER\x20re-propose\x20it','frozen\x20residuals\x20are\x20prevented\x20pre-publish\x20by\x20the\x20AB7-C1\x20shape\x20gate\x20(recipient\x20!=\x20anchor)\x20and\x20allocator\x20planning;\x20mainnet\x200x1dcf3f3a\x20(0.01\x20frozen,\x20no\x20exit)\x20stands\x20as\x20the\x20accepted\x20cost\x20of\x20the\x20discipline'],'findings':['F-BS-32'],'sources':[{'file':'allocation.move','line':0x78,'pattern':'pool-drain\x20primitive\x20REJECTED'},{'file':'service.move','line':0x6b3,'pattern':'NO\x20drain\x20entry\x20exists'}]},'exit_compensation':{'kind':'exit','summary':'Escrow\x20exit\x202\x20(arbitration\x20indemnity):\x20service\x20compensation_fund\x20pays\x20order\x20owner\x20directly.','path':['service\x20compensation\x20claim\x20(arbitrations\x20whitelist\x20+\x20E33\x20conflict\x20check\x20on\x20chain)','arbitration.compensate\x20->\x20order.compensate\x20writes\x20claimed_by','compensation_fund\x20split\x20->\x20public\x20transfer\x20to\x20order.owner\x20(on-chain\x20payout\x20to\x20the\x20order\x20owner)'],'invariants':['order\x20must\x20not\x20be\x20already\x20claimed\x20(E_ORDER_ALREADY_CLAIMED)','claiming\x20arbitration\x20must\x20be\x20in\x20service.arbitrations\x20whitelist'],'sources':[{'file':'service.move','line':0x243,'pattern':'compensation_claim'},{'file':'service.move','line':0x25c,'pattern':'order::owner(order)'},{'file':'order.move','line':0x72,'pattern':'public(package)\x20fun\x20compensate'}]},'dual_rail_fact':{'kind':'fact','summary':'A-3\x20dual\x20rail:\x20alloc\x20never\x20reads\x20claimed_by;\x20compensate\x20never\x20touches\x20the\x20escrow\x20balance.','path':['the\x20order\x27s\x20indemnity\x20accounting\x20(deliberate:\x20refund-of-principal\x20+\x20damages\x20in\x20one\x20case\x20is\x20legal)'],'invariants':['Double-pay\x20prevention\x20is\x20delegated\x20to\x20template\x20convention:\x20refund\x20guard\x20MUST\x20assert\x20claimed_by\x20is\x20none','Tool\x20layer\x20MUST\x20enforce\x20this\x20convention\x20via\x20rule\x20DUAL-RAIL-01\x20—\x20the\x20chain\x20will\x20not'],'findings':['A-3'],'sources':[{'file':'order.move','line':0x10c,'pattern':'claimed_by'}]},'order_anchored_refund':{'kind':'fact','summary':'Order-anchored\x20refunds\x20are\x20deliberate:\x20a\x20GuardIdentifier\x20leg\x20on\x20an\x20order\x20escrow\x20pays\x20the\x20Order\x20OBJECT,\x20and\x20the\x20Order\x27s\x20owner-claim\x20entry\x20extracts\x20the\x20CoinWrapper\x20to\x20order.owner.','path':['GuardIdentifier\x20leg\x20asserts\x20its\x20passport-submitted\x20address\x20==\x20payment_info.for_object\x20(on-chain\x20allocation\x20rule)','the\x20service\x27s\x20escrow\x20setup\x20binds\x20payment_info.for_object\x20to\x20the\x20paying\x20Order','the\x20payment\x20batch\x20transfer\x20moves\x20the\x20CoinWrapper\x20to\x20the\x20Order\x20address','the\x20Order\x27s\x20owner-claim\x20entry\x20receives\x20into\x20the\x20shared\x20Order\x27s\x20own\x20UID\x20(&mut\x20self.id),\x20then\x20transfers\x20the\x20coin\x20to\x20self.owner'],'invariants':['an\x20object\x20address\x20CAN\x20receive:\x20transfer::public_receive\x20only\x20needs\x20&mut\x20UID\x20of\x20the\x20parent,\x20and\x20a\x20shared\x20object\x20qualifies','authorization\x20and\x20destination\x20are\x20separate:\x20the\x20guard\x20decides\x20who\x20may\x20trigger\x20(order.owner\x20or\x20an\x20agent),\x20the\x20payee\x20is\x20always\x20self.owner','the\x20payee\x20is\x20read\x20at\x20extraction\x20time,\x20so\x20a\x20later\x20ownership\x20change\x20is\x20followed\x20automatically','a\x20mismatched\x20submission\x20aborts\x2015\x20—\x20that\x20is\x20the\x20cross-order\x20redirect\x20guard,\x20not\x20a\x20ban\x20on\x20the\x20shape','step\x202\x20is\x20mandatory:\x20the\x20wrapper\x20stays\x20on\x20the\x20Order\x20until\x20the\x20owner-claim\x20entry\x20runs.\x20Build\x20the\x20Receiving\x20from\x20the\x20wrapper\x27s\x20id/version/digest\x20(alloc\x20tx\x20effects);\x20the\x20RPC\x20owned-objects\x20query\x20hardcodes\x20OwnerKind::Address\x20and\x20returns\x20nothing\x20for\x20object-owned\x20children'],'sources':[{'file':'allocation.move','line':0x26d,'pattern':'ERECIPIENT_NOT_FOR_OBJECT'},{'file':'service.move','line':0x1d3,'pattern':'order_allocation'},{'file':'order.move','line':0x139,'pattern':'owner_receive'}]},'buyer_receive':{'kind':'exit','summary':'Buyer\x20claims\x20inbound\x20funds:\x20order.owner_receive\x20unwraps\x20Payment\x20and\x20transfers\x20coin\x20to\x20owner.','path':['order.owner_receive\x20(public\x20transfer\x20to\x20self.owner)'],'invariants':['only\x20order.owner\x20receives'],'sources':[{'file':'order.move','line':0x13a,'pattern':'owner_receive'}]},'reward_claim':{'kind':'exit','summary':'Reward\x20pool\x20exit\x201\x20(incentive):\x20guard+passport\x20gated\x20claim\x20transfers\x20coin\x20to\x20recipient.','path':['the\x20reward\x20claim\x20->\x20coin\x20to\x20recipient\x20(on-chain\x20reward\x20pool\x20exit)'],'invariants':['passport\x20must\x20satisfy\x20the\x20matched\x20RewardGuard'],'sources':[{'file':'reward.move','line':0xd8,'pattern':'public\x20fun\x20claim<T>'}]},'reward_withdraw':{'kind':'exit','summary':'Reward\x20pool\x20exit\x202\x20(balance\x20recovery,\x20ETS-B):\x20permission-gated\x20withdraw\x20leaves\x20inside\x20a\x20Payment\x20object\x20receipt.','path':['reward.withdraw[_and_unwrap]\x20(the\x20on-chain\x20balance-recovery\x20rail),\x20precheck\x20E_GUARD_LOCKED_TIME\x20(the\x20internal\x20withdrawal\x20lock)','the\x20escrowed\x20coin\x20is\x20wrapped\x20and\x20delivered\x20to\x20the\x20recipient;\x20the\x20reward\x20source\x20is\x20recorded\x20in\x20the\x20payment\x27s\x20source\x20set;\x20the\x20payment\x20receipt\x20is\x20minted\x20on\x20chain','unwrap=true\x20(single\x20PTB):\x20the\x20receipt\x20is\x20unwrapped\x20to\x20the\x20transaction\x20sender\x20in\x20the\x20same\x20transaction'],'invariants':['permission\x20index\x20158\x20(REWARD_WITHDRAW)\x20on\x20the\x20Reward\x27s\x20Permission\x20object','blocked\x20while\x20guard_not_added_expiration_time\x20is\x20Some\x20and\x20in\x20the\x20future\x20(E_GUARD_LOCKED_TIME)','claim\x20replay\x20protection\x20(once-slots)\x20is\x20untouched\x20—\x20withdraw\x20never\x20reads\x20recipient\x20records'],'sources':[{'file':'reward.move','line':0x2d1,'pattern':'public\x20fun\x20withdraw<T>'}]},'treasury_flows':{'kind':'internal','summary':'Treasury:\x20deposit/withdraw/guard-driven\x20external\x20flows;\x20owner_receive\x20bypasses\x20outflow\x20counter.','path':['treasury.deposit\x20/\x20withdraw\x20(external_*_guard\x20driven\x20variants)','treasury.owner_receive\x20moves\x20value\x20out\x20WITHOUT\x20touching\x20outflow'],'invariants':['inflow\x20and\x20outflow\x20are\x20u128\x20accumulators;\x20conservation\x20audit\x20must\x20read\x20fields,\x20not\x20events'],'sources':[{'file':'treasury.move','line':0x48,'pattern':'public\x20struct\x20Treasury<phantom\x20T>\x20has\x20key'}]},'discount_burn':{'kind':'fact','summary':'A-4:\x20coupon\x20burned\x20at\x20buy;\x20the\x20burned\x20object\x20leaves\x20only\x20a\x20dead\x20address\x20(F-ES-18\x20event\x20now\x20records\x20the\x20grant).','path':['the\x20discounted\x20quote\x20sets\x20quote.discount=some\x20when\x20benchmark\x20is\x20met\x20(on-chain\x20quote\x20step)','the\x20buy\x20path\x20destroys\x20the\x20coupon\x20after\x20capturing\x20its\x20semantics\x20(on-chain\x20burn\x20at\x20purchase)'],'invariants':['Fix\x20(protocol\x20upgrade,\x20body-level):\x20the\x20discounted\x20quote\x20returns\x20discount:none\x20below\x20benchmark','DiscountRedeemedEvent\x20(F-ES-18)\x20is\x20the\x20only\x20on-chain\x20record\x20of\x20what\x20the\x20burned\x20coupon\x20granted'],'findings':['A-4'],'sources':[{'file':'service.move','line':0x1b7,'pattern':'discount'},{'file':'service.move','line':0x21e,'pattern':'discount_destroy'}]},'conservation_gap':{'kind':'fact','summary':'No\x20on-chain\x20conservation\x20check:\x20accumulator_*\x20are\x20private\x20and\x20sender==@0x0\x20is\x20unreachable.','path':[],'invariants':['Conservation\x20(sum\x20in\x20==\x20sum\x20out\x20+\x20balances)\x20MUST\x20be\x20audited\x20by\x20the\x20tool\x20layer\x20post-materialization\x20(A-14)'],'findings':['A-14'],'sources':[{'file':'service.move','line':0x100,'pattern':'compensation_fund:\x20Balance<T>'}]}};
|
|
1
|
+
export const FUND_FLOWS={'buy_entry':{'kind':'entry','summary':'Buyer\x20pays:\x20coin\x20split\x20->\x20Order\x20+\x20Allocation\x20escrow\x20anchored\x20to\x20the\x20order.','path':['service\x20buy\x20(creates\x20the\x20Order,\x20the\x20on-chain\x20purchase\x20entry)','order-bound\x20Allocation\x20creation\x20(splits\x20coin,\x20sets\x20payment_info.for_object=order,\x20on\x20the\x20order-bound\x20funding\x20path)'],'invariants':['Allocation.balance\x20==\x20order\x20amount\x20at\x20creation','quote.ctx\x20binds\x20quote\x20to\x20tx\x20digest;\x20stock\x20deducted\x20in\x20same\x20tx\x20as\x20buy'],'sources':[{'file':'service.move','line':0x206,'pattern':'buy2_imp'},{'file':'service.move','line':0x1d3,'pattern':'order_allocation'}]},'exit_alloc':{'kind':'exit','summary':'Escrow\x20exit\x201\x20(settlement\x20/\x20refund):\x20guard-matched\x20allocators\x20distribute\x20the\x20pool.','path':['the\x20allocation\x20release\x20(on-chain\x20allocation\x20entry)','per\x20matched\x20allocator:\x20once-slot\x20(OnceKey{guard,\x20allocator\x20index,\x20key})\x20consumed','Payment<T>\x20created;\x20CoinWrapper<T>\x20transferred\x20to\x20each\x20recipient','recipient\x20unwraps\x20via\x20payment.unwrap\x20/\x20order.owner_receive'],'invariants':['balance\x20>=\x20allocators.threshold\x20(EINSUFFICIENT_BALANCE)','balance\x20>\x200\x20(EZERO_DISTRIBUTION)\x20—\x20replay\x20on\x20drained\x20pool\x20aborts','payment_info\x20must\x20be\x20some\x20(ENO_PAYMENT_INFO)','every\x20allocator\x20with\x20matching\x20guard\x20RUNS,\x20in\x20vector\x20order,\x20against\x20the\x20shrinking\x20pool','once-slot\x20per\x20allocator\x20index\x20makes\x20replay\x20of\x20the\x20same\x20guard\x20abort'],'findings':['A-3'],'sources':[{'file':'allocation.move','line':0x1ee,'pattern':'public\x20fun\x20alloc<T>'},{'file':'allocation.move','line':0x1f5,'pattern':'EZERO_DISTRIBUTION'}]},'allocation_pool_no_exit':{'kind':'fact','summary':'F-BS-32\x20FINAL\x20RULING\x20(b31\x20audit\x202026-10-22):\x20Allocation\x20has\x20NO\x20drain\x20exit\x20—\x20value\x20leaves\x20a\x20pool\x20ONLY\x20through\x20allocator\x20legs\x20whose\x20guards\x20PASS.','path':['the\x20ONLY\x20sanctioned\x20remedy\x20for\x20a\x20frozen\x20residual\x20is\x20PRE-PUBLISH:\x20extend\x20the\x20allocator\x20set\x20(append-only,\x20publish-gated)\x20with\x20a\x20leg\x20whose\x20guard\x20opens\x20under\x20consensus,\x20or\x20accept\x20the\x20freeze','no\x20order-anchored,\x20service-anchored,\x20or\x20flag-gated\x20side\x20exit\x20exists\x20—\x20a\x20guard-bypassing\x20drain\x20is\x20a\x20backdoor\x20by\x20construction\x20and\x20was\x20REJECTED\x20at\x20the\x20language\x20level'],'invariants':['every\x20on-chain\x20allocation\x20path\x20upholds\x20\x27no\x20value\x20moves\x20without\x20a\x20matching\x20guard\x27\x20—\x20a\x20drain\x20primitive\x20is\x20a\x20rejected\x20shape,\x20NEVER\x20re-propose\x20it','frozen\x20residuals\x20are\x20prevented\x20pre-publish\x20by\x20the\x20AB7-C1\x20shape\x20gate\x20(recipient\x20!=\x20anchor)\x20and\x20allocator\x20planning;\x20mainnet\x200x1dcf3f3a\x20(0.01\x20frozen,\x20no\x20exit)\x20stands\x20as\x20the\x20accepted\x20cost\x20of\x20the\x20discipline'],'findings':['F-BS-32'],'sources':[{'file':'allocation.move','line':0x78,'pattern':'pool-drain\x20primitive\x20REJECTED'},{'file':'service.move','line':0x6b3,'pattern':'NO\x20drain\x20entry\x20exists'}]},'exit_compensation':{'kind':'exit','summary':'Escrow\x20exit\x202\x20(arbitration\x20indemnity):\x20service\x20compensation_fund\x20pays\x20order\x20owner\x20directly.','path':['service\x20compensation\x20claim\x20(arbitrations\x20whitelist\x20+\x20E33\x20conflict\x20check\x20on\x20chain)','arbitration.compensate\x20->\x20order.compensate\x20writes\x20claimed_by','compensation_fund\x20split\x20->\x20public\x20transfer\x20to\x20order.owner\x20(on-chain\x20payout\x20to\x20the\x20order\x20owner)'],'invariants':['order\x20must\x20not\x20be\x20already\x20claimed\x20(E_ORDER_ALREADY_CLAIMED)','claiming\x20arbitration\x20must\x20be\x20in\x20service.arbitrations\x20whitelist'],'sources':[{'file':'service.move','line':0x243,'pattern':'compensation_claim'},{'file':'service.move','line':0x25c,'pattern':'order::owner(order)'},{'file':'order.move','line':0x72,'pattern':'public(package)\x20fun\x20compensate'}]},'dual_rail_fact':{'kind':'fact','summary':'A-3\x20dual\x20rail:\x20alloc\x20never\x20reads\x20claimed_by;\x20compensate\x20never\x20touches\x20the\x20escrow\x20balance.','path':['the\x20order\x27s\x20indemnity\x20accounting\x20(deliberate:\x20refund-of-principal\x20+\x20damages\x20in\x20one\x20case\x20is\x20legal)'],'invariants':['Double-pay\x20prevention\x20is\x20delegated\x20to\x20template\x20convention:\x20refund\x20guard\x20MUST\x20assert\x20claimed_by\x20is\x20none','Tool\x20layer\x20MUST\x20enforce\x20this\x20convention\x20via\x20rule\x20DUAL-RAIL-01\x20—\x20the\x20chain\x20will\x20not'],'findings':['A-3'],'sources':[{'file':'order.move','line':0x126,'pattern':'claimed_by'}]},'order_anchored_refund':{'kind':'fact','summary':'Order-anchored\x20refunds\x20are\x20deliberate:\x20a\x20GuardIdentifier\x20leg\x20on\x20an\x20order\x20escrow\x20pays\x20the\x20Order\x20OBJECT,\x20and\x20the\x20Order\x27s\x20owner-claim\x20entry\x20extracts\x20the\x20CoinWrapper\x20to\x20order.owner.','path':['GuardIdentifier\x20leg\x20asserts\x20its\x20passport-submitted\x20address\x20==\x20payment_info.for_object\x20(on-chain\x20allocation\x20rule)','the\x20service\x27s\x20escrow\x20setup\x20binds\x20payment_info.for_object\x20to\x20the\x20paying\x20Order','the\x20payment\x20batch\x20transfer\x20moves\x20the\x20CoinWrapper\x20to\x20the\x20Order\x20address','the\x20Order\x27s\x20owner-claim\x20entry\x20receives\x20into\x20the\x20shared\x20Order\x27s\x20own\x20UID\x20(&mut\x20self.id),\x20then\x20transfers\x20the\x20coin\x20to\x20self.owner'],'invariants':['an\x20object\x20address\x20CAN\x20receive:\x20transfer::public_receive\x20only\x20needs\x20&mut\x20UID\x20of\x20the\x20parent,\x20and\x20a\x20shared\x20object\x20qualifies','authorization\x20and\x20destination\x20are\x20separate:\x20the\x20guard\x20decides\x20who\x20may\x20trigger\x20(order.owner\x20or\x20an\x20agent),\x20the\x20payee\x20is\x20always\x20self.owner','the\x20payee\x20is\x20read\x20at\x20extraction\x20time,\x20so\x20a\x20later\x20ownership\x20change\x20is\x20followed\x20automatically','a\x20mismatched\x20submission\x20aborts\x2015\x20—\x20that\x20is\x20the\x20cross-order\x20redirect\x20guard,\x20not\x20a\x20ban\x20on\x20the\x20shape','step\x202\x20is\x20mandatory:\x20the\x20wrapper\x20stays\x20on\x20the\x20Order\x20until\x20the\x20owner-claim\x20entry\x20runs.\x20Build\x20the\x20Receiving\x20from\x20the\x20wrapper\x27s\x20id/version/digest\x20(alloc\x20tx\x20effects);\x20the\x20RPC\x20owned-objects\x20query\x20hardcodes\x20OwnerKind::Address\x20and\x20returns\x20nothing\x20for\x20object-owned\x20children'],'sources':[{'file':'allocation.move','line':0x26d,'pattern':'ERECIPIENT_NOT_FOR_OBJECT'},{'file':'service.move','line':0x1d3,'pattern':'order_allocation'},{'file':'order.move','line':0x157,'pattern':'owner_receive'}]},'buyer_receive':{'kind':'exit','summary':'Buyer\x20claims\x20inbound\x20funds:\x20order.owner_receive\x20unwraps\x20Payment\x20and\x20transfers\x20coin\x20to\x20owner.','path':['order.owner_receive\x20(public\x20transfer\x20to\x20self.owner)'],'invariants':['only\x20order.owner\x20receives'],'sources':[{'file':'order.move','line':0x15c,'pattern':'owner_receive'}]},'reward_claim':{'kind':'exit','summary':'Reward\x20pool\x20exit\x201\x20(incentive):\x20guard+passport\x20gated\x20claim\x20transfers\x20coin\x20to\x20recipient.','path':['the\x20reward\x20claim\x20->\x20coin\x20to\x20recipient\x20(on-chain\x20reward\x20pool\x20exit)'],'invariants':['passport\x20must\x20satisfy\x20the\x20matched\x20RewardGuard'],'sources':[{'file':'reward.move','line':0xd8,'pattern':'public\x20fun\x20claim<T>'}]},'reward_withdraw':{'kind':'exit','summary':'Reward\x20pool\x20exit\x202\x20(balance\x20recovery,\x20ETS-B):\x20permission-gated\x20withdraw\x20leaves\x20inside\x20a\x20Payment\x20object\x20receipt.','path':['reward.withdraw[_and_unwrap]\x20(the\x20on-chain\x20balance-recovery\x20rail),\x20precheck\x20E_GUARD_LOCKED_TIME\x20(the\x20internal\x20withdrawal\x20lock)','the\x20escrowed\x20coin\x20is\x20wrapped\x20and\x20delivered\x20to\x20the\x20recipient;\x20the\x20reward\x20source\x20is\x20recorded\x20in\x20the\x20payment\x27s\x20source\x20set;\x20the\x20payment\x20receipt\x20is\x20minted\x20on\x20chain','unwrap=true\x20(single\x20PTB):\x20the\x20receipt\x20is\x20unwrapped\x20to\x20the\x20transaction\x20sender\x20in\x20the\x20same\x20transaction'],'invariants':['permission\x20index\x20158\x20(REWARD_WITHDRAW)\x20on\x20the\x20Reward\x27s\x20Permission\x20object','blocked\x20while\x20guard_not_added_expiration_time\x20is\x20Some\x20and\x20in\x20the\x20future\x20(E_GUARD_LOCKED_TIME)','claim\x20replay\x20protection\x20(once-slots)\x20is\x20untouched\x20—\x20withdraw\x20never\x20reads\x20recipient\x20records'],'sources':[{'file':'reward.move','line':0x2e5,'pattern':'public\x20fun\x20withdraw<T>'}]},'treasury_flows':{'kind':'internal','summary':'Treasury:\x20deposit/withdraw/guard-driven\x20external\x20flows;\x20owner_receive\x20bypasses\x20outflow\x20counter.','path':['treasury.deposit\x20/\x20withdraw\x20(external_*_guard\x20driven\x20variants)','treasury.owner_receive\x20moves\x20value\x20out\x20WITHOUT\x20touching\x20outflow'],'invariants':['inflow\x20and\x20outflow\x20are\x20u128\x20accumulators;\x20conservation\x20audit\x20must\x20read\x20fields,\x20not\x20events'],'sources':[{'file':'treasury.move','line':0x48,'pattern':'public\x20struct\x20Treasury<phantom\x20T>\x20has\x20key'}]},'discount_burn':{'kind':'fact','summary':'A-4:\x20coupon\x20burned\x20at\x20buy;\x20the\x20burned\x20object\x20leaves\x20only\x20a\x20dead\x20address\x20(F-ES-18\x20event\x20now\x20records\x20the\x20grant).','path':['the\x20discounted\x20quote\x20sets\x20quote.discount=some\x20when\x20benchmark\x20is\x20met\x20(on-chain\x20quote\x20step)','the\x20buy\x20path\x20destroys\x20the\x20coupon\x20after\x20capturing\x20its\x20semantics\x20(on-chain\x20burn\x20at\x20purchase)'],'invariants':['Fix\x20(protocol\x20upgrade,\x20body-level):\x20the\x20discounted\x20quote\x20returns\x20discount:none\x20below\x20benchmark','DiscountRedeemedEvent\x20(F-ES-18)\x20is\x20the\x20only\x20on-chain\x20record\x20of\x20what\x20the\x20burned\x20coupon\x20granted'],'findings':['A-4'],'sources':[{'file':'service.move','line':0x1b7,'pattern':'discount'},{'file':'service.move','line':0x21e,'pattern':'discount_destroy'}]},'conservation_gap':{'kind':'fact','summary':'No\x20on-chain\x20conservation\x20check:\x20accumulator_*\x20are\x20private\x20and\x20sender==@0x0\x20is\x20unreachable.','path':[],'invariants':['Conservation\x20(sum\x20in\x20==\x20sum\x20out\x20+\x20balances)\x20MUST\x20be\x20audited\x20by\x20the\x20tool\x20layer\x20post-materialization\x20(A-14)'],'findings':['A-14'],'sources':[{'file':'service.move','line':0x100,'pattern':'compensation_fund:\x20Balance<T>'}]}};
|
|
@@ -4,6 +4,7 @@ export { FUND_FLOWS, type FundFlow } from "./fund-flow.js";
|
|
|
4
4
|
export { FREEZE_MAP, type FreezeEntry } from "./freeze-map.js";
|
|
5
5
|
export { EVAL_ORDER_FACTS, FIXTURE_CONSTITUTION, type EvalOrderFact, type EvalSite, type EvalMoment } from "./eval-order.js";
|
|
6
6
|
export { GUARD_QUERY_SOURCE, NATIVE_VALIDATION, PATH_DEPENDENT_TIME_QUERIES, STABLE_TIME_QUERIES, WRITE_ONLY_QUERY_PREFIXES, } from "./guard-verbs.js";
|
|
7
|
+
export { CHAIN_UNREACHABLE, COMPOSITION_PRIMITIVES, COMPOSITION_VARIANTS, CROSS_ORDER_QUERY_SURFACE, DELIVERY_FORMS, FULFILLMENT_AXES, blockingUnreachable, compositionConsumers, disclosuresFor, isPresenceOnlyVerb, primitivesForVariant, requirementsFor, variantFor, type ChainUnreachable, type CompositionPrimitive, type CompositionVariant, type DeliveryForm, type FulfillmentAxis, type PrimitiveId, type PrimitiveRequirement, type SdkAnchor, type UnreachableId, type VariantId, } from "./composition-truth.js";
|
|
7
8
|
import { type ObjectName } from "./object-graph.js";
|
|
8
9
|
export declare function isWriteOnlyField(field: string): boolean;
|
|
9
10
|
export declare function isPathDependentTimeQuery(queryName: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{OBJECT_GRAPH}from'./object-graph.js';export{FIELD_CAPABILITY}from'./field-capability.js';export{FUND_FLOWS}from'./fund-flow.js';export{FREEZE_MAP}from'./freeze-map.js';export{EVAL_ORDER_FACTS,FIXTURE_CONSTITUTION}from'./eval-order.js';export{GUARD_QUERY_SOURCE,NATIVE_VALIDATION,PATH_DEPENDENT_TIME_QUERIES,STABLE_TIME_QUERIES,WRITE_ONLY_QUERY_PREFIXES}from'./guard-verbs.js';import{FIELD_CAPABILITY}from'./field-capability.js';import{OBJECT_GRAPH}from'./object-graph.js';import{PATH_DEPENDENT_TIME_QUERIES,WRITE_ONLY_QUERY_PREFIXES}from'./guard-verbs.js';export function isWriteOnlyField(a){return FIELD_CAPABILITY[a]?.['writeOnly']===!![];}export function isPathDependentTimeQuery(a){return PATH_DEPENDENT_TIME_QUERIES['some'](b=>a['startsWith'](b['queryPrefix']));}export function writeOnlyFieldForQuery(a){return WRITE_ONLY_QUERY_PREFIXES['find'](b=>a['startsWith'](b['queryPrefix']))?.['field'];}export function referrersOf(a){return Object['keys'](OBJECT_GRAPH)['filter'](b=>Object['values'](OBJECT_GRAPH[b]['references'])['some'](c=>c['includes'](a)));}
|
|
1
|
+
export{OBJECT_GRAPH}from'./object-graph.js';export{FIELD_CAPABILITY}from'./field-capability.js';export{FUND_FLOWS}from'./fund-flow.js';export{FREEZE_MAP}from'./freeze-map.js';export{EVAL_ORDER_FACTS,FIXTURE_CONSTITUTION}from'./eval-order.js';export{GUARD_QUERY_SOURCE,NATIVE_VALIDATION,PATH_DEPENDENT_TIME_QUERIES,STABLE_TIME_QUERIES,WRITE_ONLY_QUERY_PREFIXES}from'./guard-verbs.js';export{CHAIN_UNREACHABLE,COMPOSITION_PRIMITIVES,COMPOSITION_VARIANTS,CROSS_ORDER_QUERY_SURFACE,DELIVERY_FORMS,FULFILLMENT_AXES,blockingUnreachable,compositionConsumers,disclosuresFor,isPresenceOnlyVerb,primitivesForVariant,requirementsFor,variantFor}from'./composition-truth.js';import{FIELD_CAPABILITY}from'./field-capability.js';import{OBJECT_GRAPH}from'./object-graph.js';import{PATH_DEPENDENT_TIME_QUERIES,WRITE_ONLY_QUERY_PREFIXES}from'./guard-verbs.js';export function isWriteOnlyField(a){return FIELD_CAPABILITY[a]?.['writeOnly']===!![];}export function isPathDependentTimeQuery(a){return PATH_DEPENDENT_TIME_QUERIES['some'](b=>a['startsWith'](b['queryPrefix']));}export function writeOnlyFieldForQuery(a){return WRITE_ONLY_QUERY_PREFIXES['find'](b=>a['startsWith'](b['queryPrefix']))?.['field'];}export function referrersOf(a){return Object['keys'](OBJECT_GRAPH)['filter'](b=>Object['values'](OBJECT_GRAPH[b]['references'])['some'](c=>c['includes'](a)));}
|