@wowok/agent-mcp 3.4.1 → 3.4.3
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 +5 -0
- package/dist/chain-semantics/composition-truth.js +1 -1
- package/dist/chain-semantics/eval-order.js +1 -1
- package/dist/chain-semantics/field-capability.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/guard-verbs.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.d.ts +10 -3
- package/dist/composition/compile.js +1 -1
- package/dist/composition/emit-phases.d.ts +30 -2
- package/dist/composition/emit-phases.js +1 -1
- package/dist/composition/guard-fill.d.ts +8 -0
- package/dist/composition/guard-fill.js +1 -1
- package/dist/composition/inflight.js +1 -1
- package/dist/composition/input-normalize.js +1 -1
- package/dist/composition/materialize.d.ts +2 -0
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/mode-gates.js +1 -1
- package/dist/composition/param-disclosure.js +1 -1
- package/dist/composition/plan-retry-ledger.d.ts +16 -0
- package/dist/composition/plan-retry-ledger.js +1 -1
- package/dist/composition/plan.d.ts +15 -1
- package/dist/composition/plan.js +1 -1
- package/dist/config/config-audit.spec.js +1 -1
- package/dist/config/judgment.d.ts +5 -0
- package/dist/config/judgment.js +1 -1
- package/dist/evaluation/builtins/arbitration-score.d.ts +1 -0
- package/dist/evaluation/builtins/arbitration-score.js +1 -1
- package/dist/evaluation/builtins/demand-match.js +1 -1
- package/dist/evaluation/builtins/graph-service.d.ts +8 -0
- package/dist/evaluation/builtins/graph-service.js +1 -1
- package/dist/evaluation/capability.d.ts +9 -0
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/extract.d.ts +9 -1
- package/dist/evaluation/extract.js +1 -1
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/evaluation/match-policy.d.ts +5 -3
- package/dist/evaluation/match-policy.js +1 -1
- package/dist/evaluation/standards.d.ts +1 -0
- package/dist/evaluation/standards.js +1 -1
- package/dist/evaluation/structured-lines.js +1 -1
- package/dist/evaluation/types.d.ts +1 -0
- package/dist/extensions/capability.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/index.js +1 -1
- package/dist/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +17 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arb-fund-facts.d.ts +7 -0
- package/dist/knowledge/arb-fund-facts.js +1 -1
- package/dist/knowledge/arbitration-rail-verifier.d.ts +35 -0
- package/dist/knowledge/arbitration-rail-verifier.js +1 -0
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +13 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/judgment-baselines.json +1 -0
- package/dist/knowledge/baselines/rules/guard.json +7 -6
- package/dist/knowledge/baselines/rules/progress.json +4 -4
- package/dist/knowledge/baselines/rules/reward.json +118 -3
- package/dist/knowledge/builtin-templates.d.ts +19 -2
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/chain-query-registry.d.ts +14 -0
- package/dist/knowledge/chain-query-registry.js +1 -0
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fee-param-bindings.d.ts +2 -0
- package/dist/knowledge/fee-param-bindings.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.d.ts +7 -0
- package/dist/knowledge/guard-binding-verifier.js +1 -1
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-host-context.js +1 -1
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-node-gates.d.ts +3 -1
- package/dist/knowledge/guard-node-gates.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +2 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +2 -0
- 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/knob-docs.js +1 -1
- package/dist/knowledge/param-schema.d.ts +1 -1
- package/dist/knowledge/param-schema.js +1 -1
- package/dist/knowledge/param-tiers.d.ts +2 -0
- package/dist/knowledge/param-tiers.js +1 -1
- package/dist/knowledge/path-oracle/products/food-delivery.js +1 -1
- package/dist/knowledge/pattern-resolutions.d.ts +2 -0
- package/dist/knowledge/pattern-resolutions.js +1 -1
- package/dist/knowledge/product-detail-source.d.ts +37 -0
- package/dist/knowledge/product-detail-source.js +1 -0
- package/dist/knowledge/product-doc-b5.d.ts +16 -0
- package/dist/knowledge/product-doc-b5.js +1 -0
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/projection.spec.js +1 -1
- package/dist/knowledge/publish-gate.d.ts +20 -0
- package/dist/knowledge/publish-gate.js +1 -0
- package/dist/knowledge/publish-readiness.d.ts +25 -0
- package/dist/knowledge/publish-readiness.js +1 -0
- package/dist/knowledge/publish-surface-contract.d.ts +16 -0
- package/dist/knowledge/publish-surface-contract.js +1 -0
- package/dist/knowledge/rail-exit-satisfiability.d.ts +25 -0
- package/dist/knowledge/rail-exit-satisfiability.js +1 -0
- package/dist/knowledge/reward-ledger.d.ts +1 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-risk.d.ts +1 -1
- package/dist/knowledge/reward-risk.js +1 -1
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/service-ledger.d.ts +3 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/template-loader.d.ts +41 -2
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +17 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-test-profiles.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +4 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/monitor/normalize.d.ts +1 -1
- package/dist/monitor/normalize.js +1 -1
- package/dist/monitor/types.js +1 -1
- package/dist/participation/customer-interest.d.ts +4 -0
- package/dist/participation/customer-interest.js +1 -1
- package/dist/participation/game-context.js +1 -1
- package/dist/participation/node-action-advisor.d.ts +4 -0
- package/dist/participation/node-action-advisor.js +1 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/participation/time-window.d.ts +11 -0
- package/dist/participation/time-window.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +28 -3
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +4 -0
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/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/order.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +24 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +11 -7
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/arbitration.d.ts +4 -0
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +28 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +21 -0
- package/dist/schema/call/contact.d.ts +4 -0
- package/dist/schema/call/demand.d.ts +4 -0
- package/dist/schema/call/guard.d.ts +12 -0
- package/dist/schema/call/handler.d.ts +1 -0
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +16 -8
- package/dist/schema/call/normalize-error.d.ts +1 -0
- package/dist/schema/call/normalize-error.js +1 -0
- package/dist/schema/call/order.d.ts +7 -3
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/payment.d.ts +7 -3
- package/dist/schema/call/permission.d.ts +4 -0
- package/dist/schema/call/personal.d.ts +4 -0
- package/dist/schema/call/progress.d.ts +4 -0
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/proof.d.ts +8 -0
- package/dist/schema/call/proof.js +1 -1
- package/dist/schema/call/receipt.js +1 -1
- package/dist/schema/call/repository.d.ts +4 -0
- package/dist/schema/call/reward.d.ts +6 -2
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.d.ts +2 -2
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +21 -7
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +10 -6
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/envelope-unify.d.ts +1 -0
- package/dist/schema/envelope-unify.js +1 -1
- package/dist/schema/evaluation/index.d.ts +43 -0
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +14 -2
- package/dist/schema/goal/planning.d.ts +18 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +12 -0
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/keeper/index.d.ts +1 -0
- package/dist/schema/local/index.d.ts +10 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +1 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +98 -13
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +22 -0
- package/dist/schema/query/bi.d.ts +28 -2
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +67 -61
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/workflow/index.js +1 -1
- package/dist/schema-query-impl/index.d.ts +1 -0
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +2 -1
- package/dist/schemas/benchmark_migration_operation.output.json +74 -0
- package/dist/schemas/benchmark_migration_operation.schema.json +33 -1
- package/dist/schemas/bridge_operation.output.json +2 -1
- package/dist/schemas/bridge_operation.schema.json +40 -0
- package/dist/schemas/evaluation_operation.output.json +96 -0
- package/dist/schemas/evaluation_operation.schema.json +39 -0
- package/dist/schemas/goal_operation.schema.json +32 -0
- package/dist/schemas/guard2file.schema.json +8 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/intent_radar.output.json +10 -2
- package/dist/schemas/intent_radar.schema.json +5 -1
- package/dist/schemas/keeper_operation.output.json +2 -1
- package/dist/schemas/local_cache_operation.output.json +2 -1
- package/dist/schemas/local_history_operation.output.json +2 -1
- package/dist/schemas/local_info_operation.output.json +2 -1
- package/dist/schemas/local_mark_operation.output.json +2 -1
- package/dist/schemas/local_mark_operation.schema.json +10 -1
- package/dist/schemas/machineNode2file.schema.json +8 -0
- package/dist/schemas/messenger_operation.output.json +2 -1
- package/dist/schemas/messenger_operation.schema.json +2 -1
- package/dist/schemas/monitor_events.output.json +2 -1
- package/dist/schemas/monitor_subscription.output.json +2 -1
- package/dist/schemas/onchain_events.output.json +206 -13
- package/dist/schemas/onchain_events.schema.json +16 -0
- package/dist/schemas/onchain_operations.output.json +22 -3
- package/dist/schemas/onchain_operations.schema.json +982 -327
- package/dist/schemas/onchain_operations_allocation.schema.json +20 -13
- package/dist/schemas/onchain_operations_arbitration.schema.json +9 -1
- package/dist/schemas/onchain_operations_contact.schema.json +8 -0
- package/dist/schemas/onchain_operations_demand.schema.json +8 -0
- package/dist/schemas/onchain_operations_gen_passport.schema.json +8 -0
- package/dist/schemas/onchain_operations_gen_proof.schema.json +8 -0
- package/dist/schemas/onchain_operations_guard.schema.json +655 -115
- package/dist/schemas/onchain_operations_machine.schema.json +11 -3
- package/dist/schemas/onchain_operations_order.schema.json +14 -11
- package/dist/schemas/onchain_operations_payment.schema.json +12 -9
- package/dist/schemas/onchain_operations_permission.schema.json +8 -0
- package/dist/schemas/onchain_operations_personal.schema.json +8 -0
- package/dist/schemas/onchain_operations_progress.schema.json +9 -1
- package/dist/schemas/onchain_operations_proof.schema.json +9 -1
- package/dist/schemas/onchain_operations_repository.schema.json +8 -0
- package/dist/schemas/onchain_operations_reward.schema.json +14 -11
- package/dist/schemas/onchain_operations_service.schema.json +25 -12
- package/dist/schemas/onchain_operations_treasury.schema.json +17 -19
- package/dist/schemas/onchain_table_data.output.json +52 -10
- package/dist/schemas/persona_operation.output.json +57 -0
- package/dist/schemas/persona_operation.schema.json +9 -0
- package/dist/schemas/query_toolkit.output.json +326 -23
- package/dist/schemas/query_toolkit.schema.json +18 -5
- package/dist/schemas/wip_file.output.json +2 -2
- package/dist/schemas/wip_file.schema.json +2 -2
- package/dist/schemas/workflow_operation.schema.json +1 -1
- package/dist/tools/error-catalog.d.ts +17 -0
- package/dist/tools/error-catalog.js +1 -0
- package/dist/tools/handlers/benchmark-migration.d.ts +29 -8
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/entry-edge-recipe.d.ts +101 -0
- package/dist/tools/handlers/entry-edge-recipe.js +1 -0
- package/dist/tools/handlers/escrow-deficit.d.ts +10 -0
- package/dist/tools/handlers/escrow-deficit.js +1 -0
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/fund-rail-recipe.d.ts +10 -0
- package/dist/tools/handlers/fund-rail-recipe.js +1 -0
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/mark-namespace.d.ts +30 -0
- package/dist/tools/handlers/mark-namespace.js +1 -0
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain-name-registration.d.ts +1 -0
- package/dist/tools/handlers/onchain-name-registration.js +1 -1
- package/dist/tools/handlers/onchain-name-registration.spec.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +40 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/publish-binding-echo.d.ts +22 -0
- package/dist/tools/handlers/publish-binding-echo.js +1 -0
- package/dist/tools/handlers/query.d.ts +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/review-chain.d.ts +1 -0
- package/dist/tools/handlers/review-chain.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/stale-build-check.d.ts +9 -0
- package/dist/tools/handlers/stale-build-check.js +1 -0
- package/dist/tools/handlers/submission-assembly.d.ts +55 -0
- package/dist/tools/handlers/submission-assembly.js +1 -0
- package/dist/tools/handlers/wip.js +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/publish-gate-state.d.ts +5 -0
- package/dist/tools/publish-gate-state.js +1 -0
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/retry.js +1 -1
- package/dist/tools/runtime-health.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/upgrade-check.d.ts +1 -0
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wip-verify-ledger.d.ts +2 -0
- package/dist/tools/wip-verify-ledger.js +1 -1
- package/dist/tools/wrap.d.ts +15 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
export const GUARD_FIELD_COGNITION_VERSION='1.1.0';const NUMBER='number\x20(numeric\x20value\x20type)',U64='u64\x20exactly\x20(common::TYPE_U64)',ADDRESS='address\x20or\x20address-compatible\x20object\x20id';export const GUARD_FIELD_SITES=[{'object':'Treasury','field':'external_withdraw_guard[]\x20(AmountFromWithdrawGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount)','meaning':'Exact\x20withdraw\x20amount\x20moved\x20out\x20of\x20the\x20treasury\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'configuring\x20the\x20external-withdraw\x20guard:\x20the\x20amount\x20slot\x20must\x20carry\x20a\x20declared\x20submission\x20value\x20type\x20and\x20it\x20must\x20be\x20numeric\x20(E_IDENTIFIER_NOT_NUMBER_TYPE)','runtimeFallback':'falls\x20back\x20to\x20the\x20fixed\x20table\x20value\x20when\x20no\x20submission\x20is\x20supplied;\x20if\x20neither\x20exists\x20the\x20tx\x20aborts\x20(E_SUBMISSION_ID_NOT_FOUND)','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20chooses\x20the\x20amount;\x20only\x20the\x20balance\x20check\x20(E_WITHDRAW_BALANCE_INSUFFICIENT)\x20bounds\x20it','fixed\x20origin\x20=\x20same\x20amount\x20every\x20withdrawal;\x20safe\x20default\x20for\x20allowance-style\x20guards','query\x20origin\x20is\x20impossible\x20for\x20this\x20slot\x20—\x20a\x20query\x20can\x20only\x20gate,\x20never\x20supply\x20the\x20amount']},{'name':'store_from_id\x20(optional)','meaning':'Secondary\x20slot\x20decoded\x20as\x20address;\x20recorded\x20in\x20Treasury\x20history\x20Record\x20for\x20traceability','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20on\x20the\x20recorded\x20slot\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20Record.store_from_id\x20=\x20none','riskNotes':['Bookkeeping\x20only;\x20never\x20used\x20as\x20the\x20withdrawal\x20recipient']}],'gateBehavior':'the\x20passport\x20verification\x20against\x20this\x20guard\x20must\x20pass\x20AND\x20the\x20guard\x20address\x20must\x20be\x20registered\x20in\x20the\x20external-withdraw\x20guard\x20list\x20(E_EXTERNAL_WITHDRAW_GUARD_NOT_FOUND)','setterChecklist':['Decide\x20who\x20builds\x20passports\x20against\x20this\x20guard\x20—\x20that\x20party\x20controls\x20a\x20submission-origin\x20amount','Prefer\x20a\x20fixed\x20amount\x20for\x20allowance\x20guards;\x20reserve\x20submission\x20amounts\x20for\x20flows\x20where\x20the\x20passport\x20builder\x20is\x20trusted\x20or\x20the\x20amount\x20is\x20re-verified\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20against\x20order.amount\x20via\x20query\x201561)','The\x20RECIPIENT\x20is\x20tx-supplied,\x20not\x20from\x20the\x20guard\x20—\x20constrain\x20it\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20a\x20submitted\x20address\x20against\x20an\x20expected\x20one)\x20if\x20destination\x20matters','Check\x20the\x20guard\x27s\x20dependency-eligibility\x20status\x20only\x20matters\x20if\x20this\x20guard\x20will\x20rely\x20on\x20others\x20(relies\x20<=\x204,\x20added\x20first)'],'auditorChecklist':['For\x20each\x20registered\x20guard:\x20classify\x20amount\x20slot\x20as\x20fixed\x20or\x20submission\x20(read\x20b_submission\x20in\x20the\x20table)','If\x20submission:\x20who\x20can\x20hold/build\x20a\x20passport\x20with\x20this\x20guard?\x20Can\x20a\x20stranger\x20drain\x20the\x20treasury\x20up\x20to\x20its\x20balance?','Does\x20the\x20guard\x20expression\x20bind\x20the\x20submission\x20to\x20on-chain\x20state\x20(order,\x20repository\x20data)\x20or\x20is\x20it\x20free-form?','Is\x20the\x20withdrawal\x20recipient\x20constrained\x20anywhere?']},{'object':'Treasury','field':'external_deposit_guard[]\x20(AmountFromDepositGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount,\x20Option)','meaning':'When\x20Some:\x20exact\x20deposit\x20amount\x20split\x20from\x20the\x20coin\x20(remainder\x20returned\x20to\x20caller).\x20When\x20None:\x20whole\x20coin\x20deposited','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'same\x20as\x20withdraw:\x20value\x20type\x20must\x20be\x20numeric\x20when\x20Some','runtimeFallback':'None\x20->\x20entire\x20coin\x20deposited;\x20Some\x20->\x20coin::split\x20to\x20`value`,\x20remainder\x20transferred\x20back\x20to\x20sender','riskNotes':['A\x20submission-origin\x20amount\x20below\x20the\x20coin\x20total\x20silently\x20returns\x20the\x20difference\x20to\x20the\x20caller\x20—\x20intended\x20for\x20partial\x20deposits','Deposits\x20cannot\x20steal\x20funds;\x20the\x20risk\x20direction\x20is\x20mis-recorded\x20history\x20only']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20on\x20the\x20deposit\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check','runtimeFallback':'None\x20->\x20none','riskNotes':['Traceability\x20only']}],'gateBehavior':'passport\x20verification\x20against\x20the\x20guard\x20must\x20pass\x20+\x20guard\x20must\x20be\x20registered\x20(E_EXTERNAL_DEPOSIT_GUARD_NOT_FOUND)','setterChecklist':['None\x20identifier\x20=\x20whole-coin\x20deposit;\x20Some\x20=\x20exact-amount\x20deposit\x20with\x20refund\x20of\x20the\x20remainder'],'auditorChecklist':['Confirm\x20the\x20amount\x20slot\x20origin\x20matches\x20the\x20intended\x20deposit\x20UX\x20(whole\x20vs\x20exact)']},{'object':'Reward','field':'guards[]\x20(RewardGuard)','mode':'gate+source','extraction':[{'name':'recipient\x20(Recipient::GuardIdentifier)','meaning':'Claim\x20payout\x20destination\x20address','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'recipient\x20must\x20be\x20a\x20valid\x20address\x20(E_RECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20variants\x20bypass\x20extraction\x20entirely','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20redirects\x20the\x20payout\x20to\x20any\x20address\x20it\x20names']},{'name':'amount\x20(Amount::GuardU64Identifier)','meaning':'Claim\x20size\x20paid\x20from\x20the\x20Reward\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':U64,'configCheck':'submission\x20value\x20type\x20must\x20be\x20u64\x20(E_AMOUNT_NOT_U64)','runtimeFallback':'Fixed(u64)\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20decides\x20the\x20claim\x20size;\x20only\x20balance\x20and\x20per-recipient\x20record\x20bound\x20it']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20in\x20the\x20per-recipient\x20claim\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20none\x20(an\x20unstamped\x20record\x20matches\x20NO\x20store_from_id\x20predicate\x20—\x20pin\x20the\x20slot\x20for\x20any\x20per-order\x20replay\x20gate)','riskNotes':['Traceability\x20+\x20replay\x20gate:\x20without\x20a\x20pinned\x20slot\x20a\x20per-order\x20dedup\x20leg\x20cannot\x20bind\x20to\x20a\x20real\x20order\x20id\x20—\x20pin\x20store_from_id\x20for\x20per-order\x20replay\x20protection;\x20slot-less\x20guards\x20can\x20only\x20dedup\x20lifetime-once\x20via\x20record\x20count/exists\x20with\x20an\x20empty\x20where']}],'gateBehavior':'claim:\x20passport\x20verification\x20against\x20the\x20guard\x20must\x20pass\x20+\x20expiration_time\x20check\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND);\x20guard_not_added_expiration_time\x20freezes\x20the\x20guard\x20set\x20AND\x20blocks\x20balance\x20withdrawal\x20until\x20it\x20elapses','setterChecklist':['Recipient+amount\x20both\x20submission\x20=\x20the\x20passport\x20builder\x20fully\x20controls\x20who\x20gets\x20paid\x20how\x20much\x20—\x20acceptable\x20only\x20for\x20self-service\x20claim\x20flows\x20where\x20the\x20builder\x20IS\x20the\x20beneficiary','expiration_time\x20on\x20the\x20RewardGuard\x20bounds\x20the\x20window\x20(E_GUARD_EXPIRED)'],'auditorChecklist':['For\x20each\x20guard:\x20are\x20recipient/amount\x20fixed\x20or\x20submission?','If\x20submission:\x20does\x20the\x20guard\x20expression\x20bind\x20them\x20to\x20repository\x20data\x20(1167)\x20or\x20an\x20order\x20so\x20the\x20claim\x20is\x20justified?','Is\x20there\x20a\x20per-recipient\x20cap?\x20(Only\x20the\x20historical\x20record\x20total\x20accumulates;\x20there\x20is\x20no\x20per-claim\x20limit.)']},{'object':'Repository','field':'policies[].write_guard[]\x20(PolicyGuard)','mode':'gate+source','extraction':[{'name':'id_from_submission\x20(Option<u8>)','meaning':'Data-record\x20key\x20(address)\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20(E_INVALID_ID_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20id\x20comes\x20from\x20the\x20caller\x20vector\x20or\x20is\x20auto-generated\x20(clock/signer)','riskNotes':['Policy-level\x20conflicts:\x20id_from\x20=\x20Clock/Signer\x20FORBIDS\x20id_from_submission\x20(E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN);\x20id_from\x20=\x20None\x20REQUIRES\x20a\x20non-empty\x20write_guard\x20(E_POLICY_WRITE_GUARD_REQUIRED)']},{'name':'data_from_submission\x20(Option<u8>)','meaning':'Data\x20payload\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':'any\x20repository-supported\x20value\x20type\x20(first\x20byte\x20=\x20value_type)','configCheck':'identifier\x20presence\x20check\x20(E_INVALID_DATA_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20data\x20comes\x20from\x20the\x20caller\x20vector','riskNotes':['Entry-point\x20routing\x20differs:\x20the\x20guarded\x20auto-id\x20write\x20consumes\x20data_from_submission;\x20the\x20guarded\x20manual\x20write\x20REJECTS\x20both\x20extraction\x20slots\x20(E_GUARD_SPECIFIED_ID_FROM_SUBMISSION);\x20the\x20mixed\x20guarded\x20write\x20mixes\x20per-guard\x20extraction\x20with\x20caller\x20vectors','Setting\x20an\x20extraction\x20slot\x20on\x20a\x20guard\x20that\x20is\x20only\x20ever\x20used\x20via\x20the\x20guarded\x20manual\x20write\x20silently\x20means\x20\x27unused\x20config\x27\x20—\x20route\x20must\x20match']}],'gateBehavior':'write\x20path\x20must\x20find\x20the\x20guard\x20in\x20the\x20policy\x20(E_GUARD_SPECIFIED_NOT_IN_POLICY)\x20and\x20pass\x20the\x20passport\x20verification\x20or\x20the\x20permission-based\x20verification\x20(impack\x20membership)','setterChecklist':['Match\x20the\x20policy\x20id_from\x20with\x20the\x20guard\x20slots\x20(see\x20conflicts\x20above)','Pick\x20the\x20write\x20entry\x20point\x20first,\x20then\x20decide\x20which\x20extraction\x20slots\x20that\x20entry\x20point\x20actually\x20honors'],'auditorChecklist':['For\x20each\x20write_guard:\x20which\x20entry\x20points\x20can\x20reach\x20it\x20and\x20which\x20slots\x20do\x20those\x20entry\x20points\x20consume?','A\x20policy\x20with\x20write_guard\x20but\x20id_from=None\x20and\x20no\x20extraction\x20slots\x20still\x20gates\x20writes\x20—\x20verify\x20the\x20guard\x20expression\x20actually\x20restricts\x20who\x20can\x20write']},{'object':'Repository','field':'policies[].quote_guard\x20(Option<address>)','mode':'source','extraction':[{'name':'repository.data\x20(query\x201167\x20params:\x20key,\x20id)','meaning':'Read\x20authorization\x20for\x20private\x20repository\x20data\x20inside\x20guard\x20expressions','allowedOrigins':['query'],'typeConstraint':'(String\x20key,\x20Address\x20id)\x20pair','configCheck':'setting\x20the\x20policy\x20quote\x20guard:\x20the\x20guard\x20must\x20be\x20dependency-eligible\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep\x20true,\x20E_NEED_DEPENDENT_GUARD)','runtimeFallback':'None\x20->\x20every\x20repository\x20data-row\x20read\x20aborts\x20for\x20a\x20key\x20protected\x20by\x20a\x20quote_guard\x20the\x20passport\x20does\x20not\x20carry\x20(IMPACK_GUARD_NOT_FOUND):\x20the\x201167\x20fetch\x20and\x20the\x201173/1174/1176\x20predicate\x20queries\x20check\x20the\x20queried\x20key;\x20the\x201177\x20keys-where\x20scan\x20refuses\x20outright\x20when\x20any\x20protected\x20key\x20is\x20uncovered','riskNotes':['The\x20reference\x20gate\x20spans\x20ALL\x20data-row\x20reads,\x20not\x20just\x20the\x20plain\x20fetch:\x20count/sum/find\x20predicates\x20and\x20the\x20keys-where\x20scan\x20hit\x20the\x20same\x20gate,\x20so\x20range/sum\x20probing\x20of\x20a\x20protected\x20value\x20is\x20refused\x20too','The\x20gate\x20runs\x20inside\x20the\x20native\x20verifier\x20against\x20the\x20impack-list\x20snapshot\x20taken\x20before\x20verify()','rep\x20flag\x20comes\x20from\x20the\x20native\x20parse\x20at\x20guard\x20creation\x20—\x20a\x20guard\x20that\x20fails\x20rep\x20cannot\x20serve\x20as\x20quote_guard']}],'gateBehavior':'No\x20direct\x20gate\x20—\x20this\x20guard\x20authorizes\x20DATA\x20READS\x20performed\x20by\x20other\x20guards','setterChecklist':['Only\x20a\x20fresh,\x20immutable,\x20reliance-free\x20guard\x20(meets\x20the\x20dependency-eligibility\x20shape)\x20qualifies','Register\x20it\x20on\x20the\x20same\x20Repository\x20whose\x20data\x20will\x20be\x20quoted'],'auditorChecklist':['Which\x20guards\x20rely\x20on\x20/\x20are\x20bundled\x20with\x20this\x20quote_guard\x20in\x20passports?\x20(impack\x20membership\x20decides)','Is\x20the\x20quoted\x20(key,id)\x20scoped\x20narrowly\x20enough,\x20or\x20does\x20one\x20quote_guard\x20open\x20the\x20whole\x20policy?']},{'object':'Arbitration','field':'voting_guard[]\x20(VotingGuard)','mode':'gate+source','extraction':[{'name':'vote_weight\x20(VoteValue::GuardIdentifier)','meaning':'Voter\x27s\x20weighted\x20voting\x20power','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER+',\x20value\x20<=\x20u32\x20max\x20(E_GUARD_IDENTIFIER_NUMBER_INVALID)','configCheck':'value\x20type\x20must\x20be\x20numeric\x20(E_GUARD_IDENTIFIER_NOT_NUMBER)','runtimeFallback':'FixedValue\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20assigns\x20its\x20own\x20voting\x20weight\x20—\x20dangerous\x20unless\x20the\x20guard\x20expression\x20derives\x20the\x20weight\x20from\x20trusted\x20state\x20(e.g.\x20repository\x20holdings\x20via\x201167)']}],'gateBehavior':'voting\x20through\x20the\x20voting\x20guard:\x20passport\x20verification\x20must\x20pass\x20+\x20guard\x20registered\x20(E_VOTING_GUARD_NOT_FOUND)','setterChecklist':['Empty\x20voting_guard\x20=\x20open\x20voting\x20(everybody);\x20non-empty\x20=\x20only\x20listed\x20guards\x20may\x20vote','FixedValue\x20for\x20equal-weight\x20votes;\x20GuardIdentifier\x20only\x20when\x20the\x20expression\x20can\x20justify\x20the\x20weight'],'auditorChecklist':['If\x20GuardIdentifier:\x20can\x20a\x20voter\x20self-assign\x20a\x20maximal\x20weight\x20by\x20building\x20the\x20passport\x20alone?']},{'object':'Arbitration','field':'usage_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'passport-guarded\x20dispute\x20filing:\x20the\x20passport\x20verification\x20must\x20pass;\x20dispute()\x20without\x20a\x20passport\x20aborts\x20when\x20usage_guard\x20is\x20set\x20(E_NEED_PASSPORT).\x20Set\x20=\x20guarded\x20entry\x20to\x20filing\x20disputes','setterChecklist':['Set\x20to\x20restrict\x20who\x20can\x20open\x20disputes;\x20none\x20=\x20anyone\x20can\x20dispute'],'auditorChecklist':['Check\x20whether\x20disputing\x20requires\x20passing\x20this\x20guard\x20and\x20who\x20can\x20pass\x20it']},{'object':'Service','field':'buy_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'passport-guarded\x20purchase:\x20the\x20passport\x20verification\x20must\x20pass;\x20buy()\x20without\x20a\x20passport\x20aborts\x20when\x20set\x20(E_BUY_GUARD_PASSPORT_REQUIRED)','setterChecklist':['Pure\x20purchase\x20gate:\x20membership/whitelist/KYC\x20style;\x20no\x20slots\x20are\x20extracted'],'auditorChecklist':['Who\x20can\x20pass\x20it;\x20does\x20it\x20gate\x20every\x20sale\x20item\x20equally\x20(it\x20is\x20service-wide,\x20not\x20per-sale)']},{'object':'Demand','field':'guards[]\x20(ServiceGuard)','mode':'gate+source','extraction':[{'name':'service_identifier\x20(Option<u8>)','meaning':'Presented\x20Service\x20address;\x20overrides\x20the\x20caller-supplied\x20service\x20when\x20presenting','allowedOrigins':['submission','fixed'],'typeConstraint':'address\x20slot\x20whose\x20object\x20type\x20must\x20be\x20Service\x20(submission\x20object\x20type\x20validated\x20at\x20guard_add)','configCheck':'object\x20type\x20check\x20against\x20the\x20guard\x20validated\x20table\x20(E_GUARD_IDS_TYPE_ERROR\x20at\x20verify)','runtimeFallback':'None\x20->\x20caller\x20names\x20the\x20presented\x20service\x20directly','riskNotes':['fixed\x20origin\x20hard-pins\x20which\x20Service\x20may\x20answer\x20this\x20Demand\x20through\x20this\x20guard','submission\x20origin\x20lets\x20the\x20passport\x20builder\x20pick\x20any\x20Service\x20—\x20verify\x20the\x20guard\x20expression\x20restricts\x20it']}],'gateBehavior':'presenting\x20with\x20a\x20passport:\x20passport\x20verification\x20must\x20pass\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND)','setterChecklist':['Set\x20service_identifier\x20to\x20pin\x20the\x20answering\x20service;\x20leave\x20None\x20for\x20open\x20presentation'],'auditorChecklist':['Origin\x20of\x20service_identifier;\x20if\x20submission,\x20who\x20can\x20present\x20what']},{'object':'Machine','field':'node.pair.forward.guard\x20(ForwardGuard)','mode':'gate+source','extraction':[{'name':'retained_submission\x20(vector<u8>\x20identifiers)','meaning':'Submission\x20values\x20retained\x20into\x20Progress\x20Holder.retained_submission\x20(e.g.\x20sub-order\x20/\x20procured-service\x20evidence)\x20when\x20the\x20forward\x20executes','allowedOrigins':['submission'],'typeConstraint':'identifiers\x20must\x20exist\x20as\x20retained\x20submission\x20slots\x20(per-slot\x20checks,\x20E_SUBMISSION_SLOT_MISSING\x20/\x20E_SUBMISSION_SLOT_NOT_RETAINED)','configCheck':'configuring\x20the\x20guarded\x20forward\x20validates\x20the\x20identifiers\x20against\x20the\x20guard\x20table','runtimeFallback':'empty\x20list\x20->\x20gate\x20only,\x20nothing\x20retained;\x20non-empty\x20->\x20the\x20submitted\x20values\x20are\x20copied\x20into\x20the\x20session\x20history','riskNotes':['This\x20is\x20the\x20mechanism\x20that\x20carries\x20sub-order\x20data\x20from\x20an\x20operator\x27s\x20passport\x20into\x20the\x20order\x27s\x20Progress\x20history\x20—\x20downstream\x20analyzers\x20read\x20it\x20(ACTIVE-SESSION\x20queries\x201266-1268\x20+\x201279\x20count;\x20HISTORY-side\x20value\x20read\x20=\x201281\x20progress.history.session.forward.retained_submission.value,\x20which\x20stays\x20readable\x20after\x20the\x20session\x20migrates\x20into\x20history)','Pre-flight\x20probes\x20(read-only,\x20zero\x20gas):\x20the\x20guard\x20query\x20surface\x20exposes\x20a\x20single-slot\x20retention\x20probe\x20(guard,\x20identifier)\x20and\x20a\x20batch\x20slot-defect\x20probe\x20(guard,\x20submission_ids)\x20—\x20the\x20batch\x20form\x20returns\x20the\x20FULL\x20defect\x20list\x20as\x20ordered\x202-byte\x20records\x20([0,\x20id]\x20=\x20slot\x20missing\x20from\x20the\x20guard\x20table,\x20[1,\x20id]\x20=\x20declared\x20but\x20NOT\x20retained\x20at\x20the\x20current\x20progress\x20point;\x20an\x20EMPTY\x20vector\x20=\x20every\x20requested\x20slot\x20is\x20eligible).\x20Probe\x20before\x20forwarding\x20a\x20guarded\x20node\x20so\x20the\x20aborts\x20E_SUBMISSION_SLOT_MISSING\x20(23)\x20/\x20E_SUBMISSION_SLOT_NOT_RETAINED\x20(24)\x20are\x20caught\x20off-chain\x20instead\x20of\x20surfacing\x20mid-machine']}],'gateBehavior':'progress\x20node\x20advancement\x20with\x20a\x20passport:\x20guard\x20is\x20the\x20optional\x20pre/post\x20verification\x20layer\x20for\x20advancing\x20a\x20node;\x20namedOperator/permissionIndex\x20can\x20be\x20replaced\x20by\x20a\x20guard','setterChecklist':['Choose\x20which\x20submission\x20slots\x20are\x20worth\x20retaining\x20as\x20durable\x20evidence','Remember\x20the\x20order\x20of\x20verification:\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first'],'auditorChecklist':['For\x20each\x20guarded\x20forward:\x20does\x20the\x20retained\x20data\x20actually\x20prove\x20the\x20transition\x20claim\x20(sub-order\x20id,\x20amount)?']},{'object':'Allocation','field':'allocators[].guard\x20(Allocator)','mode':'gate+source','extraction':[{'name':'sharing\x20Recipient::GuardIdentifier','meaning':'Payout\x20recipient\x20address\x20for\x20that\x20sharing\x20line','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'recipient\x20must\x20be\x20a\x20valid\x20address\x20(ERECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20sharing\x20variants\x20bypass\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20decides\x20the\x20split\x20destination\x20at\x20alloc()\x20time\x20—\x20the\x20ALC1\x20audit\x20treats\x20an\x20unbound\x20recipient\x20as\x20a\x20redirect\x20risk','for_object\x20anchor\x20(protocol\x20139):\x20when\x20the\x20Allocation\x27s\x20payment_info.for_object\x20is\x20Some,\x20alloc()\x20enforces\x20submitted\x20address\x20==\x20for_object\x20and\x20aborts\x20with\x20ERECIPIENT_NOT_FOR_OBJECT\x20(15)\x20on\x20mismatch\x20—\x20the\x20anchor\x20is\x20mechanism-enforced,\x20not\x20advisory','for_object\x20=\x20None\x20carries\x20NO\x20anchor:\x20nothing\x20is\x20enforced\x20on-chain\x20and\x20the\x20recipient\x20semantics\x20are\x20entirely\x20the\x20creator\x27s\x20business\x20(Allocation\x20is\x20a\x20generic\x20component;\x20only\x20host\x20flows\x20that\x20declare\x20a\x20binding\x20get\x20the\x20anchor)']}],'gateBehavior':'alloc:\x20the\x20passed\x20guard\x20address\x20must\x20equal\x20the\x20registered\x20allocator\x20guard;\x20the\x20passport\x20verification\x20must\x20pass;\x20AllocationEvent\x20records\x20which\x20guard\x20ran','setterChecklist':['Bind\x20recipient\x20slots\x20inside\x20the\x20guard\x20expression\x20(signer\x20==\x20authorized\x20party,\x20state\x20==\x20expected\x20scope)\x20exactly\x20as\x20ALC1\x20expects','A\x20submission\x20slot\x20with\x20NO\x20scope\x20binding\x20=\x20HIGH\x20severity\x20finding','When\x20setting\x20payment_info:\x20for_object\x20=\x20Some\x20turns\x20it\x20into\x20an\x20enforced\x20anchor\x20—\x20every\x20GuardIdentifier\x20recipient\x20submission\x20must\x20equal\x20that\x20address\x20or\x20alloc()\x20aborts\x20(code\x2015);\x20verify\x20the\x20anchor\x20matches\x20the\x20intended\x20recipient\x20flow\x20BEFORE\x20create\x20(payment_info\x20is\x20immutable\x20after\x20create)','for_object\x20=\x20None\x20is\x20legal:\x20no\x20on-chain\x20anchor,\x20recipient\x20routing\x20is\x20then\x20purely\x20the\x20creator\x27s\x20design\x20—\x20flag\x20this\x20explicitly\x20in\x20the\x20plan\x20so\x20the\x20user\x20decides'],'auditorChecklist':['Cross-scenario\x20settlement\x20residual:\x20a\x20guard\x20bound\x20to\x20one\x20host\x20but\x20reusable\x20across\x20unrelated\x20callers\x20of\x20other\x20hosts','Every\x20submission\x20recipient\x20slot\x20must\x20have\x20a\x20scope\x20binding\x20(guard\x20expression\x20or\x20payment_info.for_object\x20anchor)\x20—\x20otherwise\x20funds\x20can\x20be\x20redirected','Check\x20payment_info.for_object:\x20Some\x20=\x20confirmed\x20enforced\x20anchor\x20(compare\x20against\x20intended\x20recipients);\x20None\x20=\x20trust-on-creator,\x20no\x20on-chain\x20enforcement\x20of\x20the\x20GuardIdentifier\x20destination']},{'object':'Payment','field':'info.for_guard\x20(PaymentInfo)','mode':'source','extraction':[{'name':'for_guard','meaning':'Provenance:\x20records\x20which\x20guard\x20context\x20produced\x20this\x20payment;\x20creates\x20an\x20object-linker\x20affiliation','allowedOrigins':['fixed'],'typeConstraint':'guard\x20address\x20(set\x20when\x20the\x20payment\x20info\x20is\x20created\x20with\x20a\x20guard\x20attached\x20—\x20the\x20payment_info_with_guard\x20variants)','configCheck':'n/a\x20—\x20plain\x20address\x20copy','runtimeFallback':'None\x20->\x20no\x20provenance','riskNotes':['Not\x20a\x20gate,\x20not\x20a\x20submission\x20slot\x20—\x20pure\x20traceability\x20(queries\x201057/1058,\x201108/1109)']}],'gateBehavior':'None','setterChecklist':['Attach\x20for_guard\x20when\x20the\x20payment\x20originates\x20from\x20a\x20guarded\x20flow'],'auditorChecklist':['Use\x20it\x20to\x20trace\x20payment\x20history\x20back\x20to\x20the\x20guarding\x20decision']},{'object':'Permission','field':'table\x20keys\x20(guard\x20addresses\x20as\x20permission\x20subjects)','mode':'gate','extraction':[],'gateBehavior':'A\x20guard\x20ADDRESS\x20can\x20be\x20granted\x20permission\x20indexes\x20like\x20a\x20user.\x20A\x20passport-asserted\x20operation\x20collects\x20the\x20passport\x20impack\x20guard\x20list\x20and\x20checks\x20permission\x20indexes\x20against\x20it:\x20a\x20passing\x20guard\x20can\x20therefore\x20carry\x20authorization\x20for\x20the\x20whole\x20transaction','setterChecklist':['Granting\x20an\x20index\x20to\x20a\x20guard\x20address\x20delegates\x20that\x20authority\x20to\x20anyone\x20who\x20can\x20pass\x20the\x20guard\x20—\x20treat\x20like\x20a\x20role\x20grant'],'auditorChecklist':['List\x20permission\x20subjects\x20that\x20are\x20guard\x20addresses;\x20evaluate\x20who\x20can\x20pass\x20those\x20guards\x20(they\x20inherit\x20the\x20permission)']}];export const VALUE_ORIGIN_SEMANTICS={'fixed':'Value\x20baked\x20into\x20the\x20guard\x20table\x20(b_submission=false).\x20Deterministic\x20on\x20every\x20use;\x20frozen\x20after\x20create;\x20used\x20as\x20the\x20fallback\x20when\x20no\x20submission\x20is\x20supplied.','submission':'Value\x20supplied\x20by\x20the\x20passport\x20builder\x20at\x20guard_add\x20time\x20(b_submission=true),\x20type-checked\x20against\x20the\x20table.\x20Whoever\x20builds\x20the\x20passport\x20controls\x20the\x20value\x20—\x20always\x20ask\x20who\x20that\x20is.','query':'Value\x20that\x20exists\x20only\x20inside\x20the\x20guard\x20input\x20expression\x20(native\x20query\x20opcodes\x201xxx).\x20It\x20constrains\x20verification\x20(state\x20coupling)\x20but\x20is\x20never\x20extractable;\x20extraction\x20slots\x20must\x20be\x20fixed\x20or\x20submission.'};export const GUARD_PASSPORT_DOCTRINE=['Slot\x20value\x20resolution\x20order:\x20passport\x20submission\x20value\x20->\x20fixed\x20guard\x20table\x20value\x20->\x20abort\x20(E_SUBMISSION_ID_NOT_FOUND).\x20A\x20slot\x20with\x20no\x20submission\x20and\x20no\x20fixed\x20value\x20aborts\x20the\x20host\x20call.','A\x20guard\x20only\x20participates\x20if\x20its\x20passport\x20verification\x20passes,\x20and\x20it\x20must\x20be\x20marked\x20impack\x20when\x20the\x20host\x20extracts\x20data\x20from\x20it\x20(result_for_permission\x20returns\x20impack\x20guards\x20only).','The\x20impack\x20list\x20is\x20snapshotted\x20before\x20verify()\x20runs;\x20repository\x20quote_guard\x20membership\x20is\x20checked\x20against\x20this\x20snapshot\x20inside\x20the\x20native\x20verifier\x20—\x20and\x20the\x20same\x20gate\x20now\x20covers\x20every\x20data-row\x20read\x20(1167\x20fetch,\x201173/1174/1176\x20predicate\x20queries,\x201177\x20keys-where),\x20not\x20just\x20the\x20plain\x20fetch.','relies:\x20a\x20guard\x20may\x20depend\x20on\x20at\x20most\x204\x20other\x20guards\x20(MAX_DEPENDED_COUNT),\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first,\x20and\x20the\x20combine\x20logic\x20is\x20relies_logic_and\x20(AND\x20default,\x20OR\x20optional).','Dependency\x20eligibility\x20of\x20a\x20guard\x20=\x20relies\x20empty\x20AND\x20immutable\x20AND\x20rep\x20—\x20the\x20only\x20shape\x20accepted\x20as\x20a\x20repository\x20quote_guard\x20or\x20as\x20a\x20relied-upon\x20guard.','Guards\x20are\x20frozen\x20on\x20create\x20(immutable=true);\x20changing\x20a\x20fixed\x20value\x20means\x20deploying\x20a\x20new\x20guard\x20and\x20re-registering\x20it\x20on\x20every\x20host\x20object.','Type\x20checks\x20happen\x20at\x20config\x20time\x20(submission\x20value\x20type\x20/\x20address\x20format\x20/\x20address\x20compatibility)\x20and\x20at\x20passport\x20build\x20time\x20(the\x20first\x20type\x20byte\x20of\x20each\x20submitted\x20value\x20is\x20compared\x20against\x20the\x20table);\x20runtime\x20aborts\x20are\x20the\x20last\x20resort.','Allocation\x20for_object\x20anchor\x20(protocol\x20139):\x20the\x20Allocation\x27s\x20payment_info.for_object,\x20when\x20Some,\x20is\x20enforced\x20inside\x20alloc()\x20—\x20every\x20Recipient::GuardIdentifier\x20submission\x20must\x20equal\x20that\x20address\x20(abort\x20ERECIPIENT_NOT_FOR_OBJECT\x2015).\x20When\x20None,\x20no\x20anchor\x20exists\x20and\x20the\x20GuardIdentifier\x20destination\x20is\x20whoever\x20builds\x20the\x20passport\x27s\x20choice:\x20entirely\x20the\x20creator\x27s\x20business.\x20Allocation\x20is\x20a\x20generic\x20component\x20—\x20the\x20anchor\x20is\x20opt-in\x20per\x20instance,\x20not\x20a\x20host-flow\x20constant.'];export function guardSitesFor(a){return GUARD_FIELD_SITES['filter'](b=>b['object']['toLowerCase']()===a['toLowerCase']());}export function guardCognitionDoctrine(){return['Classify\x20the\x20mode\x20first:\x20pure\x20gate\x20(authorization\x20only),\x20pure\x20source\x20(data\x20only),\x20or\x20gate+source\x20(most\x20money\x20fields).','For\x20every\x20extracted\x20slot,\x20name\x20its\x20origin\x20(fixed\x20/\x20submission\x20/\x20query)\x20before\x20judging\x20safety.','For\x20submission\x20slots,\x20identify\x20the\x20passport\x20builder:\x20that\x20party\x20chooses\x20the\x20value.\x20Trace\x20what\x20constrains\x20it\x20(guard\x20expression,\x20host-side\x20balance/authorization\x20checks).','For\x20fixed\x20slots,\x20remember\x20immutability:\x20the\x20value\x20is\x20policy,\x20changed\x20only\x20by\x20re-issuing\x20the\x20guard.','For\x20query-coupled\x20guards,\x20map\x20each\x20query\x20id\x20to\x20its\x20data\x20dependency\x20(which\x20object,\x20which\x20field)\x20—\x20the\x20guard\x20is\x20only\x20as\x20fresh\x20as\x20the\x20queried\x20state.','Check\x20config-time\x20invariants:\x20type\x20of\x20each\x20slot,\x20registration\x20limits\x20(treasury\x20100\x20deposit\x20/\x20200\x20withdraw\x20/\x20reward\x20200\x20/\x20arbitration\x2050\x20/\x20repository\x2010\x20write\x20guards\x20per\x20policy),\x20relies\x20<=\x204,\x20submission\x20size\x20<=\x204096\x20bytes\x20(v139;\x20fits\x20a\x20100-address\x20roster\x20witness).','Report\x20any\x20submission\x20slot\x20that\x20decides\x20money\x20destination\x20or\x20amount\x20without\x20a\x20scope\x20binding\x20as\x20a\x20HIGH-severity\x20redirect\x20risk.'];}export const REPOSITORY_WRITE_ROUTE_MATRIX=[{'route':'auto_id_write','purpose':'Unguarded\x20auto-id\x20write:\x20policy\x20has\x20NO\x20write\x20guards\x20and\x20id_from\x20is\x20Clock/Signer.','idSource':'clock','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'auto_id_remove'},{'route':'auto_id_write_guarded','purpose':'Guarded\x20auto-id\x20write:\x20id\x20auto-generated;\x20the\x20guard\x20authorizes\x20AND\x20may\x20supply\x20the\x20data\x20payload\x20via\x20data_from_submission.','idSource':'clock','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':!![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'auto_id_remove_guarded'},{'route':'manual_id_write','purpose':'Unguarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20policy\x20must\x20have\x20no\x20write\x20guards.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'manual_id_remove'},{'route':'manual_id_write_guarded','purpose':'Guarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20the\x20guard\x20authorizes\x20only.\x20Extraction\x20slots\x20must\x20be\x20None.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![],'removeRoute':'manual_id_remove_guarded'},{'route':'mixed_id_write_guarded','purpose':'Mixed\x20write:\x20per\x20specified\x20guard,\x20id\x20comes\x20from\x20id_from_submission\x20(else\x20caller\x20vector)\x20and\x20data\x20from\x20data_from_submission\x20(else\x20caller\x20vector).\x20Requires\x20policy\x20id_from\x20==\x20NONE.','idSource':'submission-if-set-else-caller','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':!![],'honorsDataFromSubmission':!![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'mixed_id_remove_guarded'},{'route':'mixed_id_remove_guarded','purpose':'Mixed\x20removal:\x20deletes\x20the\x20record\x20whose\x20id\x20is\x20extracted\x20from\x20id_from_submission.\x20Requires\x20the\x20slot\x20to\x20be\x20SET.','idSource':'submission-if-set-else-caller','dataSource':'none','honorsIdFromSubmission':!![],'honorsDataFromSubmission':![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![]}];export function repositoryRouteSlotConflicts(a){const b=[],{idFrom:c,writeGuardCount:d,idFromSubmissionSet:e,dataFromSubmissionSet:f,intendedRoute:g}=a;return c==='none'&&d===0x0&&b['push']('E_POLICY_WRITE_GUARD_REQUIRED:\x20id_from=NONE\x20with\x20an\x20empty\x20write_guard\x20lets\x20anyone\x20mutate\x20the\x20policy\x20data'),c!=='none'&&e&&b['push']('E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN:\x20id\x20is\x20auto-generated\x20(clock/signer);\x20id_from_submission\x20can\x20never\x20fire'),(g==='manual_id_write_guarded'||g==='manual_id_remove_guarded')&&((e||f)&&b['push']('E_GUARD_SPECIFIED_ID_FROM_SUBMISSION:\x20the\x20chosen\x20route\x20rejects\x20every\x20extraction\x20slot;\x20use\x20the\x20mixed\x20guarded\x20write\x20or\x20the\x20guarded\x20auto-id\x20write\x20instead')),g==='auto_id_write_guarded'&&e&&b['push']('id_from_submission\x20is\x20never\x20consumed\x20by\x20the\x20guarded\x20auto-id\x20write\x20(id\x20is\x20auto-generated);\x20the\x20slot\x20is\x20dead\x20config'),g==='mixed_id_write_guarded'&&c!=='none'&&b['push']('E_POLICY_ID_FROM_NONE:\x20the\x20mixed\x20guarded\x20write\x20requires\x20policy\x20id_from=NONE'),g==='mixed_id_remove_guarded'&&!e&&b['push']('E_GUARD_NOT_SPECIFIED_ID_FROM_SUBMISSION:\x20mixed\x20removal\x20has\x20no\x20id\x20source;\x20set\x20id_from_submission\x20or\x20use\x20the\x20guarded\x20manual\x20removal\x20route'),b;}
|
|
1
|
+
export const GUARD_FIELD_COGNITION_VERSION='1.1.0';const NUMBER='number\x20(numeric\x20value\x20type)',U64='u64\x20exactly\x20(common::TYPE_U64)',ADDRESS='address\x20or\x20address-compatible\x20object\x20id';export const GUARD_FIELD_SITES=[{'object':'Treasury','field':'external_withdraw_guard[]\x20(AmountFromWithdrawGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount)','meaning':'Exact\x20withdraw\x20amount\x20moved\x20out\x20of\x20the\x20treasury\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'configuring\x20the\x20external-withdraw\x20guard:\x20the\x20amount\x20slot\x20must\x20carry\x20a\x20declared\x20submission\x20value\x20type\x20and\x20it\x20must\x20be\x20numeric\x20(E_IDENTIFIER_NOT_NUMBER_TYPE)','runtimeFallback':'falls\x20back\x20to\x20the\x20fixed\x20table\x20value\x20when\x20no\x20submission\x20is\x20supplied;\x20if\x20neither\x20exists\x20the\x20tx\x20aborts\x20(E_SUBMISSION_ID_NOT_FOUND)','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20chooses\x20the\x20amount;\x20only\x20the\x20balance\x20check\x20(E_WITHDRAW_BALANCE_INSUFFICIENT)\x20bounds\x20it','fixed\x20origin\x20=\x20same\x20amount\x20every\x20withdrawal;\x20safe\x20default\x20for\x20allowance-style\x20guards','query\x20origin\x20is\x20impossible\x20for\x20this\x20slot\x20—\x20a\x20query\x20can\x20only\x20gate,\x20never\x20supply\x20the\x20amount']},{'name':'store_from_id\x20(optional)','meaning':'Secondary\x20slot\x20decoded\x20as\x20address;\x20recorded\x20in\x20Treasury\x20history\x20Record\x20for\x20traceability','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20on\x20the\x20recorded\x20slot\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20Record.store_from_id\x20=\x20none','riskNotes':['Bookkeeping\x20only;\x20never\x20used\x20as\x20the\x20withdrawal\x20recipient']}],'gateBehavior':'the\x20passport\x20verification\x20against\x20this\x20guard\x20must\x20pass\x20AND\x20the\x20guard\x20address\x20must\x20be\x20registered\x20in\x20the\x20external-withdraw\x20guard\x20list\x20(E_EXTERNAL_WITHDRAW_GUARD_NOT_FOUND)','setterChecklist':['Decide\x20who\x20builds\x20passports\x20against\x20this\x20guard\x20—\x20that\x20party\x20controls\x20a\x20submission-origin\x20amount','Prefer\x20a\x20fixed\x20amount\x20for\x20allowance\x20guards;\x20reserve\x20submission\x20amounts\x20for\x20flows\x20where\x20the\x20passport\x20builder\x20is\x20trusted\x20or\x20the\x20amount\x20is\x20re-verified\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20against\x20order.amount\x20via\x20query\x201561)','The\x20RECIPIENT\x20is\x20tx-supplied,\x20not\x20from\x20the\x20guard\x20—\x20constrain\x20it\x20inside\x20the\x20guard\x20expression\x20(e.g.\x20compare\x20a\x20submitted\x20address\x20against\x20an\x20expected\x20one)\x20if\x20destination\x20matters','Check\x20the\x20guard\x27s\x20dependency-eligibility\x20status\x20only\x20matters\x20if\x20this\x20guard\x20will\x20rely\x20on\x20others\x20(relies\x20<=\x204,\x20added\x20first)'],'auditorChecklist':['For\x20each\x20registered\x20guard:\x20classify\x20amount\x20slot\x20as\x20fixed\x20or\x20submission\x20(read\x20b_submission\x20in\x20the\x20table)','If\x20submission:\x20who\x20can\x20hold/build\x20a\x20passport\x20with\x20this\x20guard?\x20Can\x20a\x20stranger\x20drain\x20the\x20treasury\x20up\x20to\x20its\x20balance?','Does\x20the\x20guard\x20expression\x20bind\x20the\x20submission\x20to\x20on-chain\x20state\x20(order,\x20repository\x20data)\x20or\x20is\x20it\x20free-form?','Is\x20the\x20withdrawal\x20recipient\x20constrained\x20anywhere?']},{'object':'Treasury','field':'external_deposit_guard[]\x20(AmountFromDepositGuard)','mode':'gate+source','extraction':[{'name':'identifier\x20(amount,\x20Option)','meaning':'When\x20Some:\x20exact\x20deposit\x20amount\x20split\x20from\x20the\x20coin\x20(remainder\x20returned\x20to\x20caller).\x20When\x20None:\x20whole\x20coin\x20deposited','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER,'configCheck':'same\x20as\x20withdraw:\x20value\x20type\x20must\x20be\x20numeric\x20when\x20Some','runtimeFallback':'None\x20->\x20entire\x20coin\x20deposited;\x20Some\x20->\x20coin::split\x20to\x20`value`,\x20remainder\x20transferred\x20back\x20to\x20sender','riskNotes':['A\x20submission-origin\x20amount\x20below\x20the\x20coin\x20total\x20silently\x20returns\x20the\x20difference\x20to\x20the\x20caller\x20—\x20intended\x20for\x20partial\x20deposits','Deposits\x20cannot\x20steal\x20funds;\x20the\x20risk\x20direction\x20is\x20mis-recorded\x20history\x20only']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20on\x20the\x20deposit\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check','runtimeFallback':'None\x20->\x20none','riskNotes':['Traceability\x20only']}],'gateBehavior':'passport\x20verification\x20against\x20the\x20guard\x20must\x20pass\x20+\x20guard\x20must\x20be\x20registered\x20(E_EXTERNAL_DEPOSIT_GUARD_NOT_FOUND)','setterChecklist':['None\x20identifier\x20=\x20whole-coin\x20deposit;\x20Some\x20=\x20exact-amount\x20deposit\x20with\x20refund\x20of\x20the\x20remainder'],'auditorChecklist':['Confirm\x20the\x20amount\x20slot\x20origin\x20matches\x20the\x20intended\x20deposit\x20UX\x20(whole\x20vs\x20exact)']},{'object':'Reward','field':'guards[]\x20(RewardGuard)','mode':'gate+source','extraction':[{'name':'recipient\x20(Recipient::GuardIdentifier)','meaning':'Claim\x20payout\x20destination\x20address','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'recipient\x20must\x20be\x20a\x20valid\x20address\x20(E_RECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20variants\x20bypass\x20extraction\x20entirely','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20redirects\x20the\x20payout\x20to\x20any\x20address\x20it\x20names']},{'name':'amount\x20(Amount::GuardU64Identifier)','meaning':'Claim\x20size\x20paid\x20from\x20the\x20Reward\x20balance','allowedOrigins':['submission','fixed'],'typeConstraint':U64,'configCheck':'submission\x20value\x20type\x20must\x20be\x20u64\x20(E_AMOUNT_NOT_U64)','runtimeFallback':'Fixed(u64)\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20passport\x20builder\x20decides\x20the\x20claim\x20size;\x20only\x20balance\x20and\x20per-recipient\x20record\x20bound\x20it']},{'name':'store_from_id\x20(optional)','meaning':'Address\x20slot\x20recorded\x20in\x20the\x20per-recipient\x20claim\x20Record','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20(E_STORE_FROM_ID_NOT_COMPATIBLE)','runtimeFallback':'None\x20->\x20none\x20(an\x20unstamped\x20record\x20matches\x20NO\x20store_from_id\x20predicate\x20—\x20pin\x20the\x20slot\x20for\x20any\x20per-order\x20replay\x20gate)','riskNotes':['Traceability\x20+\x20replay\x20gate:\x20without\x20a\x20pinned\x20slot\x20a\x20per-order\x20dedup\x20leg\x20cannot\x20bind\x20to\x20a\x20real\x20order\x20id\x20—\x20pin\x20store_from_id\x20for\x20per-order\x20replay\x20protection;\x20slot-less\x20guards\x20can\x20only\x20dedup\x20lifetime-once\x20via\x20record\x20count/exists\x20with\x20an\x20empty\x20where']}],'gateBehavior':'claim:\x20passport\x20verification\x20against\x20the\x20guard\x20must\x20pass\x20+\x20expiration_time\x20check\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND);\x20guard_not_added_expiration_time\x20freezes\x20the\x20guard\x20set\x20AND\x20blocks\x20balance\x20withdrawal\x20until\x20it\x20elapses','setterChecklist':['Recipient+amount\x20both\x20submission\x20=\x20the\x20passport\x20builder\x20fully\x20controls\x20who\x20gets\x20paid\x20how\x20much\x20—\x20acceptable\x20only\x20for\x20self-service\x20claim\x20flows\x20where\x20the\x20builder\x20IS\x20the\x20beneficiary','expiration_time\x20on\x20the\x20RewardGuard\x20bounds\x20the\x20window\x20(E_GUARD_EXPIRED)'],'auditorChecklist':['For\x20each\x20guard:\x20are\x20recipient/amount\x20fixed\x20or\x20submission?','If\x20submission:\x20does\x20the\x20guard\x20expression\x20bind\x20them\x20to\x20repository\x20data\x20(1167)\x20or\x20an\x20order\x20so\x20the\x20claim\x20is\x20justified?','Is\x20there\x20a\x20per-recipient\x20cap?\x20(Only\x20the\x20historical\x20record\x20total\x20accumulates;\x20there\x20is\x20no\x20per-claim\x20limit.)']},{'object':'Repository','field':'policies[].write_guard[]\x20(PolicyGuard)','mode':'gate+source','extraction':[{'name':'id_from_submission\x20(Option<u8>)','meaning':'Data-record\x20key\x20(address)\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'address-compatibility\x20check\x20(E_INVALID_ID_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20id\x20comes\x20from\x20the\x20caller\x20vector\x20or\x20is\x20auto-generated\x20(clock/signer)','riskNotes':['Policy-level\x20conflicts:\x20id_from\x20=\x20Clock/Signer\x20FORBIDS\x20id_from_submission\x20(E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN);\x20id_from\x20=\x20None\x20REQUIRES\x20a\x20non-empty\x20write_guard\x20(E_POLICY_WRITE_GUARD_REQUIRED)']},{'name':'data_from_submission\x20(Option<u8>)','meaning':'Data\x20payload\x20extracted\x20from\x20the\x20guard\x20instead\x20of\x20caller-supplied','allowedOrigins':['submission','fixed'],'typeConstraint':'any\x20repository-supported\x20value\x20type\x20(first\x20byte\x20=\x20value_type)','configCheck':'identifier\x20presence\x20check\x20(E_INVALID_DATA_IN_GUARD_TABLE)','runtimeFallback':'None\x20->\x20data\x20comes\x20from\x20the\x20caller\x20vector','riskNotes':['Entry-point\x20routing\x20differs:\x20the\x20guarded\x20auto-id\x20write\x20consumes\x20data_from_submission;\x20the\x20guarded\x20manual\x20write\x20REJECTS\x20both\x20extraction\x20slots\x20(E_GUARD_SPECIFIED_ID_FROM_SUBMISSION);\x20the\x20mixed\x20guarded\x20write\x20mixes\x20per-guard\x20extraction\x20with\x20caller\x20vectors','Setting\x20an\x20extraction\x20slot\x20on\x20a\x20guard\x20that\x20is\x20only\x20ever\x20used\x20via\x20the\x20guarded\x20manual\x20write\x20silently\x20means\x20\x27unused\x20config\x27\x20—\x20route\x20must\x20match']}],'gateBehavior':'write\x20path\x20must\x20find\x20the\x20guard\x20in\x20the\x20policy\x20(E_GUARD_SPECIFIED_NOT_IN_POLICY)\x20and\x20pass\x20the\x20passport\x20verification\x20or\x20the\x20permission-based\x20verification\x20(impack\x20membership)','setterChecklist':['Match\x20the\x20policy\x20id_from\x20with\x20the\x20guard\x20slots\x20(see\x20conflicts\x20above)','Pick\x20the\x20write\x20entry\x20point\x20first,\x20then\x20decide\x20which\x20extraction\x20slots\x20that\x20entry\x20point\x20actually\x20honors'],'auditorChecklist':['For\x20each\x20write_guard:\x20which\x20entry\x20points\x20can\x20reach\x20it\x20and\x20which\x20slots\x20do\x20those\x20entry\x20points\x20consume?','A\x20policy\x20with\x20write_guard\x20but\x20id_from=None\x20and\x20no\x20extraction\x20slots\x20still\x20gates\x20writes\x20—\x20verify\x20the\x20guard\x20expression\x20actually\x20restricts\x20who\x20can\x20write']},{'object':'Repository','field':'policies[].quote_guard\x20(Option<address>)','mode':'source','extraction':[{'name':'repository.data\x20(query\x201167\x20params:\x20key,\x20id)','meaning':'Read\x20authorization\x20for\x20private\x20repository\x20data\x20inside\x20guard\x20expressions','allowedOrigins':['query'],'typeConstraint':'(String\x20key,\x20Address\x20id)\x20pair','configCheck':'setting\x20the\x20policy\x20quote\x20guard:\x20the\x20guard\x20must\x20be\x20dependency-eligible\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep\x20true,\x20E_NEED_DEPENDENT_GUARD)','runtimeFallback':'None\x20->\x20every\x20repository\x20data-row\x20read\x20aborts\x20for\x20a\x20key\x20protected\x20by\x20a\x20quote_guard\x20the\x20passport\x20does\x20not\x20carry\x20(IMPACK_GUARD_NOT_FOUND):\x20the\x201167\x20fetch\x20and\x20the\x201173/1174/1176\x20predicate\x20queries\x20check\x20the\x20queried\x20key;\x20the\x201177\x20keys-where\x20scan\x20refuses\x20outright\x20when\x20any\x20protected\x20key\x20is\x20uncovered','riskNotes':['The\x20reference\x20gate\x20spans\x20ALL\x20data-row\x20reads,\x20not\x20just\x20the\x20plain\x20fetch:\x20count/sum/find\x20predicates\x20and\x20the\x20keys-where\x20scan\x20hit\x20the\x20same\x20gate,\x20so\x20range/sum\x20probing\x20of\x20a\x20protected\x20value\x20is\x20refused\x20too','The\x20gate\x20runs\x20inside\x20the\x20native\x20verifier\x20against\x20the\x20impack-list\x20snapshot\x20taken\x20before\x20verify()','rep\x20flag\x20comes\x20from\x20the\x20native\x20parse\x20at\x20guard\x20creation\x20—\x20a\x20guard\x20that\x20fails\x20rep\x20cannot\x20serve\x20as\x20quote_guard']}],'gateBehavior':'No\x20direct\x20gate\x20—\x20this\x20guard\x20authorizes\x20DATA\x20READS\x20performed\x20by\x20other\x20guards','setterChecklist':['Only\x20a\x20fresh,\x20immutable,\x20reliance-free\x20guard\x20(meets\x20the\x20dependency-eligibility\x20shape)\x20qualifies','Register\x20it\x20on\x20the\x20same\x20Repository\x20whose\x20data\x20will\x20be\x20quoted'],'auditorChecklist':['Which\x20guards\x20rely\x20on\x20/\x20are\x20bundled\x20with\x20this\x20quote_guard\x20in\x20passports?\x20(impack\x20membership\x20decides)','Is\x20the\x20quoted\x20(key,id)\x20scoped\x20narrowly\x20enough,\x20or\x20does\x20one\x20quote_guard\x20open\x20the\x20whole\x20policy?']},{'object':'Arbitration','field':'voting_guard[]\x20(VotingGuard)','mode':'gate+source','extraction':[{'name':'vote_weight\x20(VoteValue::GuardIdentifier)','meaning':'Voter\x27s\x20weighted\x20voting\x20power','allowedOrigins':['submission','fixed'],'typeConstraint':NUMBER+',\x20value\x20<=\x20u32\x20max\x20(E_GUARD_IDENTIFIER_NUMBER_INVALID)','configCheck':'value\x20type\x20must\x20be\x20numeric\x20(E_GUARD_IDENTIFIER_NOT_NUMBER)','runtimeFallback':'FixedValue\x20variant\x20bypasses\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20assigns\x20its\x20own\x20voting\x20weight\x20—\x20dangerous\x20unless\x20the\x20guard\x20expression\x20derives\x20the\x20weight\x20from\x20trusted\x20state\x20(e.g.\x20repository\x20holdings\x20via\x201167)']}],'gateBehavior':'voting\x20through\x20the\x20voting\x20guard:\x20passport\x20verification\x20must\x20pass\x20+\x20guard\x20registered\x20(E_VOTING_GUARD_NOT_FOUND)','setterChecklist':['Empty\x20voting_guard\x20=\x20open\x20voting\x20(everybody);\x20non-empty\x20=\x20only\x20listed\x20guards\x20may\x20vote','FixedValue\x20for\x20equal-weight\x20votes;\x20GuardIdentifier\x20only\x20when\x20the\x20expression\x20can\x20justify\x20the\x20weight'],'auditorChecklist':['If\x20GuardIdentifier:\x20can\x20a\x20voter\x20self-assign\x20a\x20maximal\x20weight\x20by\x20building\x20the\x20passport\x20alone?']},{'object':'Arbitration','field':'usage_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'passport-guarded\x20dispute\x20filing:\x20the\x20passport\x20verification\x20must\x20pass;\x20dispute()\x20without\x20a\x20passport\x20aborts\x20when\x20usage_guard\x20is\x20set\x20(E_NEED_PASSPORT).\x20Set\x20=\x20guarded\x20entry\x20to\x20filing\x20disputes','setterChecklist':['Set\x20to\x20restrict\x20who\x20can\x20open\x20disputes;\x20none\x20=\x20anyone\x20can\x20dispute'],'auditorChecklist':['Check\x20whether\x20disputing\x20requires\x20passing\x20this\x20guard\x20and\x20who\x20can\x20pass\x20it']},{'object':'Service','field':'buy_guard\x20(Option<address>)','mode':'gate','extraction':[],'gateBehavior':'passport-guarded\x20purchase:\x20the\x20passport\x20verification\x20must\x20pass;\x20buy()\x20without\x20a\x20passport\x20aborts\x20when\x20set\x20(E_BUY_GUARD_PASSPORT_REQUIRED)','setterChecklist':['Pure\x20purchase\x20gate:\x20membership/whitelist/KYC\x20style;\x20no\x20slots\x20are\x20extracted'],'auditorChecklist':['Who\x20can\x20pass\x20it;\x20does\x20it\x20gate\x20every\x20sale\x20item\x20equally\x20(it\x20is\x20service-wide,\x20not\x20per-sale)']},{'object':'Demand','field':'guards[]\x20(ServiceGuard)','mode':'gate+source','extraction':[{'name':'service_identifier\x20(Option<u8>)','meaning':'Presented\x20Service\x20address;\x20overrides\x20the\x20caller-supplied\x20service\x20when\x20presenting','allowedOrigins':['submission','fixed'],'typeConstraint':'address\x20slot\x20whose\x20object\x20type\x20must\x20be\x20Service\x20(submission\x20object\x20type\x20validated\x20at\x20guard_add)','configCheck':'object\x20type\x20check\x20against\x20the\x20guard\x20validated\x20table\x20(E_GUARD_IDS_TYPE_ERROR\x20at\x20verify)','runtimeFallback':'None\x20->\x20caller\x20names\x20the\x20presented\x20service\x20directly','riskNotes':['fixed\x20origin\x20hard-pins\x20which\x20Service\x20may\x20answer\x20this\x20Demand\x20through\x20this\x20guard','submission\x20origin\x20lets\x20the\x20passport\x20builder\x20pick\x20any\x20Service\x20—\x20verify\x20the\x20guard\x20expression\x20restricts\x20it']}],'gateBehavior':'presenting\x20with\x20a\x20passport:\x20passport\x20verification\x20must\x20pass\x20+\x20guard\x20registered\x20(E_GUARD_NOT_FOUND)','setterChecklist':['Set\x20service_identifier\x20to\x20pin\x20the\x20answering\x20service;\x20leave\x20None\x20for\x20open\x20presentation'],'auditorChecklist':['Origin\x20of\x20service_identifier;\x20if\x20submission,\x20who\x20can\x20present\x20what']},{'object':'Machine','field':'node.pair.forward.guard\x20(ForwardGuard)','mode':'gate+source','extraction':[{'name':'retained_submission\x20(vector<u8>\x20identifiers)','meaning':'Submission\x20values\x20retained\x20into\x20Progress\x20Holder.retained_submission\x20(e.g.\x20sub-order\x20/\x20procured-service\x20evidence)\x20when\x20the\x20forward\x20executes','allowedOrigins':['submission'],'typeConstraint':'identifiers\x20must\x20exist\x20as\x20retained\x20submission\x20slots\x20(per-slot\x20checks,\x20E_SUBMISSION_SLOT_MISSING\x20/\x20E_SUBMISSION_SLOT_NOT_RETAINED)','configCheck':'configuring\x20the\x20guarded\x20forward\x20validates\x20the\x20identifiers\x20against\x20the\x20guard\x20table','runtimeFallback':'empty\x20list\x20->\x20gate\x20only,\x20nothing\x20retained;\x20non-empty\x20->\x20the\x20submitted\x20values\x20are\x20copied\x20into\x20the\x20session\x20history','riskNotes':['This\x20is\x20the\x20mechanism\x20that\x20carries\x20sub-order\x20data\x20from\x20an\x20operator\x27s\x20passport\x20into\x20the\x20order\x27s\x20Progress\x20history\x20—\x20downstream\x20analyzers\x20read\x20it\x20(ACTIVE-SESSION\x20queries\x201266-1268\x20+\x201279\x20count;\x20HISTORY-side\x20value\x20read\x20=\x201281\x20progress.history.session.forward.retained_submission.value,\x20which\x20stays\x20readable\x20after\x20the\x20session\x20migrates\x20into\x20history)','Pre-flight\x20probes\x20(read-only,\x20zero\x20gas):\x20the\x20guard\x20query\x20surface\x20exposes\x20a\x20single-slot\x20retention\x20probe\x20(guard,\x20identifier)\x20and\x20a\x20batch\x20slot-defect\x20probe\x20(guard,\x20submission_ids)\x20—\x20the\x20batch\x20form\x20returns\x20the\x20FULL\x20defect\x20list\x20as\x20ordered\x202-byte\x20records\x20([0,\x20id]\x20=\x20slot\x20missing\x20from\x20the\x20guard\x20table,\x20[1,\x20id]\x20=\x20declared\x20but\x20NOT\x20retained\x20at\x20the\x20current\x20progress\x20point;\x20an\x20EMPTY\x20vector\x20=\x20every\x20requested\x20slot\x20is\x20eligible).\x20Probe\x20before\x20forwarding\x20a\x20guarded\x20node\x20so\x20the\x20aborts\x20E_SUBMISSION_SLOT_MISSING\x20(23)\x20/\x20E_SUBMISSION_SLOT_NOT_RETAINED\x20(24)\x20are\x20caught\x20off-chain\x20instead\x20of\x20surfacing\x20mid-machine']}],'gateBehavior':'progress\x20node\x20advancement\x20with\x20a\x20passport:\x20guard\x20is\x20the\x20optional\x20pre/post\x20verification\x20layer\x20for\x20advancing\x20a\x20node;\x20namedOperator/permissionIndex\x20can\x20be\x20replaced\x20by\x20a\x20guard','setterChecklist':['Choose\x20which\x20submission\x20slots\x20are\x20worth\x20retaining\x20as\x20durable\x20evidence','Remember\x20the\x20order\x20of\x20verification:\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first'],'auditorChecklist':['For\x20each\x20guarded\x20forward:\x20does\x20the\x20retained\x20data\x20actually\x20prove\x20the\x20transition\x20claim\x20(sub-order\x20id,\x20amount)?']},{'object':'Allocation','field':'allocators[].guard\x20(Allocator)','mode':'gate+source','extraction':[{'name':'sharing\x20Recipient::GuardIdentifier','meaning':'Payout\x20recipient\x20address\x20for\x20that\x20sharing\x20line','allowedOrigins':['submission','fixed'],'typeConstraint':ADDRESS,'configCheck':'recipient\x20must\x20be\x20a\x20valid\x20address\x20(ERECIPIENT_IDENTIFIER_NOT_ADDRESS)','runtimeFallback':'Entity/Signer\x20sharing\x20variants\x20bypass\x20extraction','riskNotes':['submission\x20origin\x20=\x20the\x20passport\x20builder\x20decides\x20the\x20split\x20destination\x20at\x20alloc()\x20time\x20—\x20the\x20ALC1\x20audit\x20treats\x20an\x20unbound\x20recipient\x20as\x20a\x20redirect\x20risk','for_object\x20anchor\x20(protocol\x20139):\x20when\x20the\x20Allocation\x27s\x20payment_info.for_object\x20is\x20Some,\x20alloc()\x20enforces\x20submitted\x20address\x20==\x20for_object\x20and\x20aborts\x20with\x20ERECIPIENT_NOT_FOR_OBJECT\x20(15)\x20on\x20mismatch\x20—\x20the\x20anchor\x20is\x20mechanism-enforced,\x20not\x20advisory','for_object\x20=\x20None\x20carries\x20NO\x20anchor:\x20nothing\x20is\x20enforced\x20on-chain\x20and\x20the\x20recipient\x20semantics\x20are\x20entirely\x20the\x20creator\x27s\x20business\x20(Allocation\x20is\x20a\x20generic\x20component;\x20only\x20host\x20flows\x20that\x20declare\x20a\x20binding\x20get\x20the\x20anchor)']}],'gateBehavior':'alloc:\x20the\x20passed\x20guard\x20address\x20must\x20equal\x20the\x20registered\x20allocator\x20guard;\x20the\x20passport\x20verification\x20must\x20pass;\x20AllocationEvent\x20records\x20which\x20guard\x20ran','setterChecklist':['Bind\x20recipient\x20slots\x20inside\x20the\x20guard\x20expression\x20(signer\x20==\x20authorized\x20party,\x20state\x20==\x20expected\x20scope)\x20exactly\x20as\x20ALC1\x20expects','A\x20submission\x20slot\x20with\x20NO\x20scope\x20binding\x20=\x20HIGH\x20severity\x20finding','When\x20setting\x20payment_info:\x20for_object\x20=\x20Some\x20turns\x20it\x20into\x20an\x20enforced\x20anchor\x20—\x20every\x20GuardIdentifier\x20recipient\x20submission\x20must\x20equal\x20that\x20address\x20or\x20alloc()\x20aborts\x20(code\x2015);\x20verify\x20the\x20anchor\x20matches\x20the\x20intended\x20recipient\x20flow\x20BEFORE\x20create\x20(payment_info\x20is\x20immutable\x20after\x20create)','for_object\x20=\x20None\x20is\x20legal:\x20no\x20on-chain\x20anchor,\x20recipient\x20routing\x20is\x20then\x20purely\x20the\x20creator\x27s\x20design\x20—\x20flag\x20this\x20explicitly\x20in\x20the\x20plan\x20so\x20the\x20user\x20decides'],'auditorChecklist':['Cross-scenario\x20settlement\x20residual:\x20a\x20guard\x20bound\x20to\x20one\x20host\x20but\x20reusable\x20across\x20unrelated\x20callers\x20of\x20other\x20hosts','Every\x20submission\x20recipient\x20slot\x20must\x20have\x20a\x20scope\x20binding\x20(guard\x20expression\x20or\x20payment_info.for_object\x20anchor)\x20—\x20otherwise\x20funds\x20can\x20be\x20redirected','Check\x20payment_info.for_object:\x20Some\x20=\x20confirmed\x20enforced\x20anchor\x20(compare\x20against\x20intended\x20recipients);\x20None\x20=\x20trust-on-creator,\x20no\x20on-chain\x20enforcement\x20of\x20the\x20GuardIdentifier\x20destination']},{'object':'Payment','field':'info.for_guard\x20(PaymentInfo)','mode':'source','extraction':[{'name':'for_guard','meaning':'Provenance:\x20records\x20which\x20guard\x20context\x20produced\x20this\x20payment;\x20creates\x20an\x20object-linker\x20affiliation','allowedOrigins':['fixed'],'typeConstraint':'guard\x20address\x20(set\x20when\x20the\x20payment\x20info\x20is\x20created\x20with\x20a\x20guard\x20attached\x20—\x20the\x20payment_info_with_guard\x20variants)','configCheck':'n/a\x20—\x20plain\x20address\x20copy','runtimeFallback':'None\x20->\x20no\x20provenance','riskNotes':['Not\x20a\x20gate,\x20not\x20a\x20submission\x20slot\x20—\x20pure\x20traceability\x20(queries\x201057/1058,\x201108/1109)']}],'gateBehavior':'None','setterChecklist':['Attach\x20for_guard\x20when\x20the\x20payment\x20originates\x20from\x20a\x20guarded\x20flow'],'auditorChecklist':['Use\x20it\x20to\x20trace\x20payment\x20history\x20back\x20to\x20the\x20guarding\x20decision']},{'object':'Permission','field':'table\x20keys\x20(guard\x20addresses\x20as\x20permission\x20subjects)','mode':'gate','extraction':[],'gateBehavior':'A\x20guard\x20ADDRESS\x20can\x20be\x20granted\x20permission\x20indexes\x20like\x20a\x20user.\x20A\x20passport-asserted\x20operation\x20collects\x20the\x20passport\x20impack\x20guard\x20list\x20and\x20checks\x20permission\x20indexes\x20against\x20it:\x20a\x20passing\x20guard\x20can\x20therefore\x20carry\x20authorization\x20for\x20the\x20whole\x20transaction','setterChecklist':['Granting\x20an\x20index\x20to\x20a\x20guard\x20address\x20delegates\x20that\x20authority\x20to\x20anyone\x20who\x20can\x20pass\x20the\x20guard\x20—\x20treat\x20like\x20a\x20role\x20grant'],'auditorChecklist':['List\x20permission\x20subjects\x20that\x20are\x20guard\x20addresses;\x20evaluate\x20who\x20can\x20pass\x20those\x20guards\x20(they\x20inherit\x20the\x20permission)']}];export const VALUE_ORIGIN_SEMANTICS={'fixed':'Value\x20baked\x20into\x20the\x20guard\x20table\x20(b_submission=false).\x20Deterministic\x20on\x20every\x20use;\x20frozen\x20after\x20create;\x20used\x20as\x20the\x20fallback\x20when\x20no\x20submission\x20is\x20supplied.','submission':'Value\x20supplied\x20by\x20the\x20passport\x20builder\x20at\x20guard_add\x20time\x20(b_submission=true),\x20type-checked\x20against\x20the\x20table.\x20Whoever\x20builds\x20the\x20passport\x20controls\x20the\x20value\x20—\x20always\x20ask\x20who\x20that\x20is.','query':'Value\x20that\x20exists\x20only\x20inside\x20the\x20guard\x20input\x20expression\x20(native\x20query\x20opcodes\x201xxx).\x20It\x20constrains\x20verification\x20(state\x20coupling)\x20but\x20is\x20never\x20extractable;\x20extraction\x20slots\x20must\x20be\x20fixed\x20or\x20submission.'};export const GUARD_PASSPORT_DOCTRINE=['Slot\x20value\x20resolution\x20order:\x20passport\x20submission\x20value\x20->\x20fixed\x20guard\x20table\x20value\x20->\x20abort\x20(E_SUBMISSION_ID_NOT_FOUND).\x20A\x20slot\x20with\x20no\x20submission\x20and\x20no\x20fixed\x20value\x20aborts\x20the\x20host\x20call.','A\x20guard\x20only\x20participates\x20if\x20its\x20passport\x20verification\x20passes,\x20and\x20it\x20must\x20be\x20marked\x20impack\x20when\x20the\x20host\x20extracts\x20data\x20from\x20it\x20(result_for_permission\x20returns\x20impack\x20guards\x20only).','The\x20impack\x20list\x20is\x20snapshotted\x20before\x20verify()\x20runs;\x20repository\x20quote_guard\x20membership\x20is\x20checked\x20against\x20this\x20snapshot\x20inside\x20the\x20native\x20verifier\x20—\x20and\x20the\x20same\x20gate\x20now\x20covers\x20every\x20data-row\x20read\x20(1167\x20fetch,\x201173/1174/1176\x20predicate\x20queries,\x201177\x20keys-where),\x20not\x20just\x20the\x20plain\x20fetch.','relies:\x20a\x20guard\x20may\x20depend\x20on\x20at\x20most\x204\x20other\x20guards\x20(MAX_DEPENDED_COUNT),\x20dependent\x20guards\x20must\x20be\x20added\x20to\x20the\x20passport\x20first,\x20and\x20the\x20combine\x20logic\x20is\x20relies_logic_and\x20(AND\x20default,\x20OR\x20optional).','Dependency\x20eligibility\x20of\x20a\x20guard\x20=\x20relies\x20empty\x20AND\x20immutable\x20AND\x20rep\x20—\x20the\x20only\x20shape\x20accepted\x20as\x20a\x20repository\x20quote_guard\x20or\x20as\x20a\x20relied-upon\x20guard.','Guards\x20are\x20frozen\x20on\x20create\x20(immutable=true);\x20changing\x20a\x20fixed\x20value\x20means\x20deploying\x20a\x20new\x20guard\x20and\x20re-registering\x20it\x20on\x20every\x20host\x20object.','Type\x20checks\x20happen\x20at\x20config\x20time\x20(submission\x20value\x20type\x20/\x20address\x20format\x20/\x20address\x20compatibility)\x20and\x20at\x20passport\x20build\x20time\x20(the\x20first\x20type\x20byte\x20of\x20each\x20submitted\x20value\x20is\x20compared\x20against\x20the\x20table);\x20runtime\x20aborts\x20are\x20the\x20last\x20resort.','Allocation\x20for_object\x20anchor\x20(protocol\x20139):\x20the\x20Allocation\x27s\x20payment_info.for_object,\x20when\x20Some,\x20is\x20enforced\x20inside\x20alloc()\x20—\x20every\x20Recipient::GuardIdentifier\x20submission\x20must\x20equal\x20that\x20address\x20(abort\x20ERECIPIENT_NOT_FOR_OBJECT\x2015).\x20When\x20None,\x20no\x20anchor\x20exists\x20and\x20the\x20GuardIdentifier\x20destination\x20is\x20whoever\x20builds\x20the\x20passport\x27s\x20choice:\x20entirely\x20the\x20creator\x27s\x20business.\x20Allocation\x20is\x20a\x20generic\x20component\x20—\x20the\x20anchor\x20is\x20opt-in\x20per\x20instance,\x20not\x20a\x20host-flow\x20constant.'];export function guardSitesFor(a){return GUARD_FIELD_SITES['filter'](b=>b['object']['toLowerCase']()===a['toLowerCase']());}export function guardCognitionDoctrine(){return['Classify\x20the\x20mode\x20first:\x20pure\x20gate\x20(authorization\x20only),\x20pure\x20source\x20(data\x20only),\x20or\x20gate+source\x20(most\x20money\x20fields).','For\x20every\x20extracted\x20slot,\x20name\x20its\x20origin\x20(fixed\x20/\x20submission\x20/\x20query)\x20before\x20judging\x20safety.','For\x20submission\x20slots,\x20identify\x20the\x20passport\x20builder:\x20that\x20party\x20chooses\x20the\x20value.\x20Trace\x20what\x20constrains\x20it\x20(guard\x20expression,\x20host-side\x20balance/authorization\x20checks).','For\x20fixed\x20slots,\x20remember\x20immutability:\x20the\x20value\x20is\x20policy,\x20changed\x20only\x20by\x20re-issuing\x20the\x20guard.','For\x20query-coupled\x20guards,\x20map\x20each\x20query\x20id\x20to\x20its\x20data\x20dependency\x20(which\x20object,\x20which\x20field)\x20—\x20the\x20guard\x20is\x20only\x20as\x20fresh\x20as\x20the\x20queried\x20state.','Check\x20config-time\x20invariants:\x20type\x20of\x20each\x20slot,\x20registration\x20limits\x20(treasury\x20100\x20deposit\x20/\x20200\x20withdraw\x20/\x20reward\x20200\x20/\x20arbitration\x2050\x20/\x20repository\x2010\x20write\x20guards\x20per\x20policy),\x20relies\x20<=\x204,\x20submission\x20size\x20<=\x204096\x20bytes\x20(v140;\x20fits\x20a\x20100-address\x20roster\x20witness).','Report\x20any\x20submission\x20slot\x20that\x20decides\x20money\x20destination\x20or\x20amount\x20without\x20a\x20scope\x20binding\x20as\x20a\x20HIGH-severity\x20redirect\x20risk.'];}export const REPOSITORY_WRITE_ROUTE_MATRIX=[{'route':'auto_id_write','purpose':'Unguarded\x20auto-id\x20write:\x20policy\x20has\x20NO\x20write\x20guards\x20and\x20id_from\x20is\x20Clock/Signer.','idSource':'clock','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'auto_id_remove'},{'route':'auto_id_write_guarded','purpose':'Guarded\x20auto-id\x20write:\x20id\x20auto-generated;\x20the\x20guard\x20authorizes\x20AND\x20may\x20supply\x20the\x20data\x20payload\x20via\x20data_from_submission.','idSource':'clock','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':!![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'auto_id_remove_guarded'},{'route':'manual_id_write','purpose':'Unguarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20policy\x20must\x20have\x20no\x20write\x20guards.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'policy-write-guard-must-be-empty','abortsOnUnhonoredSlots':![],'removeRoute':'manual_id_remove'},{'route':'manual_id_write_guarded','purpose':'Guarded\x20manual\x20write:\x20caller\x20supplies\x20id\x20AND\x20data;\x20the\x20guard\x20authorizes\x20only.\x20Extraction\x20slots\x20must\x20be\x20None.','idSource':'caller','dataSource':'caller','honorsIdFromSubmission':![],'honorsDataFromSubmission':![],'guardRequirement':'specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![],'removeRoute':'manual_id_remove_guarded'},{'route':'mixed_id_write_guarded','purpose':'Mixed\x20write:\x20per\x20specified\x20guard,\x20id\x20comes\x20from\x20id_from_submission\x20(else\x20caller\x20vector)\x20and\x20data\x20from\x20data_from_submission\x20(else\x20caller\x20vector).\x20Requires\x20policy\x20id_from\x20==\x20NONE.','idSource':'submission-if-set-else-caller','dataSource':'submission-if-set-else-caller','honorsIdFromSubmission':!![],'honorsDataFromSubmission':!![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':![],'removeRoute':'mixed_id_remove_guarded'},{'route':'mixed_id_remove_guarded','purpose':'Mixed\x20removal:\x20deletes\x20the\x20record\x20whose\x20id\x20is\x20extracted\x20from\x20id_from_submission.\x20Requires\x20the\x20slot\x20to\x20be\x20SET.','idSource':'submission-if-set-else-caller','dataSource':'none','honorsIdFromSubmission':!![],'honorsDataFromSubmission':![],'guardRequirement':'each-specified-guard-must-be-in-policy','abortsOnUnhonoredSlots':!![]}];export function repositoryRouteSlotConflicts(a){const b=[],{idFrom:c,writeGuardCount:d,idFromSubmissionSet:e,dataFromSubmissionSet:f,intendedRoute:g}=a;return c==='none'&&d===0x0&&b['push']('E_POLICY_WRITE_GUARD_REQUIRED:\x20id_from=NONE\x20with\x20an\x20empty\x20write_guard\x20lets\x20anyone\x20mutate\x20the\x20policy\x20data'),c!=='none'&&e&&b['push']('E_POLICY_ID_FROM_SUBMISSION_FORBIDDEN:\x20id\x20is\x20auto-generated\x20(clock/signer);\x20id_from_submission\x20can\x20never\x20fire'),(g==='manual_id_write_guarded'||g==='manual_id_remove_guarded')&&((e||f)&&b['push']('E_GUARD_SPECIFIED_ID_FROM_SUBMISSION:\x20the\x20chosen\x20route\x20rejects\x20every\x20extraction\x20slot;\x20use\x20the\x20mixed\x20guarded\x20write\x20or\x20the\x20guarded\x20auto-id\x20write\x20instead')),g==='auto_id_write_guarded'&&e&&b['push']('id_from_submission\x20is\x20never\x20consumed\x20by\x20the\x20guarded\x20auto-id\x20write\x20(id\x20is\x20auto-generated);\x20the\x20slot\x20is\x20dead\x20config'),g==='mixed_id_write_guarded'&&c!=='none'&&b['push']('E_POLICY_ID_FROM_NONE:\x20the\x20mixed\x20guarded\x20write\x20requires\x20policy\x20id_from=NONE'),g==='mixed_id_remove_guarded'&&!e&&b['push']('E_GUARD_NOT_SPECIFIED_ID_FROM_SUBMISSION:\x20mixed\x20removal\x20has\x20no\x20id\x20source;\x20set\x20id_from_submission\x20or\x20use\x20the\x20guarded\x20manual\x20removal\x20route'),b;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const BINDING_VERIFIER='guard-binding-verifier.ts\x20(shipped)';export const GUARD_HOST_CONTEXTS=[{'host':'machine_forward','evaluation_timing':'Every\x20tx\x20that\x20advances\x20the\x20edge\x20—\x20evaluated\x20per\x20call,\x20aborts\x20the\x20tx\x20on\x20failure','signer_subject':'The\x20node\x20ADVANCER\x20(operator,\x20keeper,\x20or\x20the\x20party\x20driving\x20the\x20workflow\x20step)','order_anchor':'YES\x20—\x20the\x20order\x20carrying\x20the\x20progress\x20is\x20in\x20scope;\x20order.*\x20queries\x20resolve\x20against\x20it\x20(T10:\x20bind\x20identity\x20legs\x20to\x20task-binding\x20slot\x20254,\x20never\x20a\x20free\x20submission\x20slot)','submission_channel':'Passport\x20carry-on\x20(task-guarded\x20edges\x20declare\x20slots\x20like\x20254;\x20undeclared\x20slots\x20make\x20the\x20edge\x20abort)','identity_obligation':'Caller\x20must\x20be\x20bound\x20to\x20the\x20workflow\x27s\x20operator\x20set\x20(order.owner\x20/\x20order.agent\x20has\x20/\x20named\x20operator\x20/\x20permission)\x20—\x20this\x20is\x20the\x20SOLE\x20identity\x20check\x20when\x20namedOperator\x20is\x20\x22\x22','typical_mistakes':['Identity\x20leg\x20anchored\x20to\x20a\x20free\x20submission\x20slot\x20(T10\x20hijack\x20—\x20attacker\x20submits\x20their\x20own\x20order\x20at\x20slot\x20254)','Reusing\x20a\x20buy-guard\x20here:\x20the\x20buyer\x20identity\x20is\x20NOT\x20the\x20advancer\x20identity'],'derived_rules':[{'id':'MF_SLOT_IDENTITY_ANCHOR','requirement':'Identity\x20legs\x20on\x20task-guarded\x20edges\x20must\x20anchor\x20to\x20the\x20edge\x27s\x20declared\x20task-binding\x20slot,\x20never\x20a\x20free\x20submission\x20slot\x20the\x20caller\x20controls\x20(T10\x20hijack)','enforced_by':BINDING_VERIFIER}]},{'host':'service_allocator_guard','evaluation_timing':'When\x20a\x20tx\x20reaches\x20the\x20allocator\x20(settlement\x20trigger)\x20—\x20the\x20rail\x27s\x20guard\x20decides\x20whether\x20the\x20payout\x20route\x20opens','signer_subject':'The\x20SETTLEMENT\x20TRIGGERER\x20—\x20possibly\x20ANY\x20address\x20(the\x20allocator\x20entry\x20does\x20not\x20check\x20who\x20calls)','order_anchor':'YES\x20for\x20order-bound\x20rails\x20(the\x20allocator\x20resolves\x20the\x20order\x27s\x20escrow);\x20progress.current\x20is\x20available.\x20order.claimed_by\x20exists\x20but\x20is\x20OFF-LIMITS\x20on\x20fund\x20rails\x20(decision\x2011\x20two-rail\x20independence:\x20a\x20rail\x20whose\x20satisfiability\x20flips\x20on\x20the\x20claimed\x20axis\x20is\x20the\x20RAIL_CLAIMED_BY_LEG\x20critical)','submission_channel':'Passport\x20of\x20the\x20triggering\x20tx\x20(usually\x20absent\x20or\x20minimal\x20—\x20do\x20not\x20rely\x20on\x20submission\x20slots\x20here)','identity_obligation':'Must\x20bind\x20the\x20triggerer\x20(context(Signer)\x20comparison,\x20order.agent\x20has,\x20permission.*)\x20UNLESS\x20the\x20scene\x20verifies\x20identity\x20upstream\x20(level3_scene_combined)\x20or\x20the\x20venue\x20is\x20intentionally\x20open-trigger\x20—\x20otherwise\x20any\x20bystander\x20can\x20accelerate/drain\x20the\x20payout\x20(sahr).\x20Machine-enforced\x20check:\x20RAIL_NO_CALLER_IDENTITY\x20(info\x20disclosure)','typical_mistakes':['Pasting\x20a\x20forward-edge\x20identity\x20guard\x20here\x20—\x20it\x20binds\x20the\x20WRONG\x20subject\x20(advancer\x20vs\x20settlement\x20triggerer)','No\x20identity\x20leg\x20at\x20all\x20on\x20a\x20non-open\x20venue','Requiring\x20submission\x20slots\x20that\x20the\x20settlement\x20tx\x20never\x20carries'],'derived_rules':[{'id':'RAIL_NO_CALLER_IDENTITY','requirement':'An\x20allocator\x20gate\x20with\x20no\x20caller-identity\x20leg\x20is\x20triggerable\x20by\x20any\x20address\x20—\x20disclosure;\x20legitimate\x20only\x20for\x20scene-verified\x20or\x20intentionally\x20open-trigger\x20venues','enforced_by':'allocator-rail-verifier.ts\x20(shipped,\x20info)'},{'id':'RAIL_TERMINAL_UNCOVERED','requirement':'Every\x20machine\x20terminal\x20state\x20must\x20have\x20a\x20satisfiable\x20rail\x20through\x20some\x20allocator\x20row','enforced_by':'allocator-rail-verifier.ts\x20(shipped)'},{'id':'RAIL_AWARD_EXIT_MISSING','requirement':'Every\x20terminal\x20—\x20including\x20the\x20terminals\x20an\x20awarded\x20order\x20rests\x20at\x20—\x20must\x20keep\x20a\x20fund\x20exit\x20row\x20on\x20the\x20NODE\x20axis,\x20else\x20escrow\x20strands\x20(decision\x2011:\x20coverage\x20is\x20node-keyed,\x20never\x20claimed-keyed)','enforced_by':'allocator-rail-verifier.ts\x20(shipped)'},{'id':'RAIL_CLAIMED_BY_LEG','requirement':'Decision\x2011\x20two-rail\x20independence:\x20a\x20fund\x20rail\x20whose\x20satisfiability\x20flips\x20on\x20the\x20order.claimed_by\x20axis\x20READS\x20the\x20payout\x20stamp\x20—\x20fund\x20rails\x20are\x20node-gated\x20only;\x20the\x20award\x20is\x20the\x20indemnity\x20track\x27s\x20separate\x20commercial\x20payout\x20(double\x20collection\x20is\x20legal,\x20disclosed\x20at\x20the\x20MCP\x20confirmation\x20gate)','enforced_by':'allocator-rail-verifier.ts\x20(shipped,\x20critical)'},{'id':'RAIL_DEAD_LITERAL','requirement':'Sibling\x20literals\x20contradicting\x20a\x20conjunction-scoped\x20equality\x20are\x20unsatisfiable\x20—\x20dead\x20rows\x20strand\x20the\x20states\x20they\x20were\x20meant\x20to\x20serve','enforced_by':'allocator-rail-verifier.ts\x20(shipped)'}]},{'host':'reward_claim','evaluation_timing':'At\x20the\x20reward\x20claim\x20tx\x20(the\x20claimant\x27s\x20tx)\x20—\x20before\x20the\x20once-slot\x20is\x20consumed','signer_subject':'The\x20CLAIMANT\x20(whoever\x20signs\x20the\x20claim\x20tx)','order_anchor':'NO\x20by\x20default\x20—\x20the\x20Reward\x20object\x20carries\x20no\x20order\x20context;\x20order.*\x20legs\x20have\x20nothing\x20to\x20resolve\x20against\x20UNLESS\x20the\x20guard\x27s\x20table\x20declares\x20an\x20order-slot\x20submission\x20that\x20the\x20claimant\x27s\x20passport\x20fills\x20(per-order\x20bounty\x20shape:\x20guard\x20+\x20store_from\x20scoping)','submission_channel':'Passport\x20submission\x20on\x20the\x20claim\x20tx\x20(the\x20submitted-object\x20slots),\x20or\x20constant\x20table\x20entries\x20only','identity_obligation':'Identity,\x20when\x20required,\x20must\x20ride\x20the\x20submission\x20channel\x20(e.g.\x20an\x20order-owner\x20slot\x20filled\x20by\x20the\x20claimant\x27s\x20passport)\x20—\x20NOT\x20order.*\x20direct\x20reads;\x20per-order\x20once-scoping\x20comes\x20from\x20the\x20claim\x20key\x20(recipient,\x20guard,\x20store_from)\x20with\x20the\x20v139\x20store_from\x20behavior,\x20not\x20from\x20guard\x20legs','typical_mistakes':['order.owner\x20/\x20progress.current\x20legs\x20pasted\x20from\x20a\x20forward\x20guard\x20—\x20they\x20abort\x20or\x20mislead\x20(no\x20order\x20anchor\x20in\x20the\x20claim\x20context)','Assuming\x20per-order\x20once\x20semantics\x20without\x20the\x20store_from\x20binding'],'derived_rules':[{'id':'RC_NO_ORDER_ANCHOR','requirement':'order.*\x20/\x20progress.*\x20query\x20legs\x20are\x20structurally\x20dead\x20here\x20(no\x20order\x20anchor\x20in\x20the\x20claim\x20context)\x20unless\x20an\x20order-slot\x20submission\x20is\x20declared','enforced_by':BINDING_VERIFIER}]},{'host':'service_buy_guard','evaluation_timing':'Inside\x20the\x20purchase\x20tx\x20itself,\x20before\x20the\x20order\x20is\x20created','signer_subject':'The\x20BUYER\x20(tx\x20sender)','order_anchor':'NO\x20—\x20the\x20order\x20does\x20not\x20exist\x20yet;\x20only\x20service-side\x20and\x20repository/permission\x20state\x20is\x20readable','submission_channel':'Passport\x20supplied\x20with\x20the\x20purchase','identity_obligation':'Buyer\x20binding\x20per\x20the\x20venue\x20policy\x20(level1\x20strict\x20single\x20/\x20level2\x20allowlist\x20/\x20level3\x20scene-verified)','typical_mistakes':['Reading\x20order.*\x20state\x20(nothing\x20exists\x20yet\x20—\x20aborts\x20or,\x20pre-136\x20semantics,\x20resolves\x20nothing)','Escrow/funding\x20checks\x20that\x20belong\x20to\x20the\x20allocator\x20rail\x20instead'],'derived_rules':[{'id':'SB_NO_ORDER_STATE','requirement':'order.*\x20query\x20legs\x20are\x20structurally\x20dead\x20(the\x20order\x20does\x20not\x20exist\x20inside\x20the\x20purchase\x20tx)','enforced_by':BINDING_VERIFIER}]},{'host':'arbitration_voting','evaluation_timing':'At\x20arbitration\x20vote\x20casts\x20/\x20resolution\x20entry\x20—\x20per\x20voting-rule\x20evaluation','signer_subject':'The\x20VOTER\x20/\x20arbitrator\x20operator','order_anchor':'Indirect\x20—\x20the\x20Arb\x20case\x20is\x20in\x20scope\x20(arb.*\x20queries);\x20the\x20underlying\x20order\x20is\x20reachable\x20through\x20the\x20case\x20when\x20the\x20flow\x20passes\x20it','submission_channel':'Passport\x20of\x20the\x20voter\x27s\x20tx','identity_obligation':'Voter\x20must\x20satisfy\x20the\x20voting_guard\x27s\x20weight/eligibility\x20rule\x20(or\x20the\x20arb\x20is\x20open-vote\x20by\x20design)','typical_mistakes':['Treating\x20the\x20arb\x20case\x20as\x20an\x20order\x20(arb.*\x20fields\x20differ\x20from\x20order.*\x20fields)','Evidence\x20legs\x20(arb.indemnity)\x20used\x20where\x20the\x20variant\x20is\x20not\x20guaranteed\x20(enum\x20payload\x20aborts)'],'derived_rules':[{'id':'AV_ARB_NAMESPACE','requirement':'Case-scoped\x20queries\x20must\x20use\x20arb.*\x20fields\x20—\x20order.*\x20fields\x20do\x20not\x20resolve\x20against\x20an\x20Arb\x20case','enforced_by':BINDING_VERIFIER}]},{'host':'progress_submission','evaluation_timing':'At\x20progress\x20submission/attestation\x20points\x20(history-bearing\x20edges)','signer_subject':'The\x20SUBMITTER\x20(operator\x20or\x20buyer\x20attestant)','order_anchor':'YES\x20—\x20same\x20order\x20context\x20as\x20machine_forward','submission_channel':'The\x20submission\x20payload\x20itself\x20(this\x20host\x27s\x20purpose\x20is\x20filling\x20history/slots)','identity_obligation':'Submitter\x20binding\x20mirrors\x20the\x20forward-edge\x20obligation\x20for\x20the\x20edge\x20it\x20rides','typical_mistakes':['Skipping\x20the\x20identity\x20leg\x20because\x20\x27it\x27s\x20just\x20an\x20attestation\x27\x20—\x20attestations\x20are\x20replayable\x20without\x20one'],'derived_rules':[{'id':'PS_IDENTITY_REQUIRED','requirement':'Every\x20attestation\x20edge\x20must\x20carry\x20an\x20identity\x20leg\x20—\x20attestations\x20are\x20replayable\x20without\x20one','enforced_by':BINDING_VERIFIER}]},{'host':'repository_write','evaluation_timing':'At\x20the\x20write-guarded\x20repository\x20op\x20(data\x20upsert\x20through\x20a\x20guarded\x20channel)','signer_subject':'The\x20WRITER','order_anchor':'Only\x20if\x20the\x20row\x20is\x20order-keyed\x20and\x20the\x20op\x20passes\x20it;\x20row-key\x20semantics\x20are\x20the\x20guard\x27s\x20own\x20business','submission_channel':'Passport\x20of\x20the\x20writing\x20tx\x20(quote_guard\x20references\x20must\x20be\x20in\x20the\x20impack\x20list\x20—\x20QUOTE-GUARD\x20CARRY)','identity_obligation':'Writer\x20must\x20be\x20a\x20trusted\x20role\x20for\x20the\x20key\x20family\x20(permission-resolved\x20patterns)\x20—\x20repository\x20rows\x20feed\x20aggregates\x20(sum/count)\x20that\x20other\x20guards\x20price\x20against','typical_mistakes':['Open-write\x20rows\x20feeding\x20SUM_BOUND\x20pricing\x20aggregates\x20(forgery\x20by\x20write)','Missing\x20quote_guard\x20in\x20the\x20passport\x20(aborts\x20fail-closed)'],'derived_rules':[{'id':'RW_QUOTE_GUARD_CARRY','requirement':'Guard\x20trees\x20reading\x20governed\x20repository\x20rows\x20require\x20the\x20row\x20policy\x27s\x20quote_guard\x20in\x20the\x20reading\x20passport\x27s\x20impack\x20(QUOTE-GUARD\x20CARRY)','enforced_by':BINDING_VERIFIER},{'id':'RW_OPEN_WRITE_FEEDS_AGGREGATE','requirement':'Open-write\x20rows\x20must\x20not\x20feed\x20SUM/COUNT\x20aggregates\x20that\x20other\x20guards\x20price\x20against\x20(forgery\x20by\x20write)','enforced_by':BINDING_VERIFIER}]},{'host':'gen_passport','evaluation_timing':'At\x20passport\x20generation\x20(issuance\x20gating)','signer_subject':'The\x20PASSPORT\x20REQUESTER','order_anchor':'Service-side\x20state\x20only\x20(same\x20posture\x20as\x20service_buy_guard)','submission_channel':'n/a\x20(the\x20passport\x20is\x20the\x20product\x20of\x20this\x20host)','identity_obligation':'Issuance\x20policy\x20per\x20the\x20venue\x20(who\x20may\x20hold\x20a\x20passport)','typical_mistakes':['Order-dependent\x20issuance\x20legs\x20(no\x20order\x20exists\x20at\x20issuance\x20time)'],'derived_rules':[{'id':'GP_NO_ORDER_AT_ISSUANCE','requirement':'Order-dependent\x20issuance\x20legs\x20are\x20structurally\x20dead\x20(no\x20order\x20exists\x20at\x20issuance\x20time)','enforced_by':BINDING_VERIFIER}]},{'host':'treasury_external_deposit','evaluation_timing':'At\x20the\x20external\x20deposit\x20tx\x20—\x20the\x20guard\x20runs\x20against\x20the\x20depositor\x27s\x20passport\x20BEFORE\x20any\x20balance\x20credit','signer_subject':'The\x20DEPOSITOR\x20(tx\x20sender,\x20passport\x20carrier)\x20—\x20the\x20guard\x20gates\x20who\x20may\x20fund\x20the\x20treasury\x20through\x20this\x20channel','order_anchor':'NO\x20—\x20the\x20treasury\x20has\x20no\x20order\x20scope;\x20order.*\x20legs\x20have\x20nothing\x20to\x20resolve\x20against','submission_channel':'The\x20deposit\x20passport\x27s\x20submissions:\x20the\x20optional\x20amount\x20identifier\x20resolves\x20a\x20NUMBER\x20slot\x20(type-asserted\x20at\x20bind\x20time);\x20the\x20optional\x20store_from_id\x20resolves\x20an\x20ADDRESS-compatible\x20slot','identity_obligation':'Whoever\x20passes\x20the\x20guard\x20may\x20deposit\x20—\x20eligibility\x20IS\x20the\x20guard\x20tree;\x20there\x20is\x20no\x20additional\x20host-side\x20identity\x20check','typical_mistakes':['Treating\x20the\x20amount\x20identifier\x20as\x20a\x20global\x20deposit\x20cap\x20—\x20it\x20only\x20sizes\x20THIS\x20channel\x27s\x20credit;\x20submitted\x20amount\x20≤\x20coin\x20value\x20with\x20the\x20remainder\x20refunded\x20to\x20the\x20depositor\x20(partial\x20deposit)','Omitting\x20the\x20amount\x20identifier:\x20the\x20WHOLE\x20coin\x20is\x20credited\x20unconditionally\x20once\x20the\x20guard\x20passes','Expecting\x20store_from_id\x20to\x20verify\x20fund\x20provenance\x20—\x20it\x20is\x20only\x20RECORDED\x20in\x20the\x20history\x20record,\x20never\x20checked','Assuming\x20fail-closed\x20on\x20an\x20unregistered\x20guard:\x20a\x20deposit\x20through\x20a\x20guard\x20not\x20on\x20the\x20treasury\x27s\x20list\x20REFUNDS\x20the\x20coin\x20(fail-safe)'],'derived_rules':[{'id':'TD_AMOUNT_SLOT_SEMANTICS','requirement':'A\x20number\x20slot\x20referenced\x20as\x20the\x20deposit\x20amount\x20is\x20a\x20caller-declared\x20value:\x20disclose\x20whether\x20the\x20guard\x20bounds\x20it\x20(comparison\x20legs)\x20or\x20it\x20merely\x20sizes\x20the\x20credit','enforced_by':BINDING_VERIFIER}]},{'host':'treasury_external_withdraw','evaluation_timing':'At\x20the\x20external\x20withdraw\x20tx\x20—\x20the\x20guard\x20runs\x20first,\x20then\x20the\x20payee\x20lock\x20and\x20the\x20amount-vs-balance\x20assertion\x20BEFORE\x20any\x20debit','signer_subject':'The\x20WITHDRAWER,\x20who\x20is\x20forcibly\x20also\x20the\x20PAYEE\x20—\x20recipient\x20==\x20tx\x20sender\x20aborts\x20otherwise\x20(E_EXTERNAL_RECIPIENT_NOT_SIGNER)','order_anchor':'NO\x20—\x20the\x20treasury\x20has\x20no\x20order\x20scope;\x20order.*\x20legs\x20have\x20nothing\x20to\x20resolve\x20against','submission_channel':'The\x20withdraw\x20passport\x27s\x20submissions:\x20the\x20amount\x20identifier\x20(REQUIRED\x20at\x20bind\x20time,\x20number\x20type)\x20supplies\x20the\x20withdrawal\x20size;\x20the\x20optional\x20store_from_id\x20records\x20provenance','identity_obligation':'The\x20guard\x20must\x20gate\x20WHO\x20may\x20withdraw\x20—\x20the\x20host\x20only\x20locks\x20payee\x20==\x20signer;\x20anyone\x20passing\x20the\x20guard\x20can\x20move\x20funds\x20to\x20themselves','typical_mistakes':['Believing\x20the\x20guard\x20bounds\x20the\x20withdrawal\x20AMOUNT\x20—\x20the\x20number\x20slot\x20is\x20caller-DECLARED;\x20without\x20comparison\x20legs\x20on\x20that\x20slot\x20the\x20withdrawer\x20picks\x20any\x20amount\x20up\x20to\x20the\x20full\x20balance\x20(drain\x20surface)','Redirecting\x20the\x20payout\x20to\x20a\x20third\x20party\x20via\x20recipient\x20—\x20aborts\x20by\x20design;\x20third-party\x20payouts\x20belong\x20to\x20the\x20permissioned\x20withdraw\x20path','Amount\x20above\x20balance\x20aborts\x20fail-closed\x20(E_WITHDRAW_BALANCE_INSUFFICIENT)\x20—\x20unlike\x20the\x20deposit\x20channel\x27s\x20refund\x20path'],'derived_rules':[{'id':'TW_AMOUNT_UNBOUNDED','requirement':'If\x20the\x20amount\x20number\x20slot\x20appears\x20only\x20as\x20a\x20submission\x20source\x20and\x20never\x20inside\x20a\x20comparison\x20leg,\x20the\x20withdrawal\x20size\x20is\x20caller-chosen\x20—\x20disclose\x20the\x20drain\x20surface\x20on\x20non-open\x20venues','enforced_by':BINDING_VERIFIER}]},{'host':'arbitration_usage','evaluation_timing':'At\x20dispute\x20filing:\x20the\x20no-passport\x20channel\x20requires\x20usage_guard\x20NONE\x20(E_NEED_PASSPORT);\x20the\x20passport\x20channel\x20runs\x20the\x20guard\x20against\x20the\x20filing\x20passport\x20before\x20the\x20case\x20object\x20is\x20minted','signer_subject':'The\x20DISPUTER\x20(buyer\x20or\x20merchant\x20filing\x20through\x20the\x20Service\x20—\x20filing\x20never\x20bypasses\x20the\x20service-side\x20neutrality\x20checks)','order_anchor':'NO\x20at\x20guard\x20evaluation\x20—\x20the\x20guard\x20evaluates\x20against\x20the\x20passport\x20only;\x20the\x20order\x20is\x20a\x20dispute\x20parameter\x20and\x20the\x20Arb\x20case\x20does\x20not\x20exist\x20yet,\x20so\x20arb.*\x20legs\x20are\x20dead\x20here\x20too','submission_channel':'The\x20filing\x20passport\x27s\x20submissions\x20(the\x20guard\x20must\x20be\x20in\x20the\x20passport\x20impack\x20—\x20E_NOT_IMPACK_GUARD)','identity_obligation':'The\x20usage_guard\x20gates\x20WHO\x20may\x20open\x20a\x20case\x20at\x20this\x20venue\x20—\x20it\x20is\x20a\x20filing\x20gate,\x20NOT\x20the\x20voting\x20eligibility\x20rule\x20(that\x20is\x20voting_guard)','typical_mistakes':['Confusing\x20usage_guard\x20with\x20voting_guard\x20—\x20one\x20gates\x20filing\x20(dispute),\x20the\x20other\x20gates\x20vote\x20weight/eligibility','arb.*\x20or\x20order.*\x20query\x20legs\x20in\x20a\x20usage\x20guard\x20—\x20neither\x20resolves\x20at\x20filing\x20time\x20(no\x20case\x20minted,\x20order\x20not\x20in\x20guard\x20scope)','Assuming\x20setting\x20usage_guard\x20also\x20restricts\x20voting\x20—\x20voting\x20stays\x20open\x20unless\x20voting_guard\x20is\x20separately\x20configured'],'derived_rules':[{'id':'AU_DEAD_CASE_SCOPES','requirement':'Query\x20legs\x20in\x20the\x20arb.*\x20/\x20order.*\x20namespaces\x20are\x20structurally\x20dead\x20in\x20a\x20usage\x20guard\x20(no\x20case,\x20no\x20order\x20in\x20evaluation\x20scope)','enforced_by':BINDING_VERIFIER}]},{'host':'demand_present','evaluation_timing':'At\x20the\x20present\x20tx:\x20once\x20ANY\x20guard\x20is\x20registered\x20the\x20free\x20present\x20aborts\x20(E_NEED_PASSPORT);\x20the\x20presenter\x20supplies\x20a\x20passport\x20and\x20ONE\x20chosen\x20registered\x20guard,\x20evaluated\x20against\x20that\x20passport','signer_subject':'The\x20PRESENTER\x20(the\x20service\x20provider\x20side\x20presenting\x20into\x20the\x20demand)','order_anchor':'NO\x20—\x20presenting\x20precedes\x20any\x20order;\x20the\x20demand\x20object\x20itself\x20is\x20the\x20only\x20scope','submission_channel':'The\x20presenter\x27s\x20passport;\x20when\x20the\x20demand\x20guard\x20declares\x20a\x20service_identifier\x20slot\x20(object-type-validated\x20Service\x20at\x20bind\x20time),\x20the\x20PRESENTED\x20SERVICE\x20ADDRESS\x20comes\x20from\x20that\x20submission\x20and\x20OVERRIDES\x20the\x20tx\x20parameter','identity_obligation':'The\x20demand\x20owner\x20structures\x20guards\x20to\x20filter\x20who\x20may\x20present\x20—\x20the\x20presenter\x20must\x20pass\x20the\x20ONE\x20guard\x20they\x20choose','typical_mistakes':['Reading\x20the\x20guard\x20list\x20as\x20AND\x20—\x20the\x20host\x20is\x20presenter-chosen\x20OR:\x20passing\x20ANY\x20single\x20registered\x20guard\x20admits\x20the\x20present;\x20a\x20strict\x20gate\x20must\x20put\x20every\x20condition\x20inside\x20EVERY\x20guard\x20(or\x20into\x20one\x20guard)','Expecting\x20the\x20service\x20tx\x20parameter\x20to\x20win\x20—\x20a\x20service_identifier\x20submission\x20slot\x20overrides\x20it\x20(the\x20guard\x20authors\x20decide\x20what\x20may\x20be\x20presented)','Adding\x20a\x20second\x20guard\x20believing\x20it\x20tightens\x20the\x20gate\x20—\x20it\x20WIDENS\x20it\x20(another\x20acceptance\x20path)'],'derived_rules':[{'id':'DP_MULTI_GUARD_IS_OR','requirement':'Multiple\x20demand\x20guards\x20widen\x20the\x20gate\x20(presenter-chosen\x20OR);\x20flag\x20compositions\x20whose\x20design\x20intent\x20reads\x20as\x20AND','enforced_by':BINDING_VERIFIER}]},{'host':'repository_quote','evaluation_timing':'Never\x20a\x20tx-entry\x20gate:\x20quote_guard\x20is\x20checked\x20as\x20IMPACK\x20MEMBERSHIP\x20whenever\x20a\x20guard\x20tree\x20on\x20ANY\x20host\x20executes\x20a\x20repository.data\x20query\x20against\x20a\x20policy\x20that\x20declares\x20one\x20(the\x20native\x20guard\x20verification\x20consults\x20the\x20reading\x20passport\x27s\x20impack\x20snapshot)','signer_subject':'n/a\x20—\x20a\x20membership\x20check\x20on\x20the\x20reading\x20passport,\x20not\x20an\x20identity\x20evaluation','order_anchor':'n/a\x20—\x20orthogonal\x20to\x20order\x20scope','submission_channel':'The\x20reading\x20passport\x27s\x20impack\x20list:\x20the\x20policy\x27s\x20quote_guard\x20must\x20ride\x20every\x20passport\x20whose\x20guard\x20trees\x20read\x20governed\x20rows\x20(QUOTE-GUARD\x20CARRY)','identity_obligation':'The\x20quote_guard\x20defines\x20who\x20may\x20QUOTE\x20(read\x20pricing\x20data);\x20it\x20must\x20be\x20a\x20DEPENDED\x20guard\x20—\x20frozen\x20(immutable),\x20rep-flagged,\x20and\x20rely-free\x20—\x20asserted\x20at\x20quote-guard\x20binding\x20time\x20(E_NEED_DEPENDENT_GUARD)','typical_mistakes':['Designing\x20a\x20mutable\x20or\x20rely-carrying\x20quote\x20guard\x20—\x20the\x20chain\x20aborts\x20at\x20set\x20time;\x20quote\x20guards\x20are\x20frozen\x20shared\x20pricing\x20definitions\x20by\x20construction','Forgetting\x20QUOTE-GUARD\x20CARRY:\x20guard\x20trees\x20reading\x20governed\x20rows\x20fail\x20unless\x20the\x20consuming\x20passport\x20declares\x20the\x20quote_guard\x20in\x20its\x20impack','Confusing\x20the\x20quote\x20path\x20with\x20the\x20write\x20path\x20—\x20write_guards\x20evaluate\x20per\x20write\x20tx;\x20quote_guard\x20only\x20gates\x20reads\x20of\x20governed\x20data'],'derived_rules':[{'id':'RQ_CARRY_OBLIGATION','requirement':'A\x20guard\x20tree\x20containing\x20repository.data\x20queries\x20against\x20a\x20quoted\x20policy\x20obliges\x20the\x20consuming\x20passport\x20to\x20carry\x20that\x20policy\x27s\x20quote_guard\x20—\x20disclose\x20the\x20carry\x20requirement\x20at\x20design\x20time','enforced_by':BINDING_VERIFIER},{'id':'RQ_DEPENDED_ONLY','requirement':'Quote\x20guards\x20must\x20satisfy\x20the\x20depended\x20shape\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep)\x20—\x20flag\x20mutable/relying\x20candidates\x20before\x20bind\x20time','enforced_by':BINDING_VERIFIER}]},{'host':'guard_relied','evaluation_timing':'Composite\x20(not\x20a\x20host\x20object):\x20wherever\x20the\x20PARENT\x20guard\x20is\x20bound,\x20its\x20relied\x20children\x20evaluate\x20in\x20the\x20SAME\x20host\x20evaluation\x20—\x20each\x20child\x20result\x20folds\x20into\x20the\x20parent\x20via\x20relies_logic_and\x20(default\x20true);\x20passport\x20verification\x20validates\x20children\x20BEFORE\x20the\x20parent','signer_subject':'INHERITED\x20from\x20the\x20parent\x27s\x20host\x20—\x20relied\x20children\x20see\x20the\x20parent\x20host\x27s\x20signer,\x20which\x20is\x20exactly\x20the\x20re-hosting\x20hazard\x20this\x20catalog\x20exists\x20for','order_anchor':'INHERITED\x20from\x20the\x20parent\x27s\x20host\x20—\x20order.*\x20legs\x20inside\x20relied\x20children\x20resolve\x20only\x20if\x20the\x20parent\x27s\x20host\x20provides\x20an\x20anchor','submission_channel':'The\x20SAME\x20passport\x20that\x20carries\x20the\x20parent:\x20guard_add\x20requires\x20every\x20relied\x20guard\x20already\x20present\x20(E_RELIES_GUARD_NOT_ADDED)\x20—\x20the\x20full\x20relies\x20closure\x20must\x20ride\x20every\x20passport','identity_obligation':'Chain-structured:\x20the\x20rely-adding\x20entry\x20accepts\x20only\x20DEPENDED\x20children\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep)\x20—\x20depth\x20is\x20strictly\x201,\x20max\x20MAX_DEPENDED_COUNT\x20=\x204\x20children,\x20self-rely\x20aborts\x20(E_GUARD_SELF)','typical_mistakes':['Assuming\x20relied\x20children\x20keep\x20the\x20context\x20they\x20were\x20authored\x20under\x20—\x20they\x20INHERIT\x20the\x20parent\x20host\x27s\x20signer/order/slot\x20semantics\x20(re-hosting\x20the\x20parent\x20re-contextualizes\x20every\x20child:\x20audit\x20all\x20children\x20on\x20any\x20host\x20change)','Designing\x20multi-level\x20rely\x20chains\x20—\x20the\x20chain\x20flattens\x20to\x20depth\x201\x20on-chain\x20(children\x20must\x20be\x20depended)','Passports\x20carrying\x20the\x20parent\x20without\x20the\x20children\x20—\x20aborts\x20at\x20passport\x20build\x20(E_RELIES_GUARD_NOT_ADDED)','Mixing\x20relies_logic_and\x20polarity\x20without\x20re-checking\x20the\x20acceptance\x20surface\x20(default\x20AND;\x20OR\x20widens\x20to\x20any\x20passing\x20child)'],'derived_rules':[{'id':'GR_CHILD_HOST_REAUDIT','requirement':'On\x20any\x20host\x20change\x20of\x20a\x20guard\x20carrying\x20relies,\x20re-audit\x20every\x20relied\x20child\x20against\x20the\x20NEW\x20host\x27s\x20three\x20inputs\x20(signer\x20/\x20order\x20anchor\x20/\x20submission\x20channel)\x20—\x20bounded:\x20depth\x201,\x20max\x204\x20children','enforced_by':BINDING_VERIFIER},{'id':'GR_CLOSURE_CARRY','requirement':'Every\x20passport\x20carrying\x20a\x20relying\x20parent\x20must\x20carry\x20all\x20relied\x20children\x20first\x20(closure)\x20—\x20flag\x20designs\x20where\x20the\x20carry\x20surface\x20is\x20not\x20communicated','enforced_by':BINDING_VERIFIER}]}];export function getGuardHostContext(a){return GUARD_HOST_CONTEXTS['find'](b=>b['host']===a);}const ACTION_HOST={'buy':'service_buy_guard','forward':'machine_forward','allocate':'service_allocator_guard','claim_reward':'reward_claim','vote':'arbitration_voting','dispute':'arbitration_usage','write_repository':'repository_write','submit_progress':'progress_submission','gen_passport':'gen_passport'},CUSTOM_HOST_BY_OBJECT={'Demand':'demand_present','Repository':'repository_write'};export function catalogHostFromHint(a){if(!a||typeof a['action']!=='string')return undefined;if(a['action']==='custom'){const b=a['host_object']?CUSTOM_HOST_BY_OBJECT[a['host_object']]:undefined;return b??undefined;}return ACTION_HOST[a['action']]??undefined;}
|
|
1
|
+
export const BINDING_VERIFIER='guard-binding-verifier.ts\x20(shipped)';export const GUARD_HOST_CONTEXTS=[{'host':'machine_forward','evaluation_timing':'Every\x20tx\x20that\x20advances\x20the\x20edge\x20—\x20evaluated\x20per\x20call,\x20aborts\x20the\x20tx\x20on\x20failure','signer_subject':'The\x20node\x20ADVANCER\x20(operator,\x20keeper,\x20or\x20the\x20party\x20driving\x20the\x20workflow\x20step)','order_anchor':'YES\x20—\x20the\x20order\x20carrying\x20the\x20progress\x20is\x20in\x20scope;\x20order.*\x20queries\x20resolve\x20against\x20it\x20(T10:\x20bind\x20identity\x20legs\x20to\x20task-binding\x20slot\x20254,\x20never\x20a\x20free\x20submission\x20slot)','submission_channel':'Passport\x20carry-on\x20(task-guarded\x20edges\x20declare\x20slots\x20like\x20254;\x20undeclared\x20slots\x20make\x20the\x20edge\x20abort)','identity_obligation':'Caller\x20must\x20be\x20bound\x20to\x20the\x20workflow\x27s\x20operator\x20set\x20(order.owner\x20/\x20order.agent\x20has\x20/\x20named\x20operator\x20/\x20permission)\x20—\x20this\x20is\x20the\x20SOLE\x20identity\x20check\x20when\x20namedOperator\x20is\x20\x22\x22','typical_mistakes':['Identity\x20leg\x20anchored\x20to\x20a\x20free\x20submission\x20slot\x20(T10\x20hijack\x20—\x20attacker\x20submits\x20their\x20own\x20order\x20at\x20slot\x20254)','Reusing\x20a\x20buy-guard\x20here:\x20the\x20buyer\x20identity\x20is\x20NOT\x20the\x20advancer\x20identity'],'derived_rules':[{'id':'MF_SLOT_IDENTITY_ANCHOR','requirement':'Identity\x20legs\x20on\x20task-guarded\x20edges\x20must\x20anchor\x20to\x20the\x20edge\x27s\x20declared\x20task-binding\x20slot,\x20never\x20a\x20free\x20submission\x20slot\x20the\x20caller\x20controls\x20(T10\x20hijack)','enforced_by':BINDING_VERIFIER},{'id':'PERM_INDEX_UNRESOLVED','requirement':'An\x20edge\x20declaring\x20permission_index\x20references\x20must\x20resolve\x20against\x20the\x20host\x20Service\x27s\x20Permission\x20face\x20(at\x20least\x20one\x20entity\x20grant\x20per\x20index)\x20—\x20an\x20ungranted\x20index\x20makes\x20the\x20edge\x20un\x20executable\x20for\x20everyone\x20(R7-01,\x20rex7\x20o9:\x20ArbRefund\x201002\x20vs\x20entity_count\x200\x20welded\x20the\x20winning-relief\x20track)','enforced_by':BINDING_VERIFIER}]},{'host':'service_allocator_guard','evaluation_timing':'When\x20a\x20tx\x20reaches\x20the\x20allocator\x20(settlement\x20trigger)\x20—\x20the\x20rail\x27s\x20guard\x20decides\x20whether\x20the\x20payout\x20route\x20opens','signer_subject':'The\x20SETTLEMENT\x20TRIGGERER\x20—\x20possibly\x20ANY\x20address\x20(the\x20allocator\x20entry\x20does\x20not\x20check\x20who\x20calls)','order_anchor':'YES\x20for\x20order-bound\x20rails\x20(the\x20allocator\x20resolves\x20the\x20order\x27s\x20escrow);\x20progress.current\x20is\x20available.\x20order.claimed_by\x20exists\x20but\x20is\x20OFF-LIMITS\x20on\x20fund\x20rails\x20(decision\x2011\x20two-rail\x20independence:\x20a\x20rail\x20whose\x20satisfiability\x20flips\x20on\x20the\x20claimed\x20axis\x20is\x20the\x20RAIL_CLAIMED_BY_LEG\x20critical)','submission_channel':'Passport\x20of\x20the\x20triggering\x20tx\x20(usually\x20absent\x20or\x20minimal\x20—\x20do\x20not\x20rely\x20on\x20submission\x20slots\x20here)','identity_obligation':'Must\x20bind\x20the\x20triggerer\x20(context(Signer)\x20comparison,\x20order.agent\x20has,\x20permission.*)\x20UNLESS\x20the\x20scene\x20verifies\x20identity\x20upstream\x20(level3_scene_combined)\x20or\x20the\x20venue\x20is\x20intentionally\x20open-trigger\x20—\x20otherwise\x20any\x20bystander\x20can\x20accelerate/drain\x20the\x20payout\x20(sahr).\x20Machine-enforced\x20check:\x20RAIL_NO_CALLER_IDENTITY\x20(info\x20disclosure)','typical_mistakes':['Pasting\x20a\x20forward-edge\x20identity\x20guard\x20here\x20—\x20it\x20binds\x20the\x20WRONG\x20subject\x20(advancer\x20vs\x20settlement\x20triggerer)','No\x20identity\x20leg\x20at\x20all\x20on\x20a\x20non-open\x20venue','Requiring\x20submission\x20slots\x20that\x20the\x20settlement\x20tx\x20never\x20carries'],'derived_rules':[{'id':'RAIL_NO_CALLER_IDENTITY','requirement':'An\x20allocator\x20gate\x20with\x20no\x20caller-identity\x20leg\x20is\x20triggerable\x20by\x20any\x20address\x20—\x20disclosure;\x20legitimate\x20only\x20for\x20scene-verified\x20or\x20intentionally\x20open-trigger\x20venues','enforced_by':'allocator-rail-verifier.ts\x20(shipped,\x20info)'},{'id':'RAIL_TERMINAL_UNCOVERED','requirement':'Every\x20machine\x20terminal\x20state\x20must\x20have\x20a\x20satisfiable\x20rail\x20through\x20some\x20allocator\x20row','enforced_by':'allocator-rail-verifier.ts\x20(shipped)'},{'id':'RAIL_AWARD_EXIT_MISSING','requirement':'Every\x20terminal\x20—\x20including\x20the\x20terminals\x20an\x20awarded\x20order\x20rests\x20at\x20—\x20must\x20keep\x20a\x20fund\x20exit\x20row\x20on\x20the\x20NODE\x20axis,\x20else\x20escrow\x20strands\x20(decision\x2011:\x20coverage\x20is\x20node-keyed,\x20never\x20claimed-keyed)','enforced_by':'allocator-rail-verifier.ts\x20(shipped)'},{'id':'RAIL_CLAIMED_BY_LEG','requirement':'Decision\x2011\x20two-rail\x20independence:\x20a\x20fund\x20rail\x20whose\x20satisfiability\x20flips\x20on\x20the\x20order.claimed_by\x20axis\x20READS\x20the\x20payout\x20stamp\x20—\x20fund\x20rails\x20are\x20node-gated\x20only;\x20the\x20award\x20is\x20the\x20indemnity\x20track\x27s\x20separate\x20commercial\x20payout\x20(double\x20collection\x20is\x20legal,\x20disclosed\x20at\x20the\x20MCP\x20confirmation\x20gate)','enforced_by':'allocator-rail-verifier.ts\x20(shipped,\x20critical)'},{'id':'RAIL_DEAD_LITERAL','requirement':'Sibling\x20literals\x20contradicting\x20a\x20conjunction-scoped\x20equality\x20are\x20unsatisfiable\x20—\x20dead\x20rows\x20strand\x20the\x20states\x20they\x20were\x20meant\x20to\x20serve','enforced_by':'allocator-rail-verifier.ts\x20(shipped)'}]},{'host':'reward_claim','evaluation_timing':'At\x20the\x20reward\x20claim\x20tx\x20(the\x20claimant\x27s\x20tx)\x20—\x20before\x20the\x20once-slot\x20is\x20consumed','signer_subject':'The\x20CLAIMANT\x20(whoever\x20signs\x20the\x20claim\x20tx)','order_anchor':'NO\x20by\x20default\x20—\x20the\x20Reward\x20object\x20carries\x20no\x20order\x20context;\x20order.*\x20legs\x20have\x20nothing\x20to\x20resolve\x20against\x20UNLESS\x20the\x20guard\x27s\x20table\x20declares\x20an\x20order-slot\x20submission\x20that\x20the\x20claimant\x27s\x20passport\x20fills\x20(per-order\x20bounty\x20shape:\x20guard\x20+\x20store_from\x20scoping)','submission_channel':'Passport\x20submission\x20on\x20the\x20claim\x20tx\x20(the\x20submitted-object\x20slots),\x20or\x20constant\x20table\x20entries\x20only','identity_obligation':'Identity,\x20when\x20required,\x20must\x20ride\x20the\x20submission\x20channel\x20(e.g.\x20an\x20order-owner\x20slot\x20filled\x20by\x20the\x20claimant\x27s\x20passport)\x20—\x20NOT\x20order.*\x20direct\x20reads;\x20per-order\x20once-scoping\x20comes\x20from\x20the\x20claim\x20key\x20(recipient,\x20guard,\x20store_from)\x20with\x20the\x20v139\x20store_from\x20behavior,\x20not\x20from\x20guard\x20legs','typical_mistakes':['order.owner\x20/\x20progress.current\x20legs\x20pasted\x20from\x20a\x20forward\x20guard\x20—\x20they\x20abort\x20or\x20mislead\x20(no\x20order\x20anchor\x20in\x20the\x20claim\x20context)','Assuming\x20per-order\x20once\x20semantics\x20without\x20the\x20store_from\x20binding'],'derived_rules':[{'id':'RC_NO_ORDER_ANCHOR','requirement':'order.*\x20/\x20progress.*\x20query\x20legs\x20are\x20structurally\x20dead\x20here\x20(no\x20order\x20anchor\x20in\x20the\x20claim\x20context)\x20unless\x20an\x20order-slot\x20submission\x20is\x20declared','enforced_by':BINDING_VERIFIER}]},{'host':'service_buy_guard','evaluation_timing':'Inside\x20the\x20purchase\x20tx\x20itself,\x20before\x20the\x20order\x20is\x20created','signer_subject':'The\x20BUYER\x20(tx\x20sender)','order_anchor':'NO\x20—\x20the\x20order\x20does\x20not\x20exist\x20yet;\x20only\x20service-side\x20and\x20repository/permission\x20state\x20is\x20readable','submission_channel':'Passport\x20supplied\x20with\x20the\x20purchase','identity_obligation':'Buyer\x20binding\x20per\x20the\x20venue\x20policy\x20(level1\x20strict\x20single\x20/\x20level2\x20allowlist\x20/\x20level3\x20scene-verified)','typical_mistakes':['Reading\x20order.*\x20state\x20(nothing\x20exists\x20yet\x20—\x20aborts\x20or,\x20pre-136\x20semantics,\x20resolves\x20nothing)','Escrow/funding\x20checks\x20that\x20belong\x20to\x20the\x20allocator\x20rail\x20instead'],'derived_rules':[{'id':'SB_NO_ORDER_STATE','requirement':'order.*\x20query\x20legs\x20are\x20structurally\x20dead\x20(the\x20order\x20does\x20not\x20exist\x20inside\x20the\x20purchase\x20tx)','enforced_by':BINDING_VERIFIER}]},{'host':'arbitration_voting','evaluation_timing':'At\x20arbitration\x20vote\x20casts\x20/\x20resolution\x20entry\x20—\x20per\x20voting-rule\x20evaluation','signer_subject':'The\x20VOTER\x20/\x20arbitrator\x20operator','order_anchor':'Indirect\x20—\x20the\x20Arb\x20case\x20is\x20in\x20scope\x20(arb.*\x20queries);\x20the\x20underlying\x20order\x20is\x20reachable\x20through\x20the\x20case\x20when\x20the\x20flow\x20passes\x20it','submission_channel':'Passport\x20of\x20the\x20voter\x27s\x20tx','identity_obligation':'Voter\x20must\x20satisfy\x20the\x20voting_guard\x27s\x20weight/eligibility\x20rule\x20(or\x20the\x20arb\x20is\x20open-vote\x20by\x20design)','typical_mistakes':['Treating\x20the\x20arb\x20case\x20as\x20an\x20order\x20(arb.*\x20fields\x20differ\x20from\x20order.*\x20fields)','Evidence\x20legs\x20(arb.indemnity)\x20used\x20where\x20the\x20variant\x20is\x20not\x20guaranteed\x20(enum\x20payload\x20aborts)'],'derived_rules':[{'id':'AV_ARB_NAMESPACE','requirement':'Case-scoped\x20queries\x20must\x20use\x20arb.*\x20fields\x20—\x20order.*\x20fields\x20do\x20not\x20resolve\x20against\x20an\x20Arb\x20case','enforced_by':BINDING_VERIFIER}]},{'host':'progress_submission','evaluation_timing':'At\x20progress\x20submission/attestation\x20points\x20(history-bearing\x20edges)','signer_subject':'The\x20SUBMITTER\x20(operator\x20or\x20buyer\x20attestant)','order_anchor':'YES\x20—\x20same\x20order\x20context\x20as\x20machine_forward','submission_channel':'The\x20submission\x20payload\x20itself\x20(this\x20host\x27s\x20purpose\x20is\x20filling\x20history/slots)','identity_obligation':'Submitter\x20binding\x20mirrors\x20the\x20forward-edge\x20obligation\x20for\x20the\x20edge\x20it\x20rides','typical_mistakes':['Skipping\x20the\x20identity\x20leg\x20because\x20\x27it\x27s\x20just\x20an\x20attestation\x27\x20—\x20attestations\x20are\x20replayable\x20without\x20one'],'derived_rules':[{'id':'PS_IDENTITY_REQUIRED','requirement':'Every\x20attestation\x20edge\x20must\x20carry\x20an\x20identity\x20leg\x20—\x20attestations\x20are\x20replayable\x20without\x20one','enforced_by':BINDING_VERIFIER}]},{'host':'repository_write','evaluation_timing':'At\x20the\x20write-guarded\x20repository\x20op\x20(data\x20upsert\x20through\x20a\x20guarded\x20channel)','signer_subject':'The\x20WRITER','order_anchor':'Only\x20if\x20the\x20row\x20is\x20order-keyed\x20and\x20the\x20op\x20passes\x20it;\x20row-key\x20semantics\x20are\x20the\x20guard\x27s\x20own\x20business','submission_channel':'Passport\x20of\x20the\x20writing\x20tx\x20(quote_guard\x20references\x20must\x20be\x20in\x20the\x20impack\x20list\x20—\x20QUOTE-GUARD\x20CARRY)','identity_obligation':'Writer\x20must\x20be\x20a\x20trusted\x20role\x20for\x20the\x20key\x20family\x20(permission-resolved\x20patterns)\x20—\x20repository\x20rows\x20feed\x20aggregates\x20(sum/count)\x20that\x20other\x20guards\x20price\x20against','typical_mistakes':['Open-write\x20rows\x20feeding\x20SUM_BOUND\x20pricing\x20aggregates\x20(forgery\x20by\x20write)','Missing\x20quote_guard\x20in\x20the\x20passport\x20(aborts\x20fail-closed)'],'derived_rules':[{'id':'RW_QUOTE_GUARD_CARRY','requirement':'Guard\x20trees\x20reading\x20governed\x20repository\x20rows\x20require\x20the\x20row\x20policy\x27s\x20quote_guard\x20in\x20the\x20reading\x20passport\x27s\x20impack\x20(QUOTE-GUARD\x20CARRY)','enforced_by':BINDING_VERIFIER},{'id':'RW_OPEN_WRITE_FEEDS_AGGREGATE','requirement':'Open-write\x20rows\x20must\x20not\x20feed\x20SUM/COUNT\x20aggregates\x20that\x20other\x20guards\x20price\x20against\x20(forgery\x20by\x20write)','enforced_by':BINDING_VERIFIER}]},{'host':'gen_passport','evaluation_timing':'At\x20passport\x20generation\x20(issuance\x20gating)','signer_subject':'The\x20PASSPORT\x20REQUESTER','order_anchor':'Service-side\x20state\x20only\x20(same\x20posture\x20as\x20service_buy_guard)','submission_channel':'n/a\x20(the\x20passport\x20is\x20the\x20product\x20of\x20this\x20host)','identity_obligation':'Issuance\x20policy\x20per\x20the\x20venue\x20(who\x20may\x20hold\x20a\x20passport)','typical_mistakes':['Order-dependent\x20issuance\x20legs\x20(no\x20order\x20exists\x20at\x20issuance\x20time)'],'derived_rules':[{'id':'GP_NO_ORDER_AT_ISSUANCE','requirement':'Order-dependent\x20issuance\x20legs\x20are\x20structurally\x20dead\x20(no\x20order\x20exists\x20at\x20issuance\x20time)','enforced_by':BINDING_VERIFIER}]},{'host':'treasury_external_deposit','evaluation_timing':'At\x20the\x20external\x20deposit\x20tx\x20—\x20the\x20guard\x20runs\x20against\x20the\x20depositor\x27s\x20passport\x20BEFORE\x20any\x20balance\x20credit','signer_subject':'The\x20DEPOSITOR\x20(tx\x20sender,\x20passport\x20carrier)\x20—\x20the\x20guard\x20gates\x20who\x20may\x20fund\x20the\x20treasury\x20through\x20this\x20channel','order_anchor':'NO\x20—\x20the\x20treasury\x20has\x20no\x20order\x20scope;\x20order.*\x20legs\x20have\x20nothing\x20to\x20resolve\x20against','submission_channel':'The\x20deposit\x20passport\x27s\x20submissions:\x20the\x20optional\x20amount\x20identifier\x20resolves\x20a\x20NUMBER\x20slot\x20(type-asserted\x20at\x20bind\x20time);\x20the\x20optional\x20store_from_id\x20resolves\x20an\x20ADDRESS-compatible\x20slot','identity_obligation':'Whoever\x20passes\x20the\x20guard\x20may\x20deposit\x20—\x20eligibility\x20IS\x20the\x20guard\x20tree;\x20there\x20is\x20no\x20additional\x20host-side\x20identity\x20check','typical_mistakes':['Treating\x20the\x20amount\x20identifier\x20as\x20a\x20global\x20deposit\x20cap\x20—\x20it\x20only\x20sizes\x20THIS\x20channel\x27s\x20credit;\x20submitted\x20amount\x20≤\x20coin\x20value\x20with\x20the\x20remainder\x20refunded\x20to\x20the\x20depositor\x20(partial\x20deposit)','Omitting\x20the\x20amount\x20identifier:\x20the\x20WHOLE\x20coin\x20is\x20credited\x20unconditionally\x20once\x20the\x20guard\x20passes','Expecting\x20store_from_id\x20to\x20verify\x20fund\x20provenance\x20—\x20it\x20is\x20only\x20RECORDED\x20in\x20the\x20history\x20record,\x20never\x20checked','Assuming\x20fail-closed\x20on\x20an\x20unregistered\x20guard:\x20a\x20deposit\x20through\x20a\x20guard\x20not\x20on\x20the\x20treasury\x27s\x20list\x20REFUNDS\x20the\x20coin\x20(fail-safe)'],'derived_rules':[{'id':'TD_AMOUNT_SLOT_SEMANTICS','requirement':'A\x20number\x20slot\x20referenced\x20as\x20the\x20deposit\x20amount\x20is\x20a\x20caller-declared\x20value:\x20disclose\x20whether\x20the\x20guard\x20bounds\x20it\x20(comparison\x20legs)\x20or\x20it\x20merely\x20sizes\x20the\x20credit','enforced_by':BINDING_VERIFIER}]},{'host':'treasury_external_withdraw','evaluation_timing':'At\x20the\x20external\x20withdraw\x20tx\x20—\x20the\x20guard\x20runs\x20first,\x20then\x20the\x20payee\x20lock\x20and\x20the\x20amount-vs-balance\x20assertion\x20BEFORE\x20any\x20debit','signer_subject':'The\x20WITHDRAWER,\x20who\x20is\x20forcibly\x20also\x20the\x20PAYEE\x20—\x20recipient\x20==\x20tx\x20sender\x20aborts\x20otherwise\x20(E_EXTERNAL_RECIPIENT_NOT_SIGNER)','order_anchor':'NO\x20—\x20the\x20treasury\x20has\x20no\x20order\x20scope;\x20order.*\x20legs\x20have\x20nothing\x20to\x20resolve\x20against','submission_channel':'The\x20withdraw\x20passport\x27s\x20submissions:\x20the\x20amount\x20identifier\x20(REQUIRED\x20at\x20bind\x20time,\x20number\x20type)\x20supplies\x20the\x20withdrawal\x20size;\x20the\x20optional\x20store_from_id\x20records\x20provenance','identity_obligation':'The\x20guard\x20must\x20gate\x20WHO\x20may\x20withdraw\x20—\x20the\x20host\x20only\x20locks\x20payee\x20==\x20signer;\x20anyone\x20passing\x20the\x20guard\x20can\x20move\x20funds\x20to\x20themselves','typical_mistakes':['Believing\x20the\x20guard\x20bounds\x20the\x20withdrawal\x20AMOUNT\x20—\x20the\x20number\x20slot\x20is\x20caller-DECLARED;\x20without\x20comparison\x20legs\x20on\x20that\x20slot\x20the\x20withdrawer\x20picks\x20any\x20amount\x20up\x20to\x20the\x20full\x20balance\x20(drain\x20surface)','Redirecting\x20the\x20payout\x20to\x20a\x20third\x20party\x20via\x20recipient\x20—\x20aborts\x20by\x20design;\x20third-party\x20payouts\x20belong\x20to\x20the\x20permissioned\x20withdraw\x20path','Amount\x20above\x20balance\x20aborts\x20fail-closed\x20(E_WITHDRAW_BALANCE_INSUFFICIENT)\x20—\x20unlike\x20the\x20deposit\x20channel\x27s\x20refund\x20path'],'derived_rules':[{'id':'TW_AMOUNT_UNBOUNDED','requirement':'If\x20the\x20amount\x20number\x20slot\x20appears\x20only\x20as\x20a\x20submission\x20source\x20and\x20never\x20inside\x20a\x20comparison\x20leg,\x20the\x20withdrawal\x20size\x20is\x20caller-chosen\x20—\x20disclose\x20the\x20drain\x20surface\x20on\x20non-open\x20venues','enforced_by':BINDING_VERIFIER}]},{'host':'arbitration_usage','evaluation_timing':'At\x20dispute\x20filing:\x20the\x20no-passport\x20channel\x20requires\x20usage_guard\x20NONE\x20(E_NEED_PASSPORT);\x20the\x20passport\x20channel\x20runs\x20the\x20guard\x20against\x20the\x20filing\x20passport\x20before\x20the\x20case\x20object\x20is\x20minted','signer_subject':'The\x20DISPUTER\x20(buyer\x20or\x20merchant\x20filing\x20through\x20the\x20Service\x20—\x20filing\x20never\x20bypasses\x20the\x20service-side\x20neutrality\x20checks)','order_anchor':'NO\x20at\x20guard\x20evaluation\x20—\x20the\x20guard\x20evaluates\x20against\x20the\x20passport\x20only;\x20the\x20order\x20is\x20a\x20dispute\x20parameter\x20and\x20the\x20Arb\x20case\x20does\x20not\x20exist\x20yet,\x20so\x20arb.*\x20legs\x20are\x20dead\x20here\x20too','submission_channel':'The\x20filing\x20passport\x27s\x20submissions\x20(the\x20guard\x20must\x20be\x20in\x20the\x20passport\x20impack\x20—\x20E_NOT_IMPACK_GUARD)','identity_obligation':'The\x20usage_guard\x20gates\x20WHO\x20may\x20open\x20a\x20case\x20at\x20this\x20venue\x20—\x20it\x20is\x20a\x20filing\x20gate,\x20NOT\x20the\x20voting\x20eligibility\x20rule\x20(that\x20is\x20voting_guard)','typical_mistakes':['Confusing\x20usage_guard\x20with\x20voting_guard\x20—\x20one\x20gates\x20filing\x20(dispute),\x20the\x20other\x20gates\x20vote\x20weight/eligibility','arb.*\x20or\x20order.*\x20query\x20legs\x20in\x20a\x20usage\x20guard\x20—\x20neither\x20resolves\x20at\x20filing\x20time\x20(no\x20case\x20minted,\x20order\x20not\x20in\x20guard\x20scope)','Assuming\x20setting\x20usage_guard\x20also\x20restricts\x20voting\x20—\x20voting\x20stays\x20open\x20unless\x20voting_guard\x20is\x20separately\x20configured'],'derived_rules':[{'id':'AU_DEAD_CASE_SCOPES','requirement':'Query\x20legs\x20in\x20the\x20arb.*\x20/\x20order.*\x20namespaces\x20are\x20structurally\x20dead\x20in\x20a\x20usage\x20guard\x20(no\x20case,\x20no\x20order\x20in\x20evaluation\x20scope)','enforced_by':BINDING_VERIFIER}]},{'host':'demand_present','evaluation_timing':'At\x20the\x20present\x20tx:\x20once\x20ANY\x20guard\x20is\x20registered\x20the\x20free\x20present\x20aborts\x20(E_NEED_PASSPORT);\x20the\x20presenter\x20supplies\x20a\x20passport\x20and\x20ONE\x20chosen\x20registered\x20guard,\x20evaluated\x20against\x20that\x20passport','signer_subject':'The\x20PRESENTER\x20(the\x20service\x20provider\x20side\x20presenting\x20into\x20the\x20demand)','order_anchor':'NO\x20—\x20presenting\x20precedes\x20any\x20order;\x20the\x20demand\x20object\x20itself\x20is\x20the\x20only\x20scope','submission_channel':'The\x20presenter\x27s\x20passport;\x20when\x20the\x20demand\x20guard\x20declares\x20a\x20service_identifier\x20slot\x20(object-type-validated\x20Service\x20at\x20bind\x20time),\x20the\x20PRESENTED\x20SERVICE\x20ADDRESS\x20comes\x20from\x20that\x20submission\x20and\x20OVERRIDES\x20the\x20tx\x20parameter','identity_obligation':'The\x20demand\x20owner\x20structures\x20guards\x20to\x20filter\x20who\x20may\x20present\x20—\x20the\x20presenter\x20must\x20pass\x20the\x20ONE\x20guard\x20they\x20choose','typical_mistakes':['Reading\x20the\x20guard\x20list\x20as\x20AND\x20—\x20the\x20host\x20is\x20presenter-chosen\x20OR:\x20passing\x20ANY\x20single\x20registered\x20guard\x20admits\x20the\x20present;\x20a\x20strict\x20gate\x20must\x20put\x20every\x20condition\x20inside\x20EVERY\x20guard\x20(or\x20into\x20one\x20guard)','Expecting\x20the\x20service\x20tx\x20parameter\x20to\x20win\x20—\x20a\x20service_identifier\x20submission\x20slot\x20overrides\x20it\x20(the\x20guard\x20authors\x20decide\x20what\x20may\x20be\x20presented)','Adding\x20a\x20second\x20guard\x20believing\x20it\x20tightens\x20the\x20gate\x20—\x20it\x20WIDENS\x20it\x20(another\x20acceptance\x20path)'],'derived_rules':[{'id':'DP_MULTI_GUARD_IS_OR','requirement':'Multiple\x20demand\x20guards\x20widen\x20the\x20gate\x20(presenter-chosen\x20OR);\x20flag\x20compositions\x20whose\x20design\x20intent\x20reads\x20as\x20AND','enforced_by':BINDING_VERIFIER}]},{'host':'repository_quote','evaluation_timing':'Never\x20a\x20tx-entry\x20gate:\x20quote_guard\x20is\x20checked\x20as\x20IMPACK\x20MEMBERSHIP\x20whenever\x20a\x20guard\x20tree\x20on\x20ANY\x20host\x20executes\x20a\x20repository.data\x20query\x20against\x20a\x20policy\x20that\x20declares\x20one\x20(the\x20native\x20guard\x20verification\x20consults\x20the\x20reading\x20passport\x27s\x20impack\x20snapshot)','signer_subject':'n/a\x20—\x20a\x20membership\x20check\x20on\x20the\x20reading\x20passport,\x20not\x20an\x20identity\x20evaluation','order_anchor':'n/a\x20—\x20orthogonal\x20to\x20order\x20scope','submission_channel':'The\x20reading\x20passport\x27s\x20impack\x20list:\x20the\x20policy\x27s\x20quote_guard\x20must\x20ride\x20every\x20passport\x20whose\x20guard\x20trees\x20read\x20governed\x20rows\x20(QUOTE-GUARD\x20CARRY)','identity_obligation':'The\x20quote_guard\x20defines\x20who\x20may\x20QUOTE\x20(read\x20pricing\x20data);\x20it\x20must\x20be\x20a\x20DEPENDED\x20guard\x20—\x20frozen\x20(immutable),\x20rep-flagged,\x20and\x20rely-free\x20—\x20asserted\x20at\x20quote-guard\x20binding\x20time\x20(E_NEED_DEPENDENT_GUARD)','typical_mistakes':['Designing\x20a\x20mutable\x20or\x20rely-carrying\x20quote\x20guard\x20—\x20the\x20chain\x20aborts\x20at\x20set\x20time;\x20quote\x20guards\x20are\x20frozen\x20shared\x20pricing\x20definitions\x20by\x20construction','Forgetting\x20QUOTE-GUARD\x20CARRY:\x20guard\x20trees\x20reading\x20governed\x20rows\x20fail\x20unless\x20the\x20consuming\x20passport\x20declares\x20the\x20quote_guard\x20in\x20its\x20impack','Confusing\x20the\x20quote\x20path\x20with\x20the\x20write\x20path\x20—\x20write_guards\x20evaluate\x20per\x20write\x20tx;\x20quote_guard\x20only\x20gates\x20reads\x20of\x20governed\x20data'],'derived_rules':[{'id':'RQ_CARRY_OBLIGATION','requirement':'A\x20guard\x20tree\x20containing\x20repository.data\x20queries\x20against\x20a\x20quoted\x20policy\x20obliges\x20the\x20consuming\x20passport\x20to\x20carry\x20that\x20policy\x27s\x20quote_guard\x20—\x20disclose\x20the\x20carry\x20requirement\x20at\x20design\x20time','enforced_by':BINDING_VERIFIER},{'id':'RQ_DEPENDED_ONLY','requirement':'Quote\x20guards\x20must\x20satisfy\x20the\x20depended\x20shape\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep)\x20—\x20flag\x20mutable/relying\x20candidates\x20before\x20bind\x20time','enforced_by':BINDING_VERIFIER}]},{'host':'guard_relied','evaluation_timing':'Composite\x20(not\x20a\x20host\x20object):\x20wherever\x20the\x20PARENT\x20guard\x20is\x20bound,\x20its\x20relied\x20children\x20evaluate\x20in\x20the\x20SAME\x20host\x20evaluation\x20—\x20each\x20child\x20result\x20folds\x20into\x20the\x20parent\x20via\x20relies_logic_and\x20(default\x20true);\x20passport\x20verification\x20validates\x20children\x20BEFORE\x20the\x20parent','signer_subject':'INHERITED\x20from\x20the\x20parent\x27s\x20host\x20—\x20relied\x20children\x20see\x20the\x20parent\x20host\x27s\x20signer,\x20which\x20is\x20exactly\x20the\x20re-hosting\x20hazard\x20this\x20catalog\x20exists\x20for','order_anchor':'INHERITED\x20from\x20the\x20parent\x27s\x20host\x20—\x20order.*\x20legs\x20inside\x20relied\x20children\x20resolve\x20only\x20if\x20the\x20parent\x27s\x20host\x20provides\x20an\x20anchor','submission_channel':'The\x20SAME\x20passport\x20that\x20carries\x20the\x20parent:\x20guard_add\x20requires\x20every\x20relied\x20guard\x20already\x20present\x20(E_RELIES_GUARD_NOT_ADDED)\x20—\x20the\x20full\x20relies\x20closure\x20must\x20ride\x20every\x20passport','identity_obligation':'Chain-structured:\x20the\x20rely-adding\x20entry\x20accepts\x20only\x20DEPENDED\x20children\x20(relies\x20empty\x20+\x20immutable\x20+\x20rep)\x20—\x20depth\x20is\x20strictly\x201,\x20max\x20MAX_DEPENDED_COUNT\x20=\x204\x20children,\x20self-rely\x20aborts\x20(E_GUARD_SELF)','typical_mistakes':['Assuming\x20relied\x20children\x20keep\x20the\x20context\x20they\x20were\x20authored\x20under\x20—\x20they\x20INHERIT\x20the\x20parent\x20host\x27s\x20signer/order/slot\x20semantics\x20(re-hosting\x20the\x20parent\x20re-contextualizes\x20every\x20child:\x20audit\x20all\x20children\x20on\x20any\x20host\x20change)','Designing\x20multi-level\x20rely\x20chains\x20—\x20the\x20chain\x20flattens\x20to\x20depth\x201\x20on-chain\x20(children\x20must\x20be\x20depended)','Passports\x20carrying\x20the\x20parent\x20without\x20the\x20children\x20—\x20aborts\x20at\x20passport\x20build\x20(E_RELIES_GUARD_NOT_ADDED)','Mixing\x20relies_logic_and\x20polarity\x20without\x20re-checking\x20the\x20acceptance\x20surface\x20(default\x20AND;\x20OR\x20widens\x20to\x20any\x20passing\x20child)'],'derived_rules':[{'id':'GR_CHILD_HOST_REAUDIT','requirement':'On\x20any\x20host\x20change\x20of\x20a\x20guard\x20carrying\x20relies,\x20re-audit\x20every\x20relied\x20child\x20against\x20the\x20NEW\x20host\x27s\x20three\x20inputs\x20(signer\x20/\x20order\x20anchor\x20/\x20submission\x20channel)\x20—\x20bounded:\x20depth\x201,\x20max\x204\x20children','enforced_by':BINDING_VERIFIER},{'id':'GR_CLOSURE_CARRY','requirement':'Every\x20passport\x20carrying\x20a\x20relying\x20parent\x20must\x20carry\x20all\x20relied\x20children\x20first\x20(closure)\x20—\x20flag\x20designs\x20where\x20the\x20carry\x20surface\x20is\x20not\x20communicated','enforced_by':BINDING_VERIFIER}]}];export function getGuardHostContext(a){return GUARD_HOST_CONTEXTS['find'](b=>b['host']===a);}const ACTION_HOST={'buy':'service_buy_guard','forward':'machine_forward','allocate':'service_allocator_guard','claim_reward':'reward_claim','vote':'arbitration_voting','dispute':'arbitration_usage','write_repository':'repository_write','submit_progress':'progress_submission','gen_passport':'gen_passport'},CUSTOM_HOST_BY_OBJECT={'Demand':'demand_present','Repository':'repository_write'};export function catalogHostFromHint(a){if(!a||typeof a['action']!=='string')return undefined;if(a['action']==='custom'){const b=a['host_object']?CUSTOM_HOST_BY_OBJECT[a['host_object']]:undefined;return b??undefined;}return ACTION_HOST[a['action']]??undefined;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{validateGuardData,MAX_DESCRIPTION_LENGTH,MAX_GUARD_TABLE_ITEM_LENGTH,MAX_NAME_LENGTH,ValueType}from'@wowok/wowok';import{rootReferencedIdentifiers}from'./guard-risk.js';import{evaluateGuardDraft}from'./guard-eval.js';import{findScene,inferSceneFromAction}from'./guard-ledger.js';import{suggestTemplateForScene}from'./guard-templates.js';import{validateGuardTreeShape}from'./guard-render.js';import{isBoolReturningQuery}from'../schema/utils/guard-query-utils.js';import{valueTypeName}from'./guard-submission-brief.js';const VALUE_TYPE_ID_TO_NAME={[ValueType['Bool']]:'Bool',[ValueType['Address']]:'Address',[ValueType['String']]:'String',[ValueType['U8']]:'U8',[ValueType['U16']]:'U16',[ValueType['U32']]:'U32',[ValueType['U64']]:'U64',[ValueType['U128']]:'U128',[ValueType['U256']]:'U256',[ValueType['VecBool']]:'VecBool',[ValueType['VecAddress']]:'VecAddress',[ValueType['VecString']]:'VecString',[ValueType['VecU8']]:'VecU8',[ValueType['VecU16']]:'VecU16',[ValueType['VecU32']]:'VecU32',[ValueType['VecU64']]:'VecU64',[ValueType['VecU128']]:'VecU128',[ValueType['VecU256']]:'VecU256',[ValueType['VecVecU8']]:'VecVecU8'};function normalizeValueTypeNames(a){if(!a['table']['some'](b=>typeof b['value_type']==='number'))return a;return{...a,'table':a['table']['map'](b=>typeof b['value_type']==='number'?{...b,'value_type':VALUE_TYPE_ID_TO_NAME[b['value_type']]??String(b['value_type'])}:b)};}function deepClone(a){return JSON['parse'](JSON['stringify'](a));}function rootToString(a){return JSON['stringify'](a);}function canonicalNode(a){if(a===null||typeof a!=='object')return JSON['stringify'](a)??'null';if(Array['isArray'](a))return'['+a['map'](canonicalNode)['join'](',')+']';const b=Object['keys'](a)['sort']();return'{'+b['map'](c=>JSON['stringify'](c)+':'+canonicalNode(a[c]))['join'](',')+'}';}const GE_NODE='logic_as_u256_greater_or_equal',LE_NODE='logic_as_u256_lesser_or_equal';function findDegenerateTimeWindows(a){const b=[],c=new Set(),d=g=>{const h=g['filter'](j=>j?.['type']===GE_NODE&&Array['isArray'](j['nodes'])&&j['nodes']['length']>=0x2),i=g['filter'](j=>j?.['type']===LE_NODE&&Array['isArray'](j['nodes'])&&j['nodes']['length']>=0x2);for(const j of h){for(const k of i){const l=canonicalNode(j['nodes'][0x0])===canonicalNode(k['nodes'][0x0]),m=canonicalNode(j['nodes'][0x1])===canonicalNode(k['nodes'][0x1]);if(!l||!m)continue;const n=canonicalNode(j)+'|'+canonicalNode(k);if(c['has'](n))continue;c['add'](n),b['push']({'ge':j,'le':k});}}},e=g=>{if(g?.['type']==='logic_and'&&Array['isArray'](g['nodes']))return g['nodes']['flatMap'](e);return[g];},f=g=>{if(!g||typeof g!=='object')return;if(g['type']==='logic_not')return;if(g['type']==='logic_and'&&Array['isArray'](g['nodes'])){const h=e(g);d(h),h['forEach'](f);return;}if(g['type']==='logic_or'&&Array['isArray'](g['nodes'])){for(const i of g['nodes']){i?.['type']==='logic_and'&&Array['isArray'](i['nodes'])?(d(i['nodes']),i['nodes']['forEach'](f)):f(i);}return;}if(g['type']===GE_NODE||g['type']===LE_NODE)d([g]);if(Array['isArray'](g['nodes']))g['nodes']['forEach'](f);};return f(a),b;}function hasSignerContext(a){const b=rootToString(a);return b['includes']('\x22Signer\x22')||b['includes']('\x22context\x22:\x22Signer\x22')||b['includes']('\x22context\x22:\x20\x22Signer\x22');}function getSubmissionEntries(a){return a['filter'](b=>b['b_submission']===!![]);}function inferValueType(a){if(typeof a==='string'){if(a['startsWith']('0x')&&a['length']>=0x3)return'Address';return'String';}if(typeof a==='number'){if(Number['isInteger'](a)){if(a>=0x0&&a<=0xff)return'U8';if(a>=0x0&&a<=0xffff)return'U16';return'U64';}return'U256';}if(typeof a==='boolean')return'Bool';if(Array['isArray'](a)){if(a['length']>0x0){const b=inferValueType(a[0x0]);if(b==='Address')return'Vec<Address>';if(b==='String')return'Vec<String>';if(b==='Bool')return'Vec<Bool>';}return'Vec<Address>';}return undefined;}function sdkIssueToDiagnostic(a){return{'code':a['code'],'message':a['message'],'severity':a['severity'],'source':'sdk','location':{'path':a['path']},'fix':{'description':'SDK\x20validation\x20failed\x20('+(a['sdk_error']??'InvalidParam')+');\x20manual\x20fix\x20required','auto_fixable':![]}};}async function checkSdkSyntax(a){const b=validateGuardTreeShape(a['root']);if(b['length']>0x0)return b['map'](g=>({'code':'G-001','message':g['message'],'severity':'error','source':'sdk','location':{'path':g['path']},'fix':{'description':'Unary\x20operators\x20(logic_not,\x20value_type,\x20vec_length,\x20calc_string_length,\x20convert_*)\x20take\x20a\x20single\x20\x27node\x27\x20child;\x20only\x20multi-operand\x20forms\x20(logic_and,\x20logic_or,\x20logic_equal,\x20logic_as_u256_*,\x20calc_number_*,\x20vec_contains_*)\x20take\x20a\x20\x27nodes\x27\x20array.','auto_fixable':![]}}));const c=a['table']['map'](g=>({'identifier':g['identifier'],'b_submission':g['b_submission']??![],'value_type':g['value_type']??'Address','value':g['value'],'name':g['name']??''}));let d;try{d=await validateGuardData({'description':a['description'],'table':c,'root':a['root'],'rely':a['rely']});}catch(g){const h=g?.['message']??String(g),i=/guard tree ([^:]+):/['exec'](h);return[{'code':'G-001','message':h,'severity':'error','source':'sdk','location':{'path':i?toJsonPointer(i[0x1]):'/root'},'fix':{'description':'Repair\x20the\x20tree\x20at\x20the\x20named\x20path:\x20unary\x20operators\x20(logic_not,\x20convert_*,\x20value_type)\x20take\x20a\x20single\x20\x27node\x27\x20child;\x20only\x20multi-operand\x20forms\x20(logic_and,\x20logic_or,\x20logic_equal,\x20calc_*,\x20vec_*)\x20take\x20\x27nodes\x27.','auto_fixable':![]}}];}const f=d['map'](sdkIssueToDiagnostic);if(!hasRepositoryIdSlotRef(a['root']))return f;return f['map'](j=>j['code']==='G-008'&&/invalid parameter:checkType/i['test'](j['message'])?{...j,'severity':'warning','message':j['message']+'\x20—\x20KNOWN\x20ANALYZER\x20GAP\x20(rex5\x20T-29):\x20the\x20checker\x20does\x20not\x20implement\x20the\x20id\x20slot-reference\x20grammar\x20'+'({identifier:N})\x20that\x20the\x20chain\x20resolves\x20for\x20repository-data\x20queries;\x20chain-proven\x20guards\x20ship\x20this\x20exact\x20shape.','fix':{'description':'Do\x20NOT\x20rebuild\x20the\x20guard\x20on\x20this\x20diagnostic\x20alone:\x20run\x20a\x20free\x20dry\x20run\x20of\x20the\x20guarded\x20operation.\x20'+'If\x20it\x20accepts\x20the\x20slot-reference\x20leg\x20on-chain,\x20the\x20guard\x20is\x20valid\x20—\x20the\x20SDK\x20checker\x27s\x20grammar\x20gap\x20is\x20tracked\x20separately.','auto_fixable':![]}}:j);}function hasRepositoryIdSlotRef(a){const b=c=>{if(!c||typeof c!=='object')return![];if(Array['isArray'](c))return c['some'](b);const d=c;if(typeof d['type']==='string'&&d['type']['startsWith']('query_repository_data')&&d['id']!==undefined&&d['id']!==null&&typeof d['id']==='object'&&!Array['isArray'](d['id'])&&Number['isFinite'](d['id']['identifier']))return!![];return Object['values'](d)['some'](b);};return b(a);}function toJsonPointer(a){const b=a['replace'](/^\/+/,'');return b['startsWith']('root')?'/'+b:'/root/'+b;}function checkSemanticErrors(a,b){const d=[],{table:e,root:f,binding_hint:g}=a,h=g?findScene(g['host_object']??'',g['binding_field']??''):undefined,i=getSubmissionEntries(e);if(i['length']>0x0&&f&&!hasSignerContext(f)){const k=i['some'](n=>n['value_type']==='Address'),l=h?.['id']==='service_order_allocators_guard'&&g?.['sharing_recipients']!==undefined&&g['sharing_recipients']['length']>0x0&&!g['sharing_recipients']['includes']('Signer'),m=h?.['id']==='service_order_allocators_guard'&&i['length']>0x0&&i['every'](n=>!rootReferencedIdentifiers(f)['has'](n['identifier']));if(k&&!l&&!m){const n=i['filter'](o=>o['value_type']==='Address')['map'](o=>e['indexOf'](o));d['push']({'code':'LE-04','message':'Submitted\x20data\x20has\x20no\x20Signer\x20binding\x20(submission\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':n['map'](o=>'/table/'+o)['join']('\x20→\x20')},'fix':{'description':'Add\x20logic_equal(context(Signer),\x20identifier[N])\x20in\x20root\x20to\x20bind\x20the\x20submitter\x20identity','auto_fixable':![]}});}}if(h?.['id']==='arbitration_voting_guard'){const o=i['some'](p=>['U8','U16','U32','U64','U128','U256']['includes'](p['value_type']??''));if(o){const p=i['filter'](q=>['U8','U16','U32','U64','U128','U256']['includes'](q['value_type']??''))['map'](q=>e['indexOf'](q));d['push']({'code':'LE-05','message':'voting_guard\x20voting\x20weight\x20comes\x20from\x20submitted\x20data\x20(weight\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':p['map'](q=>'/table/'+q)['join']('\x20→\x20')},'fix':{'description':'Derive\x20arbitrator\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20(e.g.\x20105\x20TypeArbArbitration)\x20rather\x20than\x20submitting\x20them\x20directly','auto_fixable':![]}});}}if(h?.['id']==='gen_passport_guard'||g?.['action']==='gen_passport'){const q=rootToString(f);if(q['includes']('1167')||q['includes']('repository.data')){const r=q['includes']('quote_guard');r&&d['push']({'code':'LE-06','message':'repository.data\x20query\x20with\x20quote_guard:\x20rigid\x20verification\x20requirement\x20—\x20ensure\x20Passport\x20includes\x20quote_guard\x20verification\x20with\x20necessary\x20submissions\x20(e.g.,\x20Payment\x20proof)','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20the\x20quote_guard\x20is\x20verified:\x20user\x20submits\x20Payment\x20via\x20Passport,\x20quote_guard\x20verifies\x20Payment\x20fields,\x20repository\x20data\x20query\x20passes','auto_fixable':![]}});}}if(g?.['host_object']&&h&&b?.['host_published']!==!![]){const s=g['host_object'],t=e['filter'](u=>!u['b_submission']&&u['value_type']==='Address'&&typeof u['value']==='string'&&u['value']['startsWith']('0x')&&u['object_type']===s);if(t['length']>0x0){const u=t['map'](x=>e['indexOf'](x)),w=b?.['host_published']===![];d['push']({'code':'LE-07','message':'Circular\x20reference\x20uses\x20an\x20address\x20rather\x20than\x20a\x20name\x20(Host\x20Object\x20may\x20not\x20be\x20published\x20yet\x20when\x20the\x20Guard\x20is\x20created)','severity':w?'error':'warning','source':'lint','location':{'path':u['map'](x=>'/table/'+x+'/value')['join']('\x20→\x20')},'fix':{'description':'Change\x20value\x20from\x20an\x20address\x20to\x20an\x20object\x20name\x20(e.g.\x20\x22service1\x22);\x20the\x20SDK\x20will\x20resolve\x20it\x20to\x20an\x20address\x20after\x20the\x20Host\x20Object\x20is\x20published','auto_fixable':![]}});}}const j=e['filter'](x=>x['b_submission']===![]&&Array['isArray'](x['value'])&&x['value']['length']===0x0);j['length']>0x0&&d['push']({'code':'LE-10','message':'Static\x20table\x20slot(s)\x20'+j['map'](x=>x['identifier'])['join'](',\x20')+'\x20carry\x20an\x20EMPTY\x20array\x20value\x20—\x20'+'guard\x20table\x20construction\x20silently\x20DROPS\x20empty\x20vectors:\x20the\x20created\x20Guard\x20will\x20MISS\x20these\x20rows\x20while\x20creation\x20still\x20succeeds.','severity':'error','source':'lint','location':{'path':j['map'](x=>'/table['+x['identifier']+']')['join']('\x20→\x20')},'fix':{'description':'Give\x20each\x20flagged\x20slot\x20a\x20non-empty\x20static\x20value,\x20or\x20flip\x20it\x20to\x20b_submission=true\x20and\x20supply\x20the\x20value\x20at\x20Guard\x20trigger\x20time\x20(protocol\x20once-slots:\x20255\x20keys\x20on\x20the\x20submitted\x20bytes,\x20254\x20on\x20the\x20chain-derived\x20object\x20key).','auto_fixable':![]}});for(const {}of findDegenerateTimeWindows(f)){d['push']({'code':'LE-08','message':'Degenerate\x20time\x20window:\x20the\x20same\x20conjunction\x20asserts\x20`L\x20>=\x20R`\x20and\x20`L\x20<=\x20R`\x20over\x20'+'structurally\x20identical\x20operands.\x20Their\x20conjunction\x20is\x20`L\x20==\x20R`\x20—\x20on\x20a\x20millisecond\x20Clock\x20'+'an\x20~1\x20ms\x20window,\x20i.e.\x20the\x20guarded\x20forward\x20is\x20effectively\x20unreachable.\x20'+'`logic_as_u256_greater_or_equal`\x20is\x20a\x20LOWER\x20bound\x20(deadline\x20passed);\x20an\x20upper\x20bound\x20'+'(`logic_as_u256_lesser_or_equal`)\x20must\x20use\x20a\x20DIFFERENT\x20right-hand\x20side.','severity':'error','source':'lint','location':{'path':'/root'},'fix':{'description':'For\x20\x22the\x20deadline\x20has\x20passed\x22,\x20keep\x20ONLY\x20`L\x20>=\x20R`\x20and\x20delete\x20the\x20`<=`\x20clause.\x20'+'For\x20\x22the\x20window\x20is\x20open\x22,\x20keep\x20both\x20clauses\x20but\x20make\x20the\x20right-hand\x20sides\x20differ,\x20'+'e.g.\x20`L\x20>=\x20t`\x20and\x20`L\x20<=\x20t\x20+\x20K`.\x20Remember\x20`progress.current_time`\x20is\x20refreshed\x20on\x20'+'every\x20forward,\x20so\x20anchoring\x20a\x20release\x20lock\x20on\x20it\x20restarts\x20the\x20clock\x20at\x20each\x20node\x20change.','auto_fixable':![]}});}{const x=[],y=(A,B)=>{if(!B||typeof B!=='object')return;if(B['type']==='query'&&B['query']!==undefined){if(!isBoolReturningQuery(B['query'])){const C=typeof B['query']==='string'?B['query']:String(B['query']);x['push']({'op':A,'describe':'query\x20'+C,'claimedByTwin':/claimed_by/i['test'](C)&&!/\bsome\b/i['test'](C)});}}else{if(B['type']==='identifier'&&B['identifier']!==undefined){const D=e['find'](F=>F['identifier']===B['identifier']),E=D?.['value_type'];E&&E!=='Bool'&&E!=='Value'&&x['push']({'op':A,'describe':'identifier\x20'+B['identifier']+'\x20(table\x20value_type\x20'+E+')','claimedByTwin':![]});}}},z=A=>{if(!A||typeof A!=='object')return;if(A['type']==='logic_not'){y('logic_not',A['node']),z(A['node']);return;}Array['isArray'](A['nodes'])&&((A['type']==='logic_and'||A['type']==='logic_or')&&A['nodes']['forEach'](B=>y(A['type'],B)),A['nodes']['forEach'](z));if(A['node'])z(A['node']);};z(f);for(const A of x){d['push']({'code':'LE-09','message':A['op']+'\x20consumes\x20a\x20non-Bool\x20leaf\x20('+A['describe']+')\x20—\x20Bool\x20operators\x20take\x20Bool\x20operands\x20only\x20(crs\x20P2-1/P2-2)'+(A['claimedByTwin']?'.\x20TEACHING:\x20order.claimed_by\x20(query\x201571)\x20returns\x20Address;\x20its\x20Bool\x20twin\x20is\x20`order.claimed_by\x20some`\x20(query\x201570)\x20—\x20use\x20THAT\x20in\x20logic_not\x20/\x20logic_equal.':'.\x20TEACHING:\x20wrap\x20the\x20leaf\x20in\x20logic_equal[leaf,\x20identifier[N]]\x20(any\x20type)\x20or\x20a\x20logic_as_u256_*\x20operator\x20(numeric\x20comparison)\x20to\x20produce\x20a\x20Bool.'),'severity':'error','source':'lint','location':{'path':'/root'},'fix':{'description':A['claimedByTwin']?'Replace\x20query\x20order.claimed_by\x20with\x20order.claimed_by\x20some\x20(query\x201570)':'Wrap\x20the\x20leaf\x20in\x20logic_equal\x20against\x20identifier[N]\x20so\x20'+A['op']+'\x20receives\x20a\x20Bool','auto_fixable':![]}});}}{const B=new Set(['U8','U16','U32','U64','U128','U256']),C=(F,G)=>{if(!F||typeof F!=='object')return;if(Array['isArray'](F)){F['forEach'](I=>C(I,G));return;}const H=F;if(H['type']==='calc_string_length')return;if(Number['isFinite'](H['identifier']))G['add'](H['identifier']);for(const [I,J]of Object['entries'](H)){if(I==='object'&&typeof H['type']==='string'&&H['type']['startsWith']('query'))continue;C(J,G);}},D=[],E=F=>{if(!F||typeof F!=='object')return;if(Array['isArray'](F)){F['forEach'](E);return;}const G=F;if(typeof G['type']==='string'&&G['type']['startsWith']('logic_as_u256')){const H=new Set();C(G['nodes']??G,H);const I=[...H]['filter'](J=>{const K=e['find'](M=>M['identifier']===J),L=K?.['value_type'];return L!==undefined&&!B['has'](L)&&L!=='Value';});if(I['length']>0x0)D['push']({'op':G['type'],'ids':I});}Object['values'](G)['forEach'](J=>E(J));};E(f);for(const F of D){const G=F['ids']['map'](H=>{const I=e['find'](J=>J['identifier']===H);return'identifier\x20'+H+'\x20(value_type\x20'+I?.['value_type']+')';})['join'](',\x20');d['push']({'code':'LE-11','message':F['op']+'\x20compares\x20a\x20NON-NUMERIC\x20table\x20row\x20('+G+')\x20—\x20the\x20on-chain\x20predicate_matches\x20'+'treats\x20the\x20type\x20mismatch\x20as\x20an\x20honest\x20non-match,\x20so\x20this\x20leg\x20evaluates\x20FALSE\x20on\x20EVERY\x20run:\x20'+'the\x20guard\x20compiles\x20and\x20publishes\x20but\x20its\x20action\x20can\x20never\x20fire\x20(h1w9\x20F-05:\x20an\x20entire\x20payout\x20rail\x20'+'silently\x20dead-ended\x20this\x20way).\x20Numeric\x20predicates\x20(logic_as_u256_*)\x20require\x20numeric\x20rows\x20(U8-U256).','severity':'error','source':'lint','location':{'path':'/root'},'fix':{'description':'Re-type\x20the\x20row\x20to\x20a\x20numeric\x20value_type\x20(and\x20re-derive\x20its\x20writer\x20to\x20store\x20numbers),\x20or\x20replace\x20the\x20predicate\x20with\x20a\x20type-honest\x20comparison\x20(logic_equal\x20against\x20the\x20row\x27s\x20actual\x20type).\x20After\x20publish\x20the\x20guard\x20data\x20is\x20IMMUTABLE\x20—\x20fix\x20before\x20materialization','auto_fixable':![]}});}}return d;}function checkSyntaxHints(a){const b=[],{table:c}=a;(!a['description']||a['description']['trim']()==='')&&b['push']({'code':'SH-01','message':'description\x20is\x20missing\x20or\x20empty','severity':'info','source':'lint','location':{'path':'/description'},'fix':{'description':'Add\x20a\x20description,\x20e.g.\x20\x27Service\x20buy_guard:\x20whitelist\x20validation\x27','auto_fixable':!![]}});for(let d=0x0;d<c['length'];d++){const e=c[d];(!e['name']||e['name']['trim']()==='')&&b['push']({'code':'SH-03','message':'table['+d+']\x20is\x20missing\x20name','severity':'warning','source':'lint','location':{'path':'/table/'+d+'/name'},'fix':{'description':'Add\x20a\x20name,\x20e.g.\x20\x22data\x20entry\x20'+e['identifier']+'\x22','auto_fixable':!![]}});}for(let f=0x0;f<c['length'];f++){const g=c[f];!g['value_type']&&b['push']({'code':'SH-05','message':'table['+f+']\x20is\x20missing\x20value_type','severity':'warning','source':'lint','location':{'path':'/table/'+f+'/value_type'},'fix':{'description':'Infer\x20value_type\x20from\x20value\x20(e.g.\x20Address/String/U64,\x20etc.)','auto_fixable':!![]}});}c['length']>MAX_GUARD_TABLE_ITEM_LENGTH&&b['push']({'code':'SH-07','message':'table\x20entry\x20count\x20'+c['length']+'\x20exceeds\x20the\x20maximum\x20limit\x20'+MAX_GUARD_TABLE_ITEM_LENGTH,'severity':'error','source':'lint','location':{'path':'/table'},'fix':{'description':'Slim\x20down\x20the\x20table\x20by\x20merging\x20similar\x20entries,\x20or\x20split\x20into\x20multiple\x20Guards\x20+\x20rely','auto_fixable':![]}});for(let h=0x0;h<c['length'];h++){c[h]['b_submission']===undefined&&b['push']({'code':'SH-10','message':'table['+h+']\x20b_submission\x20is\x20missing','severity':'info','source':'lint','location':{'path':'/table/'+h+'/b_submission'},'fix':{'description':'Set\x20to\x20false\x20(constant)\x20or\x20true\x20(submitted\x20data)','auto_fixable':!![]}});}for(let j=0x0;j<c['length'];j++){const k=c[j];k['b_submission']===!![]&&k['value']!==undefined&&k['value']!==null&&b['push']({'code':'SH-11','message':'table['+j+']\x20has\x20a\x20redundant\x20value\x20field\x20on\x20b_submission=true\x20entry\x20(the\x20verifier\x20supplies\x20the\x20value\x20at\x20runtime;\x20this\x20value\x20is\x20ignored\x20by\x20BCS\x20encoding\x20and\x20wastes\x20gas)','severity':'warning','source':'lint','location':{'path':'/table/'+j+'/value'},'fix':{'description':'Remove\x20the\x20value\x20field\x20—\x20it\x20is\x20ignored\x20for\x20b_submission=true\x20entries','auto_fixable':!![]}});}return b;}function checkSuggestions(a){const b=[],{root:c,binding_hint:d,table:e,description:f}=a;if(c){const i=rootToString(c);if(i['includes']('vec_contains_address')&&i['includes']('Signer'))b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Refer\x20to\x20the\x20P04\x20Pattern\x20to\x20ensure\x20best\x20practices','auto_fixable':![]}});else{if(i['includes']('logic_equal')&&i['includes']('Signer')){const j=e['some'](k=>!k['b_submission']&&k['value_type']==='Address'&&typeof k['value']==='string'&&k['value']['length']>0x0);j&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation\x20—\x20single-address\x20variant)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'P04\x20single-address\x20form;\x20for\x20multi-address\x20scenarios,\x20consider\x20vec_contains_address','auto_fixable':![]}});}}(i['includes']('logic_as_u256_greater')||i['includes']('logic_as_u256_lesser'))&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P02\x20(numeric\x20threshold\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20amount/quantity\x20threshold\x20validation\x20scenarios','auto_fixable':![]}}),i['includes']('convert_witness')&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P09\x20(witness-derived\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20cross-object\x20relationship\x20validation\x20(e.g.\x20Order→Progress)','auto_fixable':![]}});}if(d?.['action']){const k=['buy','forward','allocate','claim_reward','vote','dispute','write_repository','submit_progress','gen_passport'];if(k['includes'](d['action'])){const l=inferSceneFromAction(d['action']);if(l){const m=suggestTemplateForScene(l['id']);m&&b['push']({'code':'SG-02','message':'Recommended\x20scene\x20template:\x20'+m['name'],'severity':'hint','source':'lint','location':{'path':'/'},'fix':{'description':'Refer\x20to\x20template\x20'+m['id']+'\x20('+m['example_use_case']+')','auto_fixable':![]}});}}}const g=n=>new TextEncoder()['encode'](n)['length'],h=getSubmissionEntries(e);for(const [n,o]of e['entries']()){const p=o['name']??'';if(p['length']===0x0)continue;if(g(p)>MAX_NAME_LENGTH)b['push']({'code':'SG-03','message':'table['+n+']\x20name\x20is\x20'+g(p)+'\x20BCS\x20characters,\x20maximum\x20is\x20'+MAX_NAME_LENGTH+'.\x20Use\x20a\x20short\x20identifier\x20(e.g.\x20\x27order_id\x27,\x20\x27delivery_node\x27);\x20the\x20human-readable\x20explanation\x20belongs\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field','severity':'warning','source':'lint','location':{'path':'/table/'+n+'/name'},'fix':{'description':'Shorten\x20the\x20name\x20to\x20'+MAX_NAME_LENGTH+'\x20BCS\x20characters\x20or\x20fewer','auto_fixable':![]}});else p['toLowerCase']()['startsWith']('0x')&&b['push']({'code':'SG-03','message':'table['+n+']\x20name\x20must\x20not\x20start\x20with\x20\x220x\x22\x20(reserved\x20for\x20object\x20IDs)','severity':'warning','source':'lint','location':{'path':'/table/'+n+'/name'},'fix':{'description':'Rename\x20the\x20entry\x20without\x20the\x200x\x20prefix','auto_fixable':![]}});}if(h['length']>0x0){const q=(f??'')['trim']();q['length']<0xa&&b['push']({'code':'SG-03','message':'This\x20Guard\x20accepts\x20submitted\x20data\x20('+h['length']+'\x20table\x20'+(h['length']===0x1?'entry':'entries')+'\x20with\x20b_submission=true)\x20but\x20its\x20description\x20is\x20too\x20short\x20for\x20a\x20verifier\x20to\x20know\x20what\x20to\x20submit.\x20Explain\x20the\x20expected\x20submitted\x20data\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field,\x20e.g.\x20\x27user-submitted\x20operation\x20type\x20(return/damage)\x27','severity':'info','source':'lint','location':{'path':'/'},'fix':{'description':'Explain\x20the\x20expected\x20submitted\x20data\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field','auto_fixable':![]}});}if(c){const r=rootToString(c),s=r['includes']('proof.signer'),t=r['includes']('proof.time'),u=r['includes']('calc_string_length'),v=h['some'](w=>w['value_type']==='String');if(s&&t)b['push']({'code':'SG-04','message':'Strict-mode\x20privacy-delivery\x20guard\x20detected\x20(proof.signer\x20+\x20proof.time).\x20'+'Recommended\x20three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20'+'proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27).','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20all\x20three\x20conditions\x20are\x20present\x20(logic_and).\x20Refer\x20to\x20template\x20tpl_forward_privacy_delivery_proof.\x20'+'Query\x20IDs:\x20proof.signer=1958,\x20proof.time=1960,\x20order.time=1574,\x20order.service=1563.','auto_fixable':![]}});else u&&v&&b['push']({'code':'SG-04','message':'Broad-mode\x20privacy-delivery\x20guard\x20detected\x20(String\x20submission\x20+\x20length\x20check,\x20e.g.\x20Merkle\x20Root\x20length\x20==\x2066).\x20'+'This\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20'+'Suitable\x20as\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'For\x20stronger\x20assurance,\x20consider\x20strict\x20mode:\x20submit\x20a\x20Proof\x20object\x20address\x20(from\x20messenger.submitChainProof)\x20+\x20'+'Order\x20address,\x20then\x20verify\x20proof.signer/proof.time/order.service.\x20See\x20template\x20tpl_forward_privacy_delivery_proof.','auto_fixable':![]}});}return b;}export function autoFixGuard(a){const b=deepClone(a),c=[];(!b['description']||b['description']['trim']()==='')&&(b['description']='Guard\x20(table:\x20'+b['table']['length']+'\x20items,\x20root:\x20'+(b['root']?.['type']??'unknown')+')',c['push']({'diagnostic_code':'SH-01','description':'Fill\x20in\x20default\x20description','after':b['description'],'path':'/description'}));if(b['description']&&b['description']['length']>MAX_DESCRIPTION_LENGTH){const f=b['description'];b['description']=b['description']['substring'](0x0,MAX_DESCRIPTION_LENGTH),c['push']({'diagnostic_code':'G-001','description':'Truncate\x20description\x20to\x20'+MAX_DESCRIPTION_LENGTH+'\x20characters','before':f['length']+'\x20characters','after':b['description']['length']+'\x20characters','path':'/description'});}for(let g=0x0;g<b['table']['length'];g++){const h=b['table'][g];(!h['name']||h['name']['trim']()==='')&&(h['name']='data\x20entry\x20'+h['identifier'],c['push']({'diagnostic_code':'SH-03','description':'table['+g+']\x20fill\x20in\x20name','after':h['name'],'path':'/table/'+g+'/name'}));}for(let j=0x0;j<b['table']['length'];j++){const k=b['table'][j];if(!k['value_type']&&k['value']!==undefined&&k['value']!==null){const l=inferValueType(k['value']);l&&(k['value_type']=l,c['push']({'diagnostic_code':'SH-05','description':'table['+j+']\x20infer\x20value_type','after':l,'path':'/table/'+j+'/value_type'}));}}const d=new Map();let e=0x0;for(let m=0x0;m<b['table']['length'];m++){const n=b['table'][m];if(!d['has'](n['identifier']))d['set'](n['identifier'],e),n['identifier']!==e&&c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+n['identifier']+'\x20→\x20'+e,'before':String(n['identifier']),'after':String(e),'path':'/table/'+m+'/identifier'}),n['identifier']=e,e++;else{const o=n['identifier'];n['identifier']=e,d['set'](o,e),c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+o+'\x20duplicate\x20→\x20reallocated\x20to\x20'+e,'before':String(o),'after':String(e),'path':'/table/'+m+'/identifier'}),e++;}}for(let p=0x0;p<b['table']['length'];p++){const q=b['table'][p];q['b_submission']===undefined&&(q['b_submission']=![],c['push']({'diagnostic_code':'SH-10','description':'table['+p+']\x20b_submission\x20default\x20set\x20to\x20false','after':'false','path':'/table/'+p+'/b_submission'}));}if(b['rely']?.['guards']&&b['rely']['guards']['length']>0x0){const r=[...new Set(b['rely']['guards'])];r['length']!==b['rely']['guards']['length']&&(c['push']({'diagnostic_code':'G-009','description':'rely\x20deduplicate:\x20'+b['rely']['guards']['length']+'\x20→\x20'+r['length'],'before':JSON['stringify'](b['rely']['guards']),'after':JSON['stringify'](r),'path':'/rely/guards'}),b['rely']['guards']=r);}for(let s=0x0;s<b['table']['length'];s++){const t=b['table'][s];if(t['b_submission']===!![]&&t['value']!==undefined&&t['value']!==null){const u=JSON['stringify'](t['value']);delete t['value'],c['push']({'diagnostic_code':'SH-11','description':'table['+s+']\x20remove\x20redundant\x20value\x20on\x20b_submission=true\x20entry','before':u,'after':'(removed)','path':'/table/'+s+'/value'});}}return{'fixed':b,'actions':c};}export async function lintGuard(a,b){const c=b?.['auto_fix']??!![],d=normalizeValueTypeNames(a),{table:e,root:f,rely:g,binding_hint:h}=d,i=[];let j;const k=await checkSdkSyntax(d);i['push'](...k);const l=checkSemanticErrors(d,b);i['push'](...l);const m=checkSyntaxHints(d);i['push'](...m);let n,o=[];if(c){const {fixed:w,actions:x}=autoFixGuard(d);x['length']>0x0&&(n=w,o=x);}if(e['length']>0x0&&f){const y=h?findScene(h['host_object']??'',h['binding_field']??''):undefined,z=e['map'](B=>({'identifier':B['identifier'],'b_submission':B['b_submission']??![],'value_type':B['value_type']??'Address','value':B['value'],'name':B['name'],'object_type':B['object_type']})),A=evaluateGuardDraft({'table':z,'root':f,'rely':g,'scene':y,'sharing_recipients':h?.['sharing_recipients']});j=A['assessment'];for(const B of j['risks']){const C=B['level']==='critical'||B['level']==='high'?'error':B['level']==='medium'?'warning':B['level']==='low'?'info':'hint',D=B['evidence']??'',E=D['startsWith']('/')?D:'/';i['push']({'code':B['id'],'message':'['+B['level']+']\x20'+B['title'],'severity':C,'source':'risk','location':{'path':E},'fix':{'description':B['mitigation'],'auto_fixable':![]}});}}const p=checkSuggestions(d);i['push'](...p);const q=i['filter'](F=>F['severity']==='error')['length'],s=i['filter'](F=>F['severity']==='warning')['length'],t=i['filter'](F=>F['severity']==='info'||F['severity']==='hint')['length'],u=q===0x0;let v;if(q>0x0)v='Fix\x20'+q+'\x20error(s)\x20and\x20re-run\x20lint';else s>0x0?v='Consider\x20addressing\x20'+s+'\x20warning(s),\x20then\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation':v='lint\x20passed\x20(no\x20errors);\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation\x20before\x20going\x20on-chain';return{'json_summary':{'table_count':e['length'],'root_type':f?.['type']??'unknown','has_rely':!!g?.['guards']?.['length'],'rely_count':g?.['guards']?.['length']??0x0,'has_description':!!d['description']},'diagnostics':i,'fixed_json':n,'fix_actions':o,'risk_assessment':j,'summary':{'errors':q,'warnings':s,'infos':t,'auto_fixes_applied':o['length'],'ready':u,'next_step':v}};}export async function isGuardReady(a){const b=await lintGuard(a,{'auto_fix':![]});return b['summary']['ready'];}export async function getGuardErrors(a){const b=await lintGuard(a,{'auto_fix':![]});return b['diagnostics']['filter'](c=>c['severity']==='error');}export function formatLintResult(a){const b=[];b['push']('===\x20Guard\x20JSON\x20Lint\x20Report\x20==='),b['push'](''),b['push']('Summary:'),b['push']('\x20\x20Errors:\x20\x20\x20\x20\x20'+a['summary']['errors']),b['push']('\x20\x20Warnings:\x20\x20\x20'+a['summary']['warnings']),b['push']('\x20\x20Infos:\x20\x20\x20\x20\x20\x20'+a['summary']['infos']),b['push']('\x20\x20Auto-fixes:\x20'+a['summary']['auto_fixes_applied']),b['push']('\x20\x20Ready:\x20\x20\x20\x20\x20\x20'+(a['summary']['ready']?'YES':'NO')),b['push']('\x20\x20Next\x20step:\x20\x20'+a['summary']['next_step']),b['push']('');if(a['fix_actions']['length']>0x0){b['push']('---\x20Auto-fix\x20Actions\x20---');for(const g of a['fix_actions']){b['push']('\x20\x20['+g['diagnostic_code']+']\x20'+g['description']),b['push']('\x20\x20\x20\x20Path:\x20'+g['path']),g['before']&&g['after']&&b['push']('\x20\x20\x20\x20'+g['before']+'\x20->\x20'+g['after']);}b['push']('');}const c=a['diagnostics']['filter'](h=>h['severity']==='error'),e=a['diagnostics']['filter'](h=>h['severity']==='warning'),f=a['diagnostics']['filter'](h=>h['severity']==='info'||h['severity']==='hint');if(c['length']>0x0){b['push']('---\x20Errors\x20(must\x20fix)\x20---');for(const h of c){b['push']('\x20\x20['+h['code']+']\x20('+h['source']+')\x20'+h['message']),b['push']('\x20\x20\x20\x20Path:\x20'+h['location']['path']);if(h['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+h['fix']['description']);}b['push']('');}if(e['length']>0x0){b['push']('---\x20Warnings\x20(consider\x20fixing)\x20---');for(const i of e){b['push']('\x20\x20['+i['code']+']\x20('+i['source']+')\x20'+i['message']),b['push']('\x20\x20\x20\x20Path:\x20'+i['location']['path']);if(i['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+i['fix']['description']);}b['push']('');}if(f['length']>0x0){b['push']('---\x20Info\x20&\x20Hints\x20---');for(const j of f){b['push']('\x20\x20['+j['code']+']\x20('+j['source']+')\x20'+j['message']),b['push']('\x20\x20\x20\x20Path:\x20'+j['location']['path']);}}return b['join']('\x0a');}export function translateGuardTypeError(a){if(!a)return undefined;let b='',c=-0x1,d=-0x1;const e=a['match'](/([\w.[\]-]+)\s*(?:→|->)\s*checkType:\s*(\d+)\s+require type:\s*(\d+)/);if(e)b=e[0x1],c=Number(e[0x2]),d=Number(e[0x3]);else{const j=a['match'](/checkType:\s*(\d+)\s+require type:\s*(\d+)/);if(!j)return undefined;c=Number(j[0x1]),d=Number(j[0x2]);}const f=b?'at\x20'+b+':\x20':'',g=valueTypeName(c),h=valueTypeName(d),i=[];if(d===0x0){i['push'](f+'the\x20parent\x20operator\x20needs\x20a\x20BOOL\x20operand,\x20but\x20the\x20child\x20returns\x20'+g+'.');if(c===0x1&&/claimed_by/i['test'](a))i['push']('TEACHING\x20(Bool/Address\x20twin,\x20crs\x20P2-2):\x20order.claimed_by\x20(query\x201571)\x20returns\x20Address;\x20'+'its\x20Bool\x20twin\x20is\x20`order.claimed_by\x20some`\x20(query\x201570\x20—\x20has\x20ANY\x20claimer).\x20Invert\x20THAT\x20with\x20'+'logic_not,\x20or\x20assert\x20logic_equal[query\x201570,\x20false].');else{if(c===0x1)i['push']('TEACHING:\x20wrap\x20the\x20Address\x20leaf\x20in\x20logic_equal\x20against\x20identifier[N]\x20—\x20'+'logic_equal[{type:\x22query\x22,\x20query:\x22...\x22},\x20{type:\x22identifier\x22,\x20identifier:N}].\x20'+'A\x20Bool\x20operator\x20(logic_and/or/not)\x20can\x20never\x20consume\x20a\x20bare\x20Address.');else{if(c===0x2)i['push']('TEACHING:\x20wrap\x20the\x20String\x20leaf\x20in\x20logic_equal\x20against\x20identifier[N].\x20A\x20multi-node\x20'+'membership\x20test\x20\x27current\x20in\x20{a,b,c}\x27\x20has\x20NO\x20set\x20operator\x20yet\x20(crs\x20P2-1):\x20express\x20one\x20'+'logic_equal\x20per\x20value\x20joined\x20by\x20logic_or\x20—\x20each\x20value\x20a\x20frozen\x20table\x20entry\x20(Guards\x20are\x20'+'create-only,\x20IMMUT-003).');else c>=0x3&&c<=0x8?i['push']('TEACHING:\x20numeric\x20leaf\x20—\x20compare\x20via\x20the\x20logic_as_u256_greater/lesser/equal\x20variants,\x20'+'or\x20wrap\x20in\x20logic_equal\x20against\x20a\x20numeric\x20identifier[N].'):i['push']('TEACHING:\x20wrap\x20the\x20leaf\x20in\x20a\x20Bool-producing\x20operator\x20(logic_equal\x20/\x20logic_as_u256_*)\x20'+'before\x20feeding\x20logic_and/or/not.');}}}else i['push'](f+'the\x20operator\x20requires\x20'+h+',\x20but\x20the\x20child\x20returns\x20'+g+'.\x20TEACHING:\x20align\x20the\x20operand\x20'+'types\x20—\x20wrap\x20in\x20logic_equal\x20(any\x20type)\x20or\x20convert\x20with\x20the\x20logic_as_u256_*\x20family\x20(numeric)\x20'+'before\x20the\x20comparison.');return['GUARD\x20TYPE\x20ERROR\x20(with\x20teaching\x20notes\x20below):',a['trim'](),...i]['join']('\x0a');}
|
|
1
|
+
import{validateGuardData,MAX_DESCRIPTION_LENGTH,MAX_GUARD_TABLE_ITEM_LENGTH,MAX_NAME_LENGTH,ValueType}from'@wowok/wowok';import{rootReferencedIdentifiers}from'./guard-risk.js';import{parseGuardNodeGates}from'./guard-node-gates.js';import{evaluateGuardDraft}from'./guard-eval.js';import{findScene,inferSceneFromAction}from'./guard-ledger.js';import{suggestTemplateForScene}from'./guard-templates.js';import{validateGuardTreeShape}from'./guard-render.js';import{isBoolReturningQuery}from'../schema/utils/guard-query-utils.js';import{valueTypeName}from'./guard-submission-brief.js';const VALUE_TYPE_ID_TO_NAME={[ValueType['Bool']]:'Bool',[ValueType['Address']]:'Address',[ValueType['String']]:'String',[ValueType['U8']]:'U8',[ValueType['U16']]:'U16',[ValueType['U32']]:'U32',[ValueType['U64']]:'U64',[ValueType['U128']]:'U128',[ValueType['U256']]:'U256',[ValueType['VecBool']]:'VecBool',[ValueType['VecAddress']]:'VecAddress',[ValueType['VecString']]:'VecString',[ValueType['VecU8']]:'VecU8',[ValueType['VecU16']]:'VecU16',[ValueType['VecU32']]:'VecU32',[ValueType['VecU64']]:'VecU64',[ValueType['VecU128']]:'VecU128',[ValueType['VecU256']]:'VecU256',[ValueType['VecVecU8']]:'VecVecU8'};function normalizeValueTypeNames(a){if(!a['table']['some'](b=>typeof b['value_type']==='number'))return a;return{...a,'table':a['table']['map'](b=>typeof b['value_type']==='number'?{...b,'value_type':VALUE_TYPE_ID_TO_NAME[b['value_type']]??String(b['value_type'])}:b)};}function deepClone(a){return JSON['parse'](JSON['stringify'](a));}function rootToString(a){return JSON['stringify'](a);}function canonicalNode(a){if(a===null||typeof a!=='object')return JSON['stringify'](a)??'null';if(Array['isArray'](a))return'['+a['map'](canonicalNode)['join'](',')+']';const b=Object['keys'](a)['sort']();return'{'+b['map'](c=>JSON['stringify'](c)+':'+canonicalNode(a[c]))['join'](',')+'}';}const GE_NODE='logic_as_u256_greater_or_equal',LE_NODE='logic_as_u256_lesser_or_equal';function findDegenerateTimeWindows(a){const b=[],c=new Set(),d=g=>{const h=g['filter'](j=>j?.['type']===GE_NODE&&Array['isArray'](j['nodes'])&&j['nodes']['length']>=0x2),i=g['filter'](j=>j?.['type']===LE_NODE&&Array['isArray'](j['nodes'])&&j['nodes']['length']>=0x2);for(const j of h){for(const k of i){const l=canonicalNode(j['nodes'][0x0])===canonicalNode(k['nodes'][0x0]),m=canonicalNode(j['nodes'][0x1])===canonicalNode(k['nodes'][0x1]);if(!l||!m)continue;const n=canonicalNode(j)+'|'+canonicalNode(k);if(c['has'](n))continue;c['add'](n),b['push']({'ge':j,'le':k});}}},e=g=>{if(g?.['type']==='logic_and'&&Array['isArray'](g['nodes']))return g['nodes']['flatMap'](e);return[g];},f=g=>{if(!g||typeof g!=='object')return;if(g['type']==='logic_not')return;if(g['type']==='logic_and'&&Array['isArray'](g['nodes'])){const h=e(g);d(h),h['forEach'](f);return;}if(g['type']==='logic_or'&&Array['isArray'](g['nodes'])){for(const i of g['nodes']){i?.['type']==='logic_and'&&Array['isArray'](i['nodes'])?(d(i['nodes']),i['nodes']['forEach'](f)):f(i);}return;}if(g['type']===GE_NODE||g['type']===LE_NODE)d([g]);if(Array['isArray'](g['nodes']))g['nodes']['forEach'](f);};return f(a),b;}function hasSignerContext(a){const b=rootToString(a);return b['includes']('\x22Signer\x22')||b['includes']('\x22context\x22:\x22Signer\x22')||b['includes']('\x22context\x22:\x20\x22Signer\x22');}function getSubmissionEntries(a){return a['filter'](b=>b['b_submission']===!![]);}function inferValueType(a){if(typeof a==='string'){if(a['startsWith']('0x')&&a['length']>=0x3)return'Address';return'String';}if(typeof a==='number'){if(Number['isInteger'](a)){if(a>=0x0&&a<=0xff)return'U8';if(a>=0x0&&a<=0xffff)return'U16';return'U64';}return'U256';}if(typeof a==='boolean')return'Bool';if(Array['isArray'](a)){if(a['length']>0x0){const b=inferValueType(a[0x0]);if(b==='Address')return'Vec<Address>';if(b==='String')return'Vec<String>';if(b==='Bool')return'Vec<Bool>';}return'Vec<Address>';}return undefined;}function sdkIssueToDiagnostic(a){return{'code':a['code'],'message':a['message'],'severity':a['severity'],'source':'sdk','location':{'path':a['path']},'fix':{'description':'SDK\x20validation\x20failed\x20('+(a['sdk_error']??'InvalidParam')+');\x20manual\x20fix\x20required','auto_fixable':![]}};}async function checkSdkSyntax(a){const b=validateGuardTreeShape(a['root']);if(b['length']>0x0)return b['map'](g=>({'code':'G-001','message':g['message'],'severity':'error','source':'sdk','location':{'path':g['path']},'fix':{'description':'Unary\x20operators\x20(logic_not,\x20value_type,\x20vec_length,\x20calc_string_length,\x20convert_*)\x20take\x20a\x20single\x20\x27node\x27\x20child;\x20only\x20multi-operand\x20forms\x20(logic_and,\x20logic_or,\x20logic_equal,\x20logic_as_u256_*,\x20calc_number_*,\x20vec_contains_*)\x20take\x20a\x20\x27nodes\x27\x20array.','auto_fixable':![]}}));const c=a['table']['map'](g=>({'identifier':g['identifier'],'b_submission':g['b_submission']??![],'value_type':g['value_type']??'Address','value':g['value'],'name':g['name']??''}));let d;try{d=await validateGuardData({'description':a['description'],'table':c,'root':a['root'],'rely':a['rely']});}catch(g){const h=g?.['message']??String(g),i=/guard tree ([^:]+):/['exec'](h);return[{'code':'G-001','message':h,'severity':'error','source':'sdk','location':{'path':i?toJsonPointer(i[0x1]):'/root'},'fix':{'description':'Repair\x20the\x20tree\x20at\x20the\x20named\x20path:\x20unary\x20operators\x20(logic_not,\x20convert_*,\x20value_type)\x20take\x20a\x20single\x20\x27node\x27\x20child;\x20only\x20multi-operand\x20forms\x20(logic_and,\x20logic_or,\x20logic_equal,\x20calc_*,\x20vec_*)\x20take\x20\x27nodes\x27.','auto_fixable':![]}}];}const f=d['map'](sdkIssueToDiagnostic);if(!hasRepositoryIdSlotRef(a['root']))return f;return f['map'](j=>j['code']==='G-008'&&/invalid parameter:checkType/i['test'](j['message'])?{...j,'severity':'warning','message':j['message']+'\x20—\x20KNOWN\x20ANALYZER\x20GAP\x20(rex5\x20T-29):\x20the\x20checker\x20does\x20not\x20implement\x20the\x20id\x20slot-reference\x20grammar\x20'+'({identifier:N})\x20that\x20the\x20chain\x20resolves\x20for\x20repository-data\x20queries;\x20chain-proven\x20guards\x20ship\x20this\x20exact\x20shape.','fix':{'description':'Do\x20NOT\x20rebuild\x20the\x20guard\x20on\x20this\x20diagnostic\x20alone:\x20run\x20a\x20free\x20dry\x20run\x20of\x20the\x20guarded\x20operation.\x20'+'If\x20it\x20accepts\x20the\x20slot-reference\x20leg\x20on-chain,\x20the\x20guard\x20is\x20valid\x20—\x20the\x20SDK\x20checker\x27s\x20grammar\x20gap\x20is\x20tracked\x20separately.','auto_fixable':![]}}:j);}function hasRepositoryIdSlotRef(a){const b=c=>{if(!c||typeof c!=='object')return![];if(Array['isArray'](c))return c['some'](b);const d=c;if(typeof d['type']==='string'&&d['type']['startsWith']('query_repository_data')&&d['id']!==undefined&&d['id']!==null&&typeof d['id']==='object'&&!Array['isArray'](d['id'])&&Number['isFinite'](d['id']['identifier']))return!![];return Object['values'](d)['some'](b);};return b(a);}function toJsonPointer(a){const b=a['replace'](/^\/+/,'');return b['startsWith']('root')?'/'+b:'/root/'+b;}function checkSemanticErrors(a,b){const d=[],{table:e,root:f,binding_hint:g}=a,h=g?findScene(g['host_object']??'',g['binding_field']??''):undefined,i=getSubmissionEntries(e);if(i['length']>0x0&&f&&!hasSignerContext(f)){const k=i['some'](n=>n['value_type']==='Address'),l=h?.['id']==='service_order_allocators_guard'&&g?.['sharing_recipients']!==undefined&&g['sharing_recipients']['length']>0x0&&!g['sharing_recipients']['includes']('Signer'),m=h?.['id']==='service_order_allocators_guard'&&i['length']>0x0&&i['every'](n=>!rootReferencedIdentifiers(f)['has'](n['identifier']));if(k&&!l&&!m){const n=i['filter'](o=>o['value_type']==='Address')['map'](o=>e['indexOf'](o));d['push']({'code':'LE-04','message':'Submitted\x20data\x20has\x20no\x20Signer\x20binding\x20(submission\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':n['map'](o=>'/table/'+o)['join']('\x20→\x20')},'fix':{'description':'Add\x20logic_equal(context(Signer),\x20identifier[N])\x20in\x20root\x20to\x20bind\x20the\x20submitter\x20identity','auto_fixable':![]}});}}if(h?.['id']==='arbitration_voting_guard'){const o=i['some'](p=>['U8','U16','U32','U64','U128','U256']['includes'](p['value_type']??''));if(o){const p=i['filter'](q=>['U8','U16','U32','U64','U128','U256']['includes'](q['value_type']??''))['map'](q=>e['indexOf'](q));d['push']({'code':'LE-05','message':'voting_guard\x20voting\x20weight\x20comes\x20from\x20submitted\x20data\x20(weight\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':p['map'](q=>'/table/'+q)['join']('\x20→\x20')},'fix':{'description':'Derive\x20arbitrator\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20(e.g.\x20105\x20TypeArbArbitration)\x20rather\x20than\x20submitting\x20them\x20directly','auto_fixable':![]}});}}if(h?.['id']==='gen_passport_guard'||g?.['action']==='gen_passport'){const q=rootToString(f);if(q['includes']('1167')||q['includes']('repository.data')){const r=q['includes']('quote_guard');r&&d['push']({'code':'LE-06','message':'repository.data\x20query\x20with\x20quote_guard:\x20rigid\x20verification\x20requirement\x20—\x20ensure\x20Passport\x20includes\x20quote_guard\x20verification\x20with\x20necessary\x20submissions\x20(e.g.,\x20Payment\x20proof)','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20the\x20quote_guard\x20is\x20verified:\x20user\x20submits\x20Payment\x20via\x20Passport,\x20quote_guard\x20verifies\x20Payment\x20fields,\x20repository\x20data\x20query\x20passes','auto_fixable':![]}});}}if(g?.['host_object']&&h&&b?.['host_published']!==!![]){const s=g['host_object'],t=e['filter'](u=>!u['b_submission']&&u['value_type']==='Address'&&typeof u['value']==='string'&&u['value']['startsWith']('0x')&&u['object_type']===s);if(t['length']>0x0){const u=t['map'](x=>e['indexOf'](x)),w=b?.['host_published']===![];d['push']({'code':'LE-07','message':'Circular\x20reference\x20uses\x20an\x20address\x20rather\x20than\x20a\x20name\x20(Host\x20Object\x20may\x20not\x20be\x20published\x20yet\x20when\x20the\x20Guard\x20is\x20created)','severity':w?'error':'warning','source':'lint','location':{'path':u['map'](x=>'/table/'+x+'/value')['join']('\x20→\x20')},'fix':{'description':'Change\x20value\x20from\x20an\x20address\x20to\x20an\x20object\x20name\x20(e.g.\x20\x22service1\x22);\x20the\x20SDK\x20will\x20resolve\x20it\x20to\x20an\x20address\x20after\x20the\x20Host\x20Object\x20is\x20published','auto_fixable':![]}});}}const j=e['filter'](x=>x['b_submission']===![]&&Array['isArray'](x['value'])&&x['value']['length']===0x0);j['length']>0x0&&d['push']({'code':'LE-10','message':'Static\x20table\x20slot(s)\x20'+j['map'](x=>x['identifier'])['join'](',\x20')+'\x20carry\x20an\x20EMPTY\x20array\x20value\x20—\x20'+'guard\x20table\x20construction\x20silently\x20DROPS\x20empty\x20vectors:\x20the\x20created\x20Guard\x20will\x20MISS\x20these\x20rows\x20while\x20creation\x20still\x20succeeds.','severity':'error','source':'lint','location':{'path':j['map'](x=>'/table['+x['identifier']+']')['join']('\x20→\x20')},'fix':{'description':'Give\x20each\x20flagged\x20slot\x20a\x20non-empty\x20static\x20value,\x20or\x20flip\x20it\x20to\x20b_submission=true\x20and\x20supply\x20the\x20value\x20at\x20Guard\x20trigger\x20time\x20(protocol\x20once-slots:\x20255\x20keys\x20on\x20the\x20submitted\x20bytes,\x20254\x20on\x20the\x20chain-derived\x20object\x20key).','auto_fixable':![]}});for(const {}of findDegenerateTimeWindows(f)){d['push']({'code':'LE-08','message':'Degenerate\x20time\x20window:\x20the\x20same\x20conjunction\x20asserts\x20`L\x20>=\x20R`\x20and\x20`L\x20<=\x20R`\x20over\x20'+'structurally\x20identical\x20operands.\x20Their\x20conjunction\x20is\x20`L\x20==\x20R`\x20—\x20on\x20a\x20millisecond\x20Clock\x20'+'an\x20~1\x20ms\x20window,\x20i.e.\x20the\x20guarded\x20forward\x20is\x20effectively\x20unreachable.\x20'+'`logic_as_u256_greater_or_equal`\x20is\x20a\x20LOWER\x20bound\x20(deadline\x20passed);\x20an\x20upper\x20bound\x20'+'(`logic_as_u256_lesser_or_equal`)\x20must\x20use\x20a\x20DIFFERENT\x20right-hand\x20side.','severity':'error','source':'lint','location':{'path':'/root'},'fix':{'description':'For\x20\x22the\x20deadline\x20has\x20passed\x22,\x20keep\x20ONLY\x20`L\x20>=\x20R`\x20and\x20delete\x20the\x20`<=`\x20clause.\x20'+'For\x20\x22the\x20window\x20is\x20open\x22,\x20keep\x20both\x20clauses\x20but\x20make\x20the\x20right-hand\x20sides\x20differ,\x20'+'e.g.\x20`L\x20>=\x20t`\x20and\x20`L\x20<=\x20t\x20+\x20K`.\x20Remember\x20`progress.current_time`\x20is\x20refreshed\x20on\x20'+'every\x20forward,\x20so\x20anchoring\x20a\x20release\x20lock\x20on\x20it\x20restarts\x20the\x20clock\x20at\x20each\x20node\x20change.','auto_fixable':![]}});}{const x=[],y=(A,B)=>{if(!B||typeof B!=='object')return;if(B['type']==='query'&&B['query']!==undefined){if(!isBoolReturningQuery(B['query'])){const C=typeof B['query']==='string'?B['query']:String(B['query']);x['push']({'op':A,'describe':'query\x20'+C,'claimedByTwin':/claimed_by/i['test'](C)&&!/\bsome\b/i['test'](C)});}}else{if(B['type']==='identifier'&&B['identifier']!==undefined){const D=e['find'](F=>F['identifier']===B['identifier']),E=D?.['value_type'];E&&E!=='Bool'&&E!=='Value'&&x['push']({'op':A,'describe':'identifier\x20'+B['identifier']+'\x20(table\x20value_type\x20'+E+')','claimedByTwin':![]});}}},z=A=>{if(!A||typeof A!=='object')return;if(A['type']==='logic_not'){y('logic_not',A['node']),z(A['node']);return;}Array['isArray'](A['nodes'])&&((A['type']==='logic_and'||A['type']==='logic_or')&&A['nodes']['forEach'](B=>y(A['type'],B)),A['nodes']['forEach'](z));if(A['node'])z(A['node']);};z(f);for(const A of x){d['push']({'code':'LE-09','message':A['op']+'\x20consumes\x20a\x20non-Bool\x20leaf\x20('+A['describe']+')\x20—\x20Bool\x20operators\x20take\x20Bool\x20operands\x20only\x20(crs\x20P2-1/P2-2)'+(A['claimedByTwin']?'.\x20TEACHING:\x20order.claimed_by\x20(query\x201571)\x20returns\x20Address;\x20its\x20Bool\x20twin\x20is\x20`order.claimed_by\x20some`\x20(query\x201570)\x20—\x20use\x20THAT\x20in\x20logic_not\x20/\x20logic_equal.':'.\x20TEACHING:\x20wrap\x20the\x20leaf\x20in\x20logic_equal[leaf,\x20identifier[N]]\x20(any\x20type)\x20or\x20a\x20logic_as_u256_*\x20operator\x20(numeric\x20comparison)\x20to\x20produce\x20a\x20Bool.'),'severity':'error','source':'lint','location':{'path':'/root'},'fix':{'description':A['claimedByTwin']?'Replace\x20query\x20order.claimed_by\x20with\x20order.claimed_by\x20some\x20(query\x201570)':'Wrap\x20the\x20leaf\x20in\x20logic_equal\x20against\x20identifier[N]\x20so\x20'+A['op']+'\x20receives\x20a\x20Bool','auto_fixable':![]}});}}{const B=new Set(['U8','U16','U32','U64','U128','U256']),C=(F,G)=>{if(!F||typeof F!=='object')return;if(Array['isArray'](F)){F['forEach'](K=>C(K,G));return;}const H=F;if(H['type']==='calc_string_length')return;if(Number['isFinite'](H['identifier']))G['add'](H['identifier']);const I=H['type'],J=typeof I==='string'&&(I==='query'||I['startsWith']('query_')||I['startsWith']('query'));for(const [K,L]of Object['entries'](H)){if(J&&(K==='object'||K==='parameters'||K==='id'||K==='ids'||K==='where'||K==='conditions'||K==='convert_witness'))continue;C(L,G);}},D=[],E=F=>{if(!F||typeof F!=='object')return;if(Array['isArray'](F)){F['forEach'](E);return;}const G=F;if(typeof G['type']==='string'&&G['type']['startsWith']('logic_as_u256')){const H=new Set();C(G['nodes']??G,H);const I=[...H]['filter'](J=>{const K=e['find'](M=>M['identifier']===J),L=K?.['value_type'];return L!==undefined&&!B['has'](L)&&L!=='Value';});if(I['length']>0x0)D['push']({'op':G['type'],'ids':I});}Object['values'](G)['forEach'](J=>E(J));};E(f);for(const F of D){const G=F['ids']['map'](H=>{const I=e['find'](J=>J['identifier']===H);return'identifier\x20'+H+'\x20(value_type\x20'+I?.['value_type']+')';})['join'](',\x20');d['push']({'code':'LE-11','message':F['op']+'\x20compares\x20a\x20NON-NUMERIC\x20table\x20row\x20('+G+')\x20—\x20the\x20on-chain\x20predicate_matches\x20'+'treats\x20the\x20type\x20mismatch\x20as\x20an\x20honest\x20non-match,\x20so\x20this\x20leg\x20evaluates\x20FALSE\x20on\x20EVERY\x20run:\x20'+'the\x20guard\x20compiles\x20and\x20publishes\x20but\x20its\x20action\x20can\x20never\x20fire\x20(h1w9\x20F-05:\x20an\x20entire\x20payout\x20rail\x20'+'silently\x20dead-ended\x20this\x20way).\x20Numeric\x20predicates\x20(logic_as_u256_*)\x20require\x20numeric\x20rows\x20(U8-U256).','severity':'error','source':'lint','location':{'path':'/root'},'fix':{'description':'Re-type\x20the\x20row\x20to\x20a\x20numeric\x20value_type\x20(and\x20re-derive\x20its\x20writer\x20to\x20store\x20numbers),\x20or\x20replace\x20the\x20predicate\x20with\x20a\x20type-honest\x20comparison\x20(logic_equal\x20against\x20the\x20row\x27s\x20actual\x20type).\x20After\x20publish\x20the\x20guard\x20data\x20is\x20IMMUTABLE\x20—\x20fix\x20before\x20materialization','auto_fixable':![]}});}}{const H=parseGuardNodeGates(f,e)['filter'](I=>I!=='');H['length']>0x0&&d['push']({'code':'LE-12','message':'progress.current\x20pins\x20node-name\x20literal(s)\x20['+H['map'](I=>'\x22'+I+'\x22')['join'](',\x20')+'].\x20'+'The\x20chain\x20names\x20a\x20Machine\x27s\x20INIT\x20(first)\x20node\x20with\x20the\x20EMPTY\x20string:\x20if\x20this\x20guard\x20is\x20bound\x20to\x20'+'the\x20forward\x20leaving\x20the\x20init\x20node\x20(entry\x20pair\x20prev_node:\x22\x22),\x20progress.current\x20is\x20\x22\x22\x20at\x20evaluation\x20'+'time\x20and\x20the\x20equality\x20leg(s)\x20are\x20ALWAYS\x20FALSE\x20—\x20the\x20first\x20order\x20strands\x20forever\x20'+'(nnd3-mn-261103\x20F-NND-02).\x20On\x20a\x20non-init\x20source\x20node\x20the\x20same\x20legs\x20are\x20correct\x20node\x20gates.','severity':'warning','source':'lint','location':{'path':'/root'},'fix':{'description':'Verify\x20which\x20machine\x20forward\x20this\x20guard\x20binds\x20to.\x20If\x20it\x20gates\x20the\x20init\x20forward,\x20delete\x20the\x20progress.current\x20==\x20<node-name>\x20leg\x20(or\x20pin\x20\x22\x22\x20—\x20the\x20init\x20node\x27s\x20actual\x20name).\x20After\x20publish\x20the\x20guard\x20data\x20is\x20IMMUTABLE','auto_fixable':![]}});}return d;}function checkSyntaxHints(a){const b=[],{table:c}=a;(!a['description']||a['description']['trim']()==='')&&b['push']({'code':'SH-01','message':'description\x20is\x20missing\x20or\x20empty','severity':'info','source':'lint','location':{'path':'/description'},'fix':{'description':'Add\x20a\x20description,\x20e.g.\x20\x27Service\x20buy_guard:\x20whitelist\x20validation\x27','auto_fixable':!![]}});for(let d=0x0;d<c['length'];d++){const e=c[d];(!e['name']||e['name']['trim']()==='')&&b['push']({'code':'SH-03','message':'table['+d+']\x20is\x20missing\x20name','severity':'warning','source':'lint','location':{'path':'/table/'+d+'/name'},'fix':{'description':'Add\x20a\x20name,\x20e.g.\x20\x22data\x20entry\x20'+e['identifier']+'\x22','auto_fixable':!![]}});}for(let f=0x0;f<c['length'];f++){const g=c[f];!g['value_type']&&b['push']({'code':'SH-05','message':'table['+f+']\x20is\x20missing\x20value_type','severity':'warning','source':'lint','location':{'path':'/table/'+f+'/value_type'},'fix':{'description':'Infer\x20value_type\x20from\x20value\x20(e.g.\x20Address/String/U64,\x20etc.)','auto_fixable':!![]}});}c['length']>MAX_GUARD_TABLE_ITEM_LENGTH&&b['push']({'code':'SH-07','message':'table\x20entry\x20count\x20'+c['length']+'\x20exceeds\x20the\x20maximum\x20limit\x20'+MAX_GUARD_TABLE_ITEM_LENGTH,'severity':'error','source':'lint','location':{'path':'/table'},'fix':{'description':'Slim\x20down\x20the\x20table\x20by\x20merging\x20similar\x20entries,\x20or\x20split\x20into\x20multiple\x20Guards\x20+\x20rely','auto_fixable':![]}});for(let h=0x0;h<c['length'];h++){c[h]['b_submission']===undefined&&b['push']({'code':'SH-10','message':'table['+h+']\x20b_submission\x20is\x20missing','severity':'info','source':'lint','location':{'path':'/table/'+h+'/b_submission'},'fix':{'description':'Set\x20to\x20false\x20(constant)\x20or\x20true\x20(submitted\x20data)','auto_fixable':!![]}});}for(let j=0x0;j<c['length'];j++){const k=c[j];k['b_submission']===!![]&&k['value']!==undefined&&k['value']!==null&&b['push']({'code':'SH-11','message':'table['+j+']\x20has\x20a\x20redundant\x20value\x20field\x20on\x20b_submission=true\x20entry\x20(the\x20verifier\x20supplies\x20the\x20value\x20at\x20runtime;\x20this\x20value\x20is\x20ignored\x20by\x20BCS\x20encoding\x20and\x20wastes\x20gas)','severity':'warning','source':'lint','location':{'path':'/table/'+j+'/value'},'fix':{'description':'Remove\x20the\x20value\x20field\x20—\x20it\x20is\x20ignored\x20for\x20b_submission=true\x20entries','auto_fixable':!![]}});}return b;}function checkSuggestions(a){const b=[],{root:c,binding_hint:d,table:e,description:f}=a;if(c){const i=rootToString(c);if(i['includes']('vec_contains_address')&&i['includes']('Signer'))b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Refer\x20to\x20the\x20P04\x20Pattern\x20to\x20ensure\x20best\x20practices','auto_fixable':![]}});else{if(i['includes']('logic_equal')&&i['includes']('Signer')){const j=e['some'](k=>!k['b_submission']&&k['value_type']==='Address'&&typeof k['value']==='string'&&k['value']['length']>0x0);j&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation\x20—\x20single-address\x20variant)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'P04\x20single-address\x20form;\x20for\x20multi-address\x20scenarios,\x20consider\x20vec_contains_address','auto_fixable':![]}});}}(i['includes']('logic_as_u256_greater')||i['includes']('logic_as_u256_lesser'))&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P02\x20(numeric\x20threshold\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20amount/quantity\x20threshold\x20validation\x20scenarios','auto_fixable':![]}}),i['includes']('convert_witness')&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P09\x20(witness-derived\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20cross-object\x20relationship\x20validation\x20(e.g.\x20Order→Progress)','auto_fixable':![]}});}if(d?.['action']){const k=['buy','forward','allocate','claim_reward','vote','dispute','write_repository','submit_progress','gen_passport'];if(k['includes'](d['action'])){const l=inferSceneFromAction(d['action']);if(l){const m=suggestTemplateForScene(l['id']);m&&b['push']({'code':'SG-02','message':'Recommended\x20scene\x20template:\x20'+m['name'],'severity':'hint','source':'lint','location':{'path':'/'},'fix':{'description':'Refer\x20to\x20template\x20'+m['id']+'\x20('+m['example_use_case']+')','auto_fixable':![]}});}}}const g=n=>new TextEncoder()['encode'](n)['length'],h=getSubmissionEntries(e);for(const [n,o]of e['entries']()){const p=o['name']??'';if(p['length']===0x0)continue;if(g(p)>MAX_NAME_LENGTH)b['push']({'code':'SG-03','message':'table['+n+']\x20name\x20is\x20'+g(p)+'\x20BCS\x20characters,\x20maximum\x20is\x20'+MAX_NAME_LENGTH+'.\x20Use\x20a\x20short\x20identifier\x20(e.g.\x20\x27order_id\x27,\x20\x27delivery_node\x27);\x20the\x20human-readable\x20explanation\x20belongs\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field','severity':'warning','source':'lint','location':{'path':'/table/'+n+'/name'},'fix':{'description':'Shorten\x20the\x20name\x20to\x20'+MAX_NAME_LENGTH+'\x20BCS\x20characters\x20or\x20fewer','auto_fixable':![]}});else p['toLowerCase']()['startsWith']('0x')&&b['push']({'code':'SG-03','message':'table['+n+']\x20name\x20must\x20not\x20start\x20with\x20\x220x\x22\x20(reserved\x20for\x20object\x20IDs)','severity':'warning','source':'lint','location':{'path':'/table/'+n+'/name'},'fix':{'description':'Rename\x20the\x20entry\x20without\x20the\x200x\x20prefix','auto_fixable':![]}});}if(h['length']>0x0){const q=(f??'')['trim']();q['length']<0xa&&b['push']({'code':'SG-03','message':'This\x20Guard\x20accepts\x20submitted\x20data\x20('+h['length']+'\x20table\x20'+(h['length']===0x1?'entry':'entries')+'\x20with\x20b_submission=true)\x20but\x20its\x20description\x20is\x20too\x20short\x20for\x20a\x20verifier\x20to\x20know\x20what\x20to\x20submit.\x20Explain\x20the\x20expected\x20submitted\x20data\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field,\x20e.g.\x20\x27user-submitted\x20operation\x20type\x20(return/damage)\x27','severity':'info','source':'lint','location':{'path':'/'},'fix':{'description':'Explain\x20the\x20expected\x20submitted\x20data\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field','auto_fixable':![]}});}if(c){const r=rootToString(c),s=r['includes']('proof.signer'),t=r['includes']('proof.time'),u=r['includes']('calc_string_length'),v=h['some'](w=>w['value_type']==='String');if(s&&t)b['push']({'code':'SG-04','message':'Strict-mode\x20privacy-delivery\x20guard\x20detected\x20(proof.signer\x20+\x20proof.time).\x20'+'Recommended\x20three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20'+'proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27).','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20all\x20three\x20conditions\x20are\x20present\x20(logic_and).\x20Refer\x20to\x20template\x20tpl_forward_privacy_delivery_proof.\x20'+'Query\x20IDs:\x20proof.signer=1958,\x20proof.time=1960,\x20order.time=1574,\x20order.service=1563.','auto_fixable':![]}});else u&&v&&b['push']({'code':'SG-04','message':'Broad-mode\x20privacy-delivery\x20guard\x20detected\x20(String\x20submission\x20+\x20length\x20check,\x20e.g.\x20Merkle\x20Root\x20length\x20==\x2066).\x20'+'This\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20'+'Suitable\x20as\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'For\x20stronger\x20assurance,\x20consider\x20strict\x20mode:\x20submit\x20a\x20Proof\x20object\x20address\x20(from\x20messenger.submitChainProof)\x20+\x20'+'Order\x20address,\x20then\x20verify\x20proof.signer/proof.time/order.service.\x20See\x20template\x20tpl_forward_privacy_delivery_proof.','auto_fixable':![]}});}return b;}export function autoFixGuard(a){const b=deepClone(a),c=[];(!b['description']||b['description']['trim']()==='')&&(b['description']='Guard\x20(table:\x20'+b['table']['length']+'\x20items,\x20root:\x20'+(b['root']?.['type']??'unknown')+')',c['push']({'diagnostic_code':'SH-01','description':'Fill\x20in\x20default\x20description','after':b['description'],'path':'/description'}));if(b['description']&&b['description']['length']>MAX_DESCRIPTION_LENGTH){const f=b['description'];b['description']=b['description']['substring'](0x0,MAX_DESCRIPTION_LENGTH),c['push']({'diagnostic_code':'G-001','description':'Truncate\x20description\x20to\x20'+MAX_DESCRIPTION_LENGTH+'\x20characters','before':f['length']+'\x20characters','after':b['description']['length']+'\x20characters','path':'/description'});}for(let g=0x0;g<b['table']['length'];g++){const h=b['table'][g];(!h['name']||h['name']['trim']()==='')&&(h['name']='data\x20entry\x20'+h['identifier'],c['push']({'diagnostic_code':'SH-03','description':'table['+g+']\x20fill\x20in\x20name','after':h['name'],'path':'/table/'+g+'/name'}));}for(let j=0x0;j<b['table']['length'];j++){const k=b['table'][j];if(!k['value_type']&&k['value']!==undefined&&k['value']!==null){const l=inferValueType(k['value']);l&&(k['value_type']=l,c['push']({'diagnostic_code':'SH-05','description':'table['+j+']\x20infer\x20value_type','after':l,'path':'/table/'+j+'/value_type'}));}}const d=new Map();let e=0x0;for(let m=0x0;m<b['table']['length'];m++){const n=b['table'][m];if(!d['has'](n['identifier']))d['set'](n['identifier'],e),n['identifier']!==e&&c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+n['identifier']+'\x20→\x20'+e,'before':String(n['identifier']),'after':String(e),'path':'/table/'+m+'/identifier'}),n['identifier']=e,e++;else{const o=n['identifier'];n['identifier']=e,d['set'](o,e),c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+o+'\x20duplicate\x20→\x20reallocated\x20to\x20'+e,'before':String(o),'after':String(e),'path':'/table/'+m+'/identifier'}),e++;}}for(let p=0x0;p<b['table']['length'];p++){const q=b['table'][p];q['b_submission']===undefined&&(q['b_submission']=![],c['push']({'diagnostic_code':'SH-10','description':'table['+p+']\x20b_submission\x20default\x20set\x20to\x20false','after':'false','path':'/table/'+p+'/b_submission'}));}if(b['rely']?.['guards']&&b['rely']['guards']['length']>0x0){const r=[...new Set(b['rely']['guards'])];r['length']!==b['rely']['guards']['length']&&(c['push']({'diagnostic_code':'G-009','description':'rely\x20deduplicate:\x20'+b['rely']['guards']['length']+'\x20→\x20'+r['length'],'before':JSON['stringify'](b['rely']['guards']),'after':JSON['stringify'](r),'path':'/rely/guards'}),b['rely']['guards']=r);}for(let s=0x0;s<b['table']['length'];s++){const t=b['table'][s];if(t['b_submission']===!![]&&t['value']!==undefined&&t['value']!==null){const u=JSON['stringify'](t['value']);delete t['value'],c['push']({'diagnostic_code':'SH-11','description':'table['+s+']\x20remove\x20redundant\x20value\x20on\x20b_submission=true\x20entry','before':u,'after':'(removed)','path':'/table/'+s+'/value'});}}return{'fixed':b,'actions':c};}export async function lintGuard(a,b){const c=b?.['auto_fix']??!![],d=normalizeValueTypeNames(a),{table:e,root:f,rely:g,binding_hint:h}=d,i=[];let j;const k=await checkSdkSyntax(d);i['push'](...k);const l=checkSemanticErrors(d,b);i['push'](...l);const m=checkSyntaxHints(d);i['push'](...m);let n,o=[];if(c){const {fixed:w,actions:x}=autoFixGuard(d);x['length']>0x0&&(n=w,o=x);}if(e['length']>0x0&&f){const y=h?findScene(h['host_object']??'',h['binding_field']??''):undefined,z=e['map'](B=>({'identifier':B['identifier'],'b_submission':B['b_submission']??![],'value_type':B['value_type']??'Address','value':B['value'],'name':B['name'],'object_type':B['object_type']})),A=evaluateGuardDraft({'table':z,'root':f,'rely':g,'scene':y,'sharing_recipients':h?.['sharing_recipients']});j=A['assessment'];for(const B of j['risks']){const C=B['level']==='critical'||B['level']==='high'?'error':B['level']==='medium'?'warning':B['level']==='low'?'info':'hint',D=B['evidence']??'',E=D['startsWith']('/')?D:'/';i['push']({'code':B['id'],'message':'['+B['level']+']\x20'+B['title'],'severity':C,'source':'risk','location':{'path':E},'fix':{'description':B['mitigation'],'auto_fixable':![]}});}}const p=checkSuggestions(d);i['push'](...p);const q=i['filter'](F=>F['severity']==='error')['length'],s=i['filter'](F=>F['severity']==='warning')['length'],t=i['filter'](F=>F['severity']==='info'||F['severity']==='hint')['length'],u=q===0x0;let v;if(q>0x0)v='Fix\x20'+q+'\x20error(s)\x20and\x20re-run\x20lint';else s>0x0?v='Consider\x20addressing\x20'+s+'\x20warning(s),\x20then\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation':v='lint\x20passed\x20(no\x20errors);\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation\x20before\x20going\x20on-chain';return{'json_summary':{'table_count':e['length'],'root_type':f?.['type']??'unknown','has_rely':!!g?.['guards']?.['length'],'rely_count':g?.['guards']?.['length']??0x0,'has_description':!!d['description']},'diagnostics':i,'fixed_json':n,'fix_actions':o,'risk_assessment':j,'summary':{'errors':q,'warnings':s,'infos':t,'auto_fixes_applied':o['length'],'ready':u,'next_step':v}};}export async function isGuardReady(a){const b=await lintGuard(a,{'auto_fix':![]});return b['summary']['ready'];}export async function getGuardErrors(a){const b=await lintGuard(a,{'auto_fix':![]});return b['diagnostics']['filter'](c=>c['severity']==='error');}export function formatLintResult(a){const b=[];b['push']('===\x20Guard\x20JSON\x20Lint\x20Report\x20==='),b['push'](''),b['push']('Summary:'),b['push']('\x20\x20Errors:\x20\x20\x20\x20\x20'+a['summary']['errors']),b['push']('\x20\x20Warnings:\x20\x20\x20'+a['summary']['warnings']),b['push']('\x20\x20Infos:\x20\x20\x20\x20\x20\x20'+a['summary']['infos']),b['push']('\x20\x20Auto-fixes:\x20'+a['summary']['auto_fixes_applied']),b['push']('\x20\x20Ready:\x20\x20\x20\x20\x20\x20'+(a['summary']['ready']?'YES':'NO')),b['push']('\x20\x20Next\x20step:\x20\x20'+a['summary']['next_step']),b['push']('');if(a['fix_actions']['length']>0x0){b['push']('---\x20Auto-fix\x20Actions\x20---');for(const g of a['fix_actions']){b['push']('\x20\x20['+g['diagnostic_code']+']\x20'+g['description']),b['push']('\x20\x20\x20\x20Path:\x20'+g['path']),g['before']&&g['after']&&b['push']('\x20\x20\x20\x20'+g['before']+'\x20->\x20'+g['after']);}b['push']('');}const c=a['diagnostics']['filter'](h=>h['severity']==='error'),e=a['diagnostics']['filter'](h=>h['severity']==='warning'),f=a['diagnostics']['filter'](h=>h['severity']==='info'||h['severity']==='hint');if(c['length']>0x0){b['push']('---\x20Errors\x20(must\x20fix)\x20---');for(const h of c){b['push']('\x20\x20['+h['code']+']\x20('+h['source']+')\x20'+h['message']),b['push']('\x20\x20\x20\x20Path:\x20'+h['location']['path']);if(h['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+h['fix']['description']);}b['push']('');}if(e['length']>0x0){b['push']('---\x20Warnings\x20(consider\x20fixing)\x20---');for(const i of e){b['push']('\x20\x20['+i['code']+']\x20('+i['source']+')\x20'+i['message']),b['push']('\x20\x20\x20\x20Path:\x20'+i['location']['path']);if(i['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+i['fix']['description']);}b['push']('');}if(f['length']>0x0){b['push']('---\x20Info\x20&\x20Hints\x20---');for(const j of f){b['push']('\x20\x20['+j['code']+']\x20('+j['source']+')\x20'+j['message']),b['push']('\x20\x20\x20\x20Path:\x20'+j['location']['path']);}}return b['join']('\x0a');}export function translateGuardTypeError(a){if(!a)return undefined;let b='',c=-0x1,d=-0x1;const e=a['match'](/([\w.[\]-]+)\s*(?:→|->)\s*checkType:\s*(\d+)\s+require type:\s*(\d+)/);if(e)b=e[0x1],c=Number(e[0x2]),d=Number(e[0x3]);else{const j=a['match'](/checkType:\s*(\d+)\s+require type:\s*(\d+)/);if(!j)return undefined;c=Number(j[0x1]),d=Number(j[0x2]);}const f=b?'at\x20'+b+':\x20':'',g=valueTypeName(c),h=valueTypeName(d),i=[];if(d===0x0){i['push'](f+'the\x20parent\x20operator\x20needs\x20a\x20BOOL\x20operand,\x20but\x20the\x20child\x20returns\x20'+g+'.');if(c===0x1&&/claimed_by/i['test'](a))i['push']('TEACHING\x20(Bool/Address\x20twin,\x20crs\x20P2-2):\x20order.claimed_by\x20(query\x201571)\x20returns\x20Address;\x20'+'its\x20Bool\x20twin\x20is\x20`order.claimed_by\x20some`\x20(query\x201570\x20—\x20has\x20ANY\x20claimer).\x20Invert\x20THAT\x20with\x20'+'logic_not,\x20or\x20assert\x20logic_equal[query\x201570,\x20false].');else{if(c===0x1)i['push']('TEACHING:\x20wrap\x20the\x20Address\x20leaf\x20in\x20logic_equal\x20against\x20identifier[N]\x20—\x20'+'logic_equal[{type:\x22query\x22,\x20query:\x22...\x22},\x20{type:\x22identifier\x22,\x20identifier:N}].\x20'+'A\x20Bool\x20operator\x20(logic_and/or/not)\x20can\x20never\x20consume\x20a\x20bare\x20Address.');else{if(c===0x2)i['push']('TEACHING:\x20wrap\x20the\x20String\x20leaf\x20in\x20logic_equal\x20against\x20identifier[N].\x20A\x20multi-node\x20'+'membership\x20test\x20\x27current\x20in\x20{a,b,c}\x27\x20has\x20NO\x20set\x20operator\x20yet\x20(crs\x20P2-1):\x20express\x20one\x20'+'logic_equal\x20per\x20value\x20joined\x20by\x20logic_or\x20—\x20each\x20value\x20a\x20frozen\x20table\x20entry\x20(Guards\x20are\x20'+'create-only,\x20IMMUT-003).');else c>=0x3&&c<=0x8?i['push']('TEACHING:\x20numeric\x20leaf\x20—\x20compare\x20via\x20the\x20logic_as_u256_greater/lesser/equal\x20variants,\x20'+'or\x20wrap\x20in\x20logic_equal\x20against\x20a\x20numeric\x20identifier[N].'):i['push']('TEACHING:\x20wrap\x20the\x20leaf\x20in\x20a\x20Bool-producing\x20operator\x20(logic_equal\x20/\x20logic_as_u256_*)\x20'+'before\x20feeding\x20logic_and/or/not.');}}}else i['push'](f+'the\x20operator\x20requires\x20'+h+',\x20but\x20the\x20child\x20returns\x20'+g+'.\x20TEACHING:\x20align\x20the\x20operand\x20'+'types\x20—\x20wrap\x20in\x20logic_equal\x20(any\x20type)\x20or\x20convert\x20with\x20the\x20logic_as_u256_*\x20family\x20(numeric)\x20'+'before\x20the\x20comparison.');return['GUARD\x20TYPE\x20ERROR\x20(with\x20teaching\x20notes\x20below):',a['trim'](),...i]['join']('\x0a');}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare function recordMachineNodeNames(label: unknown, nodes: unknown): void;
|
|
2
2
|
export declare function resetNodeGateRegistry(): void;
|
|
3
|
-
export declare function parseGuardNodeGates(root: unknown, table?: unknown
|
|
3
|
+
export declare function parseGuardNodeGates(root: unknown, table?: unknown, opts?: {
|
|
4
|
+
equalityOnly?: boolean;
|
|
5
|
+
}): string[];
|
|
4
6
|
export declare function lintGuardNodeGates(gates: string[]): string;
|
|
5
7
|
export declare function recordCreatedGuard(name?: unknown, address?: unknown): void;
|
|
6
8
|
export declare function resetCreatedGuardRegistry(): void;
|