@wowok/agent-mcp 3.4.3 → 3.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-stamp.json +3 -3
- package/dist/build-stamp.js +1 -0
- package/dist/chain-semantics/composition-truth.js +1 -1
- package/dist/chain-semantics/eval-order.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/object-graph.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.js +1 -1
- package/dist/composition/emit-phases.js +1 -1
- package/dist/composition/generate.js +1 -1
- package/dist/composition/guard-fill.js +1 -1
- package/dist/composition/input-normalize.js +1 -1
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/mode-gates.js +1 -1
- package/dist/composition/plan.js +1 -1
- package/dist/composition/product-card.js +1 -1
- package/dist/composition/shape-expand.js +1 -0
- package/dist/config/judgment.js +1 -1
- package/dist/config/template-params.js +1 -1
- package/dist/data/sync/cdc.js +1 -1
- package/dist/data/sync/graphql-source.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/sdk-batch.js +1 -1
- package/dist/harness/entry-ignite-selfheal.js +1 -0
- package/dist/harness/forward-leg-preflight.js +1 -0
- package/dist/harness/recover.js +1 -1
- package/dist/keeper/detectors.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arb-operation-face.js +1 -0
- package/dist/knowledge/arbitration-rail-verifier.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +15 -0
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/alloc_audit.json.good +310 -0
- package/dist/knowledge/baselines/rules/allocation.json.good +568 -0
- package/dist/knowledge/baselines/rules/arb.json.good +174 -0
- package/dist/knowledge/baselines/rules/arbitration.json.good +393 -0
- package/dist/knowledge/baselines/rules/bridge.json.good +197 -0
- package/dist/knowledge/baselines/rules/contact.json.good +152 -0
- package/dist/knowledge/baselines/rules/demand.json.good +158 -0
- package/dist/knowledge/baselines/rules/graph.json.good +534 -0
- package/dist/knowledge/baselines/rules/guard.json +18 -5
- package/dist/knowledge/baselines/rules/guard.json.good +1192 -0
- package/dist/knowledge/baselines/rules/machine.json.good +734 -0
- package/dist/knowledge/baselines/rules/oracle.json +1 -1
- package/dist/knowledge/baselines/rules/oracle.json.good +120 -0
- package/dist/knowledge/baselines/rules/order.json.good +549 -0
- package/dist/knowledge/baselines/rules/payment.json.good +205 -0
- package/dist/knowledge/baselines/rules/permission.json.good +330 -0
- package/dist/knowledge/baselines/rules/personal.json.good +139 -0
- package/dist/knowledge/baselines/rules/plan.json +343 -1
- package/dist/knowledge/baselines/rules/plan.json.good +1187 -0
- package/dist/knowledge/baselines/rules/progress.json.good +364 -0
- package/dist/knowledge/baselines/rules/proof.json.good +158 -0
- package/dist/knowledge/baselines/rules/registrar.json.good +159 -0
- package/dist/knowledge/baselines/rules/repository.json.good +244 -0
- package/dist/knowledge/baselines/rules/resource.json.good +117 -0
- package/dist/knowledge/baselines/rules/reward.json +10 -10
- package/dist/knowledge/baselines/rules/reward.json.good +586 -0
- package/dist/knowledge/baselines/rules/service.json.good +595 -0
- package/dist/knowledge/baselines/rules/treasury.json.good +440 -0
- package/dist/knowledge/baselines/rules/util.json.good +101 -0
- package/dist/knowledge/builtin-templates.d.ts +13 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/chain-query-registry.js +1 -1
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/fee-param-bindings.js +1 -1
- package/dist/knowledge/fund-layer.d.ts +2 -0
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-binding-table.js +1 -1
- package/dist/knowledge/guard-binding-verifier.js +1 -1
- package/dist/knowledge/guard-create-preflight.js +1 -0
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-host-context.js +1 -1
- package/dist/knowledge/guard-leg-eval.js +1 -0
- package/dist/knowledge/guard-node-gates.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-quality.js +1 -0
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-semantic-walk.js +1 -0
- package/dist/knowledge/guard-templates.d.ts +1 -0
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/param-schema.js +1 -1
- package/dist/knowledge/param-tiers.js +1 -1
- package/dist/knowledge/path-oracle/coverage.js +1 -1
- package/dist/knowledge/path-oracle/index.js +1 -1
- package/dist/knowledge/path-oracle/products/airbnb.js +1 -0
- package/dist/knowledge/path-oracle/products/algora.js +1 -0
- package/dist/knowledge/path-oracle/products/alibaba-1688.js +1 -0
- package/dist/knowledge/path-oracle/products/amazon.js +1 -0
- package/dist/knowledge/path-oracle/products/beatstars.js +1 -0
- package/dist/knowledge/path-oracle/products/booking-com.js +1 -0
- package/dist/knowledge/path-oracle/products/contra.js +1 -0
- package/dist/knowledge/path-oracle/products/costco.js +1 -0
- package/dist/knowledge/path-oracle/products/coursera.js +1 -0
- package/dist/knowledge/path-oracle/products/duoduo-maicai.js +1 -0
- package/dist/knowledge/path-oracle/products/etsy.js +1 -0
- package/dist/knowledge/path-oracle/products/food-delivery.js +1 -1
- package/dist/knowledge/path-oracle/products/gamefound.js +1 -0
- package/dist/knowledge/path-oracle/products/gofundme.js +1 -0
- package/dist/knowledge/path-oracle/products/hackerone.js +1 -0
- package/dist/knowledge/path-oracle/products/kickstarter.js +1 -0
- package/dist/knowledge/path-oracle/products/klook.js +1 -0
- package/dist/knowledge/path-oracle/products/ninety-nine-designs.js +1 -0
- package/dist/knowledge/path-oracle/products/onlyfans.js +1 -0
- package/dist/knowledge/path-oracle/products/patreon.js +1 -0
- package/dist/knowledge/path-oracle/products/pinduoduo-kuaituantuan.js +1 -0
- package/dist/knowledge/path-oracle/products/royalty-exchange.js +1 -0
- package/dist/knowledge/path-oracle/products/shansong.js +1 -0
- package/dist/knowledge/path-oracle/products/taobao-presale.js +1 -0
- package/dist/knowledge/path-oracle/products/upwork-catalog.js +1 -0
- package/dist/knowledge/path-oracle/products/upwork.js +1 -0
- package/dist/knowledge/path-oracle/products/yuanfudao.js +1 -0
- package/dist/knowledge/path-oracle/products/ziroom.js +1 -0
- package/dist/knowledge/pattern-resolutions.js +1 -1
- package/dist/knowledge/product-detail-source.js +1 -1
- package/dist/knowledge/product-doc-b5.js +1 -1
- package/dist/knowledge/product-doc-facets.js +1 -0
- package/dist/knowledge/projection.js +1 -1
- package/dist/knowledge/publish-gate.js +1 -1
- package/dist/knowledge/publish-surface-contract.js +1 -1
- package/dist/knowledge/recipient-constraint.d.ts +20 -0
- package/dist/knowledge/recipient-constraint.js +1 -1
- package/dist/knowledge/rule-declaration-types.d.ts +13 -0
- package/dist/knowledge/rule-declaration-types.js +1 -0
- package/dist/knowledge/rule-declarations.js +1 -0
- package/dist/knowledge/scenario-modes.d.ts +6 -0
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-prose.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/service.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +9 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/arbitration.d.ts +8 -0
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +8 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +2 -0
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/handler.d.ts +2 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/order.d.ts +10 -0
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/permission.js +1 -1
- package/dist/schema/call/progress.d.ts +15 -0
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/receipt.d.ts +1 -0
- package/dist/schema/call/receipt.js +1 -1
- package/dist/schema/call/repository.d.ts +12 -0
- package/dist/schema/call/repository.js +1 -1
- 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 +5 -3
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/envelope-unify.js +1 -1
- package/dist/schema/goal/index.d.ts +23 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +2 -2
- package/dist/schema/local/index.d.ts +20 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.d.ts +4 -0
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +5 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +944 -1
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +5 -5
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/workspace/index.d.ts +2 -2
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.schema.json +1 -257
- package/dist/schemas/ask_user.schema.json +1 -78
- package/dist/schemas/benchmark_migration_operation.schema.json +1 -626
- package/dist/schemas/bridge_operation.schema.json +1 -1069
- package/dist/schemas/config_operation.schema.json +1 -82
- package/dist/schemas/employee_operation.schema.json +1 -319
- package/dist/schemas/evaluation_operation.schema.json +1 -3932
- package/dist/schemas/goal_operation.schema.json +1 -1650
- package/dist/schemas/guard2file.schema.json +1 -137
- package/dist/schemas/index.json +1 -285
- package/dist/schemas/industry_pack_operation.schema.json +1 -582
- package/dist/schemas/intent_radar.schema.json +1 -155
- package/dist/schemas/keeper_operation.schema.json +1 -364
- package/dist/schemas/local_cache_operation.schema.json +1 -116
- package/dist/schemas/local_history_operation.schema.json +1 -105
- package/dist/schemas/local_info_operation.schema.json +1 -140
- package/dist/schemas/local_mark_operation.schema.json +1 -124
- package/dist/schemas/machineNode2file.schema.json +1 -137
- package/dist/schemas/messenger_operation.schema.json +1 -2068
- package/dist/schemas/monitor_events.schema.json +1 -87
- package/dist/schemas/monitor_subscription.schema.json +1 -327
- package/dist/schemas/onchain_events.schema.json +1 -207
- package/dist/schemas/onchain_operations.schema.json +1 -28699
- package/dist/schemas/onchain_operations_allocation.schema.json +1 -1376
- package/dist/schemas/onchain_operations_arbitration.schema.json +1 -1355
- package/dist/schemas/onchain_operations_contact.schema.json +1 -988
- package/dist/schemas/onchain_operations_demand.schema.json +1 -1146
- package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -663
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -180
- package/dist/schemas/onchain_operations_guard.schema.json +1 -8518
- package/dist/schemas/onchain_operations_machine.schema.json +1 -1879
- package/dist/schemas/onchain_operations_order.schema.json +1 -1121
- package/dist/schemas/onchain_operations_payment.schema.json +1 -316
- package/dist/schemas/onchain_operations_permission.schema.json +1 -1036
- package/dist/schemas/onchain_operations_personal.schema.json +1 -1463
- package/dist/schemas/onchain_operations_progress.schema.json +1 -1041
- package/dist/schemas/onchain_operations_proof.schema.json +1 -750
- package/dist/schemas/onchain_operations_repository.schema.json +1 -2046
- package/dist/schemas/onchain_operations_reward.schema.json +1 -1286
- package/dist/schemas/onchain_operations_service.schema.json +1 -2602
- package/dist/schemas/onchain_operations_treasury.schema.json +1 -1527
- package/dist/schemas/onchain_table_data.schema.json +1 -1146
- package/dist/schemas/permission_operation.schema.json +1 -43
- package/dist/schemas/persona_operation.schema.json +1 -10424
- package/dist/schemas/query_toolkit.schema.json +1 -1867
- package/dist/schemas/schema_query.schema.json +1 -116
- package/dist/schemas/service_clone_operation.schema.json +1 -49
- package/dist/schemas/settle_sweep.schema.json +1 -0
- package/dist/schemas/strategy_review_operation.schema.json +1 -66
- package/dist/schemas/verify_guard_dry_run.schema.json +1 -0
- package/dist/schemas/watch_operation.schema.json +1 -145
- package/dist/schemas/wip_file.schema.json +1 -299
- package/dist/schemas/workflow_operation.schema.json +1 -722
- package/dist/schemas/workspace_operation.schema.json +1 -104
- package/dist/schemas/wowok_buildin_info.schema.json +1 -758
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/entry-edge-recipe.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/pending-settlement-recipe.js +1 -0
- package/dist/tools/handlers/plan-recovery.js +1 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/repository-row-id.js +1 -0
- package/dist/tools/handlers/review-chain.js +1 -1
- package/dist/tools/handlers/settle-sweep.js +1 -0
- package/dist/tools/handlers/stale-build-check.js +1 -1
- package/dist/tools/handlers/submission-assembly.js +1 -1
- package/dist/tools/handlers/verify-guard-dry-run.js +1 -0
- package/dist/tools/handlers/wip-upload.js +1 -1
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/publish-gate-state.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +11 -4
- package/dist/chain-semantics/composition-truth.d.ts +0 -102
- package/dist/chain-semantics/eval-order.d.ts +0 -17
- package/dist/chain-semantics/field-capability.d.ts +0 -11
- package/dist/chain-semantics/freeze-map.d.ts +0 -11
- package/dist/chain-semantics/fund-flow.d.ts +0 -10
- package/dist/chain-semantics/guard-verbs.d.ts +0 -22
- package/dist/chain-semantics/index.d.ts +0 -12
- package/dist/chain-semantics/object-graph.d.ts +0 -18
- package/dist/communication/evidence.d.ts +0 -6
- package/dist/communication/message-cursors.d.ts +0 -35
- package/dist/communication/proof-reuse.d.ts +0 -9
- package/dist/communication/wts-attestation.d.ts +0 -39
- package/dist/composition/audit.d.ts +0 -15
- package/dist/composition/blueprint-view.d.ts +0 -63
- package/dist/composition/compile.d.ts +0 -83
- package/dist/composition/emit-phases.d.ts +0 -234
- package/dist/composition/generate.d.ts +0 -40
- package/dist/composition/guard-fill.d.ts +0 -52
- package/dist/composition/inflight.d.ts +0 -86
- package/dist/composition/input-normalize.d.ts +0 -15
- package/dist/composition/materialize.d.ts +0 -78
- package/dist/composition/mode-gates.d.ts +0 -35
- package/dist/composition/param-disclosure.d.ts +0 -61
- package/dist/composition/plan-retry-ledger.d.ts +0 -37
- package/dist/composition/plan.d.ts +0 -121
- package/dist/composition/product-card.d.ts +0 -94
- package/dist/composition/reflux.d.ts +0 -28
- package/dist/composition/supply-chain-emit.d.ts +0 -46
- package/dist/config/config-audit.spec.d.ts +0 -1
- package/dist/config/config-audit.spec.js +0 -1
- package/dist/config/config-warnings.d.ts +0 -2
- package/dist/config/index.d.ts +0 -4
- package/dist/config/judgment.spec.d.ts +0 -1
- package/dist/config/judgment.spec.js +0 -1
- package/dist/config/match-policy-file.d.ts +0 -34
- package/dist/config/match-policy-file.spec.d.ts +0 -1
- package/dist/config/match-policy-file.spec.js +0 -1
- package/dist/config/rule-engine.spec.d.ts +0 -1
- package/dist/config/rule-engine.spec.js +0 -1
- package/dist/config/runtime.d.ts +0 -29
- package/dist/config/store-policy.d.ts +0 -14
- package/dist/config/store-policy.spec.d.ts +0 -1
- package/dist/config/store-policy.spec.js +0 -1
- package/dist/config/template-params.d.ts +0 -42
- package/dist/config/template-params.spec.d.ts +0 -1
- package/dist/config/template-params.spec.js +0 -1
- package/dist/customer/account-events.d.ts +0 -32
- package/dist/data/api/api.spec.d.ts +0 -1
- package/dist/data/api/api.spec.js +0 -1
- package/dist/data/api/cli.d.ts +0 -1
- package/dist/data/api/head.d.ts +0 -16
- package/dist/data/api/head.spec.d.ts +0 -1
- package/dist/data/api/head.spec.js +0 -1
- package/dist/data/api/index.d.ts +0 -2
- package/dist/data/api/match.d.ts +0 -69
- package/dist/data/api/match.spec.d.ts +0 -1
- package/dist/data/api/match.spec.js +0 -1
- package/dist/data/api/server.d.ts +0 -13
- package/dist/data/projection/cli.d.ts +0 -1
- package/dist/data/projection/edges.d.ts +0 -8
- package/dist/data/projection/edges.spec.d.ts +0 -1
- package/dist/data/projection/edges.spec.js +0 -1
- package/dist/data/projection/facets.d.ts +0 -18
- package/dist/data/projection/facets.spec.d.ts +0 -1
- package/dist/data/projection/facets.spec.js +0 -1
- package/dist/data/projection/facts.d.ts +0 -40
- package/dist/data/projection/index.d.ts +0 -6
- package/dist/data/projection/project.d.ts +0 -10
- package/dist/data/projection/projection.spec.d.ts +0 -1
- package/dist/data/projection/projection.spec.js +0 -1
- package/dist/data/projection/schema.d.ts +0 -1
- package/dist/data/projection/store.d.ts +0 -51
- package/dist/data/projection/types.d.ts +0 -169
- package/dist/data/sync/cdc.d.ts +0 -33
- package/dist/data/sync/cdc.spec.d.ts +0 -1
- package/dist/data/sync/cdc.spec.js +0 -1
- package/dist/data/sync/graphql-source.d.ts +0 -16
- package/dist/data/sync/index.d.ts +0 -5
- package/dist/data/sync/reconciler.d.ts +0 -14
- package/dist/data/sync/reconciler.spec.d.ts +0 -1
- package/dist/data/sync/reconciler.spec.js +0 -1
- package/dist/data/sync/schema.d.ts +0 -1
- package/dist/data/sync/store.d.ts +0 -24
- package/dist/data/sync/sync.spec.d.ts +0 -1
- package/dist/data/sync/sync.spec.js +0 -1
- package/dist/data/sync/synchronizer.d.ts +0 -10
- package/dist/data/sync/types.d.ts +0 -164
- package/dist/evaluation/acceptance.d.ts +0 -33
- package/dist/evaluation/architecture.spec.d.ts +0 -1
- package/dist/evaluation/architecture.spec.js +0 -1
- package/dist/evaluation/builtins/arbitration-score.d.ts +0 -42
- package/dist/evaluation/builtins/demand-match.d.ts +0 -16
- package/dist/evaluation/builtins/graph-service.spec.d.ts +0 -1
- package/dist/evaluation/builtins/graph-service.spec.js +0 -1
- package/dist/evaluation/builtins/index.d.ts +0 -4
- package/dist/evaluation/builtins/purity.spec.d.ts +0 -1
- package/dist/evaluation/builtins/purity.spec.js +0 -1
- package/dist/evaluation/composer.d.ts +0 -38
- package/dist/evaluation/facets/catalog.d.ts +0 -19
- package/dist/evaluation/gap.d.ts +0 -2
- package/dist/evaluation/guard-scan.d.ts +0 -10
- package/dist/evaluation/index.d.ts +0 -14
- package/dist/evaluation/injection.d.ts +0 -6
- package/dist/evaluation/location-match.d.ts +0 -42
- package/dist/evaluation/match-operation.d.ts +0 -23
- package/dist/evaluation/match-policy-resolver.d.ts +0 -9
- package/dist/evaluation/match-policy.spec.d.ts +0 -1
- package/dist/evaluation/match-policy.spec.js +0 -1
- package/dist/evaluation/path-reasoning.d.ts +0 -37
- package/dist/evaluation/standards.d.ts +0 -11
- package/dist/evaluation/standards.spec.d.ts +0 -1
- package/dist/evaluation/standards.spec.js +0 -1
- package/dist/evaluation/structured-lines.d.ts +0 -8
- package/dist/evaluation/user-injection.d.ts +0 -6
- package/dist/experience/experience-reuse.d.ts +0 -10
- package/dist/experience/index.d.ts +0 -7
- package/dist/experience/persistence-config.d.ts +0 -6
- package/dist/experience/persistence.d.ts +0 -21
- package/dist/experience/realtime-feedback.d.ts +0 -5
- package/dist/experience/user-profile.d.ts +0 -25
- package/dist/extensions/capability.d.ts +0 -91
- package/dist/extensions/industry-audit.spec.d.ts +0 -1
- package/dist/extensions/industry-audit.spec.js +0 -1
- package/dist/goal/GoalClassifier.d.ts +0 -17
- package/dist/goal/GoalEngine.d.ts +0 -175
- package/dist/goal/GoalStore.d.ts +0 -27
- package/dist/goal/next-steps.d.ts +0 -12
- package/dist/goal/plan-approval.d.ts +0 -5
- package/dist/goal/pursue.d.ts +0 -18
- package/dist/graph/base.d.ts +0 -8
- package/dist/graph/onchain/analyze.d.ts +0 -59
- package/dist/graph/onchain/analyze.spec.d.ts +0 -1
- package/dist/graph/onchain/analyze.spec.js +0 -1
- package/dist/graph/onchain/anti-cheat.d.ts +0 -69
- package/dist/graph/onchain/anti-cheat.spec.d.ts +0 -1
- package/dist/graph/onchain/anti-cheat.spec.js +0 -1
- package/dist/graph/onchain/dataplane.d.ts +0 -44
- package/dist/graph/onchain/edge-batch.spec.d.ts +0 -1
- package/dist/graph/onchain/edge-batch.spec.js +0 -1
- package/dist/graph/onchain/edge-schema.d.ts +0 -69
- package/dist/graph/onchain/entity-profile.spec.d.ts +0 -1
- package/dist/graph/onchain/entity-profile.spec.js +0 -1
- package/dist/graph/onchain/event-history.spec.d.ts +0 -1
- package/dist/graph/onchain/event-history.spec.js +0 -1
- package/dist/graph/onchain/expand.d.ts +0 -4
- package/dist/graph/onchain/exploration.d.ts +0 -28
- package/dist/graph/onchain/exploration.spec.d.ts +0 -1
- package/dist/graph/onchain/exploration.spec.js +0 -1
- package/dist/graph/onchain/exposure.d.ts +0 -18
- package/dist/graph/onchain/exposure.spec.d.ts +0 -1
- package/dist/graph/onchain/exposure.spec.js +0 -1
- package/dist/graph/onchain/extract-deep.spec.d.ts +0 -1
- package/dist/graph/onchain/extract-deep.spec.js +0 -1
- package/dist/graph/onchain/extract.d.ts +0 -29
- package/dist/graph/onchain/facet-projection.d.ts +0 -99
- package/dist/graph/onchain/facet-projection.spec.d.ts +0 -1
- package/dist/graph/onchain/facet-projection.spec.js +0 -1
- package/dist/graph/onchain/facts.spec.d.ts +0 -1
- package/dist/graph/onchain/facts.spec.js +0 -1
- package/dist/graph/onchain/field-manifest.d.ts +0 -29
- package/dist/graph/onchain/field-manifest.spec.d.ts +0 -1
- package/dist/graph/onchain/field-manifest.spec.js +0 -1
- package/dist/graph/onchain/fixtures.d.ts +0 -80
- package/dist/graph/onchain/fixtures.spec.d.ts +0 -1
- package/dist/graph/onchain/fixtures.spec.js +0 -1
- package/dist/graph/onchain/graph-policy.spec.d.ts +0 -1
- package/dist/graph/onchain/graph-policy.spec.js +0 -1
- package/dist/graph/onchain/index.d.ts +0 -29
- package/dist/graph/onchain/interest.d.ts +0 -10
- package/dist/graph/onchain/interest.spec.d.ts +0 -1
- package/dist/graph/onchain/interest.spec.js +0 -1
- package/dist/graph/onchain/label-lint.spec.d.ts +0 -1
- package/dist/graph/onchain/label-lint.spec.js +0 -1
- package/dist/graph/onchain/names.d.ts +0 -23
- package/dist/graph/onchain/names.spec.d.ts +0 -1
- package/dist/graph/onchain/names.spec.js +0 -1
- package/dist/graph/onchain/object-held-receipts.d.ts +0 -20
- package/dist/graph/onchain/object-held-receipts.spec.d.ts +0 -1
- package/dist/graph/onchain/object-held-receipts.spec.js +0 -1
- package/dist/graph/onchain/onchain.spec.d.ts +0 -1
- package/dist/graph/onchain/onchain.spec.js +0 -1
- package/dist/graph/onchain/policy.d.ts +0 -8
- package/dist/graph/onchain/project-relationship.d.ts +0 -3
- package/dist/graph/onchain/proposal-graph.d.ts +0 -11
- package/dist/graph/onchain/proposal-graph.spec.d.ts +0 -1
- package/dist/graph/onchain/proposal-graph.spec.js +0 -1
- package/dist/graph/onchain/sdk-batch.d.ts +0 -129
- package/dist/graph/onchain/sdk-dataplane.d.ts +0 -44
- package/dist/graph/onchain/strategy.spec.d.ts +0 -1
- package/dist/graph/onchain/strategy.spec.js +0 -1
- package/dist/graph/onchain/synthesis.d.ts +0 -20
- package/dist/graph/onchain/synthesis.spec.d.ts +0 -1
- package/dist/graph/onchain/synthesis.spec.js +0 -1
- package/dist/graph/onchain/table-ledger.spec.d.ts +0 -1
- package/dist/graph/onchain/table-ledger.spec.js +0 -1
- package/dist/graph/onchain/viewport.d.ts +0 -6
- package/dist/harness/auto-escalation.d.ts +0 -15
- package/dist/intent/enrich.d.ts +0 -1
- package/dist/intent/index.d.ts +0 -23
- package/dist/intent/matcher.d.ts +0 -2
- package/dist/intent/store.d.ts +0 -19
- package/dist/intent/types.d.ts +0 -32
- package/dist/keeper/KeeperScan.d.ts +0 -41
- package/dist/keeper/KeeperStore.d.ts +0 -43
- package/dist/keeper/detectors.d.ts +0 -42
- package/dist/keeper/keeper.spec.d.ts +0 -1
- package/dist/keeper/keeper.spec.js +0 -1
- package/dist/keeper/types.d.ts +0 -67
- package/dist/knowledge/account-marks.d.ts +0 -36
- package/dist/knowledge/allocation-ledger.d.ts +0 -75
- package/dist/knowledge/allocation-puzzle.d.ts +0 -138
- package/dist/knowledge/allocation-risk.d.ts +0 -82
- package/dist/knowledge/allocation-templates.d.ts +0 -38
- package/dist/knowledge/allocator-rail-verifier.d.ts +0 -59
- package/dist/knowledge/anti-cheat.d.ts +0 -2
- package/dist/knowledge/arb-fund-facts.d.ts +0 -51
- package/dist/knowledge/arb-risk.d.ts +0 -39
- package/dist/knowledge/arbitration-puzzle.d.ts +0 -84
- package/dist/knowledge/arbitration-rail-verifier.d.ts +0 -35
- package/dist/knowledge/arbitration-risk.d.ts +0 -114
- package/dist/knowledge/arbitration-templates.d.ts +0 -39
- package/dist/knowledge/arbitration-venue-order.d.ts +0 -25
- package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +0 -1
- package/dist/knowledge/baselines/guard-lint-baseline.spec.js +0 -1
- package/dist/knowledge/baselines/risk-baselines.spec.d.ts +0 -1
- package/dist/knowledge/baselines/risk-baselines.spec.js +0 -1
- package/dist/knowledge/baselines/risk-cases.d.ts +0 -8
- package/dist/knowledge/baselines/semantic-facts.d.ts +0 -12
- package/dist/knowledge/bridge-risk.d.ts +0 -36
- package/dist/knowledge/catalog-facts.d.ts +0 -4
- package/dist/knowledge/chain-query-registry.d.ts +0 -14
- package/dist/knowledge/commission-landing.d.ts +0 -26
- package/dist/knowledge/component-schema.d.ts +0 -64
- package/dist/knowledge/contact-risk.d.ts +0 -32
- package/dist/knowledge/contact-templates.d.ts +0 -26
- package/dist/knowledge/contract-invariants.d.ts +0 -54
- package/dist/knowledge/demand-risk.d.ts +0 -30
- package/dist/knowledge/discount-threshold.d.ts +0 -26
- package/dist/knowledge/dynamic-pricing.d.ts +0 -29
- package/dist/knowledge/entity-recipient-guard.d.ts +0 -21
- package/dist/knowledge/event-semantics.d.ts +0 -23
- package/dist/knowledge/evidence-review.d.ts +0 -35
- package/dist/knowledge/fee-param-bindings.d.ts +0 -28
- package/dist/knowledge/flywheel-loop.d.ts +0 -41
- package/dist/knowledge/game-scenarios.d.ts +0 -21
- package/dist/knowledge/getting-started.d.ts +0 -37
- package/dist/knowledge/goal-completion.d.ts +0 -31
- package/dist/knowledge/guard-anchor-reach.d.ts +0 -19
- package/dist/knowledge/guard-binding-table.d.ts +0 -52
- package/dist/knowledge/guard-binding-verifier.d.ts +0 -37
- package/dist/knowledge/guard-bindings.d.ts +0 -21
- package/dist/knowledge/guard-blueprint.d.ts +0 -68
- package/dist/knowledge/guard-design-patterns.d.ts +0 -38
- package/dist/knowledge/guard-eval.d.ts +0 -15
- package/dist/knowledge/guard-field-cognition.d.ts +0 -48
- package/dist/knowledge/guard-host-context.d.ts +0 -24
- package/dist/knowledge/guard-ledger.d.ts +0 -19
- package/dist/knowledge/guard-leg-map.d.ts +0 -5
- package/dist/knowledge/guard-lint.d.ts +0 -79
- package/dist/knowledge/guard-node-gates.d.ts +0 -9
- package/dist/knowledge/guard-puzzle.d.ts +0 -188
- package/dist/knowledge/guard-render.d.ts +0 -71
- package/dist/knowledge/guard-risk.d.ts +0 -71
- package/dist/knowledge/guard-submission-brief.d.ts +0 -94
- package/dist/knowledge/guard-submission-prompt.d.ts +0 -63
- package/dist/knowledge/guard-translation.d.ts +0 -58
- package/dist/knowledge/index.d.ts +0 -299
- package/dist/knowledge/industry-evolution.d.ts +0 -82
- package/dist/knowledge/industry-generalizer.d.ts +0 -63
- package/dist/knowledge/industry-rule-node.d.ts +0 -7
- package/dist/knowledge/industry-strategy.d.ts +0 -91
- package/dist/knowledge/intent-metrics.d.ts +0 -43
- package/dist/knowledge/jsonrpc-enum.d.ts +0 -102
- package/dist/knowledge/knob-docs.d.ts +0 -5
- package/dist/knowledge/machine-fork-watch.d.ts +0 -9
- package/dist/knowledge/machine-ledger.d.ts +0 -42
- package/dist/knowledge/machine-puzzle.d.ts +0 -206
- package/dist/knowledge/machine-risk.d.ts +0 -72
- package/dist/knowledge/machine-templates.d.ts +0 -92
- package/dist/knowledge/machine-topology.d.ts +0 -116
- package/dist/knowledge/machine-translation.d.ts +0 -96
- package/dist/knowledge/market-metrics.d.ts +0 -34
- package/dist/knowledge/market-operations.d.ts +0 -46
- package/dist/knowledge/migration-preflight.d.ts +0 -27
- package/dist/knowledge/object-dependency.d.ts +0 -31
- package/dist/knowledge/operation-dictionary.d.ts +0 -18
- package/dist/knowledge/order-ledger.d.ts +0 -69
- package/dist/knowledge/order-puzzle.d.ts +0 -162
- package/dist/knowledge/order-risk.d.ts +0 -62
- package/dist/knowledge/order-templates.d.ts +0 -50
- package/dist/knowledge/param-schema.d.ts +0 -93
- package/dist/knowledge/param-tiers.d.ts +0 -27
- package/dist/knowledge/passport-ledger.d.ts +0 -60
- package/dist/knowledge/passport-templates.d.ts +0 -40
- package/dist/knowledge/path-oracle/coverage.d.ts +0 -16
- package/dist/knowledge/path-oracle/index.d.ts +0 -5
- package/dist/knowledge/path-oracle/products/food-delivery.d.ts +0 -2
- package/dist/knowledge/path-oracle/schema.d.ts +0 -188
- package/dist/knowledge/pattern-resolutions.d.ts +0 -110
- package/dist/knowledge/payment-risk.d.ts +0 -38
- package/dist/knowledge/payment-tracker.d.ts +0 -63
- package/dist/knowledge/permission-ledger.d.ts +0 -49
- package/dist/knowledge/permission-puzzle.d.ts +0 -122
- package/dist/knowledge/permission-risk.d.ts +0 -70
- package/dist/knowledge/permission-templates.d.ts +0 -38
- package/dist/knowledge/personal-risk.d.ts +0 -36
- package/dist/knowledge/product-detail-source.d.ts +0 -37
- package/dist/knowledge/product-doc-b5.d.ts +0 -16
- package/dist/knowledge/progress-ledger.d.ts +0 -63
- package/dist/knowledge/progress-puzzle.d.ts +0 -82
- package/dist/knowledge/progress-risk.d.ts +0 -75
- package/dist/knowledge/progress-templates.d.ts +0 -38
- package/dist/knowledge/projection.d.ts +0 -54
- package/dist/knowledge/projection.spec.d.ts +0 -1
- package/dist/knowledge/projection.spec.js +0 -1
- package/dist/knowledge/proof-risk.d.ts +0 -33
- package/dist/knowledge/protocol-facts.d.ts +0 -17
- package/dist/knowledge/publish-gate.d.ts +0 -20
- package/dist/knowledge/publish-readiness.d.ts +0 -25
- package/dist/knowledge/publish-surface-contract.d.ts +0 -16
- package/dist/knowledge/puzzle-projections.d.ts +0 -11
- package/dist/knowledge/rail-exit-satisfiability.d.ts +0 -25
- package/dist/knowledge/registrar-risk.d.ts +0 -34
- package/dist/knowledge/release-sentinel.d.ts +0 -12
- package/dist/knowledge/repository-risk.d.ts +0 -46
- package/dist/knowledge/repository-write-semantics.d.ts +0 -27
- package/dist/knowledge/reputation-rules.d.ts +0 -36
- package/dist/knowledge/requirement-families.d.ts +0 -13
- package/dist/knowledge/resource-risk.d.ts +0 -32
- package/dist/knowledge/reward-ledger.d.ts +0 -97
- package/dist/knowledge/reward-puzzle.d.ts +0 -98
- package/dist/knowledge/reward-risk.d.ts +0 -86
- package/dist/knowledge/reward-templates.d.ts +0 -25
- package/dist/knowledge/rule-node-analyzers.d.ts +0 -49
- package/dist/knowledge/rule-outcome.d.ts +0 -5
- package/dist/knowledge/scenario-topology.d.ts +0 -48
- package/dist/knowledge/semantic-ir.d.ts +0 -136
- package/dist/knowledge/service-allocation-semantics.d.ts +0 -36
- package/dist/knowledge/service-allocator-audit-node.d.ts +0 -3
- package/dist/knowledge/service-ledger.d.ts +0 -87
- package/dist/knowledge/service-puzzle.d.ts +0 -158
- package/dist/knowledge/service-risk-node.d.ts +0 -3
- package/dist/knowledge/service-risk.d.ts +0 -110
- package/dist/knowledge/service-templates.d.ts +0 -41
- package/dist/knowledge/settlement-semantics.d.ts +0 -1
- package/dist/knowledge/strategy-manuals.d.ts +0 -15
- package/dist/knowledge/supply-chain.d.ts +0 -35
- package/dist/knowledge/template-index.d.ts +0 -19
- package/dist/knowledge/template-loader.d.ts +0 -425
- package/dist/knowledge/template-nav.d.ts +0 -9
- package/dist/knowledge/template-prose.d.ts +0 -50
- package/dist/knowledge/template-registry.d.ts +0 -48
- package/dist/knowledge/template-scanner.d.ts +0 -158
- package/dist/knowledge/template-test-profiles.d.ts +0 -17
- package/dist/knowledge/template-validation.d.ts +0 -3
- package/dist/knowledge/tools-reference.d.ts +0 -17
- package/dist/knowledge/treasury-ledger.d.ts +0 -42
- package/dist/knowledge/treasury-puzzle.d.ts +0 -163
- package/dist/knowledge/treasury-risk.d.ts +0 -88
- package/dist/knowledge/treasury-templates.d.ts +0 -38
- package/dist/knowledge/universal-template.d.ts +0 -22
- package/dist/knowledge/util-risk.d.ts +0 -30
- package/dist/knowledge/workflow-guidance.d.ts +0 -194
- package/dist/knowledge/workspace-lists.d.ts +0 -61
- package/dist/monitor/SuggestionBridge.spec.d.ts +0 -1
- package/dist/monitor/SuggestionBridge.spec.js +0 -1
- package/dist/participation/arbitrator-interest.d.ts +0 -22
- package/dist/participation/demander-interest.d.ts +0 -23
- package/dist/participation/employee-kpi.d.ts +0 -37
- package/dist/participation/employee-kpi.spec.d.ts +0 -1
- package/dist/participation/employee-kpi.spec.js +0 -1
- package/dist/participation/employee-store.d.ts +0 -16
- package/dist/participation/game-context.d.ts +0 -25
- package/dist/participation/index.d.ts +0 -2
- package/dist/participation/node-action-advisor.d.ts +0 -68
- package/dist/participation/time-window.d.ts +0 -48
- package/dist/persona/facet-profile.d.ts +0 -33
- package/dist/persona/persona-audit.spec.d.ts +0 -1
- package/dist/persona/persona-audit.spec.js +0 -1
- package/dist/playbooks/service-build/business-puzzle.d.ts +0 -48
- package/dist/playbooks/service-build/context-assembly.d.ts +0 -32
- package/dist/playbooks/service-build/facet-money.d.ts +0 -33
- package/dist/playbooks/service-build/facet-money.spec.d.ts +0 -1
- package/dist/playbooks/service-build/facet-money.spec.js +0 -1
- package/dist/playbooks/service-build/game-theory.d.ts +0 -47
- package/dist/playbooks/service-build/index.d.ts +0 -15
- package/dist/playbooks/service-build/intent-analyzer.d.ts +0 -72
- package/dist/playbooks/service-build/machine-nodes.d.ts +0 -27
- package/dist/playbooks/service-build/machine-panorama.d.ts +0 -71
- package/dist/playbooks/service-build/merchant-guide.d.ts +0 -382
- package/dist/playbooks/service-build/migration-planner.d.ts +0 -61
- package/dist/playbooks/service-build/mode-actions.d.ts +0 -260
- package/dist/playbooks/service-build/object-panorama.d.ts +0 -317
- package/dist/playbooks/service-build/object-type.d.ts +0 -1
- package/dist/playbooks/service-build/participation-radar.d.ts +0 -20
- package/dist/playbooks/service-build/pipeline-actions.d.ts +0 -108
- package/dist/playbooks/service-build/process.d.ts +0 -6
- package/dist/playbooks/service-build/relationship-profile.d.ts +0 -3
- package/dist/playbooks/service-build/reverse-mapping-nk4.spec.d.ts +0 -1
- package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +0 -1
- package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.d.ts +0 -1
- package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.js +0 -1
- package/dist/playbooks/service-build/reverse-mapping.d.ts +0 -66
- package/dist/playbooks/service-build/risk-aggregator.d.ts +0 -59
- package/dist/playbooks/service-build/service-panorama.d.ts +0 -229
- package/dist/playbooks/service-build/service-quote.d.ts +0 -2
- package/dist/playbooks/service-build/service-quote.spec.d.ts +0 -1
- package/dist/playbooks/service-build/service-quote.spec.js +0 -1
- package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +0 -1
- package/dist/playbooks/service-build/topology-evaluation.spec.js +0 -1
- package/dist/playbooks/service-build/topology-query.d.ts +0 -25
- package/dist/playbooks/service-build/workflow-design-assessment.d.ts +0 -33
- package/dist/relationship/derivation.d.ts +0 -95
- package/dist/relationship/derivation.spec.d.ts +0 -1
- package/dist/relationship/derivation.spec.js +0 -1
- package/dist/relationship/incentive.d.ts +0 -38
- package/dist/relationship/index.d.ts +0 -4
- package/dist/relationship/registry.d.ts +0 -13
- package/dist/relationship/types.d.ts +0 -45
- package/dist/review/arb.d.ts +0 -4
- package/dist/review/demand.d.ts +0 -3
- package/dist/review/index.d.ts +0 -3
- package/dist/review/machine.d.ts +0 -3
- package/dist/review/order.d.ts +0 -8
- package/dist/review/progress.d.ts +0 -3
- package/dist/review/repository.d.ts +0 -3
- package/dist/review/service.d.ts +0 -5
- package/dist/review/types.d.ts +0 -163
- package/dist/role/derivation.d.ts +0 -35
- package/dist/role/index.d.ts +0 -6
- package/dist/role/intent.d.ts +0 -23
- package/dist/role/model.d.ts +0 -9
- package/dist/role/profiles.d.ts +0 -26
- package/dist/role/resolution.d.ts +0 -27
- package/dist/runtime/instance-registry.d.ts +0 -14
- package/dist/safety/index.d.ts +0 -3
- package/dist/schema/call/permission-handler.d.ts +0 -5
- package/dist/schema/call/semantic-customer-advice.spec.d.ts +0 -1
- package/dist/schema/call/semantic-customer-advice.spec.js +0 -1
- package/dist/schema/common/tokentype-short-probe.spec.d.ts +0 -1
- package/dist/schema/common/tokentype-short-probe.spec.js +0 -1
- package/dist/schema/envelope-unify.d.ts +0 -5
- package/dist/schema/goal/planning.d.ts +0 -742
- package/dist/schema/industry-pack/modes.d.ts +0 -447
- package/dist/schema/query/bi.d.ts +0 -3369
- package/dist/schema/utils/guard-query-utils.d.ts +0 -18
- package/dist/schema/utils/permission-index-utils.d.ts +0 -2
- package/dist/schema/utils/skills-recommendation.d.ts +0 -2
- package/dist/schema-query-impl/index.d.ts +0 -83
- package/dist/schemas/account_operation.output.json +0 -3869
- package/dist/schemas/ask_user.output.json +0 -54
- package/dist/schemas/benchmark_migration_operation.output.json +0 -1669
- package/dist/schemas/bridge_operation.output.json +0 -1548
- package/dist/schemas/config_operation.output.json +0 -896
- package/dist/schemas/employee_operation.output.json +0 -307
- package/dist/schemas/evaluation_operation.output.json +0 -4716
- package/dist/schemas/guard2file.output.json +0 -83
- package/dist/schemas/industry_pack_operation.output.json +0 -2985
- package/dist/schemas/intent_radar.output.json +0 -326
- package/dist/schemas/keeper_operation.output.json +0 -1441
- package/dist/schemas/local_cache_operation.output.json +0 -1718
- package/dist/schemas/local_history_operation.output.json +0 -1644
- package/dist/schemas/local_info_operation.output.json +0 -1530
- package/dist/schemas/local_mark_operation.output.json +0 -1622
- package/dist/schemas/machineNode2file.output.json +0 -88
- package/dist/schemas/messenger_operation.output.json +0 -4692
- package/dist/schemas/monitor_events.output.json +0 -1602
- package/dist/schemas/monitor_subscription.output.json +0 -1629
- package/dist/schemas/onchain_events.output.json +0 -4053
- package/dist/schemas/onchain_operations.output.json +0 -7788
- package/dist/schemas/onchain_table_data.output.json +0 -11868
- package/dist/schemas/permission_operation.output.json +0 -205
- package/dist/schemas/persona_operation.output.json +0 -64612
- package/dist/schemas/query_toolkit.output.json +0 -28302
- package/dist/schemas/schema_query.output.json +0 -81
- package/dist/schemas/service_clone_operation.output.json +0 -247
- package/dist/schemas/strategy_review_operation.output.json +0 -532
- package/dist/schemas/watch_operation.output.json +0 -930
- package/dist/schemas/wip_file.output.json +0 -360
- package/dist/schemas/workflow_operation.output.json +0 -422
- package/dist/schemas/workspace_operation.output.json +0 -477
- package/dist/schemas/wowok_buildin_info.output.json +0 -2477
- package/dist/strategy/collectors.d.ts +0 -66
- package/dist/strategy/collectors.spec.d.ts +0 -1
- package/dist/strategy/collectors.spec.js +0 -1
- package/dist/strategy/index.d.ts +0 -5
- package/dist/strategy/metrics.d.ts +0 -20
- package/dist/strategy/review.d.ts +0 -48
- package/dist/strategy/scorecard.d.ts +0 -32
- package/dist/strategy/store.d.ts +0 -26
- package/dist/task/ProcessStore.d.ts +0 -98
- package/dist/task/playbook.d.ts +0 -11
- package/dist/task/substep-trace.d.ts +0 -91
- package/dist/tools/build-fingerprint.d.ts +0 -28
- package/dist/tools/error-catalog.d.ts +0 -17
- package/dist/tools/handlers/ask-user.d.ts +0 -3
- package/dist/tools/handlers/benchmark-migration.d.ts +0 -121
- package/dist/tools/handlers/bridge.d.ts +0 -8
- package/dist/tools/handlers/config.d.ts +0 -2
- package/dist/tools/handlers/dispatch-expectations.d.ts +0 -2
- package/dist/tools/handlers/dispatch-expectations.spec.d.ts +0 -1
- package/dist/tools/handlers/dispatch-expectations.spec.js +0 -1
- package/dist/tools/handlers/employee.d.ts +0 -8
- package/dist/tools/handlers/employee.spec.d.ts +0 -1
- package/dist/tools/handlers/employee.spec.js +0 -1
- package/dist/tools/handlers/entry-edge-recipe.d.ts +0 -101
- package/dist/tools/handlers/escrow-deficit.d.ts +0 -10
- package/dist/tools/handlers/evaluation.d.ts +0 -2
- package/dist/tools/handlers/evaluation.spec.d.ts +0 -1
- package/dist/tools/handlers/evaluation.spec.js +0 -1
- package/dist/tools/handlers/file-export.d.ts +0 -3
- package/dist/tools/handlers/fund-rail-recipe.d.ts +0 -10
- package/dist/tools/handlers/goal.d.ts +0 -4
- package/dist/tools/handlers/industry-pack.d.ts +0 -3
- package/dist/tools/handlers/intent-radar.d.ts +0 -2
- package/dist/tools/handlers/keeper.d.ts +0 -12
- package/dist/tools/handlers/local.d.ts +0 -6
- package/dist/tools/handlers/mark-namespace.d.ts +0 -30
- package/dist/tools/handlers/messenger.d.ts +0 -24
- package/dist/tools/handlers/monitor.d.ts +0 -26
- package/dist/tools/handlers/name-resolution.d.ts +0 -4
- package/dist/tools/handlers/name-resolution.spec.d.ts +0 -1
- package/dist/tools/handlers/name-resolution.spec.js +0 -1
- package/dist/tools/handlers/network.d.ts +0 -1
- package/dist/tools/handlers/onchain-name-registration.d.ts +0 -49
- package/dist/tools/handlers/onchain-name-registration.spec.d.ts +0 -1
- package/dist/tools/handlers/onchain-name-registration.spec.js +0 -1
- package/dist/tools/handlers/onchain.d.ts +0 -132
- package/dist/tools/handlers/permission.d.ts +0 -2
- package/dist/tools/handlers/persona.d.ts +0 -4
- package/dist/tools/handlers/publish-binding-echo.d.ts +0 -22
- package/dist/tools/handlers/review-chain.d.ts +0 -19
- package/dist/tools/handlers/schema-query.d.ts +0 -2
- package/dist/tools/handlers/service-clone.d.ts +0 -20
- package/dist/tools/handlers/stale-build-check.d.ts +0 -9
- package/dist/tools/handlers/strategy-review.d.ts +0 -2
- package/dist/tools/handlers/submission-assembly.d.ts +0 -55
- package/dist/tools/handlers/watch.d.ts +0 -2
- package/dist/tools/handlers/winner-derivation.d.ts +0 -20
- package/dist/tools/handlers/wip-upload.d.ts +0 -22
- package/dist/tools/handlers/wip.d.ts +0 -2
- package/dist/tools/handlers/workflow.d.ts +0 -2
- package/dist/tools/handlers/workspace.d.ts +0 -4
- package/dist/tools/move-fn-index.gen.d.ts +0 -3
- package/dist/tools/publish-gate-state.d.ts +0 -5
- package/dist/tools/registry/agent.d.ts +0 -2
- package/dist/tools/registry/bridge.d.ts +0 -2
- package/dist/tools/registry/business.d.ts +0 -2
- package/dist/tools/registry/config.d.ts +0 -2
- package/dist/tools/registry/evaluation.d.ts +0 -2
- package/dist/tools/registry/files.d.ts +0 -2
- package/dist/tools/registry/identity.d.ts +0 -2
- package/dist/tools/registry/interaction.d.ts +0 -2
- package/dist/tools/registry/local.d.ts +0 -2
- package/dist/tools/registry/messenger.d.ts +0 -2
- package/dist/tools/registry/monitor.d.ts +0 -2
- package/dist/tools/registry/onchain.d.ts +0 -2
- package/dist/tools/registry/query.d.ts +0 -2
- package/dist/tools/retry.d.ts +0 -8
- package/dist/tools/rules-hook.d.ts +0 -5
- package/dist/tools/runtime-health.d.ts +0 -10
- package/dist/tools/sanitize-description-roundtrip.spec.d.ts +0 -1
- package/dist/tools/sanitize-description-roundtrip.spec.js +0 -1
- package/dist/tools/sanitize-output.d.ts +0 -4
- package/dist/tools/sanitize-output.spec.d.ts +0 -1
- package/dist/tools/sanitize-output.spec.js +0 -1
- package/dist/tools/shared.d.ts +0 -20
- package/dist/tools/transport-integrity.d.ts +0 -7
- package/dist/tools/upgrade-check.d.ts +0 -75
- package/dist/tools/wip-deploy-assist.d.ts +0 -34
- package/dist/tools/wip-verify-ledger.d.ts +0 -16
- package/dist/tools/wrap.d.ts +0 -45
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
{
|
|
2
|
+
"comment": "Registrar+Entity rule pack (R-REG) — declarative form of the retired in-code Registrar/Entity risk rules. Facts are produced by the kernel extractor (registrar-risk.ts, bound to the on-chain registrar limits and the Vote.info bitmask); rules only reference fact names. Levels/wording can be retuned per rule and rules can be disabled (enabled=false, trace left) via the judgment document — factory rules can never be deleted or invented here.",
|
|
3
|
+
"facts": {
|
|
4
|
+
"expects_singleton_migration": "The caller assumes the Entity/Registrar system singletons can be re-deployed or migrated (they cannot).",
|
|
5
|
+
"address_count": "Number of addresses registered (or about to be registered) in the Entity/Registrar ParentTables.",
|
|
6
|
+
"address_count_at_limit": "address_count has reached MAX_ADDRESS_COUNT (chain-limit comparison sunk into the extractor).",
|
|
7
|
+
"uses_reserved_vote_bits": "The caller relies on reserved Vote.info bits 4-7 staying unused.",
|
|
8
|
+
"expects_fresh_resource_on_register": "The caller calls entity_register expecting a fresh Resource (registration is idempotent).",
|
|
9
|
+
"expects_affiliation_event": "The caller expects object-linker affiliation/disaffiliation to emit events (none are emitted).",
|
|
10
|
+
"relies_on_typed_value_convention": "The caller relies on the Record.typed_value first-byte ValueType convention (docs-only enforcement).",
|
|
11
|
+
"is_resource_transfer": "The caller is performing an entity resource transfer.",
|
|
12
|
+
"expects_vote_time_only_on_like": "The caller expects Vote.time to update only on like (it updates on every toggle).",
|
|
13
|
+
"bit_no_info": "KERNEL CONSTANT — Vote.info bitmask value for no-info (BIT_NO_INFO).",
|
|
14
|
+
"bit_like": "KERNEL CONSTANT — Vote.info bitmask value for like (BIT_LIKE).",
|
|
15
|
+
"bit_dislike": "KERNEL CONSTANT — Vote.info bitmask value for dislike (BIT_DISLIKE).",
|
|
16
|
+
"bit_affiliation": "KERNEL CONSTANT — Vote.info bitmask value for affiliation (BIT_AFFILIATION).",
|
|
17
|
+
"max_address_count": "KERNEL CONSTANT — ParentTable address cap (MAX_ADDRESS_COUNT).",
|
|
18
|
+
"max_record_length": "KERNEL CONSTANT — per-record byte cap (MAX_RECORD_LENGTH).",
|
|
19
|
+
"max_record_count_registrar": "KERNEL CONSTANT — per-user record count cap (MAX_RECORD_COUNT_REGISTRAR)."
|
|
20
|
+
},
|
|
21
|
+
"rules": [
|
|
22
|
+
{
|
|
23
|
+
"rule_id": "R-REG-01",
|
|
24
|
+
"dimension": "lifecycle",
|
|
25
|
+
"trigger": "caller assumes the Entity/Registrar singletons can be migrated post-deploy",
|
|
26
|
+
"cases": [
|
|
27
|
+
{
|
|
28
|
+
"when": { "field": "expects_singleton_migration", "op": "eq", "value": true },
|
|
29
|
+
"level": "high",
|
|
30
|
+
"title": "Entity and Registrar are system singletons — cannot be migrated post-deploy",
|
|
31
|
+
"description": "Entity and Registrar are created once at package init by @0x0 and are globally unique. They cannot be re-created, migrated, or re-initialized. If the singleton's storage layout needs to change (e.g. ParentTable schema), the only option is a new package version with a migration path. There is no in-place migration API. All 22 objects depend on these singletons via object-linker bindings, so a migration would cascade to every object.",
|
|
32
|
+
"scenario": "Operator wants to migrate Entity to a new schema; no migration API exists",
|
|
33
|
+
"mitigation": "Confirm the schema before deployment. For schema evolution, plan a new package version with an explicit migration script. Never assume the singleton can be 'reset'.",
|
|
34
|
+
"evidence": "expects_singleton_migration=true (no migration API)",
|
|
35
|
+
"stakeholders": ["system", "user"]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"rule_id": "R-REG-02",
|
|
41
|
+
"dimension": "structural",
|
|
42
|
+
"trigger": "registered address count reaches MAX_ADDRESS_COUNT",
|
|
43
|
+
"cases": [
|
|
44
|
+
{
|
|
45
|
+
"when": { "field": "address_count_at_limit", "op": "eq", "value": true },
|
|
46
|
+
"level": "medium",
|
|
47
|
+
"title": "MAX_ADDRESS_COUNT=${max_address_count} may be insufficient for large deployments",
|
|
48
|
+
"description": "The Entity and Registrar ParentTables are bounded by MAX_ADDRESS_COUNT=${max_address_count}. Exceeding the cap aborts address registration. For mass-market applications, ${max_address_count} entries may be too few; the limit is a single Move constant that requires a package upgrade to change.",
|
|
49
|
+
"scenario": "Popular service reaches 5200 registered users; new registrations abort",
|
|
50
|
+
"mitigation": "Monitor address_count. Plan a package upgrade that raises MAX_ADDRESS_COUNT before hitting the cap. For shardable workloads, consider multiple Entity tables in a future package version.",
|
|
51
|
+
"evidence": "address_count=${address_count}, limit=${max_address_count}",
|
|
52
|
+
"stakeholders": ["system", "user"]
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"rule_id": "R-REG-03",
|
|
58
|
+
"dimension": "semantic",
|
|
59
|
+
"trigger": "caller relies on reserved Vote.info bits 4-7",
|
|
60
|
+
"cases": [
|
|
61
|
+
{
|
|
62
|
+
"when": { "field": "uses_reserved_vote_bits", "op": "eq", "value": true },
|
|
63
|
+
"level": "medium",
|
|
64
|
+
"title": "Vote.info uses u8 bitmask — bits 4-7 reserved, future expansion must stay compatible",
|
|
65
|
+
"description": "Vote.info is a u8 bitmask: BIT_NO_INFO=${bit_no_info}, BIT_LIKE=${bit_like}, BIT_DISLIKE=${bit_dislike}, BIT_AFFILIATION=${bit_affiliation}. Bits 4-7 are reserved. A future version that repurposes bits 4-7 would conflict with any off-chain code that reads the raw byte. The reserved bits MUST be treated as zero today; non-zero values in bits 4-7 indicate a forward-incompatible voter.",
|
|
66
|
+
"scenario": "Future version assigns bit 4 to a new flag; old indexers misread the byte",
|
|
67
|
+
"mitigation": "Off-chain code must mask to bits 0-3 today and ignore bits 4-7. When a new flag is assigned, ship a coordinated Move + SDK + indexer update.",
|
|
68
|
+
"evidence": "uses_reserved_vote_bits=true (bits 4-7 are reserved)",
|
|
69
|
+
"stakeholders": ["voter", "system"]
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"rule_id": "R-REG-05",
|
|
75
|
+
"dimension": "cross_object",
|
|
76
|
+
"trigger": "caller expects object-linker affiliation changes to emit events",
|
|
77
|
+
"cases": [
|
|
78
|
+
{
|
|
79
|
+
"when": { "field": "expects_affiliation_event", "op": "eq", "value": true },
|
|
80
|
+
"level": "medium",
|
|
81
|
+
"title": "object-linker affiliation / disaffiliation emit no events — indexers must poll object_linker tables",
|
|
82
|
+
"description": "The affiliation binding, unbinding, and binding-change operations mutate the binding graph but emit no events. External indexers that track the object-dependency graph cannot rely on an event stream; they must poll the ParentTable, which is expensive as the graph grows.",
|
|
83
|
+
"scenario": "Indexer expects an AffiliationEvent; none is emitted, dependency graph is stale",
|
|
84
|
+
"mitigation": "Indexers should poll object_linker tables on a cadence and diff. Future versions may add AffiliationEvent; until then, do not build critical UX on affiliation event streams.",
|
|
85
|
+
"evidence": "expects_affiliation_event=true (no events)",
|
|
86
|
+
"stakeholders": ["system"]
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"rule_id": "R-REG-04",
|
|
92
|
+
"dimension": "lifecycle",
|
|
93
|
+
"trigger": "caller expects a fresh Resource from idempotent registration",
|
|
94
|
+
"cases": [
|
|
95
|
+
{
|
|
96
|
+
"when": { "field": "expects_fresh_resource_on_register", "op": "eq", "value": true },
|
|
97
|
+
"level": "low",
|
|
98
|
+
"title": "Registration is idempotent — returns existing Resource, not a fresh one",
|
|
99
|
+
"description": "Registration checks whether the sender already has an Entity record. If so, it returns the existing Resource address without creating a new one. Callers who expect a fresh Resource on each call (e.g. after a forced destroy) will silently receive the old one. Use the forced re-registration path to force-reallocate, and only when the old Resource is truly gone.",
|
|
100
|
+
"scenario": "User destroys their Resource then re-registers; gets the old (now-invalid) address",
|
|
101
|
+
"mitigation": "Document the idempotent behavior. After a forced destroy, callers MUST use the forced re-registration path. SDK should detect destroyed Resource and route accordingly.",
|
|
102
|
+
"evidence": "expects_fresh_resource_on_register=true (idempotent)",
|
|
103
|
+
"stakeholders": ["user"]
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"rule_id": "R-REG-06",
|
|
109
|
+
"dimension": "semantic",
|
|
110
|
+
"trigger": "caller relies on the Record.typed_value ValueType byte convention",
|
|
111
|
+
"cases": [
|
|
112
|
+
{
|
|
113
|
+
"when": { "field": "relies_on_typed_value_convention", "op": "eq", "value": true },
|
|
114
|
+
"level": "low",
|
|
115
|
+
"title": "Record.typed_value first byte is a ValueType — convention enforced only by docs",
|
|
116
|
+
"description": "Record.typed_value is a vector<u8> whose first byte encodes the ValueType. The Move layer validates that the vector is non-empty and within MAX_RECORD_LENGTH=${max_record_length}, but it does not validate that the first byte is a known ValueType. Off-chain consumers must agree on the ValueType byte layout; a misencoded record will deserialize to garbage without an on-chain abort. Record count is bounded by MAX_RECORD_COUNT_REGISTRAR=${max_record_count_registrar}.",
|
|
117
|
+
"scenario": "Caller writes a record with first byte 0xFF; no on-chain error, but consumers cannot decode",
|
|
118
|
+
"mitigation": "SDK must validate the first byte against the ValueType enum before submitting. Document the ValueType byte layout in both Move and SDK. Add a sync test that asserts the ValueType enum matches across layers.",
|
|
119
|
+
"evidence": "relies_on_typed_value_convention=true (docs-only enforcement)",
|
|
120
|
+
"stakeholders": ["user", "system"]
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"rule_id": "R-REG-07",
|
|
126
|
+
"dimension": "cross_object",
|
|
127
|
+
"trigger": "an entity resource transfer detaches the Resource from its source address",
|
|
128
|
+
"cases": [
|
|
129
|
+
{
|
|
130
|
+
"when": { "field": "is_resource_transfer", "op": "eq", "value": true },
|
|
131
|
+
"level": "medium",
|
|
132
|
+
"title": "Resource transfer detaches the Resource from the source address",
|
|
133
|
+
"description": "The entity resource transfer moves the Resource backing a user's identity mark to a new address. After transfer, the source address has no Resource — any downstream service that keyed identity on the source address loses the binding. There is no automatic forwarding stub left behind.",
|
|
134
|
+
"scenario": "User transfers Resource to a new wallet; old-wallet-based services break",
|
|
135
|
+
"mitigation": "Surface a 'transfer will detach the Resource from this address' warning. Consumers should track users by Resource address, not by user address. Provide a migration window where both addresses are valid.",
|
|
136
|
+
"evidence": "is_resource_transfer=true (source loses Resource)",
|
|
137
|
+
"stakeholders": ["user", "system"]
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"rule_id": "R-REG-08",
|
|
143
|
+
"dimension": "semantic",
|
|
144
|
+
"trigger": "caller expects Vote.time to advance only on like",
|
|
145
|
+
"cases": [
|
|
146
|
+
{
|
|
147
|
+
"when": { "field": "expects_vote_time_only_on_like", "op": "eq", "value": true },
|
|
148
|
+
"level": "low",
|
|
149
|
+
"title": "Vote.time updates on every toggle — including like→no-like",
|
|
150
|
+
"description": "Vote.time is set to clock.timestamp_ms() on every like/dislike operation, including toggles that remove a like (like→no-like). Consumers who interpret Vote.time as 'last liked at' will be confused when it advances on an un-like. The field semantically means 'last vote op time', not 'last positive vote'.",
|
|
151
|
+
"scenario": "User un-likes; Vote.time advances; indexer reads it as 'recently liked'",
|
|
152
|
+
"mitigation": "Document Vote.time as 'last vote operation time'. For 'last liked at' semantics, track the previous Vote.info state and only record time when BIT_LIKE transitions to set.",
|
|
153
|
+
"evidence": "expects_vote_time_only_on_like=true (updates on toggle)",
|
|
154
|
+
"stakeholders": ["voter", "system"]
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
{
|
|
2
|
+
"comment": "Repository rule pack (R-REP) — declarative form of the retired in-code Repository risk rules. Facts are produced by the kernel extractor (repository-risk.ts, bound to the live repository limits and the id_from routing semantics); rules only reference fact names. Levels/wording can be retuned per rule and rules can be disabled (enabled=false, trace left) via the judgment document — factory rules can never be deleted or invented here.",
|
|
3
|
+
"facts": {
|
|
4
|
+
"policies": "The policy drafts under evaluation (name, id_from routing, write_guard size, submission routing flags).",
|
|
5
|
+
"existing_policy_count": "Number of policies already stored on the Repository object.",
|
|
6
|
+
"data_size": "Data payload size in bytes of the current write.",
|
|
7
|
+
"id_count_once": "Number of data IDs targeted by the current single operation.",
|
|
8
|
+
"reward_count": "Number of Reward objects referenced by the Repository.",
|
|
9
|
+
"is_data_remove_with_passport": "Whether the operation is the passport-driven data removal entry point (R-D-2 check).",
|
|
10
|
+
"constants_synced": "Whether the Repository constants are synced to onchain-constants.ts (the sync reminder fires when falsy).",
|
|
11
|
+
"has_quote_guard": "Whether quote_guard is set (Some) on any policy.",
|
|
12
|
+
"quote_guard_is_depended": "Whether the quote_guard satisfies is_depended (immutable + no relies + rep=true).",
|
|
13
|
+
"quote_guard_verifies_payment": "Whether the quote_guard verifies Payment for subscription.",
|
|
14
|
+
"has_owner_receive": "Whether the Repository has owner_receive configured for Payment revenue.",
|
|
15
|
+
"max_policy_count": "KERNEL CONSTANT — live MAX_POLICY_COUNT limit from the published package.",
|
|
16
|
+
"max_policy_guard_count": "KERNEL CONSTANT — live MAX_POLICY_GUARD_COUNT limit from the published package.",
|
|
17
|
+
"max_data_size": "KERNEL CONSTANT — live MAX_DATA_SIZE limit in bytes from the published package.",
|
|
18
|
+
"max_id_count_once": "KERNEL CONSTANT — live MAX_ID_COUNT_ONCE limit from the published package.",
|
|
19
|
+
"max_reward_count": "KERNEL CONSTANT — live MAX_REWARD_COUNT limit from the published package.",
|
|
20
|
+
"policies_count": "KERNEL — number of policy drafts being added in this operation.",
|
|
21
|
+
"total_policy_count": "KERNEL — existing_policy_count + policies_count (present only when both inputs exist).",
|
|
22
|
+
"policy_count_over_limit": "KERNEL — total_policy_count exceeds the live MAX_POLICY_COUNT.",
|
|
23
|
+
"policy_none_guard_no_id_count": "KERNEL — policies with id_from=None (caller-provided id) AND an empty write_guard list.",
|
|
24
|
+
"policy_none_guard_no_id_list": "KERNEL — comma-space joined names of the id_from=None + empty write_guard policies.",
|
|
25
|
+
"policy_auto_id_submission_count": "KERNEL — policies with id_from=Clock/Signer (auto-generated id) whose guard sets id_from_submission.",
|
|
26
|
+
"policy_auto_id_submission_list": "KERNEL — comma-space joined 'name(id_from=<raw>)' entries of the auto-id + id_from_submission policies.",
|
|
27
|
+
"policy_guard_over_limit_count": "KERNEL — policies whose write_guard count exceeds the live MAX_POLICY_GUARD_COUNT.",
|
|
28
|
+
"policy_guard_over_limit_list": "KERNEL — comma-space joined 'name(count)' entries of the over-limit policies.",
|
|
29
|
+
"data_size_over_limit": "KERNEL — data_size exceeds the live MAX_DATA_SIZE.",
|
|
30
|
+
"id_count_over_limit": "KERNEL — id_count_once exceeds the live MAX_ID_COUNT_ONCE.",
|
|
31
|
+
"reward_count_at_limit": "KERNEL — reward_count has reached the live MAX_REWARD_COUNT (>= limit).",
|
|
32
|
+
"policy_data_sub_no_id_sub_count": "KERNEL — policies whose guard sets data_from_submission without id_from_submission (Mode 5 mixed write).",
|
|
33
|
+
"policy_data_sub_no_id_sub_list": "KERNEL — comma-space joined names of the data_from_submission-only policies.",
|
|
34
|
+
"policy_data_sub_removal_count": "KERNEL — policies whose guard sets data_from_submission while the operation is passport-driven data removal.",
|
|
35
|
+
"policy_data_sub_removal_list": "KERNEL — comma-space joined names of those policies.",
|
|
36
|
+
"quote_guard_gap": "KERNEL — what the quote_guard subscription design is missing ('quote_guard does not verify Payment' / 'Repository missing owner_receive for revenue', joined by '; '; empty when fully configured)."
|
|
37
|
+
},
|
|
38
|
+
"rules": [
|
|
39
|
+
{
|
|
40
|
+
"rule_id": "R-REP-01",
|
|
41
|
+
"dimension": "structural",
|
|
42
|
+
"trigger": "existing + new policy count exceeds MAX_POLICY_COUNT",
|
|
43
|
+
"cases": [
|
|
44
|
+
{
|
|
45
|
+
"when": { "field": "policy_count_over_limit", "op": "eq", "value": true },
|
|
46
|
+
"level": "medium",
|
|
47
|
+
"title": "Policy count exceeds MAX_POLICY_COUNT (${max_policy_count})",
|
|
48
|
+
"description": "A single Repository may hold up to MAX_POLICY_COUNT=${max_policy_count} policies. Exceeding this limit aborts with E_POLICY_COUNT_EXCEEDED (3) when a policy is added. Each policy defines a named data slot with its own write_guard list and id_from routing — having too many policies makes the Repository hard to audit and increases gas cost for policy lookups (an O(n) scan by policy name).",
|
|
49
|
+
"scenario": "Caller adds 51 policies to a single Repository",
|
|
50
|
+
"mitigation": "Consolidate related data under fewer policies. If truly needed, split data across multiple Repository objects and reference them via Service.repository or Progress.context_repositories.",
|
|
51
|
+
"evidence": "existing=${existing_policy_count}, adding=${policies_count}, total=${total_policy_count}, limit=${max_policy_count}",
|
|
52
|
+
"stakeholders": ["creator"]
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"rule_id": "R-REP-02",
|
|
58
|
+
"dimension": "policy",
|
|
59
|
+
"trigger": "a policy sets id_from=None with an empty write_guard list",
|
|
60
|
+
"cases": [
|
|
61
|
+
{
|
|
62
|
+
"when": { "field": "policy_none_guard_no_id_count", "op": "gt", "value": 0 },
|
|
63
|
+
"level": "high",
|
|
64
|
+
"title": "write_guard empty when id_from=None — unauthorized writes (R-D-1 Move assert)",
|
|
65
|
+
"description": "When id_from is None, the data ID must be provided by the caller (via the passport-guarded data write or the mixed id+data write). Without a write_guard, ANY address can write data with any ID — this is almost certainly a misconfiguration. The Move contract now enforces this via E_POLICY_WRITE_GUARD_REQUIRED (22) at policy-add time [R-D-1=A].",
|
|
66
|
+
"scenario": "Caller creates a policy with id_from=None and empty write_guard list",
|
|
67
|
+
"mitigation": "When id_from=None, provide at least one PolicyGuard entry in write_guard. If you want unrestricted writes, use id_from=Clock or id_from=Signer instead (which auto-generates the ID and requires empty write_guard).",
|
|
68
|
+
"evidence": "policies with id_from=None + empty write_guard: ${policy_none_guard_no_id_list}",
|
|
69
|
+
"stakeholders": ["creator", "writer"]
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"rule_id": "R-REP-03",
|
|
75
|
+
"dimension": "policy",
|
|
76
|
+
"trigger": "a guard sets id_from_submission while the policy routes id_from=Clock/Signer",
|
|
77
|
+
"cases": [
|
|
78
|
+
{
|
|
79
|
+
"when": { "field": "policy_auto_id_submission_count", "op": "gt", "value": 0 },
|
|
80
|
+
"level": "high",
|
|
81
|
+
"title": "id_from_submission set when id_from=Clock/Signer — id routing conflict (R-D-1 Move assert)",
|
|
82
|
+
"description": "When id_from is Clock or Signer, the data ID is auto-generated (timestamp or signer address). A PolicyGuard with id_from_submission set would try to route the id from a Passport submission, conflicting with the auto-generated id_from path. The Move contract enforces that id_from_submission MUST be None for every PolicyGuard when id_from is Clock/Signer (data_from_submission is still allowed — it is used by the guarded data-extraction entry point to extract data from the submission). Violations abort with E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN (23) at policy-add time [R-D-1=A, refined].",
|
|
83
|
+
"scenario": "Caller creates a policy with id_from=Clock and a write_guard entry whose id_from_submission is set",
|
|
84
|
+
"mitigation": "When id_from=Clock or Signer, ensure every PolicyGuard has id_from_submission=null. data_from_submission may still be set if you want the guard to supply the data payload (routed via the guarded data-extraction entry point). If you need submission-derived ids, switch to id_from=None and set id_from_submission on the guard.",
|
|
85
|
+
"evidence": "policies with id_from=Clock/Signer + id_from_submission set: ${policy_auto_id_submission_list}",
|
|
86
|
+
"stakeholders": ["creator", "writer"]
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"rule_id": "R-REP-04",
|
|
92
|
+
"dimension": "structural",
|
|
93
|
+
"trigger": "a policy's write_guard count exceeds MAX_POLICY_GUARD_COUNT",
|
|
94
|
+
"cases": [
|
|
95
|
+
{
|
|
96
|
+
"when": { "field": "policy_guard_over_limit_count", "op": "gt", "value": 0 },
|
|
97
|
+
"level": "medium",
|
|
98
|
+
"title": "Policy write_guard count exceeds MAX_POLICY_GUARD_COUNT (${max_policy_guard_count})",
|
|
99
|
+
"description": "Each policy may define up to MAX_POLICY_GUARD_COUNT=${max_policy_guard_count} guard entries in its write_guard list. Exceeding this limit aborts with E_POLICY_GUARD_COUNT_EXCEEDED (2). Each entry maps to a Guard object that must be verified via Passport submission, so more guards = more complex write authorization semantics.",
|
|
100
|
+
"scenario": "Caller creates a policy with 11 guard entries in write_guard",
|
|
101
|
+
"mitigation": "Consolidate guard logic. If multiple guards must verify the same data, consider composing them into a single Guard with relies/rep fields, or split the data across multiple policies with fewer guards each.",
|
|
102
|
+
"evidence": "policies exceeding guard count: ${policy_guard_over_limit_list}",
|
|
103
|
+
"stakeholders": ["creator"]
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"rule_id": "R-REP-05",
|
|
109
|
+
"dimension": "structural",
|
|
110
|
+
"trigger": "a data payload exceeds MAX_DATA_SIZE",
|
|
111
|
+
"cases": [
|
|
112
|
+
{
|
|
113
|
+
"when": { "field": "data_size_over_limit", "op": "eq", "value": true },
|
|
114
|
+
"level": "medium",
|
|
115
|
+
"title": "Data value exceeds MAX_DATA_SIZE (${max_data_size} bytes)",
|
|
116
|
+
"description": "A single Repository data value must be ≤ MAX_DATA_SIZE=${max_data_size} bytes. Exceeding this limit aborts with E_DATA_EXCEEDED (4). The value is stored as a BCS-serialized vector<u8> with a type-tag prefix byte. Large data should be stored off-chain (e.g. IPFS, Walrus) and referenced by hash/address, NOT inlined into the Repository data value.",
|
|
117
|
+
"scenario": "Caller writes a 50KB JSON blob as a Repository data value",
|
|
118
|
+
"mitigation": "Store large payloads off-chain and write only the content hash (32-64 bytes) to the Repository. Use about_address on a Proof object to bind the off-chain data to an on-chain attestation.",
|
|
119
|
+
"evidence": "data_size=${data_size}, limit=${max_data_size}",
|
|
120
|
+
"stakeholders": ["writer"]
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"rule_id": "R-REP-06",
|
|
126
|
+
"dimension": "routing",
|
|
127
|
+
"trigger": "a guard sets data_from_submission without id_from_submission (Mode 5 mixed write)",
|
|
128
|
+
"cases": [
|
|
129
|
+
{
|
|
130
|
+
"when": { "field": "policy_data_sub_no_id_sub_count", "op": "gt", "value": 0 },
|
|
131
|
+
"level": "low",
|
|
132
|
+
"title": "Policy has data_from_submission but no id_from_submission — verify Mode 5 routing intent",
|
|
133
|
+
"description": "When a PolicyGuard has data_from_submission set (data comes from Passport submission) but no id_from_submission (id comes from caller), the SDK routes to the mixed id+data passport write (Mode 5). This is a valid but advanced pattern — ensure the caller provides matching id vectors. The SDK hasSubmissionSettings helper now correctly detects this case [P1-1 fix, R-D-3=A].",
|
|
134
|
+
"scenario": "Policy has a guard with data_from_submission=2, id_from_submission=undefined",
|
|
135
|
+
"mitigation": "Document the expected caller input shape. Ensure the caller provides both the id vector (positional) and the Passport submission (for data). Verify routing via the SDK hasSubmissionSettings helper.",
|
|
136
|
+
"evidence": "policies with data_from_submission but no id_from_submission: ${policy_data_sub_no_id_sub_list}",
|
|
137
|
+
"stakeholders": ["creator", "writer"]
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"rule_id": "R-REP-07",
|
|
143
|
+
"dimension": "submission",
|
|
144
|
+
"trigger": "passport-driven data removal targets a policy whose guard sets data_from_submission",
|
|
145
|
+
"cases": [
|
|
146
|
+
{
|
|
147
|
+
"when": { "field": "policy_data_sub_removal_count", "op": "gt", "value": 0 },
|
|
148
|
+
"level": "high",
|
|
149
|
+
"title": "data_from_submission set on a policy used for passport-driven data removal — Move will abort (R-D-2)",
|
|
150
|
+
"description": "Passport-driven data removal only removes data identified by the caller-provided id vector; it cannot consume Passport submissions for either id or data. The Move contract now enforces that BOTH id_from_submission AND data_from_submission MUST be None for this entry point [R-D-2=A], aborting with E_GUARD_SPECIFIED_ID_FROM_SUBMISSION (11). Previously, only id_from_submission was checked, allowing data_from_submission to be silently ignored — masking a routing bug.",
|
|
151
|
+
"scenario": "Caller uses passport-driven data removal on a policy whose guard has data_from_submission=2",
|
|
152
|
+
"mitigation": "For data removal via Passport, use the mixed id+data removal entry point instead (which requires id_from_submission and derives the id from the submission). Do not set data_from_submission on policies intended for passport-driven data removal.",
|
|
153
|
+
"evidence": "policies with data_from_submission used in passport-driven data removal: ${policy_data_sub_removal_list}",
|
|
154
|
+
"stakeholders": ["writer", "verifier"]
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"rule_id": "R-REP-08",
|
|
160
|
+
"dimension": "structural",
|
|
161
|
+
"trigger": "a single op's ID count exceeds MAX_ID_COUNT_ONCE",
|
|
162
|
+
"cases": [
|
|
163
|
+
{
|
|
164
|
+
"when": { "field": "id_count_over_limit", "op": "eq", "value": true },
|
|
165
|
+
"level": "low",
|
|
166
|
+
"title": "ID count per single op exceeds MAX_ID_COUNT_ONCE (${max_id_count_once})",
|
|
167
|
+
"description": "A single Repository call (data_add, data_remove, id_data_*) may operate on at most MAX_ID_COUNT_ONCE=${max_id_count_once} IDs. Exceeding this limit aborts with E_ID_COUNT_EXCEEDED (5). Batch large operations across multiple transactions.",
|
|
168
|
+
"scenario": "Caller passes 150 IDs in a single data_remove call",
|
|
169
|
+
"mitigation": "Split into batches of ≤ ${max_id_count_once} IDs per transaction.",
|
|
170
|
+
"evidence": "id_count=${id_count_once}, limit=${max_id_count_once}",
|
|
171
|
+
"stakeholders": ["writer"]
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"rule_id": "R-REP-09",
|
|
177
|
+
"dimension": "structural",
|
|
178
|
+
"trigger": "reward count reaches MAX_REWARD_COUNT",
|
|
179
|
+
"cases": [
|
|
180
|
+
{
|
|
181
|
+
"when": { "field": "reward_count_at_limit", "op": "eq", "value": true },
|
|
182
|
+
"level": "info",
|
|
183
|
+
"title": "Reward count approaches MAX_REWARD_COUNT (${max_reward_count})",
|
|
184
|
+
"description": "A Repository may reference up to MAX_REWARD_COUNT=${max_reward_count} Reward objects. Exceeding this limit aborts with E_MAX_REWARD_COUNT_EXCEEDED (19). Rewards incentivize data contribution; having many rewards is fine but increases accounting complexity.",
|
|
185
|
+
"scenario": "Caller adds 20 rewards to a Repository (at the limit)",
|
|
186
|
+
"mitigation": "Monitor reward count. If more incentives are needed, consolidate rewards or use a separate Repository.",
|
|
187
|
+
"evidence": "reward_count=${reward_count}, limit=${max_reward_count}",
|
|
188
|
+
"stakeholders": ["creator"]
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"rule_id": "R-REP-10",
|
|
194
|
+
"dimension": "knowledge",
|
|
195
|
+
"trigger": "constants drift from onchain-constants.ts / knowledge-layer gaps (sync reminder)",
|
|
196
|
+
"cases": [
|
|
197
|
+
{
|
|
198
|
+
"when": { "field": "constants_synced", "op": "falsy" },
|
|
199
|
+
"level": "info",
|
|
200
|
+
"title": "Knowledge layer & constant sync — RESOLVED",
|
|
201
|
+
"description": "All 6 Repository constants (MAX_POLICY_COUNT, MAX_POLICY_DESCRIPTION_LEN, MAX_POLICY_GUARD_COUNT, MAX_DATA_SIZE, MAX_ID_COUNT_ONCE, MAX_REWARD_COUNT) are now synced to onchain-constants.ts. The MCP Knowledge layer now includes repository-risk.ts, repository-confirm.ts, repository-translation.ts (R-D-4=A). The SDK hasSubmissionSettings helper now correctly checks both id_from_submission AND data_from_submission (P1-1). parseIdFrom is used in data/data_remove (P1-2). This risk rule is retained for historical audit and to detect future regressions.",
|
|
202
|
+
"scenario": "Future regression: someone removes a Repository constant from onchain-constants.ts",
|
|
203
|
+
"mitigation": "Run the onchain-constants sync test to detect drift.",
|
|
204
|
+
"evidence": "constants_synced=false",
|
|
205
|
+
"stakeholders": ["system"]
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"rule_id": "R-REP-11",
|
|
211
|
+
"dimension": "policy",
|
|
212
|
+
"trigger": "quote_guard set but not dependency-safe",
|
|
213
|
+
"cases": [
|
|
214
|
+
{
|
|
215
|
+
"when": { "all": [ { "field": "has_quote_guard", "op": "truthy" }, { "field": "quote_guard_is_depended", "op": "falsy" } ] },
|
|
216
|
+
"level": "high",
|
|
217
|
+
"title": "quote_guard must be dependency-safe (immutable + rep=true + no relies) — Move assert",
|
|
218
|
+
"description": "Repository policy's quote_guard must satisfy the dependency-safety requirement: immutable=true, relies empty, rep=true. This ensures the quote_guard is a stable, repository-querying guard that can be depended upon. Move aborts with E_NEED_DEPENDENT_GUARD if the guard is not dependency-safe. VERIFIED: passport.rs#L545-612 (check_repository_quote_guard enforces this at query time).",
|
|
219
|
+
"scenario": "Creator sets quote_guard to a Guard that is not dependency-safe (e.g., has relies or is mutable)",
|
|
220
|
+
"mitigation": "Ensure the quote_guard Guard object has: immutable=true, relies=empty, rep=true. Use pattern.repository_quote_guard_subscription as the design template.",
|
|
221
|
+
"evidence": "quote_guard set but not dependency-safe (immutable + rep=true + no relies)",
|
|
222
|
+
"stakeholders": ["creator", "reader"]
|
|
223
|
+
}
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"rule_id": "R-REP-12",
|
|
228
|
+
"dimension": "knowledge",
|
|
229
|
+
"trigger": "quote_guard subscription without Payment verification or owner_receive revenue",
|
|
230
|
+
"cases": [
|
|
231
|
+
{
|
|
232
|
+
"when": { "all": [ { "field": "has_quote_guard", "op": "truthy" }, { "field": "quote_guard_gap", "op": "truthy" } ] },
|
|
233
|
+
"level": "medium",
|
|
234
|
+
"title": "quote_guard data subscription design — verify Payment verification + owner_receive revenue",
|
|
235
|
+
"description": "When using quote_guard for data subscription (Repository+quote_guard+Payment pattern), ensure: (1) quote_guard verifies Payment fields (for_object matches Repository, amount meets price), (2) Repository has owner_receive<T> configured to accept Payment as subscription revenue. VERIFIED: passport.rs#L545-612. DESIGN: quote_guard is a RIGID verification requirement — any guard querying this Repository's data MUST satisfy the quote_guard (see R-X1-10 in guard-risk.ts).",
|
|
236
|
+
"scenario": "Creator sets quote_guard but does not configure Payment verification or owner_receive",
|
|
237
|
+
"mitigation": "1) Ensure quote_guard verifies Payment (for_object, amount); 2) Configure Repository owner_receive<T> to accept subscription Payment revenue; 3) Use pattern.repository_quote_guard_subscription (guard-design-patterns.ts) and tpl_repository_quote_guard_subscription (guard-templates.ts) as design templates.",
|
|
238
|
+
"evidence": "${quote_guard_gap}",
|
|
239
|
+
"stakeholders": ["creator", "reader", "verifier"]
|
|
240
|
+
}
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"comment": "Resource rule pack (R-RESOURCE) — declarative form of the retired in-code Resource risk rules. Facts are produced by the kernel extractor (resource-risk.ts, bound to the on-chain tag limit); rules only reference fact names. Levels/wording can be retuned per rule and rules can be disabled (enabled=false, trace left) via the judgment document — factory rules can never be deleted or invented here.",
|
|
3
|
+
"facts": {
|
|
4
|
+
"expects_resource_permission": "The caller relies on Resource enforcing its own permission checks (it associates none — access control is delegated to the calling module).",
|
|
5
|
+
"expects_tag_events": "The caller expects tag mutations to emit on-chain events (tag operations emit none — indexers must poll).",
|
|
6
|
+
"tags_count": "Raw tag count for a single object, passed through for evidence text.",
|
|
7
|
+
"tags_count_over_limit": "True when tags_count is provided and meets or exceeds the chain tag limit (the on-chain abort boundary).",
|
|
8
|
+
"is_destroy": "The caller is invoking the irreversible destroy operation.",
|
|
9
|
+
"tag_set_return_ignored": "The caller discards the bool result of the tag-set operation (the 'already exists' signal).",
|
|
10
|
+
"references_dead_switch": "The caller references the fully commented-out (dead) switch function of the Move layer.",
|
|
11
|
+
"max_tags_count": "KERNEL CONSTANT — maximum tag entries a single object's tag vector may hold (the on-chain abort boundary)."
|
|
12
|
+
},
|
|
13
|
+
"rules": [
|
|
14
|
+
{
|
|
15
|
+
"rule_id": "R-RESOURCE-01",
|
|
16
|
+
"dimension": "permission",
|
|
17
|
+
"trigger": "caller relies on Resource enforcing its own permission checks",
|
|
18
|
+
"cases": [
|
|
19
|
+
{
|
|
20
|
+
"when": { "field": "expects_resource_permission", "op": "eq", "value": true },
|
|
21
|
+
"level": "low",
|
|
22
|
+
"title": "Resource has no Permission — relies entirely on caller-side gating",
|
|
23
|
+
"description": "Resource does not associate with a Permission object. All functions are public(package) (new/destroy/transfer) or public (tag set/unset, object tag add/remove, object removal) — there is no on-chain permission check. Access control is delegated to the calling module (Personal, Entity). A caller that forgets to enforce its own permission check would let any address mutate tags.",
|
|
24
|
+
"scenario": "Personal/Entity forgets to gate object-tag additions behind its own permission check",
|
|
25
|
+
"mitigation": "Callers (Personal, Entity) MUST enforce their own permission checks before invoking Resource functions. Audit the call sites in Personal/Entity to confirm gating.",
|
|
26
|
+
"evidence": "expects_resource_permission=true (Resource has none)",
|
|
27
|
+
"stakeholders": ["owner", "caller"]
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"rule_id": "R-RESOURCE-02",
|
|
33
|
+
"dimension": "semantic",
|
|
34
|
+
"trigger": "caller expects tag mutations to emit events",
|
|
35
|
+
"cases": [
|
|
36
|
+
{
|
|
37
|
+
"when": { "field": "expects_tag_events", "op": "eq", "value": true },
|
|
38
|
+
"level": "medium",
|
|
39
|
+
"title": "Tag mutations emit no events — external indexers must poll",
|
|
40
|
+
"description": "Object-tag additions, object-tag removals, and whole-object removals do not emit events. External indexers cannot rely on an event stream to track tag changes; they must poll the ParentTable field. This complicates real-time notification and consistency.",
|
|
41
|
+
"scenario": "Indexer expects a TagAddedEvent but none is emitted; UI fails to refresh",
|
|
42
|
+
"mitigation": "External indexers should poll Resource.table on a cadence. Do not build critical UX on tag event streams until events are added in a future version.",
|
|
43
|
+
"evidence": "expects_tag_events=true (no events emitted)",
|
|
44
|
+
"stakeholders": ["owner", "caller"]
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"rule_id": "R-RESOURCE-03",
|
|
50
|
+
"dimension": "structural",
|
|
51
|
+
"trigger": "tag count meets or exceeds the chain tag limit",
|
|
52
|
+
"cases": [
|
|
53
|
+
{
|
|
54
|
+
"when": { "field": "tags_count_over_limit", "op": "eq", "value": true },
|
|
55
|
+
"level": "low",
|
|
56
|
+
"title": "MAX_TAGS_COUNT=${max_tags_count} permissive — storage cost",
|
|
57
|
+
"description": "A single object's AddressTag.tags vector may hold up to MAX_TAGS_COUNT=${max_tags_count} entries. The limit aborts with E_TAGS_COUNT_EXCEEDED (1) only at the boundary. 100 tags per object is generous; loading all tags on every read increases gas and storage cost.",
|
|
58
|
+
"scenario": "Caller adds 100 tags to a single object",
|
|
59
|
+
"mitigation": "Business layer should self-limit tag count well below 100. For heavy tagging, shard across multiple Resource objects or store bulk tags off-chain.",
|
|
60
|
+
"evidence": "tags_count=${tags_count}, limit=${max_tags_count}",
|
|
61
|
+
"stakeholders": ["owner"]
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"rule_id": "R-RESOURCE-04",
|
|
67
|
+
"dimension": "lifecycle",
|
|
68
|
+
"trigger": "destroy is being invoked",
|
|
69
|
+
"cases": [
|
|
70
|
+
{
|
|
71
|
+
"when": { "field": "is_destroy", "op": "eq", "value": true },
|
|
72
|
+
"level": "low",
|
|
73
|
+
"title": "destroy is irreversible — no recovery mechanism",
|
|
74
|
+
"description": "Resource.destroy(resource) deletes the object and its ParentTable in place. There is no archive, no event, and no rollback. Once destroyed, the object ID is permanently invalid and all tags are lost.",
|
|
75
|
+
"scenario": "Caller destroys a Resource that is still referenced by Personal/Entity",
|
|
76
|
+
"mitigation": "Confirm no live references exist before calling destroy. SDK should refuse to destroy a Resource whose owner address is still referenced by Personal.mark or Entity.resource.",
|
|
77
|
+
"evidence": "is_destroy=true (irreversible)",
|
|
78
|
+
"stakeholders": ["owner"]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"rule_id": "R-RESOURCE-05",
|
|
84
|
+
"dimension": "semantic",
|
|
85
|
+
"trigger": "tag-set bool return value is ignored by the caller",
|
|
86
|
+
"cases": [
|
|
87
|
+
{
|
|
88
|
+
"when": { "field": "tag_set_return_ignored", "op": "eq", "value": true },
|
|
89
|
+
"level": "medium",
|
|
90
|
+
"title": "Setting a tag returns bool — SDK may ignore the 'already exists' signal",
|
|
91
|
+
"description": "Setting a tag on an object returns bool: true if a new tag was added, false if the tag already existed. If the SDK ignores the return value, callers cannot distinguish 'newly added' from 'duplicate silently skipped'. This masks intent and complicates idempotency reasoning.",
|
|
92
|
+
"scenario": "SDK treats the tag-set result as void; caller assumes tag was added when it was a duplicate",
|
|
93
|
+
"mitigation": "SDK should expose the tag-set bool return value to the caller. UI should show 'tag already existed' when false is returned.",
|
|
94
|
+
"evidence": "tag_set_return_ignored=true (duplicate not surfaced)",
|
|
95
|
+
"stakeholders": ["caller"]
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"rule_id": "R-RESOURCE-06",
|
|
101
|
+
"dimension": "semantic",
|
|
102
|
+
"trigger": "caller references the commented-out switch function",
|
|
103
|
+
"cases": [
|
|
104
|
+
{
|
|
105
|
+
"when": { "field": "references_dead_switch", "op": "eq", "value": true },
|
|
106
|
+
"level": "low",
|
|
107
|
+
"title": "Commented-out switch function — feature may be intended",
|
|
108
|
+
"description": "The module contains a switch function that is fully commented out. The intended behavior is unclear — it may be a planned feature (e.g. bulk tag operations) that was disabled. Referencing it as if it were live would silently fail.",
|
|
109
|
+
"scenario": "Developer reads the commented switch and assumes it is callable",
|
|
110
|
+
"mitigation": "Confirm with the package maintainers whether the switch should be enabled or removed. Do not reference it in SDK or MCP code.",
|
|
111
|
+
"evidence": "references_dead_switch=true (commented out in Move)",
|
|
112
|
+
"stakeholders": ["system"]
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
}
|
|
@@ -430,7 +430,7 @@
|
|
|
430
430
|
{
|
|
431
431
|
"rule_id": "R-R-7-01",
|
|
432
432
|
"dimension": "fund_recovery",
|
|
433
|
-
"trigger": "coin_add/receive (deposit) or guard_add without an owner fund-recovery escape guard",
|
|
433
|
+
"trigger": "coin_add/receive (deposit) or guard_add without an owner fund-recovery escape guard (advisory — recovery via withdraw 158 always exists once the no-guard window lapses)",
|
|
434
434
|
"cases": [
|
|
435
435
|
{
|
|
436
436
|
"when": { "all": [
|
|
@@ -439,14 +439,14 @@
|
|
|
439
439
|
] },
|
|
440
440
|
"level": "medium",
|
|
441
441
|
"title": "No owner fund-recovery escape guard on this Reward",
|
|
442
|
-
"description": "claim() is the GUARD-FREE exit from the Reward's balance field, and
|
|
442
|
+
"description": "claim() is the GUARD-FREE buyer-facing exit from the Reward's balance field, and no configured guard carries the owner claim-side escape signature (Signer recipient + GuardU64Identifier amount). Fund recovery does NOT depend on that signature: withdraw (op 158, ETS-B) is the second exit — permission-gated and blocked ONLY while the no-guard window (guard_not_added_expiration_time) stands; once it lapses (or if it was never set) the owner recovers the full unclaimed remainder (guard_expiration_time_add can set/clear the window after it expires). An unclaimed remainder is therefore NEVER permanently locked. The escape guard is an OPTIONAL in-window recovery rail (owner reclaims via claim() behind a Clock lock) or a one-PTB alternative — its absence is an advisory configuration note, not a fund-safety defect. Note: owner_receive (op 156) never touches balance — it only extracts objects the Reward RECEIVED via transfer (Receiving<CoinWrapper<K>> or NFT-like objects) to the Permission owner; receive (op 154) is what joins payments into balance.",
|
|
443
443
|
"scenario": "A marketing Reward is fully consumed by guards, the campaign ends with a residual balance, and the merchant has no guard that lets them reclaim it.",
|
|
444
|
-
"mitigation": "
|
|
444
|
+
"mitigation": "PRIMARY (no guard needed): after guard_not_added_expiration_time lapses — or immediately if it was never set — call withdraw (op 158) / withdraw_and_unwrap to recover the unclaimed remainder in full (payment.receipt or same-PTB unwrap). OPTIONAL in-window escape guard: (1) Guard: logic_and(logic_equal(query(1002 permission.owner [permission_address]), Signer), logic_greater_equal(Clock, <unlock_time>)) — verifies the tx sender is the live Permission owner, with the Clock comparison acting as the lock period (e.g. 30 days); (2) RewardGuard entry: recipient=Signer, amount=GuardU64Identifier(u8 submission mark), expiration_time=unlock_time + claim window (or None) — remember the contract asserts clock <= expiration_time, i.e. expiration is the last claimable moment, not the unlock moment; (3) after unlock the owner claims by submitting the full remaining balance.",
|
|
445
445
|
"evidence": "deposit=${has_deposit}, guard_add=${guard_add_count}, escape=false (no entry with Signer recipient + GuardU64Identifier amount)",
|
|
446
446
|
"stakeholders": ["owner"],
|
|
447
447
|
"exposure": {
|
|
448
448
|
"loss_parties": [
|
|
449
|
-
{ "role": "merchant", "basis": "
|
|
449
|
+
{ "role": "merchant", "basis": "Residual budget stays committed (unwithdrawable) only until guard_not_added_expiration_time lapses; recoverable in full thereafter via withdraw (op 158). Advisory only: the escape guard adds IN-WINDOW owner recovery." }
|
|
450
450
|
],
|
|
451
451
|
"gain_paths": []
|
|
452
452
|
}
|
|
@@ -455,14 +455,14 @@
|
|
|
455
455
|
"when": { "field": "recovery_gap_present", "op": "eq", "value": true },
|
|
456
456
|
"level": "low",
|
|
457
457
|
"title": "No owner fund-recovery escape guard on this Reward",
|
|
458
|
-
"description": "claim() is the GUARD-FREE exit from the Reward's balance field, and
|
|
458
|
+
"description": "claim() is the GUARD-FREE buyer-facing exit from the Reward's balance field, and no configured guard carries the owner claim-side escape signature (Signer recipient + GuardU64Identifier amount). Fund recovery does NOT depend on that signature: withdraw (op 158, ETS-B) is the second exit — permission-gated and blocked ONLY while the no-guard window (guard_not_added_expiration_time) stands; once it lapses (or if it was never set) the owner recovers the full unclaimed remainder (guard_expiration_time_add can set/clear the window after it expires). An unclaimed remainder is therefore NEVER permanently locked. The escape guard is an OPTIONAL in-window recovery rail (owner reclaims via claim() behind a Clock lock) or a one-PTB alternative — its absence is an advisory configuration note, not a fund-safety defect. Note: owner_receive (op 156) never touches balance — it only extracts objects the Reward RECEIVED via transfer (Receiving<CoinWrapper<K>> or NFT-like objects) to the Permission owner; receive (op 154) is what joins payments into balance.",
|
|
459
459
|
"scenario": "A marketing Reward is fully consumed by guards, the campaign ends with a residual balance, and the merchant has no guard that lets them reclaim it.",
|
|
460
|
-
"mitigation": "
|
|
460
|
+
"mitigation": "PRIMARY (no guard needed): after guard_not_added_expiration_time lapses — or immediately if it was never set — call withdraw (op 158) / withdraw_and_unwrap to recover the unclaimed remainder in full (payment.receipt or same-PTB unwrap). OPTIONAL in-window escape guard: (1) Guard: logic_and(logic_equal(query(1002 permission.owner [permission_address]), Signer), logic_greater_equal(Clock, <unlock_time>)) — verifies the tx sender is the live Permission owner, with the Clock comparison acting as the lock period (e.g. 30 days); (2) RewardGuard entry: recipient=Signer, amount=GuardU64Identifier(u8 submission mark), expiration_time=unlock_time + claim window (or None) — remember the contract asserts clock <= expiration_time, i.e. expiration is the last claimable moment, not the unlock moment; (3) after unlock the owner claims by submitting the full remaining balance.",
|
|
461
461
|
"evidence": "deposit=${has_deposit}, guard_add=${guard_add_count}, escape=false (no entry with Signer recipient + GuardU64Identifier amount)",
|
|
462
462
|
"stakeholders": ["owner"],
|
|
463
463
|
"exposure": {
|
|
464
464
|
"loss_parties": [
|
|
465
|
-
{ "role": "merchant", "basis": "
|
|
465
|
+
{ "role": "merchant", "basis": "Residual budget stays committed (unwithdrawable) only until guard_not_added_expiration_time lapses; recoverable in full thereafter via withdraw (op 158). Advisory only: the escape guard adds IN-WINDOW owner recovery." }
|
|
466
466
|
],
|
|
467
467
|
"gain_paths": []
|
|
468
468
|
}
|
|
@@ -481,7 +481,7 @@
|
|
|
481
481
|
] },
|
|
482
482
|
"level": "medium",
|
|
483
483
|
"title": "Compensation pool solvency: the pool is NOT per-order escrow — claims beyond the balance abort",
|
|
484
|
-
"description": "Experience compensation rides the Reward object (C-11): one pre-funded pool serves ALL buyers' claims, with no per-order isolation. A claim larger than the current balance aborts with E_INSUFFICIENT_BALANCE (6) — the buyer faces a failed claim, not a queued payout. Size coin_add to expected claims × worst tier and refill on schedule; the R-R-7-01
|
|
484
|
+
"description": "Experience compensation rides the Reward object (C-11): one pre-funded pool serves ALL buyers' claims, with no per-order isolation. A claim larger than the current balance aborts with E_INSUFFICIENT_BALANCE (6) — the buyer faces a failed claim, not a queued payout. Size coin_add to expected claims × worst tier and refill on schedule; the residual stays recoverable via withdraw (op 158) after the no-guard window lapses (R-R-7-01).",
|
|
485
485
|
"scenario": "A late-delivery wave drains the compensation pool before the tail of the wave claims",
|
|
486
486
|
"mitigation": "1) Fund upfront for the worst-case claim wave (expected claims × worst tier), refill periodically. 2) Keep tiers so a single claim cannot exceed a bounded share of the pool. 3) Monitor the balance against the open claim window — an exhausted pool turns the compensation promise into an unfunded one (must be disclosed, never silently left to abort).",
|
|
487
487
|
"evidence": "compensation intent, guard_add=${guard_add_count}",
|
|
@@ -574,9 +574,9 @@
|
|
|
574
574
|
] },
|
|
575
575
|
"level": "low",
|
|
576
576
|
"title": "No clawback: compensation flows one way — out to claimers",
|
|
577
|
-
"description": "The Reward balance has no pull-back path: claim (guard-free) and withdraw (158) both move funds OUT;
|
|
577
|
+
"description": "The Reward balance has no pull-back path for PAID claims: claim (guard-free) and withdraw (158) both move funds OUT; the UNCLAIMED remainder is recoverable via withdraw (158) once the no-guard window (guard_not_added_expiration_time) lapses — or in-window via the R-R-7-01 escape guard. A paid claim is final even if the underlying incident is later reversed (e.g. the order is refunded after an overlapping-window compensation claim) — supplier recourse is a SEPARATE ledger (off-chain or a distinct on-chain arrangement), never a Reward-side reversal.",
|
|
578
578
|
"scenario": "A buyer claims late-compensation and then also wins a refund; the merchant wants the compensation back",
|
|
579
|
-
"mitigation": "1) Prevent overlap structurally: the compensation guard accepts completed/settled terminals only (tbs7 F-04 claim-and-return precedent). 2) Treat paid compensation as sunk; recover from the supplier through the separate recourse arrangement. 3)
|
|
579
|
+
"mitigation": "1) Prevent overlap structurally: the compensation guard accepts completed/settled terminals only (tbs7 F-04 claim-and-return precedent). 2) Treat paid compensation as sunk; recover from the supplier through the separate recourse arrangement. 3) Recover the unclaimed tail via withdraw (158) after the no-guard window lapses; the escape guard (R-R-7-01) is the in-window alternative.",
|
|
580
580
|
"evidence": "compensation intent, deposit=${has_deposit}",
|
|
581
581
|
"stakeholders": ["owner", "service_provider"]
|
|
582
582
|
}
|