@wowok/agent-mcp 3.3.9 → 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/field-capability.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/guard-verbs.js +1 -1
- package/dist/chain-semantics/index.d.ts +1 -0
- package/dist/chain-semantics/index.js +1 -1
- package/dist/chain-semantics/object-graph.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 +26 -4
- 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 +26 -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 +22 -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.d.ts +61 -0
- package/dist/composition/param-disclosure.js +1 -0
- 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 +17 -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/customer/account-events.js +1 -1
- package/dist/data/api/api.spec.js +1 -1
- package/dist/data/api/cli.js +1 -1
- package/dist/data/api/server.d.ts +1 -0
- package/dist/data/api/server.js +1 -1
- package/dist/data/projection/store.d.ts +3 -1
- package/dist/data/projection/store.js +1 -1
- package/dist/data/projection/types.d.ts +32 -0
- package/dist/data/sync/cdc.d.ts +1 -2
- package/dist/data/sync/cdc.js +1 -1
- package/dist/data/sync/cdc.spec.js +1 -1
- package/dist/data/sync/store.d.ts +5 -0
- package/dist/data/sync/store.js +1 -1
- package/dist/data/sync/types.d.ts +2 -0
- package/dist/evaluation/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/guard-scan.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/index.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/allocation-templates.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/arb-fund-facts.d.ts +1 -0
- package/dist/knowledge/arb-fund-facts.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-puzzle.js +1 -1
- package/dist/knowledge/arbitration-risk.d.ts +1 -0
- package/dist/knowledge/arbitration-risk.js +1 -1
- package/dist/knowledge/audit-rules.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/allocation.json +6 -6
- package/dist/knowledge/baselines/rules/arb.json +2 -2
- package/dist/knowledge/baselines/rules/guard.json +11 -11
- package/dist/knowledge/baselines/rules/oracle.json +120 -0
- package/dist/knowledge/baselines/rules/order.json +1 -1
- package/dist/knowledge/baselines/rules/plan.json +385 -18
- package/dist/knowledge/baselines/rules/progress.json +20 -2
- package/dist/knowledge/baselines/semantic-facts.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +25 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/catalog-facts.d.ts +4 -0
- package/dist/knowledge/catalog-facts.js +1 -0
- package/dist/knowledge/commission-landing.js +1 -1
- package/dist/knowledge/component-schema.d.ts +64 -0
- package/dist/knowledge/component-schema.js +1 -0
- package/dist/knowledge/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/entity-recipient-guard.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fee-param-bindings.d.ts +26 -0
- package/dist/knowledge/fee-param-bindings.js +1 -0
- package/dist/knowledge/fund-layer.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.d.ts +2 -2
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-anchor-reach.js +1 -1
- package/dist/knowledge/guard-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-ledger.js +1 -1
- package/dist/knowledge/guard-lint.d.ts +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-node-gates.d.ts +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/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.d.ts +52 -3
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/knob-docs.d.ts +5 -0
- package/dist/knowledge/knob-docs.js +1 -0
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/object-dependency.d.ts +31 -0
- package/dist/knowledge/object-dependency.js +1 -0
- package/dist/knowledge/onchain-constants.d.ts +4 -0
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/param-schema.d.ts +93 -0
- package/dist/knowledge/param-schema.js +1 -0
- package/dist/knowledge/param-tiers.d.ts +25 -0
- package/dist/knowledge/param-tiers.js +1 -0
- package/dist/knowledge/passport-ledger.d.ts +1 -1
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/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 +108 -0
- package/dist/knowledge/pattern-resolutions.js +1 -0
- 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/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +2 -0
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/semantic-ir.d.ts +4 -0
- package/dist/knowledge/semantic-ir.js +1 -1
- package/dist/knowledge/service-allocation-semantics.js +1 -1
- package/dist/knowledge/service-ledger.d.ts +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/service-templates.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/strategy-manuals.d.ts +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/supply-chain.d.ts +9 -0
- package/dist/knowledge/supply-chain.js +1 -1
- package/dist/knowledge/template-loader.d.ts +114 -6
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-nav.d.ts +9 -0
- package/dist/knowledge/template-nav.js +1 -0
- package/dist/knowledge/template-prose.d.ts +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +95 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-test-profiles.d.ts +17 -0
- package/dist/knowledge/template-test-profiles.js +1 -0
- package/dist/knowledge/template-validation.d.ts +1 -0
- package/dist/knowledge/template-validation.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/treasury-templates.js +1 -1
- package/dist/knowledge/workflow-guidance.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.d.ts +37 -0
- package/dist/participation/time-window.js +1 -0
- 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.d.ts +1 -0
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +52 -22
- 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.d.ts +1 -0
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/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 +2 -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/relationship/registry.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/repository.js +1 -1
- package/dist/runtime/instance-registry.d.ts +7 -1
- package/dist/runtime/instance-registry.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +106 -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/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +264 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +34 -6
- package/dist/schema/call/demand.d.ts +15 -6
- package/dist/schema/call/demand.js +1 -1
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/guard.d.ts +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 +131 -43
- 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 +224 -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 +116 -1
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +166 -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 +157 -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 +28 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +343 -84
- 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 +251 -4
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +271 -78
- 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 +98 -2
- package/dist/schemas/benchmark_migration_operation.output.json +341 -12
- package/dist/schemas/benchmark_migration_operation.schema.json +42 -3
- package/dist/schemas/bridge_operation.output.json +98 -2
- package/dist/schemas/bridge_operation.schema.json +5 -5
- 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 +586 -4
- package/dist/schemas/evaluation_operation.schema.json +194 -3
- package/dist/schemas/goal_operation.schema.json +183 -0
- package/dist/schemas/guard2file.schema.json +1 -1
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +771 -1
- package/dist/schemas/industry_pack_operation.schema.json +28 -4
- package/dist/schemas/keeper_operation.output.json +96 -2
- package/dist/schemas/local_cache_operation.output.json +98 -2
- package/dist/schemas/local_history_operation.output.json +98 -2
- package/dist/schemas/local_info_operation.output.json +98 -2
- package/dist/schemas/local_mark_operation.output.json +98 -2
- package/dist/schemas/machineNode2file.schema.json +1 -1
- package/dist/schemas/messenger_operation.output.json +107 -2
- package/dist/schemas/messenger_operation.schema.json +41 -34
- package/dist/schemas/monitor_events.output.json +96 -2
- package/dist/schemas/monitor_subscription.output.json +96 -2
- package/dist/schemas/onchain_events.output.json +108 -14
- package/dist/schemas/onchain_operations.output.json +326 -11
- package/dist/schemas/onchain_operations.schema.json +1343 -734
- package/dist/schemas/onchain_operations_allocation.schema.json +35 -19
- package/dist/schemas/onchain_operations_arbitration.schema.json +16 -8
- package/dist/schemas/onchain_operations_contact.schema.json +12 -4
- package/dist/schemas/onchain_operations_demand.schema.json +33 -17
- package/dist/schemas/onchain_operations_gen_passport.schema.json +12 -4
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +297 -111
- package/dist/schemas/onchain_operations_machine.schema.json +56 -39
- package/dist/schemas/onchain_operations_order.schema.json +67 -42
- package/dist/schemas/onchain_operations_payment.schema.json +27 -12
- package/dist/schemas/onchain_operations_permission.schema.json +363 -232
- package/dist/schemas/onchain_operations_personal.schema.json +43 -28
- package/dist/schemas/onchain_operations_progress.schema.json +49 -32
- package/dist/schemas/onchain_operations_proof.schema.json +12 -4
- package/dist/schemas/onchain_operations_repository.schema.json +17 -8
- package/dist/schemas/onchain_operations_reward.schema.json +36 -20
- package/dist/schemas/onchain_operations_service.schema.json +230 -130
- package/dist/schemas/onchain_operations_treasury.schema.json +36 -20
- package/dist/schemas/onchain_table_data.output.json +276 -19
- package/dist/schemas/onchain_table_data.schema.json +104 -64
- 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 +1054 -146
- package/dist/schemas/query_toolkit.schema.json +144 -13
- package/dist/schemas/schema_query.schema.json +1 -1
- package/dist/schemas/watch_operation.output.json +86 -3
- package/dist/schemas/wip_file.output.json +8 -0
- package/dist/schemas/workflow_operation.schema.json +5 -4
- package/dist/schemas/wowok_buildin_info.schema.json +1 -1
- package/dist/task/playbook.js +1 -1
- package/dist/tools/handlers/benchmark-migration.d.ts +12 -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/messenger.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +24 -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/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/sanitize-output.js +1 -1
- package/dist/tools/sanitize-output.spec.js +1 -1
- package/dist/tools/transport-integrity.d.ts +7 -0
- package/dist/tools/transport-integrity.js +1 -0
- package/dist/tools/types.d.ts +1 -0
- package/dist/tools/upgrade-check.d.ts +22 -0
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wrap.d.ts +6 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +7 -6
- package/dist/extensions/business-modules.d.ts +0 -54
- package/dist/extensions/business-modules.js +0 -1
- package/dist/schemas/guard-templates.json +0 -379
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EDGE_SCHEMA_BY_ID,EDGE_ID_REPOSITORY_POLICY_GUARD}from'../graph/onchain/index.js';export const SCENARIO_BRIDGE_REGISTRY=[{'id':'bridge.supply_match','code':'b03','edge_refs':['demand.guard','demand.presenter','demand.presenter_service'],'name':'Supply-Demand\x20Match','participants':[{'object':'Demand','role':'need\x20expression\x20(what\x20is\x20wanted)'},{'object':'Service','role':'capability\x20offering\x20(what\x20can\x20be\x20delivered)'},{'object':'Guard','role':'presentation\x20qualification\x20(who\x20may\x20present\x20what)'}],'bridge_fields':[{'object':'Demand','field':'guards:\x20vector<ServiceGuard>\x20{\x20guard,\x20service_identifier\x20}','meaning':'presenters\x20must\x20pass\x20the\x20guard;\x20service_identifier\x20resolves\x20WHICH\x20service\x20they\x20present\x20for'},{'object':'Demand','field':'presentation\x20call\x20carries\x20the\x20Service\x20object\x20as\x20its\x20argument','meaning':'a\x20Service\x20object\x20is\x20supplied\x20AT\x20the\x20presentation\x20—\x20the\x20demand\x20does\x20not\x20store\x20services;\x20suppliers\x20bring\x20them'}],'move_anchor':'presentation\x20resolves\x20the\x20guard\x27s\x20verdict\x20from\x20the\x20submitted\x20service-identifier\x20evidence','scenario':{'from':'Demand\x20scenario\x20(need\x20expression)','to':'Service\x20scenario\x20(product\x20listing)','merged':'Matchmaking\x20(discovery\x20+\x20qualification\x20+\x20choice)'},'capability_gained':'Choice\x20among\x20qualified\x20offers:\x20the\x20demander\x20compares\x20presented\x20Services\x20(acceptance_score\x20accumulates\x20per\x20presenter)\x20'+'—\x20a\x20capability\x20neither\x20a\x20bare\x20Demand\x20(no\x20offers)\x20nor\x20a\x20bare\x20Service\x20(no\x20buyer\x20context)\x20possesses.','value_flow':'No\x20funds\x20move\x20yet\x20—\x20this\x20bridge\x20prices\x20ATTENTION:\x20acceptance_score\x20on\x20the\x20presenter\x27s\x20entity\x20is\x20the\x20reputation\x20currency.','prerequisites':['Demand\x20not\x20yet\x20paused','Presenter\x20passes\x20the\x20Demand\x27s\x20guard\x20(E_NEED_PASSPORT\x20when\x20guards\x20exist\x20and\x20no\x20passport\x20is\x20given)'],'examples':['Procurement\x20tender:\x20a\x20company\x20posts\x20a\x20Demand;\x20certified\x20suppliers\x20present\x20their\x20Services;\x20the\x20best\x20acceptance_score\x20wins\x20the\x20order.','Local\x20services\x20marketplace:\x20\x27repair\x20my\x20roof\x27\x20demand\x20meets\x20licensed\x20roofer\x20services.']},{'id':'bridge.purchase','code':'b01','edge_refs':['service.buy_guard','order.service','order.machine','order.discount','discount.service','order.builder','eoa.order','service.order'],'name':'Purchase\x20(Quote\x20→\x20Order)','participants':[{'object':'Service','role':'published\x20offering\x20(sales,\x20wip,\x20price)'},{'object':'Quote','role':'buyer\x27s\x20item\x20selection\x20+\x20computed\x20total'},{'object':'Discount','role':'transferable\x20price\x20reduction\x20bound\x20to\x20the\x20service'},{'object':'Guard','role':'buy\x20qualification\x20(buy_guard)'},{'object':'Order','role':'the\x20created\x20agreement'}],'bridge_fields':[{'object':'Service','field':'buy_guard:\x20Option<address>','meaning':'who\x20may\x20buy\x20(qualification);\x20buy()\x20refuses\x20when\x20a\x20guard\x20exists\x20and\x20no\x20passport\x20proves\x20it'},{'object':'Discount','field':'service:\x20address\x20(+\x20time\x20window,\x20benchmark,\x20transferable)','meaning':'the\x20discount\x20object\x20itself\x20carries\x20WHICH\x20service\x20it\x20applies\x20to\x20—\x20it\x20travels\x20wallet-to-wallet\x20but\x20stays\x20bound\x20to\x20the\x20service'},{'object':'Order','field':'machine:\x20Option<address>\x20(copied\x20from\x20the\x20Service\x20at\x20order\x20creation)','meaning':'the\x20fulfillment\x20workflow\x20is\x20PRE-BINDED\x20at\x20purchase\x20time\x20—\x20the\x20order\x20reserves\x20its\x20own\x20execution\x20path'}],'move_anchor':'the\x20purchase\x20entry\x20(open\x20or\x20passport-gated)\x20creates\x20the\x20Order','scenario':{'from':'Service\x20scenario\x20(offering)','to':'Order\x20scenario\x20(agreement\x20+\x20escrow\x20intent)','merged':'Transaction\x20(commitment\x20with\x20reserved\x20fulfillment)'},'capability_gained':'A\x20binding\x20agreement\x20that\x20reserves\x20its\x20own\x20execution\x20path:\x20the\x20Order\x20snapshot\x20copies\x20the\x20Service\x27s\x20machine\x20reference\x20'+'at\x20creation,\x20so\x20later\x20Service\x20edits\x20cannot\x20retroactively\x20change\x20how\x20THIS\x20order\x20is\x20fulfilled.','value_flow':'Amount\x20is\x20recorded\x20(order.amount)\x20but\x20coins\x20are\x20not\x20yet\x20moved\x20—\x20payment\x20happens\x20at\x20the\x20allocation\x20bridge.','prerequisites':['Service\x20published\x20(bPublished)\x20and\x20not\x20paused\x20(E_NOT_PUBLISHED\x20/\x20E_PAUSED)','Quote\x20signed\x20by\x20the\x20tx\x20digest\x20(E_INVALID_QUOTE)\x20—\x20prevents\x20quote\x20replay\x20across\x20transactions','buy_guard\x20passed\x20when\x20present\x20(E_BUY_GUARD_PASSPORT_REQUIRED)'],'examples':['Standard\x20e-commerce\x20checkout:\x20quote\x20items,\x20apply\x20a\x20transferred\x20Discount,\x20create\x20the\x20Order.','Gated\x20purchase:\x20only\x20KYC-passed\x20wallets\x20(buy_guard)\x20can\x20order\x20a\x20licensed\x20service.']},{'id':'bridge.escrow_split','code':'b05','edge_refs':['service.order_allocator_guard','order.allocation','allocation.guard','allocation.payment','allocation.for_object','allocation.for_guard','wf.forward_guard','payment.recipient','payment.from_object','payment.for_object','payment.for_guard'],'name':'Escrow\x20&\x20Split\x20(Order\x20→\x20Allocation\x20→\x20Payment)','participants':[{'object':'Service','role':'payout\x20rules\x20owner\x20(order_allocators)'},{'object':'Order','role':'escrowed\x20amount\x20+\x20single\x20allocation\x20slot'},{'object':'Allocation','role':'guard-gated\x20distributor'},{'object':'Payment','role':'the\x20actual\x20value\x20transfer\x20with\x20provenance'}],'bridge_fields':[{'object':'Service','field':'order_allocators:\x20Option<Allocators>','meaning':'who\x20may\x20run\x20the\x20split\x20and\x20under\x20which\x20guards\x20—\x20the\x20merchant\x27s\x20payout\x20policy,\x20pre-registered\x20on\x20the\x20Service'},{'object':'Order','field':'allocation:\x20Option<address>\x20(set\x20once\x20—\x20single-shot\x20split)','meaning':'the\x20order\x20can\x20be\x20split\x20exactly\x20once\x20—\x20the\x20escrow-to-payout\x20transition\x20is\x20one-way\x20and\x20auditable'},{'object':'Payment','field':'info.for_object\x20/\x20from_object','meaning':'every\x20payout\x20carries\x20the\x20source\x20object\x20address\x20—\x20money\x20always\x20answers\x20\x27which\x20business\x20object\x20paid\x20me\x27'}],'move_anchor':'order-side\x20allocation\x20entry\x20(E_ORDER_SERVICE_NOT_MATCH)\x20→\x20coin\x20escrow\x20split\x20for\x20the\x20order\x20(payment_info(order),\x20alloc)','scenario':{'from':'Order\x20scenario\x20(agreement\x20+\x20funds)','to':'Payment\x20scenario\x20(value\x20transfer)','merged':'Settlement\x20(escrowed\x20funds\x20split\x20by\x20declared\x20policy)'},'capability_gained':'Trustless\x20settlement:\x20the\x20buyer\x20pays\x20into\x20the\x20order\x20amount,\x20and\x20the\x20split\x20executes\x20only\x20under\x20the\x20merchant\x27s\x20'+'pre-registered\x20allocator\x20guards\x20—\x20neither\x20side\x20can\x20redirect\x20the\x20other\x27s\x20share;\x20the\x20Payment\x27s\x20from_object\x20makes\x20'+'every\x20revenue\x20line\x20item\x20auditable\x20back\x20to\x20its\x20order.','value_flow':'Buyer\x20coin\x20→\x20Allocation\x20balance\x20→\x20(guard-gated\x20alloc)\x20→\x20Payment\x20recipients\x20(Entity\x20/\x20Signer\x20/\x20GuardIdentifier).','prerequisites':['Coin\x20≥\x20order.amount\x20(E_COIN_NOT_ENOUGH),\x20excess\x20refunded\x20to\x20the\x20sender\x20in\x20the\x20same\x20tx','The\x20calling\x20Service\x20IS\x20the\x20order\x27s\x20service\x20(E_ORDER_SERVICE_NOT_MATCH)','Rate\x20shares\x20must\x20complete\x2010000\x20basis\x20points\x20unless\x20a\x20Surplus\x20entry\x20exists'],'examples':['Multi-vendor\x20order:\x20one\x20payment\x20split\x20across\x20goods\x20supplier,\x20logistics\x20operator,\x20and\x20platform\x20surplus.','Payroll-style\x20settlement:\x20order\x20revenue\x20split\x20to\x20staff\x20entities\x20by\x20Rate\x20with\x20the\x20owner\x20taking\x20Surplus.']},{'id':'bridge.fulfillment','code':'b04','edge_refs':['service.machine','order.machine','order.progress','progress.machine','progress.task','progress.named_operator','progress.context_repository','machine.node','wf.transition','wf.forward_guard','permission.entity'],'name':'Fulfillment\x20(Order\x20×\x20Machine\x20→\x20Progress)','participants':[{'object':'Service','role':'workflow\x20owner\x20(machine\x20field)'},{'object':'Order','role':'the\x20work\x20item\x20to\x20execute'},{'object':'Machine','role':'workflow\x20template\x20(nodes\x20+\x20forwards)'},{'object':'Progress','role':'per-order\x20workflow\x20instance'},{'object':'Permission','role':'who\x20may\x20advance\x20which\x20edge'}],'bridge_fields':[{'object':'Service','field':'machine:\x20Option<address>','meaning':'the\x20workflow\x20template\x20the\x20service\x20promises\x20to\x20execute\x20—\x20locked\x20at\x20publish\x20(bPublished)'},{'object':'Progress','field':'order\x20namespace\x20+\x20the\x20buyer\x20registered\x20as\x20the\x20order\x27s\x20owner','meaning':'the\x20buyer\x20becomes\x20the\x20Progress\x27s\x20order-owner\x20namespace:\x20operators\x20advance\x20THEIR\x20copy,\x20the\x20buyer\x27s\x20own\x20Progress\x20view\x20aggregates'},{'object':'Machine','field':'Forward\x20{\x20namedOperator\x20|\x20permissionIndex\x20|\x20guard\x20}','meaning':'each\x20edge\x20declares\x20its\x20operator\x20—\x20internal\x20staff,\x20permission\x20entity,\x20or\x20guard-proven\x20external\x20party'}],'move_anchor':'per-order\x20workflow\x20instantiation\x20(E_MACHINE_NOT_MATCH\x20prechecked)\x20attaches\x20the\x20Progress\x20instance\x20to\x20the\x20order','scenario':{'from':'Order\x20scenario\x20(agreement)','to':'Machine\x20scenario\x20(process\x20template)','merged':'Execution\x20(per-order\x20workflow\x20with\x20multi-party\x20advancement)'},'capability_gained':'Coordinated\x20execution:\x20the\x20SAME\x20template\x20runs\x20independently\x20per\x20order,\x20with\x20each\x20edge\x20potentially\x20operated\x20by\x20a\x20'+'different\x20party\x20(employee\x20/\x20supplier\x20/\x20buyer)\x20under\x20permission\x20or\x20guard\x20checks\x20—\x20process\x20outsourcing\x20with\x20on-chain\x20accountability.','prerequisites':['The\x20supplied\x20machine\x20IS\x20the\x20service\x27s\x20machine\x20(E_MACHINE_NOT_MATCH)','Each\x20forward\x27s\x20weight\x20counts\x20at\x20most\x20once\x20per\x20session\x20(E_NOT_THE_HOLDER\x20on\x20re-execution)','Edge\x20guard\x20(when\x20present)\x20requires\x20submitted\x20evidence\x20—\x20retained\x20submissions\x20persist\x20into\x20the\x20session\x20history'],'examples':['Custom\x20manufacturing:\x20paid\x20→\x20machining\x20→\x20QC\x20→\x20shipped,\x20where\x20QC\x20is\x20advanced\x20by\x20an\x20independent\x20inspector\x20(namedOperator).','Multi-supplier\x20sub-orders:\x20the\x20machine\x27s\x20nodes\x20hand\x20off\x20between\x20the\x20merchant\x20and\x20subcontracted\x20suppliers.']},{'id':'bridge.dispute','code':'b06','edge_refs':['service.permission','service.arbitration','arbitration.permission','arbitration.voting_guard','arbitration.usage_guard','order.dispute','order.claimed_by','arb.order','arb.arbitration_service','arb.voter'],'name':'Dispute\x20&\x20Compensation\x20(Service\x20×\x20Arbitration\x20×\x20Order\x20→\x20Arb)','participants':[{'object':'Service','role':'pre-registered\x20arbitrations\x20+\x20compensation\x20fund'},{'object':'Arbitration','role':'voting\x20rules\x20+\x20usage\x20gate'},{'object':'Order','role':'the\x20disputed\x20agreement\x20(single\x20claim)'},{'object':'Arb','role':'the\x20case\x20(7-state\x20lifecycle)'}],'bridge_fields':[{'object':'Service','field':'arbitrations:\x20vector<address>\x20+\x20compensation_fund:\x20Balance<T>','meaning':'the\x20merchant\x20pre-commits\x20BOTH\x20who\x20judges\x20(independent\x20permission)\x20AND\x20the\x20money\x20that\x20backs\x20the\x20verdict'},{'object':'Service','field':'arbitration\x20registration\x20fairness\x20check','meaning':'E_ARBITRATION_PERMISSION_CONFLICT:\x20an\x20Arbitration\x20sharing\x20the\x20Service\x27s\x20own\x20Permission\x20is\x20REJECTED\x20—\x20fairness\x20is\x20enforced\x20as\x20a\x20RELATIONAL\x20constraint,\x20not\x20a\x20promise'},{'object':'Order','field':'dispute:\x20vector<address>\x20+\x20claimed_by:\x20Option<address>','meaning':'disputes\x20append\x20to\x20the\x20order;\x20compensation\x20claims\x20it\x20exactly\x20once\x20(E_ORDER_ALREADY_CLAIMED)\x20—\x20the\x20payout\x20is\x20single-shot\x20by\x20construction'}],'move_anchor':'dispute\x20filing\x20(open\x20or\x20passport-gated)\x20+\x20compensation\x20claim,\x207-state\x20lifecycle','scenario':{'from':'Fulfillment\x20scenario\x20(execution\x20with\x20possible\x20disagreement)','to':'Arbitration\x20scenario\x20(independent\x20judgment)','merged':'Remedy\x20(wrong\x20execution\x20→\x20compensated\x20loss)'},'capability_gained':'Credible\x20remedy:\x20the\x20loser\x20of\x20a\x20bad\x20transaction\x20is\x20made\x20whole\x20from\x20a\x20fund\x20the\x20merchant\x20could\x20not\x20pre-empty,\x20'+'judged\x20by\x20parties\x20the\x20merchant\x20cannot\x20appoint\x20unilaterally\x20—\x20trustlessness\x20expressed\x20as\x20a\x20field-level\x20topology\x20constraint.','value_flow':'compensation_fund\x20(Service)\x20→\x20indemnity\x20(Arb)\x20→\x20compensation\x20claim\x20to\x20the\x20winning\x20party\x20(single\x20claim\x20per\x20order).','prerequisites':['Disputant\x20passes\x20the\x20Arbitration\x27s\x20usage_guard\x20when\x20set\x20(E_NEED_PASSPORT)','Voters\x20pass\x20voting\x20guards;\x20vote\x20weight\x20from\x20FixedValue\x20or\x20GuardIdentifier\x20submission','Voting\x20deadline\x20elapsed\x20before\x20finish;\x20objection\x20windows\x20respected\x20(state\x20machine)'],'examples':['Delivery\x20dispute:\x20buyer\x20proves\x20non-delivery\x20via\x20WTS\x20evidence;\x20independent\x20arbitrators\x20vote;\x20compensation\x20pays\x20from\x20the\x20fund.','SLA\x20breach:\x20machine\x20timestamps\x20prove\x20late\x20delivery;\x20weighted\x20voters\x20set\x20the\x20indemnity.']},{'id':'bridge.data_service','code':'b02','edge_refs':['service.repository','repository.permission',EDGE_ID_REPOSITORY_POLICY_GUARD,'repository.quote_guard','repository.data_about','progress.context_repository'],'name':'Data\x20Service\x20(Service\x20×\x20Repository)','participants':[{'object':'Service','role':'the\x20offering\x20that\x20includes\x20data\x20deliverables'},{'object':'Repository','role':'on-chain\x20database\x20(policies,\x20rows)'},{'object':'Guard','role':'write/quote\x20qualification\x20per\x20policy'}],'bridge_fields':[{'object':'Service','field':'repositories:\x20vector<address>\x20(max\x20100)','meaning':'databases\x20the\x20service\x20commits\x20to\x20maintain\x20—\x20the\x20deliverable\x20IS\x20the\x20data'},{'object':'Repository','field':'PolicyGuard\x20{\x20id_from_submission,\x20data_from_submission\x20}','meaning':'writes\x20are\x20guard-qualified:\x20WHO\x20(row\x20key)\x20may\x20write\x20WHAT\x20(the\x20submitted\x20data\x20itself)'}],'move_anchor':'repositories\x20field,\x20policy-guarded\x20writes','scenario':{'from':'Service\x20scenario\x20(offering)','to':'Repository\x20scenario\x20(on-chain\x20database)','merged':'Data\x20products\x20(paid,\x20qualified,\x20auditable\x20data\x20maintenance)'},'capability_gained':'Verifiable\x20data\x20work:\x20a\x20subscription\x20where\x20the\x20provider\x27s\x20every\x20write\x20is\x20qualified\x20by\x20guards\x20and\x20attributable\x20to\x20'+'the\x20paid\x20service\x20—\x20data\x20quality\x20becomes\x20an\x20enforceable\x20contract\x20term,\x20not\x20a\x20promise.','prerequisites':['Writer\x20passes\x20the\x20policy\x27s\x20write\x20guards','Row\x20key\x20resolves\x20via\x20id_from_submission\x20(or\x20PolicyRule.id_from\x20static\x20override)'],'examples':['Market-data\x20feed\x20service:\x20subscribers\x20pay;\x20the\x20provider\x20writes\x20rows\x20under\x20a\x20write\x20guard\x20proving\x20oracle\x20provenance.','Review\x20platform:\x20reviewers\x20pass\x20reputation\x20guards;\x20their\x20submissions\x20become\x20the\x20product\x20others\x20pay\x20to\x20read\x20(quote_guard).']},{'id':'bridge.qualification','code':'b10','edge_refs':['service.buy_guard','demand.guard','arbitration.voting_guard','arbitration.usage_guard','wf.forward_guard','repository.quote_guard',EDGE_ID_REPOSITORY_POLICY_GUARD,'treasury.deposit_guard','treasury.withdraw_guard','guard.relies','passport.guard','passport.ticket_relies'],'name':'Qualification\x20(Guard\x20×\x20every\x20gated\x20scenario)','participants':[{'object':'Guard','role':'the\x20proof\x20machine'},{'object':'Passport','role':'per-tx\x20proof\x20carrier'},{'object':'gated\x20objects','role':'Service(buy)\x20/\x20Demand(present)\x20/\x20Arbitration(vote,\x20dispute)\x20/\x20Machine(forward)\x20/\x20Repository(write)\x20/\x20Treasury(external\x20flows)'}],'bridge_fields':[{'object':'gated\x20object','field':'*_guard\x20/\x20guards\x20fields\x20(buy_guard,\x20usage_guard,\x20voting_guard,\x20forward\x20guard,\x20policy\x20write\x20guards,\x20external\x20guards)','meaning':'the\x20object\x20declares\x20WHICH\x20guard\x20governs\x20its\x20gate\x20—\x20preset\x20slots\x20(guard-bindings.ts)\x20define\x20what\x20the\x20guard\x27s\x20submissions\x20MEAN\x20for\x20that\x20object'}],'move_anchor':'guard\x20verdict\x20resolution\x20+\x20evidence\x20retrieval\x20(native\x20DSL:\x20Signer/Clock/Query\x20×\x20logic\x20tree)','scenario':{'from':'Proof\x20scenario\x20(evidence\x20+\x20verification)','to':'any\x20gated\x20business\x20scenario','merged':'Programmable\x20trust\x20(rules-as-code\x20participation)'},'capability_gained':'Unforgeable\x20participation\x20rules:\x20KYC,\x20stake,\x20membership,\x20time\x20windows,\x20oracle\x20facts\x20—\x20expressed\x20once\x20in\x20a\x20Guard\x20and\x20'+'reused\x20across\x20every\x20gate\x20that\x20binds\x20it;\x20the\x20same\x20guard\x20can\x20gate\x20buying,\x20presenting,\x20voting,\x20and\x20writing\x20consistently.','prerequisites':['Guard\x20DSL\x20type\x20compatibility\x20(e.g.\x20RewardIdentifier\x20needs\x20address-typed\x20submissions)','Passport\x20carries\x20the\x20guard\x27s\x20required\x20submissions\x20in\x20the\x20same\x20tx'],'examples':['One\x20KYC\x20guard\x20reused\x20by\x20five\x20services\x27\x20buy_gates\x20—\x20one\x20proof,\x20five\x20doors.','Stake-weighted\x20voting\x20guard:\x20the\x20same\x20guard\x20governs\x20both\x20arbitration\x20ballots\x20and\x20treasury\x20withdrawals.']},{'id':'bridge.communication','code':'b11','edge_refs':['service.um','machine.um','demand.um','arbitration.um','reward.um','repository.um','permission.um','treasury.um','contact.permission','contact.im','order.required_info','eoa.contact'],'name':'Communication\x20(um:\x20Contact\x20×\x20every\x20business\x20object)','participants':[{'object':'Contact','role':'bound\x20IM\x20channel\x20(ims\x20members)'},{'object':'business\x20objects','role':'Service\x20/\x20Order\x20context\x20/\x20Demand\x20/\x20Arbitration\x20/\x20Treasury\x20/\x20Reward\x20/\x20Repository\x20/\x20Machine'}],'bridge_fields':[{'object':'business\x20object','field':'um:\x20Option<address>','meaning':'each\x20object\x20can\x20bind\x20ONE\x20Contact\x20—\x20its\x20dedicated\x20negotiation/coordination\x20channel;\x20affiliation\x20registered\x20in\x20object_linker'},{'object':'Contact','field':'ims:\x20vector<Im{at,\x20status,\x20description}>','meaning':'channel\x20membership\x20with\x20per-member\x20status\x20—\x20the\x20roster\x20of\x20who\x20talks\x20about\x20THIS\x20object\x27s\x20business'}],'move_anchor':'channel\x20roster\x20membership\x20(ims)\x20add/remove,\x20per-object\x20channel\x20bind/unbind','scenario':{'from':'Business\x20scenario\x20(any\x20object\x20lifecycle)','to':'Encrypted\x20IM\x20scenario\x20(WTS\x20evidence,\x20negotiation)','merged':'Contextual\x20communication\x20(talk\x20WITH\x20evidence\x20about\x20the\x20exact\x20business)'},'capability_gained':'Every\x20business\x20object\x20can\x20grow\x20its\x20own\x20communication\x20channel:\x20pre-order\x20negotiation,\x20in-flight\x20coordination,\x20and\x20'+'dispute\x20evidence\x20collection\x20happen\x20IN\x20the\x20context\x20of\x20the\x20exact\x20object\x20they\x20concern\x20—\x20messages\x20become\x20evidence\x20'+'(WTS)\x20tied\x20to\x20the\x20on-chain\x20thing.','prerequisites':['um\x20binding\x20is\x20single\x20(one\x20Contact\x20per\x20object;\x20rebinding\x20replaces\x20the\x20affiliation\x20record)','IM\x20membership\x20managed\x20by\x20the\x20Contact\x20owner'],'examples':['Order-level\x20channel:\x20buyer,\x20merchant,\x20and\x20the\x20assigned\x20operator\x20coordinate\x20delivery\x20in\x20the\x20order\x27s\x20um.','Arbitration\x20evidence\x20room:\x20disputants\x20and\x20arbitrators\x20exchange\x20WTS-signed\x20evidence\x20in\x20the\x20arbitration\x27s\x20um.']},{'id':'bridge.governance','code':'b09','edge_refs':['service.permission','arbitration.permission','demand.permission','machine.permission','reward.permission','repository.permission','contact.permission','treasury.permission','permission.admin','permission.owner','permission.entity','eoa.permission','permission.core_binding','permission.tx_binding'],'name':'Governance\x20(permission\x20×\x20every\x20object)','participants':[{'object':'Permission','role':'owner/admins/entities\x20+\x20per-index\x20operation\x20rights'},{'object':'business\x20objects','role':'every\x20w::\x20object\x20(permission\x20field)'},{'object':'EntityPermission','role':'reverse\x20index:\x20entity\x20→\x20memberships'}],'bridge_fields':[{'object':'business\x20object','field':'permission:\x20address','meaning':'ALL\x20admin\x20operations\x20on\x20the\x20object\x20route\x20through\x20this\x20one\x20table\x20—\x20a\x20single\x20governance\x20backbone\x20across\x20the\x20whole\x20topology'},{'object':'Permission','field':'tables:\x20entity\x20→\x20perm\x20indices\x20(0..USER_DEFINED)','meaning':'fine-grained\x20operation\x20rights\x20per\x20entity;\x20object\x20functions\x20assert\x20their\x20own\x20index\x20(e.g.\x20reward\x20new=150)'}],'move_anchor':'per-index\x20operation-rights\x20assertion\x20on\x20every\x20mutating\x20entry,\x20entity_permission\x20(0xaa8\x20reverse\x20index)','scenario':{'from':'Operation\x20scenario\x20(any\x20mutating\x20call)','to':'Permission\x20scenario\x20(roles\x20+\x20indices)','merged':'Delegated\x20administration\x20(staff\x20act\x20within\x20bounded\x20rights)'},'capability_gained':'Organizational\x20scale:\x20one\x20merchant\x20operates\x20hundreds\x20of\x20objects\x20through\x20shared\x20Permissions;\x20staff\x20gain\x20scoped\x20rights\x20'+'(per-operation\x20indices)\x20—\x20the\x20topology\x20stays\x20governable\x20as\x20it\x20grows,\x20and\x20EntityPermission\x20makes\x20any\x20address\x27s\x20'+'role\x20discoverable\x20(the\x20account-side\x20entry\x20into\x20the\x20topology).','prerequisites':['Caller\x27s\x20operation\x20rights\x20are\x20asserted\x20at\x20the\x20operation\x27s\x20permission\x20index','Zero-index\x20entities\x20have\x20membership\x20but\x20no\x20operation\x20rights\x20(fact\x20preserved\x20by\x20design)'],'examples':['Customer\x20service\x20staff\x20hold\x20index\x20225\x20(progress\x20owner_receive)\x20without\x20any\x20treasury\x20rights.','A\x20merchant\x27s\x20entire\x20object\x20fleet\x20re-governed\x20by\x20swapping\x20one\x20Permission\x20(permission\x20rebinding\x20+\x20affiliation\x20change).']},{'id':'bridge.incentive','code':'b07','edge_refs':['service.reward','demand.reward','repository.reward','reward.guard','reward.claim'],'name':'Incentive\x20(Reward\x20×\x20Guard\x20×\x20employing\x20object)','participants':[{'object':'Reward','role':'guarded\x20fund\x20pool'},{'object':'Guard','role':'claim\x20qualification\x20+\x20dynamic\x20recipient/amount'},{'object':'Service','role':'rewards:\x20vector<address>\x20—\x20marketing\x20attach\x20point'},{'object':'employee\x20entities','role':'claimants\x20(KPI-qualified)'}],'bridge_fields':[{'object':'Service','field':'rewards:\x20vector<address>\x20(max\x2020)','meaning':'marketing/incentive\x20pools\x20attached\x20to\x20the\x20offering'},{'object':'Reward','field':'RewardGuard\x20{\x20guard,\x20recipient,\x20amount,\x20expiration_time,\x20store_from_id\x20}','meaning':'claim\x20rules\x20—\x20preset\x20slots\x20read\x20payee/amount/deadline\x20from\x20guard\x20submissions\x20(see\x20guard-bindings.ts)'}],'move_anchor':'rewards\x20field,\x20guard\x20binding\x20+\x20claim','scenario':{'from':'Employment/operation\x20scenario\x20(work\x20done)','to':'Reward\x20scenario\x20(guarded\x20payout)','merged':'Incentive\x20alignment\x20(KPI\x20→\x20acceptance\x20→\x20reward\x20claim)'},'capability_gained':'Performance-contingent\x20compensation:\x20staff\x20claim\x20rewards\x20by\x20proving\x20work\x20(guard\x20evidence:\x20reaction\x20time,\x20node\x20'+'completion,\x20acceptance\x20records)\x20—\x20the\x20employment\x20tension\x20(fixed\x20pay\x20vs\x20outcome)\x20is\x20bridged\x20by\x20making\x20the\x20payout\x20'+'itself\x20evidence-gated.','value_flow':'Deposited\x20coins\x20→\x20balance\x20→\x20guard-gated\x20claim\x20(the\x20ONLY\x20balance\x20exit\x20—\x20R-R-7-01\x20requires\x20an\x20owner\x20escape\x20guard).','prerequisites':['Claim\x20within\x20expiration\x20window\x20(clock\x20≤\x20expiration_time)','Claim\x20amount\x20≤\x20balance;\x20recipient\x20resolved\x20by\x20the\x20guard\x20submission\x20(Entity\x20/\x20Signer\x20/\x20GuardIdentifier)'],'examples':['Staff\x20KPI\x20reward:\x20guard\x20verifies\x20node\x20reaction-time\x20submissions;\x20employee\x20claims\x20a\x20GuardU64Identifier\x20amount.','Referral\x20marketing:\x20purchasers\x20submit\x20receipt\x20proofs;\x20campaign\x20guard\x20pays\x20cashback\x20to\x20the\x20submitted\x20address.']},{'id':'bridge.evidence','code':'b12','edge_refs':['wf.forward_guard','passport.signer','passport.guard','passport.ticket_relies','passport.impack','order.required_info','proof.signer','proof.about'],'name':'Evidence\x20(Proof\x20/\x20retained\x20submissions\x20×\x20Progress\x20&\x20Arb)','participants':[{'object':'Proof','role':'frozen\x20signed\x20fact\x20(WTS,\x20oracle\x20attestation)'},{'object':'Machine\x20Forward','role':'retained_submission\x20requirement'},{'object':'Progress','role':'session\x20history\x20storage'},{'object':'Arb','role':'proposition/vote\x20context'}],'bridge_fields':[{'object':'Machine\x20Forward','field':'retained_submission:\x20vector<u8>','meaning':'the\x20edge\x20cannot\x20be\x20crossed\x20without\x20submitting\x20these\x20slots\x20—\x20and\x20the\x20values\x20persist\x20into\x20the\x20session\x20history'},{'object':'Order','field':'required_info:\x20Option<address>\x20(im\x20or\x20proof)','meaning':'the\x20buyer\x20attaches\x20context\x20(IM\x20thread\x20or\x20proof\x20object)\x20the\x20merchant\x20needs\x20to\x20fulfill'}],'move_anchor':'retained\x20submissions\x20persist\x20into\x20the\x20session\x20history;\x20proof\x20object\x20(frozen,\x20signer-anchored)','scenario':{'from':'Execution\x20scenario\x20(workflow\x20edges)','to':'Attestation\x20scenario\x20(signed\x20facts)','merged':'Accountable\x20execution\x20(every\x20step\x20provable\x20after\x20the\x20fact)'},'capability_gained':'An\x20audit-grade\x20trail\x20for\x20INTANGIBLE\x20work:\x20what\x20the\x20operator\x20submitted\x20to\x20cross\x20each\x20edge\x20is\x20on-chain\x20forever\x20—\x20'+'later\x20disputes,\x20KPI\x20assessments,\x20and\x20reputation\x20scores\x20read\x20the\x20same\x20trail,\x20so\x20execution\x20quality\x20becomes\x20evidence.','prerequisites':['retained_submission\x20ids\x20must\x20be\x20retained\x20submission\x20slots\x20of\x20the\x20forward\x27s\x20guard\x20(E_SUBMISSION_SLOT_MISSING\x20/\x20E_SUBMISSION_SLOT_NOT_RETAINED)','Proof\x20objects\x20are\x20immutable\x20once\x20frozen\x20(create\x20→\x20freeze_object)'],'examples':['QC\x20step\x20requires\x20a\x20signed\x20inspection\x20proof;\x20the\x20proof\x20lands\x20in\x20the\x20session\x20history\x20with\x20the\x20advancing\x20tx.','Buyer\x20attaches\x20a\x20WTS\x20message\x20thread\x20as\x20order\x20required_info;\x20the\x20merchant\x20fulfills\x20against\x20it.']},{'id':'bridge.fund_object','code':'b08','edge_refs':['payment.recipient','payment.from_object','payment.for_object','allocation.payment','allocation.for_object','allocation.for_guard','payment.signer','treasury.record'],'name':'Fund-as-Object\x20(CoinWrapper\x20×\x20owner_receive\x20×\x20any\x20object)','participants':[{'object':'Payment\x20/\x20CoinWrapper<K>','role':'value\x20wrapped\x20as\x20a\x20transferable\x20object\x20(any\x20token\x20K)'},{'object':'receiving\x20objects','role':'Reward\x20/\x20Treasury\x20/\x20Service\x20/\x20Arbitration\x20/\x20Repository\x20/\x20Contact\x20...'},{'object':'Permission\x20owner','role':'the\x20extraction\x20target'}],'bridge_fields':[{'object':'receiving\x20object','field':'receive\x20(join\x20into\x20balance)\x20vs\x20owner_receive\x20(extract\x20received\x20objects\x20to\x20Permission\x20owner)','meaning':'two\x20DIFFERENT\x20doors:\x20receive\x20turns\x20an\x20arrived\x20payment\x20into\x20claimable\x20balance;\x20owner_receive\x20forwards\x20arrived\x20objects\x20(any\x20K,\x20incl.\x20NFT-like)\x20to\x20the\x20owner\x20without\x20touching\x20balance'},{'object':'CoinWrapper','field':'payment:\x20address','meaning':'the\x20wrapper\x20remembers\x20WHICH\x20payment\x20object\x20it\x20came\x20from\x20—\x20provenance\x20survives\x20the\x20transfer'}],'move_anchor':'receive\x20vs\x20owner-side\x20object\x20extraction,\x20unwrap\x20family','scenario':{'from':'Transfer\x20scenario\x20(objects\x20move\x20between\x20wallets/objects)','to':'Accounting\x20scenario\x20(balance\x20vs\x20custody)','merged':'Universal\x20value\x20custody\x20(any\x20asset\x20class,\x20any\x20token,\x20one\x20idiom)'},'capability_gained':'Objects\x20can\x20safely\x20RECEIVE\x20value\x20they\x20were\x20not\x20typed\x20for:\x20a\x20Reward<WOW>\x20can\x20custody\x20a\x20USDT\x20CoinWrapper\x20or\x20an\x20NFT\x20'+'via\x20owner_receive\x20—\x20cross-asset\x20custody\x20with\x20a\x20single,\x20uniform\x20extraction\x20rule\x20(to\x20the\x20Permission\x20owner).','value_flow':'CoinWrapper<K>\x20→\x20object\x20custody\x20→\x20owner_receive\x20→\x20Permission\x20owner\x20(NEVER\x20into\x20the\x20object\x27s\x20own\x20balance).','prerequisites':['owner_receive\x20requires\x20the\x20object\x27s\x20Permission\x20+\x20Receiving<K>\x20argument\x20(version+digest)','unwrapping\x20asserts\x20the\x20wrapper\x27s\x20payment\x20provenance\x20(EPAYMENT_NOT_MATCH)'],'examples':['A\x20customer\x20sends\x20an\x20NFT\x20coupon\x20to\x20a\x20Service;\x20the\x20merchant\x20extracts\x20it\x20via\x20service.owner_receive.','A\x20mixed-token\x20gift\x20lands\x20on\x20a\x20Reward;\x20owner_receive\x20forwards\x20it\x20without\x20polluting\x20the\x20WOW\x20claimable\x20balance.']}];for(const bridge of SCENARIO_BRIDGE_REGISTRY){for(const ref of bridge['edge_refs']){if(!EDGE_SCHEMA_BY_ID['has'](ref))throw new Error('scenario-topology:\x20bridge\x20'+bridge['id']+'\x20edge_ref\x20\x22'+ref+'\x22\x20is\x20not\x20a\x20registered\x20EdgeSchema\x20id');}}export const SCENARIO_CHAINS=[{'id':'chain.standard_ecommerce','name':'Standard\x20E-commerce','steps':[{'bridge':'bridge.qualification','note':'buy_guard\x20gates\x20who\x20may\x20purchase'},{'bridge':'bridge.purchase','note':'quote\x20+\x20discount\x20→\x20order\x20(machine\x20pre-bound)'},{'bridge':'bridge.communication','note':'um\x20channel\x20for\x20delivery\x20coordination'},{'bridge':'bridge.fulfillment','note':'progress\x20runs\x20the\x20machine;\x20evidence\x20retained\x20per\x20edge'},{'bridge':'bridge.escrow_split','note':'allocation\x20splits\x20escrow\x20to\x20suppliers\x20+\x20surplus'},{'bridge':'bridge.incentive','note':'optional:\x20staff\x20KPI\x20rewards\x20for\x20fast\x20fulfillment'}],'application_capability':'A\x20complete\x20store:\x20gated\x20checkout,\x20coordinated\x20delivery,\x20evidence-backed\x20fulfillment,\x20and\x20trustless\x20split\x20payout.','objects_touched':['Guard','Service','Discount','Order','Contact','Machine','Progress','Allocation','Payment','Reward','Permission','Passport']},{'id':'chain.procurement_tender','name':'Procurement\x20Tender','steps':[{'bridge':'bridge.supply_match','note':'demand\x20published;\x20qualified\x20services\x20present'},{'bridge':'bridge.qualification','note':'presentation\x20guards\x20filter\x20suppliers'},{'bridge':'bridge.purchase','note':'winning\x20offer\x20becomes\x20the\x20order'},{'bridge':'bridge.fulfillment','note':'multi-supplier\x20machine\x20handoffs'},{'bridge':'bridge.escrow_split','note':'allocation\x20pays\x20suppliers\x20+\x20surplus\x20to\x20demander?'},{'bridge':'bridge.dispute','note':'if\x20delivery\x20fails:\x20independent\x20arbitration\x20+\x20compensation'}],'application_capability':'A\x20full\x20tender\x20lifecycle:\x20need\x20→\x20competing\x20offers\x20→\x20award\x20→\x20delivery\x20→\x20settlement\x20with\x20credible\x20remedy.','objects_touched':['Demand','Guard','Service','Order','Machine','Progress','Allocation','Arbitration','Arb','Payment','Permission']},{'id':'chain.data_subscription','name':'Data\x20Subscription\x20Service','steps':[{'bridge':'bridge.data_service','note':'service\x20commits\x20to\x20repository\x20maintenance'},{'bridge':'bridge.qualification','note':'subscription\x20gate\x20(buy_guard)'},{'bridge':'bridge.purchase','note':'recurring\x20orders\x20or\x20one-off'},{'bridge':'bridge.escrow_split','note':'subscription\x20revenue\x20to\x20data\x20suppliers'},{'bridge':'bridge.communication','note':'um\x20for\x20data\x20requests\x20/\x20clarifications'},{'bridge':'bridge.dispute','note':'stale-data\x20compensation\x20via\x20arbitration'}],'application_capability':'Data\x20as\x20a\x20product:\x20paid,\x20guard-qualified\x20writes,\x20auditable\x20quality,\x20and\x20compensation\x20for\x20staleness.','objects_touched':['Repository','Guard','Service','Order','Allocation','Payment','Contact','Arbitration','Arb']},{'id':'chain.collaborative_operations','name':'Collaborative\x20Operations\x20(staff\x20+\x20outsourced\x20process)','steps':[{'bridge':'bridge.governance','note':'permission\x20entities\x20=\x20staff\x20with\x20scoped\x20indices'},{'bridge':'bridge.fulfillment','note':'machine\x20edges\x20operated\x20by\x20named\x20operators\x20/\x20permission\x20entities'},{'bridge':'bridge.evidence','note':'each\x20advance\x20retains\x20submissions'},{'bridge':'bridge.incentive','note':'KPI\x20guards\x20→\x20reward\x20claims'},{'bridge':'bridge.communication','note':'per-object\x20um\x20channels'}],'application_capability':'An\x20operating\x20company\x20on-chain:\x20internal\x20staff,\x20external\x20operators,\x20audited\x20execution,\x20aligned\x20pay.','objects_touched':['Permission','Machine','Progress','Guard','Reward','Contact','Proof']}];export const SCENARIO_TOPOLOGY_VERSION='1.1.0';export function getBridgeById(a){return SCENARIO_BRIDGE_REGISTRY['find'](c=>c['id']===a);}export function getBridgeByCode(a){return SCENARIO_BRIDGE_REGISTRY['find'](c=>c['code']===a);}export function getBridgesByObject(a){return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['participants']['some'](d=>d['object']===a)||c['bridge_fields']['some'](d=>d['object']===a));}export function getBridgesForEdge(a){return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['edge_refs']['includes'](a));}export function detectBridgesForEdges(a){const b=new Set(a);return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['edge_refs']['some'](d=>b['has'](d)));}export function getChainById(a){return SCENARIO_CHAINS['find'](b=>b['id']===a);}export function summarizeBridge(a){const c=a['participants']['map'](d=>d['object'])['join']('\x20×\x20');return'['+a['name']+']\x20'+c+'\x20→\x20'+a['scenario']['merged']+':\x20'+a['capability_gained']['split']('.\x20')[0x0]+'.';}export function detectBridgesForObjects(a){const b=new Set(a['map'](c=>c['toLowerCase']()));return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['bridge_fields']['some'](d=>b['has'](d['object']['toLowerCase']()))&&c['participants']['filter'](d=>b['has'](d['object']['toLowerCase']()))['length']>=0x2);}
|
|
1
|
+
import{EDGE_SCHEMA_BY_ID,EDGE_ID_REPOSITORY_POLICY_GUARD}from'../graph/onchain/index.js';export const SCENARIO_BRIDGE_REGISTRY=[{'id':'bridge.supply_match','code':'b03','edge_refs':['demand.guard','demand.presenter','demand.presenter_service'],'name':'Supply-Demand\x20Match','participants':[{'object':'Demand','role':'need\x20expression\x20(what\x20is\x20wanted)'},{'object':'Service','role':'capability\x20offering\x20(what\x20can\x20be\x20delivered)'},{'object':'Guard','role':'presentation\x20qualification\x20(who\x20may\x20present\x20what)'}],'bridge_fields':[{'object':'Demand','field':'guards:\x20vector<ServiceGuard>\x20{\x20guard,\x20service_identifier\x20}','meaning':'presenters\x20must\x20pass\x20the\x20guard;\x20service_identifier\x20resolves\x20WHICH\x20service\x20they\x20present\x20for'},{'object':'Demand','field':'presentation\x20call\x20carries\x20the\x20Service\x20object\x20as\x20its\x20argument','meaning':'a\x20Service\x20object\x20is\x20supplied\x20AT\x20the\x20presentation\x20—\x20the\x20demand\x20does\x20not\x20store\x20services;\x20suppliers\x20bring\x20them'}],'move_anchor':'presentation\x20resolves\x20the\x20guard\x27s\x20verdict\x20from\x20the\x20submitted\x20service-identifier\x20evidence','scenario':{'from':'Demand\x20scenario\x20(need\x20expression)','to':'Service\x20scenario\x20(product\x20listing)','merged':'Matchmaking\x20(discovery\x20+\x20qualification\x20+\x20choice)'},'capability_gained':'Choice\x20among\x20qualified\x20offers:\x20the\x20demander\x20compares\x20presented\x20Services\x20(acceptance_score\x20accumulates\x20per\x20presenter)\x20'+'—\x20a\x20capability\x20neither\x20a\x20bare\x20Demand\x20(no\x20offers)\x20nor\x20a\x20bare\x20Service\x20(no\x20buyer\x20context)\x20possesses.','value_flow':'No\x20funds\x20move\x20yet\x20—\x20this\x20bridge\x20prices\x20ATTENTION:\x20acceptance_score\x20on\x20the\x20presenter\x27s\x20entity\x20is\x20the\x20reputation\x20currency.','prerequisites':['Demand\x20not\x20yet\x20paused','Presenter\x20passes\x20the\x20Demand\x27s\x20guard\x20(E_NEED_PASSPORT\x20when\x20guards\x20exist\x20and\x20no\x20passport\x20is\x20given)'],'examples':['Procurement\x20tender:\x20a\x20company\x20posts\x20a\x20Demand;\x20certified\x20suppliers\x20present\x20their\x20Services;\x20the\x20best\x20acceptance_score\x20wins\x20the\x20order.','Local\x20services\x20marketplace:\x20\x27repair\x20my\x20roof\x27\x20demand\x20meets\x20licensed\x20roofer\x20services.']},{'id':'bridge.purchase','code':'b01','edge_refs':['service.buy_guard','order.service','order.machine','order.discount','discount.service','order.builder','eoa.order','service.order'],'name':'Purchase\x20(Quote\x20→\x20Order)','participants':[{'object':'Service','role':'published\x20offering\x20(sales,\x20wip,\x20price)'},{'object':'Quote','role':'buyer\x27s\x20item\x20selection\x20+\x20computed\x20total'},{'object':'Discount','role':'transferable\x20price\x20reduction\x20bound\x20to\x20the\x20service'},{'object':'Guard','role':'buy\x20qualification\x20(buy_guard)'},{'object':'Order','role':'the\x20created\x20agreement'}],'bridge_fields':[{'object':'Service','field':'buy_guard:\x20Option<address>','meaning':'who\x20may\x20buy\x20(qualification);\x20buy()\x20refuses\x20when\x20a\x20guard\x20exists\x20and\x20no\x20passport\x20proves\x20it'},{'object':'Discount','field':'service:\x20address\x20(+\x20time\x20window,\x20benchmark,\x20transferable)','meaning':'the\x20discount\x20object\x20itself\x20carries\x20WHICH\x20service\x20it\x20applies\x20to\x20—\x20it\x20travels\x20wallet-to-wallet\x20but\x20stays\x20bound\x20to\x20the\x20service'},{'object':'Order','field':'machine:\x20Option<address>\x20(copied\x20from\x20the\x20Service\x20at\x20order\x20creation)','meaning':'the\x20fulfillment\x20workflow\x20is\x20PRE-BINDED\x20at\x20purchase\x20time\x20—\x20the\x20order\x20reserves\x20its\x20own\x20execution\x20path'}],'move_anchor':'the\x20purchase\x20entry\x20(open\x20or\x20passport-gated)\x20creates\x20the\x20Order','scenario':{'from':'Service\x20scenario\x20(offering)','to':'Order\x20scenario\x20(agreement\x20+\x20escrow\x20intent)','merged':'Transaction\x20(commitment\x20with\x20reserved\x20fulfillment)'},'capability_gained':'A\x20binding\x20agreement\x20that\x20reserves\x20its\x20own\x20execution\x20path:\x20the\x20Order\x20snapshot\x20copies\x20the\x20Service\x27s\x20machine\x20reference\x20'+'at\x20creation,\x20so\x20later\x20Service\x20edits\x20cannot\x20retroactively\x20change\x20how\x20THIS\x20order\x20is\x20fulfilled.','value_flow':'Amount\x20is\x20recorded\x20(order.amount)\x20but\x20coins\x20are\x20not\x20yet\x20moved\x20—\x20payment\x20happens\x20at\x20the\x20allocation\x20bridge.','prerequisites':['Service\x20published\x20(bPublished)\x20and\x20not\x20paused\x20(E_NOT_PUBLISHED\x20/\x20E_PAUSED)','Quote\x20signed\x20by\x20the\x20tx\x20digest\x20(E_INVALID_QUOTE)\x20—\x20prevents\x20quote\x20replay\x20across\x20transactions','buy_guard\x20passed\x20when\x20present\x20(E_BUY_GUARD_PASSPORT_REQUIRED)'],'examples':['Standard\x20e-commerce\x20checkout:\x20quote\x20items,\x20apply\x20a\x20transferred\x20Discount,\x20create\x20the\x20Order.','Gated\x20purchase:\x20only\x20KYC-passed\x20wallets\x20(buy_guard)\x20can\x20order\x20a\x20licensed\x20service.']},{'id':'bridge.escrow_split','code':'b05','edge_refs':['service.order_allocator_guard','order.allocation','allocation.guard','allocation.payment','allocation.for_object','allocation.for_guard','wf.forward_guard','payment.recipient','payment.from_object','payment.for_object','payment.for_guard'],'name':'Escrow\x20&\x20Split\x20(Order\x20→\x20Allocation\x20→\x20Payment)','participants':[{'object':'Service','role':'payout\x20rules\x20owner\x20(order_allocators)'},{'object':'Order','role':'escrowed\x20amount\x20+\x20single\x20allocation\x20slot'},{'object':'Allocation','role':'guard-gated\x20distributor'},{'object':'Payment','role':'the\x20actual\x20value\x20transfer\x20with\x20provenance'}],'bridge_fields':[{'object':'Service','field':'order_allocators:\x20Option<Allocators>','meaning':'who\x20may\x20run\x20the\x20split\x20and\x20under\x20which\x20guards\x20—\x20the\x20merchant\x27s\x20payout\x20policy,\x20pre-registered\x20on\x20the\x20Service'},{'object':'Order','field':'allocation:\x20Option<address>\x20(set\x20once\x20—\x20single-shot\x20split)','meaning':'the\x20order\x20can\x20be\x20split\x20exactly\x20once\x20—\x20the\x20escrow-to-payout\x20transition\x20is\x20one-way\x20and\x20auditable'},{'object':'Payment','field':'info.for_object\x20/\x20from_object','meaning':'every\x20payout\x20carries\x20the\x20source\x20object\x20address\x20—\x20money\x20always\x20answers\x20\x27which\x20business\x20object\x20paid\x20me\x27'}],'move_anchor':'order-side\x20allocation\x20entry\x20(E_ORDER_SERVICE_NOT_MATCH)\x20→\x20coin\x20escrow\x20split\x20for\x20the\x20order\x20(payment_info(order),\x20alloc)','scenario':{'from':'Order\x20scenario\x20(agreement\x20+\x20funds)','to':'Payment\x20scenario\x20(value\x20transfer)','merged':'Settlement\x20(escrowed\x20funds\x20split\x20by\x20declared\x20policy)'},'capability_gained':'Trustless\x20settlement:\x20the\x20buyer\x20pays\x20into\x20the\x20order\x20amount,\x20and\x20the\x20split\x20executes\x20only\x20under\x20the\x20merchant\x27s\x20'+'pre-registered\x20allocator\x20guards\x20—\x20neither\x20side\x20can\x20redirect\x20the\x20other\x27s\x20share;\x20the\x20Payment\x27s\x20from_object\x20makes\x20'+'every\x20revenue\x20line\x20item\x20auditable\x20back\x20to\x20its\x20order.','value_flow':'Buyer\x20coin\x20→\x20Allocation\x20balance\x20→\x20(guard-gated\x20alloc)\x20→\x20Payment\x20recipients\x20(Entity\x20/\x20Signer\x20/\x20GuardIdentifier).','prerequisites':['Coin\x20≥\x20order.amount\x20(E_COIN_NOT_ENOUGH),\x20excess\x20refunded\x20to\x20the\x20sender\x20in\x20the\x20same\x20tx','The\x20calling\x20Service\x20IS\x20the\x20order\x27s\x20service\x20(E_ORDER_SERVICE_NOT_MATCH)','Rate\x20shares\x20must\x20complete\x2010000\x20basis\x20points\x20unless\x20a\x20Surplus\x20entry\x20exists'],'examples':['Multi-vendor\x20order:\x20one\x20payment\x20split\x20across\x20goods\x20supplier,\x20logistics\x20operator,\x20and\x20platform\x20surplus.','Payroll-style\x20settlement:\x20order\x20revenue\x20split\x20to\x20staff\x20entities\x20by\x20Rate\x20with\x20the\x20owner\x20taking\x20Surplus.']},{'id':'bridge.fulfillment','code':'b04','edge_refs':['service.machine','order.machine','order.progress','progress.machine','progress.task','progress.named_operator','progress.context_repository','machine.node','wf.transition','wf.forward_guard','permission.entity'],'name':'Fulfillment\x20(Order\x20×\x20Machine\x20→\x20Progress)','participants':[{'object':'Service','role':'workflow\x20owner\x20(machine\x20field)'},{'object':'Order','role':'the\x20work\x20item\x20to\x20execute'},{'object':'Machine','role':'workflow\x20template\x20(nodes\x20+\x20forwards)'},{'object':'Progress','role':'per-order\x20workflow\x20instance'},{'object':'Permission','role':'who\x20may\x20advance\x20which\x20edge'}],'bridge_fields':[{'object':'Service','field':'machine:\x20Option<address>','meaning':'the\x20workflow\x20template\x20the\x20service\x20promises\x20to\x20execute\x20—\x20locked\x20at\x20publish\x20(bPublished)'},{'object':'Progress','field':'order\x20namespace\x20+\x20the\x20buyer\x20registered\x20as\x20the\x20order\x27s\x20owner','meaning':'the\x20buyer\x20becomes\x20the\x20Progress\x27s\x20order-owner\x20namespace:\x20operators\x20advance\x20THEIR\x20copy,\x20the\x20buyer\x27s\x20own\x20Progress\x20view\x20aggregates'},{'object':'Machine','field':'Forward\x20{\x20namedOperator\x20|\x20permissionIndex\x20|\x20guard\x20}','meaning':'each\x20edge\x20declares\x20its\x20operator\x20—\x20internal\x20staff,\x20permission\x20entity,\x20or\x20guard-proven\x20external\x20party'}],'move_anchor':'per-order\x20workflow\x20instantiation\x20(E_MACHINE_NOT_MATCH\x20prechecked)\x20attaches\x20the\x20Progress\x20instance\x20to\x20the\x20order','scenario':{'from':'Order\x20scenario\x20(agreement)','to':'Machine\x20scenario\x20(process\x20template)','merged':'Execution\x20(per-order\x20workflow\x20with\x20multi-party\x20advancement)'},'capability_gained':'Coordinated\x20execution:\x20the\x20SAME\x20template\x20runs\x20independently\x20per\x20order,\x20with\x20each\x20edge\x20potentially\x20operated\x20by\x20a\x20'+'different\x20party\x20(employee\x20/\x20supplier\x20/\x20buyer)\x20under\x20permission\x20or\x20guard\x20checks\x20—\x20process\x20outsourcing\x20with\x20on-chain\x20accountability.','prerequisites':['The\x20supplied\x20machine\x20IS\x20the\x20service\x27s\x20machine\x20(E_MACHINE_NOT_MATCH)','Each\x20forward\x27s\x20weight\x20counts\x20at\x20most\x20once\x20per\x20session\x20(E_NOT_THE_HOLDER\x20on\x20re-execution)','Edge\x20guard\x20(when\x20present)\x20requires\x20submitted\x20evidence\x20—\x20retained\x20submissions\x20persist\x20into\x20the\x20session\x20history'],'examples':['Custom\x20manufacturing:\x20paid\x20→\x20machining\x20→\x20QC\x20→\x20shipped,\x20where\x20QC\x20is\x20advanced\x20by\x20an\x20independent\x20inspector\x20(namedOperator).','Multi-supplier\x20sub-orders:\x20the\x20machine\x27s\x20nodes\x20hand\x20off\x20between\x20the\x20merchant\x20and\x20subcontracted\x20suppliers.']},{'id':'bridge.dispute','code':'b06','edge_refs':['service.permission','service.arbitration','arbitration.permission','arbitration.voting_guard','arbitration.usage_guard','order.dispute','order.claimed_by','arb.order','arb.arbitration_service','arb.voter'],'name':'Dispute\x20&\x20Compensation\x20(Service\x20×\x20Arbitration\x20×\x20Order\x20→\x20Arb)','participants':[{'object':'Service','role':'pre-registered\x20arbitrations\x20+\x20compensation\x20fund'},{'object':'Arbitration','role':'voting\x20rules\x20+\x20usage\x20gate'},{'object':'Order','role':'the\x20disputed\x20agreement\x20(single\x20claim)'},{'object':'Arb','role':'the\x20case\x20(7-state\x20lifecycle)'}],'bridge_fields':[{'object':'Service','field':'arbitrations:\x20vector<address>\x20+\x20compensation_fund:\x20Balance<T>','meaning':'the\x20merchant\x20pre-commits\x20BOTH\x20who\x20judges\x20(independent\x20permission)\x20AND\x20the\x20money\x20that\x20backs\x20the\x20verdict'},{'object':'Service','field':'arbitration\x20registration\x20fairness\x20check','meaning':'E_ARBITRATION_PERMISSION_CONFLICT:\x20an\x20Arbitration\x20sharing\x20the\x20Service\x27s\x20own\x20Permission\x20is\x20REJECTED\x20—\x20fairness\x20is\x20enforced\x20as\x20a\x20RELATIONAL\x20constraint,\x20not\x20a\x20promise'},{'object':'Order','field':'dispute:\x20vector<address>\x20+\x20claimed_by:\x20Option<address>','meaning':'disputes\x20append\x20to\x20the\x20order;\x20compensation\x20claims\x20it\x20exactly\x20once\x20(E_ORDER_ALREADY_CLAIMED)\x20—\x20the\x20payout\x20is\x20single-shot\x20by\x20construction'}],'move_anchor':'dispute\x20filing\x20(open\x20or\x20passport-gated)\x20+\x20compensation\x20claim,\x207-state\x20lifecycle','scenario':{'from':'Fulfillment\x20scenario\x20(execution\x20with\x20possible\x20disagreement)','to':'Arbitration\x20scenario\x20(independent\x20judgment)','merged':'Remedy\x20(wrong\x20execution\x20→\x20compensated\x20loss)'},'capability_gained':'Credible\x20remedy:\x20the\x20loser\x20of\x20a\x20bad\x20transaction\x20is\x20made\x20whole\x20from\x20a\x20fund\x20the\x20merchant\x20could\x20not\x20pre-empty,\x20'+'judged\x20by\x20parties\x20the\x20merchant\x20cannot\x20appoint\x20unilaterally\x20—\x20trustlessness\x20expressed\x20as\x20a\x20field-level\x20topology\x20constraint.','value_flow':'compensation_fund\x20(Service)\x20→\x20indemnity\x20(Arb)\x20→\x20compensation\x20claim\x20to\x20the\x20winning\x20party\x20(single\x20claim\x20per\x20order).','prerequisites':['Disputant\x20passes\x20the\x20Arbitration\x27s\x20usage_guard\x20when\x20set\x20(E_NEED_PASSPORT)','Voters\x20pass\x20voting\x20guards;\x20vote\x20weight\x20from\x20FixedValue\x20or\x20GuardIdentifier\x20submission','Voting\x20deadline\x20elapsed\x20before\x20finish;\x20objection\x20windows\x20respected\x20(state\x20machine)'],'examples':['Delivery\x20dispute:\x20buyer\x20proves\x20non-delivery\x20via\x20WTS\x20evidence;\x20independent\x20arbitrators\x20vote;\x20compensation\x20pays\x20from\x20the\x20fund.','SLA\x20breach:\x20machine\x20timestamps\x20prove\x20late\x20delivery;\x20weighted\x20voters\x20set\x20the\x20indemnity.']},{'id':'bridge.data_service','code':'b02','edge_refs':['service.repository','repository.permission',EDGE_ID_REPOSITORY_POLICY_GUARD,'repository.quote_guard','repository.data_about','progress.context_repository'],'name':'Data\x20Service\x20(Service\x20×\x20Repository)','participants':[{'object':'Service','role':'the\x20offering\x20that\x20includes\x20data\x20deliverables'},{'object':'Repository','role':'on-chain\x20database\x20(policies,\x20rows)'},{'object':'Guard','role':'write/quote\x20qualification\x20per\x20policy'}],'bridge_fields':[{'object':'Service','field':'repositories:\x20vector<address>\x20(max\x20100)','meaning':'databases\x20the\x20service\x20commits\x20to\x20maintain\x20—\x20the\x20deliverable\x20IS\x20the\x20data'},{'object':'Repository','field':'PolicyGuard\x20{\x20id_from_submission,\x20data_from_submission\x20}','meaning':'writes\x20are\x20guard-qualified:\x20WHO\x20(row\x20key)\x20may\x20write\x20WHAT\x20(the\x20submitted\x20data\x20itself)'}],'move_anchor':'repositories\x20field,\x20policy-guarded\x20writes','scenario':{'from':'Service\x20scenario\x20(offering)','to':'Repository\x20scenario\x20(on-chain\x20database)','merged':'Data\x20products\x20(paid,\x20qualified,\x20auditable\x20data\x20maintenance)'},'capability_gained':'Verifiable\x20data\x20work:\x20a\x20subscription\x20where\x20the\x20provider\x27s\x20every\x20write\x20is\x20qualified\x20by\x20guards\x20and\x20attributable\x20to\x20'+'the\x20paid\x20service\x20—\x20data\x20quality\x20becomes\x20an\x20enforceable\x20contract\x20term,\x20not\x20a\x20promise.','prerequisites':['Writer\x20passes\x20the\x20policy\x27s\x20write\x20guards','Row\x20key\x20resolves\x20via\x20id_from_submission\x20(or\x20PolicyRule.id_from\x20static\x20override)'],'examples':['Market-data\x20feed\x20service:\x20subscribers\x20pay;\x20the\x20provider\x20writes\x20rows\x20under\x20a\x20write\x20guard\x20proving\x20oracle\x20provenance.','Review\x20platform:\x20reviewers\x20pass\x20reputation\x20guards;\x20their\x20submissions\x20become\x20the\x20product\x20others\x20pay\x20to\x20read\x20(quote_guard).']},{'id':'bridge.qualification','code':'b10','edge_refs':['service.buy_guard','demand.guard','arbitration.voting_guard','arbitration.usage_guard','wf.forward_guard','repository.quote_guard',EDGE_ID_REPOSITORY_POLICY_GUARD,'treasury.deposit_guard','treasury.withdraw_guard','guard.relies','passport.guard','passport.ticket_relies'],'name':'Qualification\x20(Guard\x20×\x20every\x20gated\x20scenario)','participants':[{'object':'Guard','role':'the\x20proof\x20machine'},{'object':'Passport','role':'per-tx\x20proof\x20carrier'},{'object':'gated\x20objects','role':'Service(buy)\x20/\x20Demand(present)\x20/\x20Arbitration(vote,\x20dispute)\x20/\x20Machine(forward)\x20/\x20Repository(write)\x20/\x20Treasury(external\x20flows)'}],'bridge_fields':[{'object':'gated\x20object','field':'*_guard\x20/\x20guards\x20fields\x20(buy_guard,\x20usage_guard,\x20voting_guard,\x20forward\x20guard,\x20policy\x20write\x20guards,\x20external\x20guards)','meaning':'the\x20object\x20declares\x20WHICH\x20guard\x20governs\x20its\x20gate\x20—\x20preset\x20slots\x20define\x20what\x20the\x20guard\x27s\x20submissions\x20MEAN\x20for\x20that\x20object'}],'move_anchor':'guard\x20verdict\x20resolution\x20+\x20evidence\x20retrieval\x20(native\x20DSL:\x20Signer/Clock/Query\x20×\x20logic\x20tree)','scenario':{'from':'Proof\x20scenario\x20(evidence\x20+\x20verification)','to':'any\x20gated\x20business\x20scenario','merged':'Programmable\x20trust\x20(rules-as-code\x20participation)'},'capability_gained':'Unforgeable\x20participation\x20rules:\x20KYC,\x20stake,\x20membership,\x20time\x20windows,\x20oracle\x20facts\x20—\x20expressed\x20once\x20in\x20a\x20Guard\x20and\x20'+'reused\x20across\x20every\x20gate\x20that\x20binds\x20it;\x20the\x20same\x20guard\x20can\x20gate\x20buying,\x20presenting,\x20voting,\x20and\x20writing\x20consistently.','prerequisites':['Guard\x20DSL\x20type\x20compatibility\x20(e.g.\x20RewardIdentifier\x20needs\x20address-typed\x20submissions)','Passport\x20carries\x20the\x20guard\x27s\x20required\x20submissions\x20in\x20the\x20same\x20tx'],'examples':['One\x20KYC\x20guard\x20reused\x20by\x20five\x20services\x27\x20buy_gates\x20—\x20one\x20proof,\x20five\x20doors.','Stake-weighted\x20voting\x20guard:\x20the\x20same\x20guard\x20governs\x20both\x20arbitration\x20ballots\x20and\x20treasury\x20withdrawals.']},{'id':'bridge.communication','code':'b11','edge_refs':['service.um','machine.um','demand.um','arbitration.um','reward.um','repository.um','permission.um','treasury.um','contact.permission','contact.im','order.required_info','eoa.contact'],'name':'Communication\x20(um:\x20Contact\x20×\x20every\x20business\x20object)','participants':[{'object':'Contact','role':'bound\x20IM\x20channel\x20(ims\x20members)'},{'object':'business\x20objects','role':'Service\x20/\x20Order\x20context\x20/\x20Demand\x20/\x20Arbitration\x20/\x20Treasury\x20/\x20Reward\x20/\x20Repository\x20/\x20Machine'}],'bridge_fields':[{'object':'business\x20object','field':'um:\x20Option<address>','meaning':'each\x20object\x20can\x20bind\x20ONE\x20Contact\x20—\x20its\x20dedicated\x20negotiation/coordination\x20channel;\x20affiliation\x20registered\x20in\x20object_linker'},{'object':'Contact','field':'ims:\x20vector<Im{at,\x20status,\x20description}>','meaning':'channel\x20membership\x20with\x20per-member\x20status\x20—\x20the\x20roster\x20of\x20who\x20talks\x20about\x20THIS\x20object\x27s\x20business'}],'move_anchor':'channel\x20roster\x20membership\x20(ims)\x20add/remove,\x20per-object\x20channel\x20bind/unbind','scenario':{'from':'Business\x20scenario\x20(any\x20object\x20lifecycle)','to':'Encrypted\x20IM\x20scenario\x20(WTS\x20evidence,\x20negotiation)','merged':'Contextual\x20communication\x20(talk\x20WITH\x20evidence\x20about\x20the\x20exact\x20business)'},'capability_gained':'Every\x20business\x20object\x20can\x20grow\x20its\x20own\x20communication\x20channel:\x20pre-order\x20negotiation,\x20in-flight\x20coordination,\x20and\x20'+'dispute\x20evidence\x20collection\x20happen\x20IN\x20the\x20context\x20of\x20the\x20exact\x20object\x20they\x20concern\x20—\x20messages\x20become\x20evidence\x20'+'(WTS)\x20tied\x20to\x20the\x20on-chain\x20thing.','prerequisites':['um\x20binding\x20is\x20single\x20(one\x20Contact\x20per\x20object;\x20rebinding\x20replaces\x20the\x20affiliation\x20record)','IM\x20membership\x20managed\x20by\x20the\x20Contact\x20owner'],'examples':['Order-level\x20channel:\x20buyer,\x20merchant,\x20and\x20the\x20assigned\x20operator\x20coordinate\x20delivery\x20in\x20the\x20order\x27s\x20um.','Arbitration\x20evidence\x20room:\x20disputants\x20and\x20arbitrators\x20exchange\x20WTS-signed\x20evidence\x20in\x20the\x20arbitration\x27s\x20um.']},{'id':'bridge.governance','code':'b09','edge_refs':['service.permission','arbitration.permission','demand.permission','machine.permission','reward.permission','repository.permission','contact.permission','treasury.permission','permission.admin','permission.owner','permission.entity','eoa.permission','permission.core_binding','permission.tx_binding'],'name':'Governance\x20(permission\x20×\x20every\x20object)','participants':[{'object':'Permission','role':'owner/admins/entities\x20+\x20per-index\x20operation\x20rights'},{'object':'business\x20objects','role':'every\x20w::\x20object\x20(permission\x20field)'},{'object':'EntityPermission','role':'reverse\x20index:\x20entity\x20→\x20memberships'}],'bridge_fields':[{'object':'business\x20object','field':'permission:\x20address','meaning':'ALL\x20admin\x20operations\x20on\x20the\x20object\x20route\x20through\x20this\x20one\x20table\x20—\x20a\x20single\x20governance\x20backbone\x20across\x20the\x20whole\x20topology'},{'object':'Permission','field':'tables:\x20entity\x20→\x20perm\x20indices\x20(0..USER_DEFINED)','meaning':'fine-grained\x20operation\x20rights\x20per\x20entity;\x20object\x20functions\x20assert\x20their\x20own\x20index\x20(e.g.\x20reward\x20new=150)'}],'move_anchor':'per-index\x20operation-rights\x20assertion\x20on\x20every\x20mutating\x20entry,\x20entity_permission\x20(0xaa8\x20reverse\x20index)','scenario':{'from':'Operation\x20scenario\x20(any\x20mutating\x20call)','to':'Permission\x20scenario\x20(roles\x20+\x20indices)','merged':'Delegated\x20administration\x20(staff\x20act\x20within\x20bounded\x20rights)'},'capability_gained':'Organizational\x20scale:\x20one\x20merchant\x20operates\x20hundreds\x20of\x20objects\x20through\x20shared\x20Permissions;\x20staff\x20gain\x20scoped\x20rights\x20'+'(per-operation\x20indices)\x20—\x20the\x20topology\x20stays\x20governable\x20as\x20it\x20grows,\x20and\x20EntityPermission\x20makes\x20any\x20address\x27s\x20'+'role\x20discoverable\x20(the\x20account-side\x20entry\x20into\x20the\x20topology).','prerequisites':['Caller\x27s\x20operation\x20rights\x20are\x20asserted\x20at\x20the\x20operation\x27s\x20permission\x20index','Zero-index\x20entities\x20have\x20membership\x20but\x20no\x20operation\x20rights\x20(fact\x20preserved\x20by\x20design)'],'examples':['Customer\x20service\x20staff\x20hold\x20index\x20225\x20(progress\x20owner_receive)\x20without\x20any\x20treasury\x20rights.','A\x20merchant\x27s\x20entire\x20object\x20fleet\x20re-governed\x20by\x20swapping\x20one\x20Permission\x20(permission\x20rebinding\x20+\x20affiliation\x20change).']},{'id':'bridge.incentive','code':'b07','edge_refs':['service.reward','demand.reward','repository.reward','reward.guard','reward.claim'],'name':'Incentive\x20(Reward\x20×\x20Guard\x20×\x20employing\x20object)','participants':[{'object':'Reward','role':'guarded\x20fund\x20pool'},{'object':'Guard','role':'claim\x20qualification\x20+\x20dynamic\x20recipient/amount'},{'object':'Service','role':'rewards:\x20vector<address>\x20—\x20marketing\x20attach\x20point'},{'object':'employee\x20entities','role':'claimants\x20(KPI-qualified)'}],'bridge_fields':[{'object':'Service','field':'rewards:\x20vector<address>\x20(max\x2020)','meaning':'marketing/incentive\x20pools\x20attached\x20to\x20the\x20offering'},{'object':'Reward','field':'RewardGuard\x20{\x20guard,\x20recipient,\x20amount,\x20expiration_time,\x20store_from_id\x20}','meaning':'claim\x20rules\x20—\x20preset\x20slots\x20read\x20payee/amount/deadline\x20from\x20guard\x20submissions\x20(see\x20the\x20preset\x20guard-slot\x20bindings)'}],'move_anchor':'rewards\x20field,\x20guard\x20binding\x20+\x20claim','scenario':{'from':'Employment/operation\x20scenario\x20(work\x20done)','to':'Reward\x20scenario\x20(guarded\x20payout)','merged':'Incentive\x20alignment\x20(KPI\x20→\x20acceptance\x20→\x20reward\x20claim)'},'capability_gained':'Performance-contingent\x20compensation:\x20staff\x20claim\x20rewards\x20by\x20proving\x20work\x20(guard\x20evidence:\x20reaction\x20time,\x20node\x20'+'completion,\x20acceptance\x20records)\x20—\x20the\x20employment\x20tension\x20(fixed\x20pay\x20vs\x20outcome)\x20is\x20bridged\x20by\x20making\x20the\x20payout\x20'+'itself\x20evidence-gated.','value_flow':'Deposited\x20coins\x20→\x20balance\x20→\x20guard-gated\x20claim\x20(the\x20ONLY\x20balance\x20exit\x20—\x20R-R-7-01\x20requires\x20an\x20owner\x20escape\x20guard).','prerequisites':['Claim\x20within\x20expiration\x20window\x20(clock\x20≤\x20expiration_time)','Claim\x20amount\x20≤\x20balance;\x20recipient\x20resolved\x20by\x20the\x20guard\x20submission\x20(Entity\x20/\x20Signer\x20/\x20GuardIdentifier)'],'examples':['Staff\x20KPI\x20reward:\x20guard\x20verifies\x20node\x20reaction-time\x20submissions;\x20employee\x20claims\x20a\x20GuardU64Identifier\x20amount.','Referral\x20marketing:\x20purchasers\x20submit\x20receipt\x20proofs;\x20campaign\x20guard\x20pays\x20cashback\x20to\x20the\x20submitted\x20address.']},{'id':'bridge.evidence','code':'b12','edge_refs':['wf.forward_guard','passport.signer','passport.guard','passport.ticket_relies','passport.impack','order.required_info','proof.signer','proof.about'],'name':'Evidence\x20(Proof\x20/\x20retained\x20submissions\x20×\x20Progress\x20&\x20Arb)','participants':[{'object':'Proof','role':'frozen\x20signed\x20fact\x20(WTS,\x20oracle\x20attestation)'},{'object':'Machine\x20Forward','role':'retained_submission\x20requirement'},{'object':'Progress','role':'session\x20history\x20storage'},{'object':'Arb','role':'proposition/vote\x20context'}],'bridge_fields':[{'object':'Machine\x20Forward','field':'retained_submission:\x20vector<u8>','meaning':'the\x20edge\x20cannot\x20be\x20crossed\x20without\x20submitting\x20these\x20slots\x20—\x20and\x20the\x20values\x20persist\x20into\x20the\x20session\x20history'},{'object':'Order','field':'required_info:\x20Option<address>\x20(im\x20or\x20proof)','meaning':'the\x20buyer\x20attaches\x20context\x20(IM\x20thread\x20or\x20proof\x20object)\x20the\x20merchant\x20needs\x20to\x20fulfill'}],'move_anchor':'retained\x20submissions\x20persist\x20into\x20the\x20session\x20history;\x20proof\x20object\x20(frozen,\x20signer-anchored)','scenario':{'from':'Execution\x20scenario\x20(workflow\x20edges)','to':'Attestation\x20scenario\x20(signed\x20facts)','merged':'Accountable\x20execution\x20(every\x20step\x20provable\x20after\x20the\x20fact)'},'capability_gained':'An\x20audit-grade\x20trail\x20for\x20INTANGIBLE\x20work:\x20what\x20the\x20operator\x20submitted\x20to\x20cross\x20each\x20edge\x20is\x20on-chain\x20forever\x20—\x20'+'later\x20disputes,\x20KPI\x20assessments,\x20and\x20reputation\x20scores\x20read\x20the\x20same\x20trail,\x20so\x20execution\x20quality\x20becomes\x20evidence.','prerequisites':['retained_submission\x20ids\x20must\x20be\x20retained\x20submission\x20slots\x20of\x20the\x20forward\x27s\x20guard\x20(E_SUBMISSION_SLOT_MISSING\x20/\x20E_SUBMISSION_SLOT_NOT_RETAINED)','Proof\x20objects\x20are\x20immutable\x20once\x20frozen\x20(create\x20→\x20freeze_object)'],'examples':['QC\x20step\x20requires\x20a\x20signed\x20inspection\x20proof;\x20the\x20proof\x20lands\x20in\x20the\x20session\x20history\x20with\x20the\x20advancing\x20tx.','Buyer\x20attaches\x20a\x20WTS\x20message\x20thread\x20as\x20order\x20required_info;\x20the\x20merchant\x20fulfills\x20against\x20it.']},{'id':'bridge.fund_object','code':'b08','edge_refs':['payment.recipient','payment.from_object','payment.for_object','allocation.payment','allocation.for_object','allocation.for_guard','payment.signer','treasury.record'],'name':'Fund-as-Object\x20(CoinWrapper\x20×\x20owner_receive\x20×\x20any\x20object)','participants':[{'object':'Payment\x20/\x20CoinWrapper<K>','role':'value\x20wrapped\x20as\x20a\x20transferable\x20object\x20(any\x20token\x20K)'},{'object':'receiving\x20objects','role':'Reward\x20/\x20Treasury\x20/\x20Service\x20/\x20Arbitration\x20/\x20Repository\x20/\x20Contact\x20...'},{'object':'Permission\x20owner','role':'the\x20extraction\x20target'}],'bridge_fields':[{'object':'receiving\x20object','field':'receive\x20(join\x20into\x20balance)\x20vs\x20owner_receive\x20(extract\x20received\x20objects\x20to\x20Permission\x20owner)','meaning':'two\x20DIFFERENT\x20doors:\x20receive\x20turns\x20an\x20arrived\x20payment\x20into\x20claimable\x20balance;\x20owner_receive\x20forwards\x20arrived\x20objects\x20(any\x20K,\x20incl.\x20NFT-like)\x20to\x20the\x20owner\x20without\x20touching\x20balance'},{'object':'CoinWrapper','field':'payment:\x20address','meaning':'the\x20wrapper\x20remembers\x20WHICH\x20payment\x20object\x20it\x20came\x20from\x20—\x20provenance\x20survives\x20the\x20transfer'}],'move_anchor':'receive\x20vs\x20owner-side\x20object\x20extraction,\x20unwrap\x20family','scenario':{'from':'Transfer\x20scenario\x20(objects\x20move\x20between\x20wallets/objects)','to':'Accounting\x20scenario\x20(balance\x20vs\x20custody)','merged':'Universal\x20value\x20custody\x20(any\x20asset\x20class,\x20any\x20token,\x20one\x20idiom)'},'capability_gained':'Objects\x20can\x20safely\x20RECEIVE\x20value\x20they\x20were\x20not\x20typed\x20for:\x20a\x20Reward<WOW>\x20can\x20custody\x20a\x20USDT\x20CoinWrapper\x20or\x20an\x20NFT\x20'+'via\x20owner_receive\x20—\x20cross-asset\x20custody\x20with\x20a\x20single,\x20uniform\x20extraction\x20rule\x20(to\x20the\x20Permission\x20owner).','value_flow':'CoinWrapper<K>\x20→\x20object\x20custody\x20→\x20owner_receive\x20→\x20Permission\x20owner\x20(NEVER\x20into\x20the\x20object\x27s\x20own\x20balance).','prerequisites':['owner_receive\x20requires\x20the\x20object\x27s\x20Permission\x20+\x20Receiving<K>\x20argument\x20(version+digest)','unwrapping\x20asserts\x20the\x20wrapper\x27s\x20payment\x20provenance\x20(EPAYMENT_NOT_MATCH)'],'examples':['A\x20customer\x20sends\x20an\x20NFT\x20coupon\x20to\x20a\x20Service;\x20the\x20merchant\x20extracts\x20it\x20via\x20service.owner_receive.','A\x20mixed-token\x20gift\x20lands\x20on\x20a\x20Reward;\x20owner_receive\x20forwards\x20it\x20without\x20polluting\x20the\x20WOW\x20claimable\x20balance.']}];for(const bridge of SCENARIO_BRIDGE_REGISTRY){for(const ref of bridge['edge_refs']){if(!EDGE_SCHEMA_BY_ID['has'](ref))throw new Error('scenario-topology:\x20bridge\x20'+bridge['id']+'\x20edge_ref\x20\x22'+ref+'\x22\x20is\x20not\x20a\x20registered\x20EdgeSchema\x20id');}}export const SCENARIO_CHAINS=[{'id':'chain.standard_ecommerce','name':'Standard\x20E-commerce','steps':[{'bridge':'bridge.qualification','note':'buy_guard\x20gates\x20who\x20may\x20purchase'},{'bridge':'bridge.purchase','note':'quote\x20+\x20discount\x20→\x20order\x20(machine\x20pre-bound)'},{'bridge':'bridge.communication','note':'um\x20channel\x20for\x20delivery\x20coordination'},{'bridge':'bridge.fulfillment','note':'progress\x20runs\x20the\x20machine;\x20evidence\x20retained\x20per\x20edge'},{'bridge':'bridge.escrow_split','note':'allocation\x20splits\x20escrow\x20to\x20suppliers\x20+\x20surplus'},{'bridge':'bridge.incentive','note':'optional:\x20staff\x20KPI\x20rewards\x20for\x20fast\x20fulfillment'}],'application_capability':'A\x20complete\x20store:\x20gated\x20checkout,\x20coordinated\x20delivery,\x20evidence-backed\x20fulfillment,\x20and\x20trustless\x20split\x20payout.','objects_touched':['Guard','Service','Discount','Order','Contact','Machine','Progress','Allocation','Payment','Reward','Permission','Passport']},{'id':'chain.procurement_tender','name':'Procurement\x20Tender','steps':[{'bridge':'bridge.supply_match','note':'demand\x20published;\x20qualified\x20services\x20present'},{'bridge':'bridge.qualification','note':'presentation\x20guards\x20filter\x20suppliers'},{'bridge':'bridge.purchase','note':'winning\x20offer\x20becomes\x20the\x20order'},{'bridge':'bridge.fulfillment','note':'multi-supplier\x20machine\x20handoffs'},{'bridge':'bridge.escrow_split','note':'allocation\x20pays\x20suppliers\x20+\x20surplus\x20to\x20demander?'},{'bridge':'bridge.dispute','note':'if\x20delivery\x20fails:\x20independent\x20arbitration\x20+\x20compensation'}],'application_capability':'A\x20full\x20tender\x20lifecycle:\x20need\x20→\x20competing\x20offers\x20→\x20award\x20→\x20delivery\x20→\x20settlement\x20with\x20credible\x20remedy.','objects_touched':['Demand','Guard','Service','Order','Machine','Progress','Allocation','Arbitration','Arb','Payment','Permission']},{'id':'chain.data_subscription','name':'Data\x20Subscription\x20Service','steps':[{'bridge':'bridge.data_service','note':'service\x20commits\x20to\x20repository\x20maintenance'},{'bridge':'bridge.qualification','note':'subscription\x20gate\x20(buy_guard)'},{'bridge':'bridge.purchase','note':'recurring\x20orders\x20or\x20one-off'},{'bridge':'bridge.escrow_split','note':'subscription\x20revenue\x20to\x20data\x20suppliers'},{'bridge':'bridge.communication','note':'um\x20for\x20data\x20requests\x20/\x20clarifications'},{'bridge':'bridge.dispute','note':'stale-data\x20compensation\x20via\x20arbitration'}],'application_capability':'Data\x20as\x20a\x20product:\x20paid,\x20guard-qualified\x20writes,\x20auditable\x20quality,\x20and\x20compensation\x20for\x20staleness.','objects_touched':['Repository','Guard','Service','Order','Allocation','Payment','Contact','Arbitration','Arb']},{'id':'chain.collaborative_operations','name':'Collaborative\x20Operations\x20(staff\x20+\x20outsourced\x20process)','steps':[{'bridge':'bridge.governance','note':'permission\x20entities\x20=\x20staff\x20with\x20scoped\x20indices'},{'bridge':'bridge.fulfillment','note':'machine\x20edges\x20operated\x20by\x20named\x20operators\x20/\x20permission\x20entities'},{'bridge':'bridge.evidence','note':'each\x20advance\x20retains\x20submissions'},{'bridge':'bridge.incentive','note':'KPI\x20guards\x20→\x20reward\x20claims'},{'bridge':'bridge.communication','note':'per-object\x20um\x20channels'}],'application_capability':'An\x20operating\x20company\x20on-chain:\x20internal\x20staff,\x20external\x20operators,\x20audited\x20execution,\x20aligned\x20pay.','objects_touched':['Permission','Machine','Progress','Guard','Reward','Contact','Proof']}];export const SCENARIO_TOPOLOGY_VERSION='1.1.0';export function getBridgeById(a){return SCENARIO_BRIDGE_REGISTRY['find'](c=>c['id']===a);}export function getBridgeByCode(a){return SCENARIO_BRIDGE_REGISTRY['find'](c=>c['code']===a);}export function getBridgesByObject(a){return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['participants']['some'](d=>d['object']===a)||c['bridge_fields']['some'](d=>d['object']===a));}export function getBridgesForEdge(a){return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['edge_refs']['includes'](a));}export function detectBridgesForEdges(a){const b=new Set(a);return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['edge_refs']['some'](d=>b['has'](d)));}export function getChainById(a){return SCENARIO_CHAINS['find'](b=>b['id']===a);}export function summarizeBridge(a){const c=a['participants']['map'](d=>d['object'])['join']('\x20×\x20');return'['+a['name']+']\x20'+c+'\x20→\x20'+a['scenario']['merged']+':\x20'+a['capability_gained']['split']('.\x20')[0x0]+'.';}export function detectBridgesForObjects(a){const b=new Set(a['map'](c=>c['toLowerCase']()));return SCENARIO_BRIDGE_REGISTRY['filter'](c=>c['bridge_fields']['some'](d=>b['has'](d['object']['toLowerCase']()))&&c['participants']['filter'](d=>b['has'](d['object']['toLowerCase']()))['length']>=0x2);}
|
|
@@ -6,6 +6,10 @@ export declare const SEMANTIC_IR_ACCEPTED_INPUT_VERSIONS: readonly [1, 2];
|
|
|
6
6
|
export declare const TRAIT_KEYS: Array<keyof IndustryTraits>;
|
|
7
7
|
export declare const SEMANTIC_CLAIM_KEYS: readonly ["reward_pool_amount", "funding_threshold_amount", "min_order_price_amount"];
|
|
8
8
|
export type SemanticClaimKey = (typeof SEMANTIC_CLAIM_KEYS)[number];
|
|
9
|
+
export declare function resolveClaimKey(raw: string): {
|
|
10
|
+
key: SemanticClaimKey;
|
|
11
|
+
note?: string;
|
|
12
|
+
} | undefined;
|
|
9
13
|
export declare const SemanticIRInputSchema: z.ZodObject<{
|
|
10
14
|
schema_version: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
|
|
11
15
|
locale: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createHash}from'node:crypto';import{z}from'zod';import{DISCOVERY_PRODUCT_REFS,DISCOVERY_TAG_VOCABULARY,isDiscoveryTag}from'./builtin-templates.js';import{BOOLEAN_TRAIT_KEYS,DOMAIN_PRIORS,ENUM_TRAIT_SCALES,EVIDENCE_THRESHOLD}from'./industry-generalizer.js';import{isRegisteredIndustry,resolveIndustryName}from'./industry-registry.js';export const SEMANTIC_IR_SCHEMA_VERSION=0x2;export const SEMANTIC_IR_ACCEPTED_INPUT_VERSIONS=[0x1,0x2];export const TRAIT_KEYS=[...BOOLEAN_TRAIT_KEYS,...Object['keys'](ENUM_TRAIT_SCALES)];export const SEMANTIC_CLAIM_KEYS=['reward_pool_amount','funding_threshold_amount','min_order_price_amount'];const SpanSchema=z['object']({'start':z['number']()['int']()['nonnegative'](),'end':z['number']()['int']()['nonnegative']()})['strict'](),TraitEvidenceSchema=z['object']({'trait':z['string']()['max'](0x40),'value':z['union']([z['boolean'](),z['string']()['max'](0x20)]),'confidence':z['number'](),'span':SpanSchema['optional'](),'quote':z['string']()['max'](0x12c)['optional']()})['strict'](),DomainEvidenceSchema=z['object']({'domain':z['string']()['max'](0x40),'confidence':z['number']()['optional'](),'span':SpanSchema['optional'](),'quote':z['string']()['max'](0x12c)['optional']()})['strict'](),ClaimEvidenceSchema=z['object']({'key':z['string']()['max'](0x40),'value':z['number'](),'confidence':z['number']()['optional'](),'span':SpanSchema['optional'](),'quote':z['string']()['max'](0x12c)['optional']()})['strict'](),ProvenanceSchema=z['object']({'source':z['enum'](['caller_llm','human']),'model':z['string']()['max'](0x78)['optional'](),'prompt_version':z['string']()['max'](0x3c)['optional'](),'generated_at':z['number']()['int']()['nonnegative']()['optional']()})['strict'](),DiscoveryEvidenceSchema=z['object']({'industry':z['string']()['max'](0x40)['optional'](),'tags':z['array'](z['string']()['max'](0x40))['max'](0x14)['optional'](),'product_ref':z['string']()['max'](0x40)['optional'](),'english_summary':z['string']()['max'](0x258)['optional'](),'confidence':z['number']()['optional']()})['strict']();export const SemanticIRInputSchema=z['object']({'schema_version':z['union']([z['literal'](0x1),z['literal'](0x2)]),'locale':z['string']()['min'](0x2)['max'](0x23),'traits':z['array'](TraitEvidenceSchema)['max'](0x14)['optional'](),'domains':z['array'](DomainEvidenceSchema)['max'](0xa)['optional'](),'claims':z['array'](ClaimEvidenceSchema)['max'](0xa)['optional'](),'discovery':DiscoveryEvidenceSchema['optional'](),'provenance':ProvenanceSchema})['strict']();export function semanticIrDigest(a){return createHash('sha256')['update'](JSON['stringify'](a))['digest']('hex');}function traitOrder(a){return TRAIT_KEYS['indexOf'](a);}function vocabularyPreview(a,b=0xc){const c=a['slice'](0x0,b)['join'](',\x20');return a['length']>b?c+',\x20…\x20('+a['length']+'\x20total)':c;}function normalizeDiscovery(a,b){const c=new Set();for(const h of a?.['tags']??[]){const i=h['trim']()['toLowerCase']();if(!i)continue;if(!isDiscoveryTag(i)){b['push']('unknown\x20discovery\x20tag\x20\x27'+h+'\x27\x20ignored\x20(vocabulary:\x20'+vocabularyPreview(DISCOVERY_TAG_VOCABULARY)+')');continue;}c['add'](i);}let d;if(a?.['industry']!==undefined){const j=resolveIndustryName(a['industry']);!j||!isRegisteredIndustry(j)?b['push']('unknown\x20discovery\x20industry\x20\x27'+a['industry']+'\x27\x20ignored\x20(not\x20a\x20registered\x20industry)'):d=j;}let e;if(a?.['product_ref']!==undefined){const k=a['product_ref']['trim']()['toLowerCase']();!DISCOVERY_PRODUCT_REFS['includes'](k)?b['push']('unknown\x20discovery\x20product_ref\x20\x27'+a['product_ref']+'\x27\x20ignored\x20'+('(builtin\x20benchmark\x20products:\x20'+vocabularyPreview(DISCOVERY_PRODUCT_REFS)+')')):e=k;}const f=a?.['english_summary']?.['trim'](),g={'tags':[...c]['sort']()};if(d)g['industry']=d;if(e)g['product_ref']=e;if(f)g['english_summary']=f;if(a?.['confidence']!==undefined){if(!Number['isFinite'](a['confidence']))b['push']('discovery\x20confidence\x20is\x20not\x20finite;\x20discovery\x20evidence\x20ignored\x20at\x20match\x20time');else{const l=Math['max'](0x0,Math['min'](0x1,a['confidence']));l!==a['confidence']&&b['push']('discovery\x20confidence\x20'+a['confidence']+'\x20clamped\x20to\x20'+l),l<EVIDENCE_THRESHOLD&&b['push']('discovery\x20confidence\x20'+l+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied')),g['confidence']=l;}}return g;}function anchorEvidence(a,b,c,d){if(a===undefined)return{'span':c['span'],'quote':c['quote']};if(c['quote']!==undefined){const e=a['indexOf'](c['quote']);if(e<0x0)return d['push'](b+'\x20quote\x20was\x20not\x20found\x20verbatim\x20in\x20the\x20source\x20text;\x20evidence\x20dropped'),undefined;const f={'start':e,'end':e+c['quote']['length']};return c['span']&&(c['span']['start']!==f['start']||c['span']['end']!==f['end'])&&d['push'](b+'\x20span\x20re-anchored\x20to\x20the\x20quoted\x20text\x20('+f['start']+'-'+f['end']+')'),{'span':f,'quote':c['quote']};}if(c['span']){if(c['span']['end']>a['length'])return d['push'](b+'\x20span\x20ends\x20past\x20the\x20source\x20text\x20('+c['span']['end']+'\x20>\x20'+a['length']+');\x20evidence\x20dropped'),undefined;if(!a['slice'](c['span']['start'],c['span']['end'])['trim']())return d['push'](b+'\x20span\x20covers\x20no\x20text;\x20evidence\x20dropped'),undefined;return{'span':c['span']};}return{};}export function normalizeSemanticIR(a,b={}){const e=SemanticIRInputSchema['safeParse'](a);if(!e['success']){const x=e['error']['issues']['map'](y=>(y['path']['length']>0x0?y['path']['join']('.'):'(root)')+':\x20'+y['message'])['join'](';\x20');throw new Error('semantic_ir\x20rejected:\x20'+x);}const f=[],g=[];for(const y of e['data']['traits']??[]){if(!TRAIT_KEYS['includes'](y['trait'])){f['push']('unknown\x20trait\x20\x27'+y['trait']+'\x27\x20ignored\x20(vocabulary:\x20'+TRAIT_KEYS['join'](',\x20')+')');continue;}const A=y['trait'],B=BOOLEAN_TRAIT_KEYS['includes'](A);if(B){if(typeof y['value']!=='boolean'){f['push']('trait\x20\x27'+A+'\x27\x20is\x20boolean;\x20value\x20\x27'+String(y['value'])+'\x27\x20ignored');continue;}}else{const F=ENUM_TRAIT_SCALES[A];if(!F||typeof y['value']!=='string'||!F['includes'](y['value'])){f['push']('trait\x20\x27'+A+'\x27\x20expects\x20one\x20of\x20['+(F??[])['join'](',\x20')+'];\x20'+('value\x20\x27'+String(y['value'])+'\x27\x20ignored'));continue;}}if(!Number['isFinite'](y['confidence'])){f['push']('trait\x20\x27'+A+'\x27\x20confidence\x20is\x20not\x20finite;\x20evidence\x20ignored');continue;}const C=Math['max'](0x0,Math['min'](0x1,y['confidence']));C!==y['confidence']&&f['push']('trait\x20\x27'+A+'\x27\x20confidence\x20'+y['confidence']+'\x20clamped\x20to\x20'+C);C<EVIDENCE_THRESHOLD&&f['push']('trait\x20\x27'+A+'\x27\x20confidence\x20'+C+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied'));let D;y['span']&&(y['span']['end']<y['span']['start']?f['push']('trait\x20\x27'+A+'\x27\x20span\x20has\x20end\x20<\x20start;\x20span\x20dropped'):D={'start':y['span']['start'],'end':y['span']['end']});const E={'trait':A,'value':y['value'],'confidence':C};if(D)E['span']=D;if(y['quote']!==undefined)E['quote']=y['quote'];g['push'](E);}g['sort']((G,H)=>{const I=traitOrder(G['trait'])-traitOrder(H['trait']);if(I!==0x0)return I;if(H['confidence']!==G['confidence'])return H['confidence']-G['confidence'];return JSON['stringify'](G['value'])['localeCompare'](JSON['stringify'](H['value']));});const h=[],i=new Map();for(const G of g){const H=i['get'](G['trait']);if(!H){i['set'](G['trait'],G),h['push'](G);continue;}H['value']!==G['value']&&f['push']('conflicting\x20evidence\x20for\x20\x27'+G['trait']+'\x27:\x20'+('kept\x20\x27'+String(H['value'])+'\x27\x20(confidence\x20'+H['confidence']+')\x20over\x20')+('\x27'+String(G['value'])+'\x27\x20(confidence\x20'+G['confidence']+')'));}const j=[];for(const I of e['data']['domains']??[]){if(!DOMAIN_PRIORS['some'](M=>M['domain']===I['domain'])){f['push']('unknown\x20domain\x20\x27'+I['domain']+'\x27\x20ignored\x20(vocabulary:\x20'+DOMAIN_PRIORS['map'](M=>M['domain'])['join'](',\x20')+')');continue;}const J=I['confidence']??0x1;if(!Number['isFinite'](J)){f['push']('domain\x20\x27'+I['domain']+'\x27\x20confidence\x20is\x20not\x20finite;\x20evidence\x20ignored');continue;}const K=Math['max'](0x0,Math['min'](0x1,J));K!==J&&f['push']('domain\x20\x27'+I['domain']+'\x27\x20confidence\x20'+J+'\x20clamped\x20to\x20'+K);K<EVIDENCE_THRESHOLD&&f['push']('domain\x20\x27'+I['domain']+'\x27\x20confidence\x20'+K+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied'));const L={'domain':I['domain'],'confidence':K};if(I['span']&&I['span']['end']>=I['span']['start'])L['span']={'start':I['span']['start'],'end':I['span']['end']};else{if(I['span'])f['push']('domain\x20\x27'+I['domain']+'\x27\x20span\x20has\x20end\x20<\x20start;\x20span\x20dropped');}if(I['quote']!==undefined)L['quote']=I['quote'];j['push'](L);}j['sort']((M,N)=>{if(N['confidence']!==M['confidence'])return N['confidence']-M['confidence'];return M['domain']['localeCompare'](N['domain']);});const k=[],l=new Set();for(const M of j){if(l['has'](M['domain']))continue;l['add'](M['domain']),k['push'](M);}const m=[];for(const N of e['data']['claims']??[]){if(!SEMANTIC_CLAIM_KEYS['includes'](N['key'])){f['push']('unknown\x20claim\x20\x27'+N['key']+'\x27\x20ignored\x20(vocabulary:\x20'+SEMANTIC_CLAIM_KEYS['join'](',\x20')+')');continue;}const O=N['key'];if(!Number['isFinite'](N['value'])){f['push']('claim\x20\x27'+O+'\x27\x20value\x20is\x20not\x20finite;\x20ignored');continue;}if(N['value']<0x0){f['push']('claim\x20\x27'+O+'\x27\x20value\x20'+N['value']+'\x20is\x20negative;\x20ignored');continue;}const P=N['confidence']??0x1;if(!Number['isFinite'](P)){f['push']('claim\x20\x27'+O+'\x27\x20confidence\x20is\x20not\x20finite;\x20claim\x20ignored');continue;}const Q=Math['max'](0x0,Math['min'](0x1,P));Q!==P&&f['push']('claim\x20\x27'+O+'\x27\x20confidence\x20'+P+'\x20clamped\x20to\x20'+Q);Q<EVIDENCE_THRESHOLD&&f['push']('claim\x20\x27'+O+'\x27\x20confidence\x20'+Q+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied'));const R={'key':O,'value':N['value'],'confidence':Q};N['span']&&(N['span']['end']<N['span']['start']?f['push']('claim\x20\x27'+O+'\x27\x20span\x20has\x20end\x20<\x20start;\x20span\x20dropped'):R['span']={'start':N['span']['start'],'end':N['span']['end']});if(N['quote']!==undefined)R['quote']=N['quote'];m['push'](R);}m['sort']((S,T)=>{if(S['key']!==T['key'])return S['key']<T['key']?-0x1:0x1;return T['confidence']-S['confidence'];});const n=[],o=new Map();for(const S of m){const T=o['get'](S['key']);if(!T){o['set'](S['key'],S),n['push'](S);continue;}T['value']!==S['value']&&f['push']('conflicting\x20evidence\x20for\x20claim\x20\x27'+S['key']+'\x27:\x20'+('kept\x20'+T['value']+'\x20(confidence\x20'+T['confidence']+')\x20over\x20')+(S['value']+'\x20(confidence\x20'+S['confidence']+')'));}const p=b['source_text']&&b['source_text']['trim']()?b['source_text']:undefined,q=[];for(const U of h){const V=anchorEvidence(p,'trait\x20\x27'+U['trait']+'\x27',U,f);if(!V)continue;if(V['span'])U['span']=V['span'];else delete U['span'];if(V['quote']!==undefined)U['quote']=V['quote'];q['push'](U);}const r=[];for(const W of k){const X=anchorEvidence(p,'domain\x20\x27'+W['domain']+'\x27',W,f);if(!X)continue;if(X['span'])W['span']=X['span'];else delete W['span'];if(X['quote']!==undefined)W['quote']=X['quote'];r['push'](W);}const s=[];for(const Y of n){const Z=anchorEvidence(p,'claim\x20\x27'+Y['key']+'\x27',Y,f);if(!Z)continue;if(Z['span'])Y['span']=Z['span'];else delete Y['span'];if(Z['quote']!==undefined)Y['quote']=Z['quote'];s['push'](Y);}const t=normalizeDiscovery(e['data']['discovery'],f),u=t['industry']!==undefined||t['product_ref']!==undefined||t['english_summary']!==undefined||t['tags']['length']>0x0;q['length']===0x0&&r['length']===0x0&&s['length']===0x0&&!u&&f['push']('semantic_ir\x20carries\x20no\x20usable\x20evidence;\x20keyword\x20inference\x20is\x20the\x20only\x20signal');const v={'source':e['data']['provenance']['source']};if(e['data']['provenance']['model']!==undefined)v['model']=e['data']['provenance']['model'];e['data']['provenance']['prompt_version']!==undefined&&(v['prompt_version']=e['data']['provenance']['prompt_version']);e['data']['provenance']['generated_at']!==undefined&&(v['generated_at']=e['data']['provenance']['generated_at']);const w={'schema_version':SEMANTIC_IR_SCHEMA_VERSION,'locale':e['data']['locale'],'traits':q,'domains':r,'claims':s,'discovery':t,'provenance':v};return{'ir':w,'digest':semanticIrDigest(w),'issues':f};}export function discoverySignal(a){const b=a['discovery'];if((b['confidence']??0x1)<EVIDENCE_THRESHOLD)return undefined;if(b['industry']===undefined&&b['product_ref']===undefined&&b['english_summary']===undefined&&b['tags']['length']===0x0)return undefined;return b;}export function claimNumber(a,b){const c=a['claims']['find'](d=>d['key']===b&&d['confidence']>=EVIDENCE_THRESHOLD);return c?.['value'];}export function mergeSemanticIR(a,b){const c={...a['traits']},d={...a['trait_confidence']},e=[];for(const h of b['traits']){if(h['confidence']<EVIDENCE_THRESHOLD)continue;const i=a['trait_confidence'][h['trait']],j=a['traits'][h['trait']];i!==undefined&&j!==h['value']?(e['push']({'trait':h['trait'],'keyword_value':j,'keyword_confidence':i,'ir_value':h['value'],'ir_confidence':h['confidence']}),d[h['trait']]=h['confidence']):d[h['trait']]=Math['max'](i??0x0,h['confidence']),c[h['trait']]=h['value'];}const f=Object['values'](d)['filter'](k=>(k??0x0)>=EVIDENCE_THRESHOLD)['length'],g=Math['min'](0x1,Math['max'](a['confidence'],f/TRAIT_KEYS['length']));return{'traits':c,'confidence':g,'matched_keywords':[...a['matched_keywords']],'trait_confidence':d,'conflicts':e};}export function domainPriorsFromIR(a){const b=[];for(const c of a['domains']){if(c['confidence']<EVIDENCE_THRESHOLD)continue;const e=DOMAIN_PRIORS['find'](f=>f['domain']===c['domain']);if(!e)continue;b['push']({'domain':e['domain'],'matched_keywords':[],'industries':[...e['industries']],'boost':e['boost'],'source':'semantic_ir'});}return b;}export function mergeDomainPriors(a,b){const c=new Map();for(const d of a){c['set'](d['domain'],{...d,'source':d['source']??'keyword'});}for(const e of b){const f=c['get'](e['domain']);if(!f){c['set'](e['domain'],e);continue;}c['set'](e['domain'],{...f,'matched_keywords':[...new Set([...f['matched_keywords'],...e['matched_keywords']])],'industries':[...new Set([...f['industries'],...e['industries']])],'boost':Math['max'](f['boost'],e['boost']),'source':'both'});}return Array['from'](c['values']());}
|
|
1
|
+
import{createHash}from'node:crypto';import{z}from'zod';import{DISCOVERY_PRODUCT_REFS,DISCOVERY_TAG_VOCABULARY,isDiscoveryTag}from'./builtin-templates.js';import{BOOLEAN_TRAIT_KEYS,DOMAIN_PRIORS,ENUM_TRAIT_SCALES,EVIDENCE_THRESHOLD}from'./industry-generalizer.js';import{isRegisteredIndustry,resolveIndustryName}from'./industry-registry.js';export const SEMANTIC_IR_SCHEMA_VERSION=0x2;export const SEMANTIC_IR_ACCEPTED_INPUT_VERSIONS=[0x1,0x2];export const TRAIT_KEYS=[...BOOLEAN_TRAIT_KEYS,...Object['keys'](ENUM_TRAIT_SCALES)];export const SEMANTIC_CLAIM_KEYS=['reward_pool_amount','funding_threshold_amount','min_order_price_amount'];function levenshteinDistance(c,d){if(c===d)return 0x0;if(c['length']===0x0)return d['length'];if(d['length']===0x0)return c['length'];let e=Array['from']({'length':d['length']+0x1},(f,g)=>g);for(let f=0x1;f<=c['length'];f++){const g=[f];for(let h=0x1;h<=d['length'];h++){g[h]=Math['min'](e[h]+0x1,g[h-0x1]+0x1,e[h-0x1]+(c[f-0x1]===d[h-0x1]?0x0:0x1));}e=g;}return e[d['length']];}export function resolveClaimKey(a){if(SEMANTIC_CLAIM_KEYS['includes'](a))return{'key':a};for(const e of SEMANTIC_CLAIM_KEYS){if(e['replace'](/_amount$/,'')===a)return{'key':e,'note':'untyped\x20alias\x20—\x20the\x20canonical\x20key\x20appends\x20\x27_amount\x27'};}const b=SEMANTIC_CLAIM_KEYS['flatMap'](f=>[{'key':f,'form':f},{'key':f,'form':f['replace'](/_amount$/,'')}]);let c,d=![];for(const {key:f,form:g}of b){const h=levenshteinDistance(a['toLowerCase'](),g);if(h>0x2)continue;if(!c||h<c['distance'])c={'key':f,'distance':h},d=![];else h===c['distance']&&f!==c['key']&&(d=!![]);}if(c&&!d)return{'key':c['key'],'note':'closest\x20vocabulary\x20key,\x20Levenshtein\x20distance\x20'+c['distance']};return undefined;}const SpanSchema=z['object']({'start':z['number']()['int']()['nonnegative'](),'end':z['number']()['int']()['nonnegative']()})['strict'](),TraitEvidenceSchema=z['object']({'trait':z['string']()['max'](0x40),'value':z['union']([z['boolean'](),z['string']()['max'](0x20)]),'confidence':z['number'](),'span':SpanSchema['optional'](),'quote':z['string']()['max'](0x12c)['optional']()})['strict'](),DomainEvidenceSchema=z['object']({'domain':z['string']()['max'](0x40),'confidence':z['number']()['optional'](),'span':SpanSchema['optional'](),'quote':z['string']()['max'](0x12c)['optional']()})['strict'](),ClaimEvidenceSchema=z['object']({'key':z['string']()['max'](0x40),'value':z['number'](),'confidence':z['number']()['optional'](),'span':SpanSchema['optional'](),'quote':z['string']()['max'](0x12c)['optional']()})['strict'](),ProvenanceSchema=z['object']({'source':z['enum'](['caller_llm','human']),'model':z['string']()['max'](0x78)['optional'](),'prompt_version':z['string']()['max'](0x3c)['optional'](),'generated_at':z['number']()['int']()['nonnegative']()['optional']()})['strict'](),DiscoveryEvidenceSchema=z['object']({'industry':z['string']()['max'](0x40)['optional'](),'tags':z['array'](z['string']()['max'](0x40))['max'](0x14)['optional'](),'product_ref':z['string']()['max'](0x40)['optional'](),'english_summary':z['string']()['max'](0x258)['optional'](),'confidence':z['number']()['optional']()})['strict']();export const SemanticIRInputSchema=z['object']({'schema_version':z['union']([z['literal'](0x1),z['literal'](0x2)]),'locale':z['string']()['min'](0x2)['max'](0x23),'traits':z['array'](TraitEvidenceSchema)['max'](0x14)['optional'](),'domains':z['array'](DomainEvidenceSchema)['max'](0xa)['optional'](),'claims':z['array'](ClaimEvidenceSchema)['max'](0xa)['optional'](),'discovery':DiscoveryEvidenceSchema['optional'](),'provenance':ProvenanceSchema})['strict']();export function semanticIrDigest(a){return createHash('sha256')['update'](JSON['stringify'](a))['digest']('hex');}function traitOrder(a){return TRAIT_KEYS['indexOf'](a);}function vocabularyPreview(a,b=0xc){const c=a['slice'](0x0,b)['join'](',\x20');return a['length']>b?c+',\x20…\x20('+a['length']+'\x20total)':c;}function normalizeDiscovery(a,b){const c=new Set();for(const h of a?.['tags']??[]){const i=h['trim']()['toLowerCase']();if(!i)continue;if(!isDiscoveryTag(i)){b['push']('unknown\x20discovery\x20tag\x20\x27'+h+'\x27\x20ignored\x20(vocabulary:\x20'+vocabularyPreview(DISCOVERY_TAG_VOCABULARY)+')');continue;}c['add'](i);}let d;if(a?.['industry']!==undefined){const j=resolveIndustryName(a['industry']);!j||!isRegisteredIndustry(j)?b['push']('unknown\x20discovery\x20industry\x20\x27'+a['industry']+'\x27\x20ignored\x20(not\x20a\x20registered\x20industry)'):d=j;}let e;if(a?.['product_ref']!==undefined){const k=a['product_ref']['trim']()['toLowerCase']();!DISCOVERY_PRODUCT_REFS['includes'](k)?b['push']('unknown\x20discovery\x20product_ref\x20\x27'+a['product_ref']+'\x27\x20ignored\x20'+('(builtin\x20benchmark\x20products:\x20'+vocabularyPreview(DISCOVERY_PRODUCT_REFS)+')')):e=k;}const f=a?.['english_summary']?.['trim'](),g={'tags':[...c]['sort']()};if(d)g['industry']=d;if(e)g['product_ref']=e;if(f)g['english_summary']=f;if(a?.['confidence']!==undefined){if(!Number['isFinite'](a['confidence']))b['push']('discovery\x20confidence\x20is\x20not\x20finite;\x20discovery\x20evidence\x20ignored\x20at\x20match\x20time');else{const l=Math['max'](0x0,Math['min'](0x1,a['confidence']));l!==a['confidence']&&b['push']('discovery\x20confidence\x20'+a['confidence']+'\x20clamped\x20to\x20'+l),l<EVIDENCE_THRESHOLD&&b['push']('discovery\x20confidence\x20'+l+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied')),g['confidence']=l;}}return g;}function anchorEvidence(a,b,c,d){if(a===undefined)return{'span':c['span'],'quote':c['quote']};if(c['quote']!==undefined){const e=a['indexOf'](c['quote']);if(e<0x0)return d['push'](b+'\x20quote\x20was\x20not\x20found\x20verbatim\x20in\x20the\x20source\x20text;\x20evidence\x20dropped'),undefined;const f={'start':e,'end':e+c['quote']['length']};return c['span']&&(c['span']['start']!==f['start']||c['span']['end']!==f['end'])&&d['push'](b+'\x20span\x20re-anchored\x20to\x20the\x20quoted\x20text\x20('+f['start']+'-'+f['end']+')'),{'span':f,'quote':c['quote']};}if(c['span']){if(c['span']['end']>a['length'])return d['push'](b+'\x20span\x20ends\x20past\x20the\x20source\x20text\x20('+c['span']['end']+'\x20>\x20'+a['length']+');\x20evidence\x20dropped'),undefined;if(!a['slice'](c['span']['start'],c['span']['end'])['trim']())return d['push'](b+'\x20span\x20covers\x20no\x20text;\x20evidence\x20dropped'),undefined;return{'span':c['span']};}return{};}export function normalizeSemanticIR(a,b={}){const e=SemanticIRInputSchema['safeParse'](a);if(!e['success']){const x=e['error']['issues']['map'](y=>(y['path']['length']>0x0?y['path']['join']('.'):'(root)')+':\x20'+y['message'])['join'](';\x20');throw new Error('semantic_ir\x20rejected:\x20'+x);}const f=[],g=[];for(const y of e['data']['traits']??[]){if(!TRAIT_KEYS['includes'](y['trait'])){f['push']('unknown\x20trait\x20\x27'+y['trait']+'\x27\x20ignored\x20(vocabulary:\x20'+TRAIT_KEYS['join'](',\x20')+')');continue;}const A=y['trait'],B=BOOLEAN_TRAIT_KEYS['includes'](A);if(B){if(typeof y['value']!=='boolean'){f['push']('trait\x20\x27'+A+'\x27\x20is\x20boolean;\x20value\x20\x27'+String(y['value'])+'\x27\x20ignored');continue;}}else{const F=ENUM_TRAIT_SCALES[A];if(!F||typeof y['value']!=='string'||!F['includes'](y['value'])){f['push']('trait\x20\x27'+A+'\x27\x20expects\x20one\x20of\x20['+(F??[])['join'](',\x20')+'];\x20'+('value\x20\x27'+String(y['value'])+'\x27\x20ignored'));continue;}}if(!Number['isFinite'](y['confidence'])){f['push']('trait\x20\x27'+A+'\x27\x20confidence\x20is\x20not\x20finite;\x20evidence\x20ignored');continue;}const C=Math['max'](0x0,Math['min'](0x1,y['confidence']));C!==y['confidence']&&f['push']('trait\x20\x27'+A+'\x27\x20confidence\x20'+y['confidence']+'\x20clamped\x20to\x20'+C);C<EVIDENCE_THRESHOLD&&f['push']('trait\x20\x27'+A+'\x27\x20confidence\x20'+C+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied'));let D;y['span']&&(y['span']['end']<y['span']['start']?f['push']('trait\x20\x27'+A+'\x27\x20span\x20has\x20end\x20<\x20start;\x20span\x20dropped'):D={'start':y['span']['start'],'end':y['span']['end']});const E={'trait':A,'value':y['value'],'confidence':C};if(D)E['span']=D;if(y['quote']!==undefined)E['quote']=y['quote'];g['push'](E);}g['sort']((G,H)=>{const I=traitOrder(G['trait'])-traitOrder(H['trait']);if(I!==0x0)return I;if(H['confidence']!==G['confidence'])return H['confidence']-G['confidence'];return JSON['stringify'](G['value'])['localeCompare'](JSON['stringify'](H['value']));});const h=[],i=new Map();for(const G of g){const H=i['get'](G['trait']);if(!H){i['set'](G['trait'],G),h['push'](G);continue;}H['value']!==G['value']&&f['push']('conflicting\x20evidence\x20for\x20\x27'+G['trait']+'\x27:\x20'+('kept\x20\x27'+String(H['value'])+'\x27\x20(confidence\x20'+H['confidence']+')\x20over\x20')+('\x27'+String(G['value'])+'\x27\x20(confidence\x20'+G['confidence']+')'));}const j=[];for(const I of e['data']['domains']??[]){if(!DOMAIN_PRIORS['some'](M=>M['domain']===I['domain'])){f['push']('unknown\x20domain\x20\x27'+I['domain']+'\x27\x20ignored\x20(vocabulary:\x20'+DOMAIN_PRIORS['map'](M=>M['domain'])['join'](',\x20')+')');continue;}const J=I['confidence']??0x1;if(!Number['isFinite'](J)){f['push']('domain\x20\x27'+I['domain']+'\x27\x20confidence\x20is\x20not\x20finite;\x20evidence\x20ignored');continue;}const K=Math['max'](0x0,Math['min'](0x1,J));K!==J&&f['push']('domain\x20\x27'+I['domain']+'\x27\x20confidence\x20'+J+'\x20clamped\x20to\x20'+K);K<EVIDENCE_THRESHOLD&&f['push']('domain\x20\x27'+I['domain']+'\x27\x20confidence\x20'+K+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied'));const L={'domain':I['domain'],'confidence':K};if(I['span']&&I['span']['end']>=I['span']['start'])L['span']={'start':I['span']['start'],'end':I['span']['end']};else{if(I['span'])f['push']('domain\x20\x27'+I['domain']+'\x27\x20span\x20has\x20end\x20<\x20start;\x20span\x20dropped');}if(I['quote']!==undefined)L['quote']=I['quote'];j['push'](L);}j['sort']((M,N)=>{if(N['confidence']!==M['confidence'])return N['confidence']-M['confidence'];return M['domain']['localeCompare'](N['domain']);});const k=[],l=new Set();for(const M of j){if(l['has'](M['domain']))continue;l['add'](M['domain']),k['push'](M);}const m=[];for(const N of e['data']['claims']??[]){let O=N['key'];if(!SEMANTIC_CLAIM_KEYS['includes'](N['key'])){const S=resolveClaimKey(N['key']);if(!S){f['push']('unknown\x20claim\x20\x27'+N['key']+'\x27\x20ignored\x20(vocabulary:\x20'+SEMANTIC_CLAIM_KEYS['join'](',\x20')+';\x20'+'no\x20alias\x20or\x20near-match\x20within\x20Levenshtein\x20distance\x202)');continue;}O=S['key'],f['push']('claim\x20\x27'+N['key']+'\x27\x20resolved\x20to\x20\x27'+O+'\x27\x20('+S['note']+')');}if(!Number['isFinite'](N['value'])){f['push']('claim\x20\x27'+O+'\x27\x20value\x20is\x20not\x20finite;\x20ignored');continue;}if(N['value']<0x0){f['push']('claim\x20\x27'+O+'\x27\x20value\x20'+N['value']+'\x20is\x20negative;\x20ignored');continue;}const P=N['confidence']??0x1;if(!Number['isFinite'](P)){f['push']('claim\x20\x27'+O+'\x27\x20confidence\x20is\x20not\x20finite;\x20claim\x20ignored');continue;}const Q=Math['max'](0x0,Math['min'](0x1,P));Q!==P&&f['push']('claim\x20\x27'+O+'\x27\x20confidence\x20'+P+'\x20clamped\x20to\x20'+Q);Q<EVIDENCE_THRESHOLD&&f['push']('claim\x20\x27'+O+'\x27\x20confidence\x20'+Q+'\x20is\x20below\x20the\x20evidence\x20threshold\x20'+(EVIDENCE_THRESHOLD+';\x20recorded\x20but\x20not\x20applied'));const R={'key':O,'value':N['value'],'confidence':Q};N['span']&&(N['span']['end']<N['span']['start']?f['push']('claim\x20\x27'+O+'\x27\x20span\x20has\x20end\x20<\x20start;\x20span\x20dropped'):R['span']={'start':N['span']['start'],'end':N['span']['end']});if(N['quote']!==undefined)R['quote']=N['quote'];m['push'](R);}m['sort']((T,U)=>{if(T['key']!==U['key'])return T['key']<U['key']?-0x1:0x1;return U['confidence']-T['confidence'];});const n=[],o=new Map();for(const T of m){const U=o['get'](T['key']);if(!U){o['set'](T['key'],T),n['push'](T);continue;}U['value']!==T['value']&&f['push']('conflicting\x20evidence\x20for\x20claim\x20\x27'+T['key']+'\x27:\x20'+('kept\x20'+U['value']+'\x20(confidence\x20'+U['confidence']+')\x20over\x20')+(T['value']+'\x20(confidence\x20'+T['confidence']+')'));}const p=b['source_text']&&b['source_text']['trim']()?b['source_text']:undefined,q=[];for(const V of h){const W=anchorEvidence(p,'trait\x20\x27'+V['trait']+'\x27',V,f);if(!W)continue;if(W['span'])V['span']=W['span'];else delete V['span'];if(W['quote']!==undefined)V['quote']=W['quote'];q['push'](V);}const r=[];for(const X of k){const Y=anchorEvidence(p,'domain\x20\x27'+X['domain']+'\x27',X,f);if(!Y)continue;if(Y['span'])X['span']=Y['span'];else delete X['span'];if(Y['quote']!==undefined)X['quote']=Y['quote'];r['push'](X);}const s=[];for(const Z of n){const a0=anchorEvidence(p,'claim\x20\x27'+Z['key']+'\x27',Z,f);if(!a0)continue;if(a0['span'])Z['span']=a0['span'];else delete Z['span'];if(a0['quote']!==undefined)Z['quote']=a0['quote'];s['push'](Z);}const t=normalizeDiscovery(e['data']['discovery'],f),u=t['industry']!==undefined||t['product_ref']!==undefined||t['english_summary']!==undefined||t['tags']['length']>0x0;q['length']===0x0&&r['length']===0x0&&s['length']===0x0&&!u&&f['push']('semantic_ir\x20carries\x20no\x20usable\x20evidence;\x20keyword\x20inference\x20is\x20the\x20only\x20signal');const v={'source':e['data']['provenance']['source']};if(e['data']['provenance']['model']!==undefined)v['model']=e['data']['provenance']['model'];e['data']['provenance']['prompt_version']!==undefined&&(v['prompt_version']=e['data']['provenance']['prompt_version']);e['data']['provenance']['generated_at']!==undefined&&(v['generated_at']=e['data']['provenance']['generated_at']);const w={'schema_version':SEMANTIC_IR_SCHEMA_VERSION,'locale':e['data']['locale'],'traits':q,'domains':r,'claims':s,'discovery':t,'provenance':v};return{'ir':w,'digest':semanticIrDigest(w),'issues':f};}export function discoverySignal(a){const b=a['discovery'];if((b['confidence']??0x1)<EVIDENCE_THRESHOLD)return undefined;if(b['industry']===undefined&&b['product_ref']===undefined&&b['english_summary']===undefined&&b['tags']['length']===0x0)return undefined;return b;}export function claimNumber(a,b){const c=a['claims']['find'](d=>d['key']===b&&d['confidence']>=EVIDENCE_THRESHOLD);return c?.['value'];}export function mergeSemanticIR(a,b){const c={...a['traits']},d={...a['trait_confidence']},e=[];for(const h of b['traits']){if(h['confidence']<EVIDENCE_THRESHOLD)continue;const i=a['trait_confidence'][h['trait']],j=a['traits'][h['trait']];i!==undefined&&j!==h['value']?(e['push']({'trait':h['trait'],'keyword_value':j,'keyword_confidence':i,'ir_value':h['value'],'ir_confidence':h['confidence']}),d[h['trait']]=h['confidence']):d[h['trait']]=Math['max'](i??0x0,h['confidence']),c[h['trait']]=h['value'];}const f=Object['values'](d)['filter'](k=>(k??0x0)>=EVIDENCE_THRESHOLD)['length'],g=Math['min'](0x1,Math['max'](a['confidence'],f/TRAIT_KEYS['length']));return{'traits':c,'confidence':g,'matched_keywords':[...a['matched_keywords']],'trait_confidence':d,'conflicts':e};}export function domainPriorsFromIR(a){const b=[];for(const c of a['domains']){if(c['confidence']<EVIDENCE_THRESHOLD)continue;const e=DOMAIN_PRIORS['find'](f=>f['domain']===c['domain']);if(!e)continue;b['push']({'domain':e['domain'],'matched_keywords':[],'industries':[...e['industries']],'boost':e['boost'],'source':'semantic_ir'});}return b;}export function mergeDomainPriors(a,b){const c=new Map();for(const d of a){c['set'](d['domain'],{...d,'source':d['source']??'keyword'});}for(const e of b){const f=c['get'](e['domain']);if(!f){c['set'](e['domain'],e);continue;}c['set'](e['domain'],{...f,'matched_keywords':[...new Set([...f['matched_keywords'],...e['matched_keywords']])],'industries':[...new Set([...f['industries'],...e['industries']])],'boost':Math['max'](f['boost'],e['boost']),'source':'both'});}return Array['from'](c['values']());}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{resolveInViewport}from'./repository-write-semantics.js';export const SERVICE_ALLOCATION_SEMANTICS_ANALYZER_ID='SA1';export const ALLOCATION_SEMANTICS_ANALYZER_ID='SA2';function asRecord(a){return a!=null&&typeof a==='object'&&!Array['isArray'](a)?a:undefined;}function recipientOf(a){if(typeof a==='string')return'entity:'+a['toLowerCase']();const b=asRecord(a);if(b){if(b['signer']!=null)return'signer';const c=b['guard_identifier']??b['guardIdentifier']??b['identifier'];if(c!=null)return'guard_identifier:'+String(c);const d=b['address']??b['entity'];if(typeof d==='string')return'entity:'+d['toLowerCase']();}if(typeof a==='number')return'guard_identifier:'+a;return'(unknown\x20recipient)';}function modeOf(a){const b=typeof a==='number'?a:typeof a==='string'?Number(a):NaN;return Number['isNaN'](b)?undefined:b;}function normalizeSharing(a){if(!Array['isArray'](a))return[];return a['map'](b=>{const c=b??{};return{'who':recipientOf(c['who']??c['recipient']),...c['sharing']!=null?{'value':String(c['sharing'])}:{},...modeOf(c['mode'])!==undefined?{'mode':modeOf(c['mode'])}:{}};});}function normalizeAllocators(a){if(!Array['isArray'](a))return[];return a['map'](b=>{const c=b??{},d=normalizeSharing(c['sharing']),e=modeOf(c['mode']),f=e!==undefined?d['map'](g=>g['mode']===undefined?{...g,'mode':e}:g):d;return{...typeof c['guard']==='string'&&c['guard']?{'guard':c['guard']['toLowerCase']()}:{},'sharing':f,...c['fix']!=null?{'fix':String(c['fix'])}:{},...c['max']!=null&&c['max']!==null?{'max':String(c['max'])}:{}};});}export function serviceAllocatorsOf(a){const b=asRecord(a['order_allocators']);if(!b)return[];return normalizeAllocators(b['allocators']);}export function allocationInstanceFactsOf(a){const b=asRecord(a['allocators']),c=asRecord(a['payment_info']),d=e=>typeof e==='string'&&e['length']>0x0?e['toLowerCase']():undefined;return{'allocators':normalizeAllocators(b?.['allocators']),...b&&b['threshold']!=null?{'threshold':String(b['threshold'])}:{},...c&&d(c['for_object'])?{'forObject':d(c['for_object'])}:{},...c&&d(c['for_guard'])?{'forGuard':d(c['for_guard'])}:{}};}const MODE_NAME={0x0:'amount',0x1:'rate',0x2:'surplus',0x3:'rate-gross'};function modeSemantics(a,b){switch(a){case 0x0:return'fixed-amount\x20mode:\x20the\x20allocator\x20moves\x20its\x20configured\x20total'+(b['fix']?'\x20(fix\x20'+b['fix']+')':'')+(b['max']?'\x20capped\x20at\x20'+b['max']:'')+';\x20a\x20run\x20with\x20insufficient\x20balance\x20aborts\x20the\x20whole\x20allocation';case 0x1:return'net\x20rate\x20mode:\x20each\x20row\x20moves\x20share/10000\x20of\x20the\x20EXECUTION-TIME\x20surplus\x20(balance\x20minus\x20the\x20fixed\x20part)\x20—\x20recipient\x20amounts\x20float\x20with\x20the\x20balance\x20at\x20unlock\x20time';case 0x2:return'surplus\x20mode:\x20the\x20row\x20receives\x20whatever\x20remains\x20after\x20the\x20fixed\x20and\x20rated\x20rows\x20are\x20served';case 0x3:return'rate-gross\x20mode:\x20each\x20row\x20moves\x20share/10000\x20of\x20the\x20FULL\x20pool\x20(or\x20the\x20max\x20cap\x20when\x20set)\x20with\x20the\x20fixed\x20part\x20NOT\x20removed\x20—\x20lets\x20fixed\x20Amount\x20rows\x20and\x20percentage-of-total\x20rows\x20coexist\x20exactly';default:return'mode\x20value\x20out\x20of\x20the\x20on-chain\x20range\x20(0/1/2/3)\x20—\x20the\x20configuration\x20cannot\x20exist\x20on-chain';}}function classificationRisks(a,b,c){const d=[];a['forEach']((e,f)=>{const g=[...new Set(e['sharing']['map'](j=>j['mode']??0x0))],h=g['length']===0x1?g[0x0]:undefined;d['push']({'id':'R-ALC-S-01','level':'info','title':'Allocator\x20#'+f+'\x20of\x20'+c+':\x20'+(h!==undefined?MODE_NAME[h]??'mode\x20'+h:'mixed-mode')+'\x20allocation','description':'Unlocking\x20guard\x20'+(e['guard']??'(proposal\x20guard)')+'\x20triggers\x20this\x20allocator\x20—\x20'+modeSemantics(h,e)+'.\x20'+(e['sharing']['length']+'\x20recipient\x20row(s):\x20'+e['sharing']['map'](j=>''+j['who']+(j['value']?'='+j['value']:''))['join'](',\x20')+'.')+(b&&b!=='0'?'\x20The\x20allocation\x20template\x20enforces\x20a\x20minimum\x20run\x20amount\x20of\x20'+b+'.':''),'evidence':'allocator='+f+'\x20guard='+(e['guard']??'?')+'\x20sharing_rows='+e['sharing']['length'],'affected_stakeholders':['owner','buyer'],'confidence':'exact'});});for(let e=0x0;e<a['length'];e++){const f=a[e]['sharing']['filter'](h=>h['mode']===0x1);if(f['length']===0x0)continue;const g=f['reduce']((h,j)=>h+Number(j['value']??0x0),0x0);g!==0x2710&&d['push']({'id':'R-ALC-S-05','level':'info','title':'Allocator\x20#'+e+'\x20of\x20'+c+':\x20rated\x20rows\x20sum\x20to\x20'+g+'/10000','description':'Rate\x20rows\x20are\x20fractions\x20of\x20the\x20execution-time\x20surplus\x20(basis\x2010000).\x20A\x20sum\x20of\x20'+g+'\x20leaves\x20'+(0x2710-g)+'/10000\x20of\x20the\x20surplus\x20unmoved\x20by\x20this\x20allocator\x20per\x20run\x20—\x20intentional\x20residue\x20or\x20a\x20configuration\x20slip?','evidence':'allocator='+e+'\x20rate_sum='+g,'affected_stakeholders':['owner','buyer'],'confidence':'exact'});}return d;}function duplicateGuardRisks(a,b){const c=new Map(),d=[];return a['forEach']((e,f)=>{if(!e['guard'])return;const g=c['get'](e['guard']);g!==undefined?d['push']({'id':'R-ALC-S-04','level':'high','title':'Allocator\x20#'+f+'\x20of\x20'+b+'\x20can\x20never\x20run\x20(duplicate\x20guard)','description':'Guard\x20'+e['guard']+'\x20already\x20drives\x20allocator\x20#'+g+';\x20allocation\x20fires\x20EVERY\x20allocator\x20whose\x20guard\x20equals\x20the\x20unlocking\x20guard\x20(allocation.move:366-368),\x20so\x20this\x20entry\x20STACKS\x20with\x20#'+g+'\x20on\x20the\x20same\x20call\x20—\x20each\x20fires\x20in\x20vector\x20order\x20against\x20the\x20shrinking\x20pool.\x20If\x20they\x20were\x20meant\x20as\x20alternative\x20paths,\x20give\x20this\x20entry\x20a\x20distinct\x20guard;\x20if\x20a\x20waterfall\x20was\x20intended,\x20verify\x20the\x20order\x20matches\x20the\x20payout\x20sequence.','evidence':'guard='+e['guard']+'\x20first='+g+'\x20duplicate='+f,'affected_stakeholders':['owner','buyer'],'confidence':'exact'}):c['set'](e['guard'],f);}),d;}function resolutionRisks(b,c,d){const f=[],g=new Set();for(const h of b){if(!h['guard'])continue;const i=resolveInViewport(h['guard'],d);if(i['status']!=='fetched'){if(g['has'](h['guard']))continue;g['add'](h['guard']);const j=i['status']==='masked'?'present\x20in\x20the\x20graph\x20but\x20ACCESS-GATED\x20for\x20the\x20current\x20viewer':i['status']==='unfetched'?'in\x20the\x20graph\x20but\x20its\x20state\x20is\x20\x22'+i['state']+'\x22':'OUTSIDE\x20the\x20witnessed\x20topology';f['push']({'id':'R-ALC-S-02','level':'medium','title':'Allocator\x20guard\x20unresolved\x20—\x20allocation\x20semantics\x20incomplete','description':'Guard\x20'+h['guard']+'\x20of\x20'+c+'\x20is\x20'+j+':\x20what\x20unlocks\x20this\x20allocator,\x20and\x20therefore\x20when\x20money\x20moves,\x20cannot\x20be\x20assessed.\x20'+(i['status']==='absent'&&i['depthCapped']?'The\x20expansion\x20depth\x20budget\x20was\x20exhausted\x20(default\x20depth\x20is\x204);\x20request\x20a\x20deeper\x20topology\x20read.':i['status']==='absent'?'Request\x20a\x20deeper\x20or\x20wider\x20topology\x20read\x20(raise\x20the\x20exploration\x20depth\x20beyond\x20the\x20default\x204,\x20or\x20widen\x20the\x20expanded\x20edge\x20set).':i['status']==='masked'?'Widen\x20viewer\x20access\x20and\x20re-analyze.':'Retry\x20once\x20the\x20object\x20fetch\x20succeeds.'),'evidence':'guard='+h['guard']+'\x20resolution='+i['status'],'affected_stakeholders':['owner','buyer'],'confidence':'bounded'});continue;}for(const k of d['graph']['out']['get'](h['guard'])??[]){if(k['schema']!=='guard.relies')continue;const l=resolveInViewport(k['to'],d);if(l['status']==='fetched')continue;f['push']({'id':'R-ALC-S-03','level':'medium','title':'Sub-guard\x20of\x20an\x20allocator\x20guard\x20unresolved\x20—\x20condition\x20semantics\x20incomplete','description':'The\x20allocator\x20guard\x20'+h['guard']+'\x20of\x20'+c+'\x20relies\x20on\x20sub-guard\x20'+k['to']+',\x20which\x20is\x20not\x20witnessed\x20as\x20fetched:\x20part\x20of\x20the\x20unlock\x20condition\x20is\x20invisible,\x20so\x20sufficiency\x20of\x20the\x20allocation\x20conditions\x20cannot\x20be\x20confirmed.','evidence':'guard='+h['guard']+'\x20relies='+k['to']+'\x20resolution='+l['status'],'affected_stakeholders':['owner','buyer'],'confidence':'bounded'});}}return f;}function anchoringRisks(a,b){if(a['forObject']||a['forGuard'])return[];return[{'id':'R-ALC-S-06','level':'info','title':b+'\x20is\x20not\x20anchored\x20to\x20a\x20business\x20object','description':'No\x20for_object/for_guard\x20anchoring\x20is\x20configured:\x20ANY\x20payment\x20routed\x20to\x20this\x20allocation\x20(from\x20any\x20source\x20that\x20learns\x20its\x20address)\x20unlocks\x20the\x20allocation\x20guards\x20—\x20the\x20split\x20runs\x20regardless\x20of\x20business\x20context.\x20Anchoring\x20is\x20enforced\x20ONLY\x20when\x20set;\x20leave\x20unanchored\x20only\x20when\x20open\x20routing\x20is\x20intended.','evidence':'for_object=none\x20for_guard=none','affected_stakeholders':['owner','buyer'],'confidence':'exact'}];}function analyzeAllocationSemantics(a,b,c,d){const e=[];if(a['length']===0x0)return e['push']({'id':'R-ALC-S-01','level':'info','title':b['subject']+'\x20has\x20no\x20allocators','description':'No\x20allocator\x20is\x20configured\x20—\x20no\x20split\x20runs\x20when\x20payments\x20settle;\x20funds\x20stay\x20in\x20the\x20host\x20object.\x20Configure\x20allocators\x20if\x20proceeds\x20must\x20be\x20distributed.','evidence':'allocators=0','affected_stakeholders':['owner'],'confidence':'exact'}),e;return e['push'](...classificationRisks(a,b['threshold'],b['subject'])),e['push'](...duplicateGuardRisks(a,b['subject'])),e['push'](...resolutionRisks(a,b['subject'],d)),b['anchored']===![]&&e['push'](...anchoringRisks({'allocators':a},b['subject'])),e;}export function analyzeServiceAllocationSemantics(a,b,c){return analyzeAllocationSemantics(serviceAllocatorsOf(a),{'subject':'service\x20'+b['id']+'\x20order_allocators'},b,c);}export function analyzeAllocationInstanceSemantics(a,b,c){const d=allocationInstanceFactsOf(a);return analyzeAllocationSemantics(d['allocators'],{'subject':'allocation\x20'+b['id'],...d['threshold']?{'threshold':d['threshold']}:{},'anchored':d['forObject']===undefined&&d['forGuard']===undefined?![]:!![]},b,c);}
|
|
1
|
+
import{resolveInViewport}from'./repository-write-semantics.js';export const SERVICE_ALLOCATION_SEMANTICS_ANALYZER_ID='SA1';export const ALLOCATION_SEMANTICS_ANALYZER_ID='SA2';function asRecord(a){return a!=null&&typeof a==='object'&&!Array['isArray'](a)?a:undefined;}function recipientOf(a){if(typeof a==='string')return'entity:'+a['toLowerCase']();const b=asRecord(a);if(b){if(b['signer']!=null)return'signer';const c=b['guard_identifier']??b['guardIdentifier']??b['identifier'];if(c!=null)return'guard_identifier:'+String(c);const d=b['address']??b['entity'];if(typeof d==='string')return'entity:'+d['toLowerCase']();}if(typeof a==='number')return'guard_identifier:'+a;return'(unknown\x20recipient)';}function modeOf(a){const b=typeof a==='number'?a:typeof a==='string'?Number(a):NaN;return Number['isNaN'](b)?undefined:b;}function normalizeSharing(a){if(!Array['isArray'](a))return[];return a['map'](b=>{const c=b??{};return{'who':recipientOf(c['who']??c['recipient']),...c['sharing']!=null?{'value':String(c['sharing'])}:{},...modeOf(c['mode'])!==undefined?{'mode':modeOf(c['mode'])}:{}};});}function normalizeAllocators(a){if(!Array['isArray'](a))return[];return a['map'](b=>{const c=b??{},d=normalizeSharing(c['sharing']),e=modeOf(c['mode']),f=e!==undefined?d['map'](g=>g['mode']===undefined?{...g,'mode':e}:g):d;return{...typeof c['guard']==='string'&&c['guard']?{'guard':c['guard']['toLowerCase']()}:{},'sharing':f,...c['fix']!=null?{'fix':String(c['fix'])}:{},...c['max']!=null&&c['max']!==null?{'max':String(c['max'])}:{}};});}export function serviceAllocatorsOf(a){const b=asRecord(a['order_allocators']);if(!b)return[];return normalizeAllocators(b['allocators']);}export function allocationInstanceFactsOf(a){const b=asRecord(a['allocators']),c=asRecord(a['payment_info']),d=e=>typeof e==='string'&&e['length']>0x0?e['toLowerCase']():undefined;return{'allocators':normalizeAllocators(b?.['allocators']),...b&&b['threshold']!=null?{'threshold':String(b['threshold'])}:{},...c&&d(c['for_object'])?{'forObject':d(c['for_object'])}:{},...c&&d(c['for_guard'])?{'forGuard':d(c['for_guard'])}:{}};}const MODE_NAME={0x0:'amount',0x1:'rate',0x2:'surplus',0x3:'rate-gross'};function modeSemantics(a,b){switch(a){case 0x0:return'fixed-amount\x20mode:\x20the\x20allocator\x20moves\x20its\x20configured\x20total'+(b['fix']?'\x20(fix\x20'+b['fix']+')':'')+(b['max']?'\x20capped\x20at\x20'+b['max']:'')+';\x20a\x20run\x20with\x20insufficient\x20balance\x20aborts\x20the\x20whole\x20allocation';case 0x1:return'net\x20rate\x20mode:\x20each\x20row\x20moves\x20share/10000\x20of\x20the\x20EXECUTION-TIME\x20surplus\x20(balance\x20minus\x20the\x20fixed\x20part)\x20—\x20recipient\x20amounts\x20float\x20with\x20the\x20balance\x20at\x20unlock\x20time';case 0x2:return'surplus\x20mode:\x20the\x20row\x20receives\x20whatever\x20remains\x20after\x20the\x20fixed\x20and\x20rated\x20rows\x20are\x20served';case 0x3:return'rate-gross\x20mode:\x20each\x20row\x20moves\x20share/10000\x20of\x20the\x20FULL\x20pool\x20(or\x20the\x20max\x20cap\x20when\x20set)\x20with\x20the\x20fixed\x20part\x20NOT\x20removed\x20—\x20lets\x20fixed\x20Amount\x20rows\x20and\x20percentage-of-total\x20rows\x20coexist\x20exactly';default:return'mode\x20value\x20out\x20of\x20the\x20on-chain\x20range\x20(0/1/2/3)\x20—\x20the\x20configuration\x20cannot\x20exist\x20on-chain';}}function classificationRisks(a,b,c){const d=[];a['forEach']((e,f)=>{const g=[...new Set(e['sharing']['map'](j=>j['mode']??0x0))],h=g['length']===0x1?g[0x0]:undefined;d['push']({'id':'R-ALC-S-01','level':'info','title':'Allocator\x20#'+f+'\x20of\x20'+c+':\x20'+(h!==undefined?MODE_NAME[h]??'mode\x20'+h:'mixed-mode')+'\x20allocation','description':'Unlocking\x20guard\x20'+(e['guard']??'(proposal\x20guard)')+'\x20triggers\x20this\x20allocator\x20—\x20'+modeSemantics(h,e)+'.\x20'+(e['sharing']['length']+'\x20recipient\x20row(s):\x20'+e['sharing']['map'](j=>''+j['who']+(j['value']?'='+j['value']:''))['join'](',\x20')+'.')+(b&&b!=='0'?'\x20The\x20allocation\x20template\x20enforces\x20a\x20minimum\x20run\x20amount\x20of\x20'+b+'.':''),'evidence':'allocator='+f+'\x20guard='+(e['guard']??'?')+'\x20sharing_rows='+e['sharing']['length'],'affected_stakeholders':['owner','buyer'],'confidence':'exact'});});for(let e=0x0;e<a['length'];e++){const f=a[e]['sharing']['filter'](h=>h['mode']===0x1);if(f['length']===0x0)continue;const g=f['reduce']((h,j)=>h+Number(j['value']??0x0),0x0);g!==0x2710&&d['push']({'id':'R-ALC-S-05','level':'info','title':'Allocator\x20#'+e+'\x20of\x20'+c+':\x20rated\x20rows\x20sum\x20to\x20'+g+'/10000','description':'Rate\x20rows\x20are\x20fractions\x20of\x20the\x20execution-time\x20surplus\x20(basis\x2010000).\x20A\x20sum\x20of\x20'+g+'\x20leaves\x20'+(0x2710-g)+'/10000\x20of\x20the\x20surplus\x20unmoved\x20by\x20this\x20allocator\x20per\x20run\x20—\x20intentional\x20residue\x20or\x20a\x20configuration\x20slip?','evidence':'allocator='+e+'\x20rate_sum='+g,'affected_stakeholders':['owner','buyer'],'confidence':'exact'});}return d;}function duplicateGuardRisks(a,b){const c=new Map(),d=[];return a['forEach']((e,f)=>{if(!e['guard'])return;const g=c['get'](e['guard']);g!==undefined?d['push']({'id':'R-ALC-S-04','level':'high','title':'Allocator\x20#'+f+'\x20of\x20'+b+'\x20can\x20never\x20run\x20(duplicate\x20guard)','description':'Guard\x20'+e['guard']+'\x20already\x20drives\x20allocator\x20#'+g+';\x20allocation\x20fires\x20EVERY\x20allocator\x20whose\x20guard\x20equals\x20the\x20unlocking\x20guard\x20(the\x20on-chain\x20distribution\x20loop),\x20so\x20this\x20entry\x20STACKS\x20with\x20#'+g+'\x20on\x20the\x20same\x20call\x20—\x20each\x20fires\x20in\x20vector\x20order\x20against\x20the\x20shrinking\x20pool.\x20If\x20they\x20were\x20meant\x20as\x20alternative\x20paths,\x20give\x20this\x20entry\x20a\x20distinct\x20guard;\x20if\x20a\x20waterfall\x20was\x20intended,\x20verify\x20the\x20order\x20matches\x20the\x20payout\x20sequence.','evidence':'guard='+e['guard']+'\x20first='+g+'\x20duplicate='+f,'affected_stakeholders':['owner','buyer'],'confidence':'exact'}):c['set'](e['guard'],f);}),d;}function resolutionRisks(b,c,d){const f=[],g=new Set();for(const h of b){if(!h['guard'])continue;const i=resolveInViewport(h['guard'],d);if(i['status']!=='fetched'){if(g['has'](h['guard']))continue;g['add'](h['guard']);const j=i['status']==='masked'?'present\x20in\x20the\x20graph\x20but\x20ACCESS-GATED\x20for\x20the\x20current\x20viewer':i['status']==='unfetched'?'in\x20the\x20graph\x20but\x20its\x20state\x20is\x20\x22'+i['state']+'\x22':'OUTSIDE\x20the\x20witnessed\x20topology';f['push']({'id':'R-ALC-S-02','level':'medium','title':'Allocator\x20guard\x20unresolved\x20—\x20allocation\x20semantics\x20incomplete','description':'Guard\x20'+h['guard']+'\x20of\x20'+c+'\x20is\x20'+j+':\x20what\x20unlocks\x20this\x20allocator,\x20and\x20therefore\x20when\x20money\x20moves,\x20cannot\x20be\x20assessed.\x20'+(i['status']==='absent'&&i['depthCapped']?'The\x20expansion\x20depth\x20budget\x20was\x20exhausted\x20(default\x20depth\x20is\x204);\x20request\x20a\x20deeper\x20topology\x20read.':i['status']==='absent'?'Request\x20a\x20deeper\x20or\x20wider\x20topology\x20read\x20(raise\x20the\x20exploration\x20depth\x20beyond\x20the\x20default\x204,\x20or\x20widen\x20the\x20expanded\x20edge\x20set).':i['status']==='masked'?'Widen\x20viewer\x20access\x20and\x20re-analyze.':'Retry\x20once\x20the\x20object\x20fetch\x20succeeds.'),'evidence':'guard='+h['guard']+'\x20resolution='+i['status'],'affected_stakeholders':['owner','buyer'],'confidence':'bounded'});continue;}for(const k of d['graph']['out']['get'](h['guard'])??[]){if(k['schema']!=='guard.relies')continue;const l=resolveInViewport(k['to'],d);if(l['status']==='fetched')continue;f['push']({'id':'R-ALC-S-03','level':'medium','title':'Sub-guard\x20of\x20an\x20allocator\x20guard\x20unresolved\x20—\x20condition\x20semantics\x20incomplete','description':'The\x20allocator\x20guard\x20'+h['guard']+'\x20of\x20'+c+'\x20relies\x20on\x20sub-guard\x20'+k['to']+',\x20which\x20is\x20not\x20witnessed\x20as\x20fetched:\x20part\x20of\x20the\x20unlock\x20condition\x20is\x20invisible,\x20so\x20sufficiency\x20of\x20the\x20allocation\x20conditions\x20cannot\x20be\x20confirmed.','evidence':'guard='+h['guard']+'\x20relies='+k['to']+'\x20resolution='+l['status'],'affected_stakeholders':['owner','buyer'],'confidence':'bounded'});}}return f;}function anchoringRisks(a,b){if(a['forObject']||a['forGuard'])return[];return[{'id':'R-ALC-S-06','level':'info','title':b+'\x20is\x20not\x20anchored\x20to\x20a\x20business\x20object','description':'No\x20for_object/for_guard\x20anchoring\x20is\x20configured:\x20ANY\x20payment\x20routed\x20to\x20this\x20allocation\x20(from\x20any\x20source\x20that\x20learns\x20its\x20address)\x20unlocks\x20the\x20allocation\x20guards\x20—\x20the\x20split\x20runs\x20regardless\x20of\x20business\x20context.\x20Anchoring\x20is\x20enforced\x20ONLY\x20when\x20set;\x20leave\x20unanchored\x20only\x20when\x20open\x20routing\x20is\x20intended.','evidence':'for_object=none\x20for_guard=none','affected_stakeholders':['owner','buyer'],'confidence':'exact'}];}function analyzeAllocationSemantics(a,b,c,d){const e=[];if(a['length']===0x0)return e['push']({'id':'R-ALC-S-01','level':'info','title':b['subject']+'\x20has\x20no\x20allocators','description':'No\x20allocator\x20is\x20configured\x20—\x20no\x20split\x20runs\x20when\x20payments\x20settle;\x20funds\x20stay\x20in\x20the\x20host\x20object.\x20Configure\x20allocators\x20if\x20proceeds\x20must\x20be\x20distributed.','evidence':'allocators=0','affected_stakeholders':['owner'],'confidence':'exact'}),e;return e['push'](...classificationRisks(a,b['threshold'],b['subject'])),e['push'](...duplicateGuardRisks(a,b['subject'])),e['push'](...resolutionRisks(a,b['subject'],d)),b['anchored']===![]&&e['push'](...anchoringRisks({'allocators':a},b['subject'])),e;}export function analyzeServiceAllocationSemantics(a,b,c){return analyzeAllocationSemantics(serviceAllocatorsOf(a),{'subject':'service\x20'+b['id']+'\x20order_allocators'},b,c);}export function analyzeAllocationInstanceSemantics(a,b,c){const d=allocationInstanceFactsOf(a);return analyzeAllocationSemantics(d['allocators'],{'subject':'allocation\x20'+b['id'],...d['threshold']?{'threshold':d['threshold']}:{},'anchored':d['forObject']===undefined&&d['forGuard']===undefined?![]:!![]},b,c);}
|
|
@@ -58,7 +58,7 @@ export declare const SERVICE_LISTING_REFUND_GATES: {
|
|
|
58
58
|
readonly rationale: "A zero-priced listing plus an allocation-free 0-amount order produced stores whose entire economics live outside the chain. Repricing an EXISTING sale down to zero stays legal and is caught at buy time by the zero-total order gate.";
|
|
59
59
|
};
|
|
60
60
|
readonly restock: {
|
|
61
|
-
readonly rule: "Refund restocking is opt-in per SKU: the merchant marks an ALIVE sale with the restock flag (305), then a refunded order's purchased units can be put back on shelf (305). Two-pass on-chain (validate every line, then apply) — ALL lines restock or NOTHING mutates. Unflagged or delisted lines abort E_RESTOCK_NOT_FLAGGED = 46 / E_SALE_ITEM_NOT_FOUND. Quantities come from the order's purchase rows. ONCE-PER-ORDER: the restock operation stamps the order with a RestockStamp dynamic field and a second call for the same order aborts E_RESTOCK_ALREADY_APPLIED = 49 (a replay would stack the purchased units again, an unbounded +quantity). OWNERSHIP-BOUND: only an order whose service field is THIS service restocks here — a foreign order aborts E_ORDER_SERVICE_NOT_MATCH = 26. The applied state
|
|
61
|
+
readonly rule: "Refund restocking is opt-in per SKU: the merchant marks an ALIVE sale with the restock flag (305), then a refunded order's purchased units can be put back on shelf (305). Two-pass on-chain (validate every line, then apply) — ALL lines restock or NOTHING mutates. Unflagged or delisted lines abort E_RESTOCK_NOT_FLAGGED = 46 / E_SALE_ITEM_NOT_FOUND. Quantities come from the order's purchase rows. ONCE-PER-ORDER: the restock operation stamps the order with a RestockStamp dynamic field and a second call for the same order aborts E_RESTOCK_ALREADY_APPLIED = 49 (a replay would stack the purchased units again, an unbounded +quantity). OWNERSHIP-BOUND: only an order whose service field is THIS service restocks here — a foreign order aborts E_ORDER_SERVICE_NOT_MATCH = 26. The applied state lives in a RestockStamp dynamic field on the service (no public query primitive); the MCP restock op:'order' pre-gate reads that stamp pre-send and refuses a replay without burning gas.";
|
|
62
62
|
readonly events: "StockRestockedEvent per line (service, order, item, quantity, time).";
|
|
63
63
|
};
|
|
64
64
|
readonly dismissal_conclusion: {
|