@wowok/agent-mcp 3.3.7 → 3.3.9
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/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/communication/message-cursors.d.ts +35 -0
- package/dist/communication/message-cursors.js +1 -0
- package/dist/communication/wts-attestation.d.ts +5 -0
- package/dist/communication/wts-attestation.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.d.ts +2 -2
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +7 -0
- package/dist/composition/inflight.js +1 -1
- package/dist/composition/materialize.d.ts +4 -1
- package/dist/composition/materialize.js +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +1 -1
- package/dist/config/store-policy.d.ts +14 -0
- package/dist/config/store-policy.js +1 -0
- package/dist/config/store-policy.spec.d.ts +1 -0
- package/dist/config/store-policy.spec.js +1 -0
- package/dist/customer/industry-risks.js +1 -1
- package/dist/customer/user-preferences.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.d.ts +1 -1
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/facts.d.ts +1 -0
- package/dist/graph/onchain/facts.js +1 -1
- package/dist/graph/onchain/facts.spec.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/knowledge/acquisition-flywheel.js +1 -1
- package/dist/knowledge/allocation-ledger.d.ts +1 -0
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +6 -2
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +37 -0
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/plan.json +32 -2
- package/dist/knowledge/builtin-templates.d.ts +13 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/commission-landing.d.ts +26 -0
- package/dist/knowledge/commission-landing.js +1 -0
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/fund-layer.d.ts +7 -0
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.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-puzzle.js +1 -1
- package/dist/knowledge/guard-render.d.ts +7 -0
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-generalizer.js +1 -1
- package/dist/knowledge/industry-registry.d.ts +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-fork-watch.d.ts +9 -0
- package/dist/knowledge/machine-fork-watch.js +1 -0
- package/dist/knowledge/migration-preflight.js +1 -1
- package/dist/knowledge/projection.spec.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +8 -2
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/semantic-ir.d.ts +24 -5
- package/dist/knowledge/semantic-ir.js +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-index.js +1 -1
- package/dist/knowledge/template-loader.d.ts +11 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +4 -2
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-validation.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +12 -6
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +10 -2
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/mode-actions.d.ts +1 -0
- package/dist/playbooks/service-build/mode-actions.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +72 -1
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +3 -0
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/base.d.ts +24 -0
- package/dist/schema/call/bridge.d.ts +6 -0
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +24 -0
- package/dist/schema/config/index.js +1 -1
- package/dist/schema/goal/index.d.ts +14 -0
- package/dist/schema/goal/planning.d.ts +26 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +9 -1
- package/dist/schema/industry-pack/modes.d.ts +9 -1
- package/dist/schema/industry-pack/modes.js +1 -1
- package/dist/schema/local/index.d.ts +60 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +278 -1
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +1 -0
- package/dist/schema/query/bi.d.ts +38 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +3 -0
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/service-clone/index.d.ts +17 -0
- package/dist/schema/service-clone/index.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +6 -0
- package/dist/schemas/benchmark_migration_operation.output.json +254 -2
- package/dist/schemas/benchmark_migration_operation.schema.json +87 -5
- package/dist/schemas/bridge_operation.output.json +6 -0
- package/dist/schemas/config_operation.output.json +95 -0
- package/dist/schemas/config_operation.schema.json +16 -1
- package/dist/schemas/goal_operation.schema.json +22 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +4 -0
- package/dist/schemas/industry_pack_operation.schema.json +40 -3
- package/dist/schemas/local_cache_operation.output.json +6 -0
- package/dist/schemas/local_history_operation.output.json +6 -0
- package/dist/schemas/local_info_operation.output.json +6 -0
- package/dist/schemas/local_mark_operation.output.json +6 -0
- package/dist/schemas/messenger_operation.output.json +609 -1
- package/dist/schemas/messenger_operation.schema.json +96 -1
- package/dist/schemas/onchain_operations.output.json +6 -0
- package/dist/schemas/onchain_operations.schema.json +334 -7
- package/dist/schemas/onchain_operations_allocation.schema.json +10 -1
- package/dist/schemas/onchain_operations_guard.schema.json +318 -0
- package/dist/schemas/onchain_operations_order.schema.json +1 -1
- package/dist/schemas/onchain_operations_service.schema.json +5 -5
- package/dist/schemas/query_toolkit.output.json +271 -8
- package/dist/schemas/service_clone_operation.output.json +79 -0
- package/dist/tools/handlers/benchmark-migration.d.ts +14 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +19 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.d.ts +1 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/service-clone.d.ts +18 -0
- package/dist/tools/handlers/service-clone.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -1884,6 +1884,72 @@
|
|
|
1884
1884
|
],
|
|
1885
1885
|
"additionalProperties": false
|
|
1886
1886
|
},
|
|
1887
|
+
{
|
|
1888
|
+
"type": "object",
|
|
1889
|
+
"properties": {
|
|
1890
|
+
"operation": {
|
|
1891
|
+
"type": "string",
|
|
1892
|
+
"const": "mark_conversation_read"
|
|
1893
|
+
},
|
|
1894
|
+
"account": {
|
|
1895
|
+
"description": "Account - can be a string (name/address/mark name) or full object. If not specified, uses default account",
|
|
1896
|
+
"anyOf": [
|
|
1897
|
+
{
|
|
1898
|
+
"description": "Account name, address (0x...), or mark name. When using string format, local marks are searched first. EXAMPLE: 'alice' - searches local marks first, then global; EXAMPLE: '0x2...' (64 hex chars) - uses address directly; EXAMPLE: '' - uses the default local account"
|
|
1899
|
+
},
|
|
1900
|
+
{
|
|
1901
|
+
"type": "object",
|
|
1902
|
+
"properties": {
|
|
1903
|
+
"name_or_address": {
|
|
1904
|
+
"type": "string",
|
|
1905
|
+
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
1906
|
+
},
|
|
1907
|
+
"local_mark_first": {
|
|
1908
|
+
"description": "Whether to prioritize local marks, if true, prioritize local marks, otherwise prioritize global marks",
|
|
1909
|
+
"type": "boolean"
|
|
1910
|
+
}
|
|
1911
|
+
},
|
|
1912
|
+
"additionalProperties": false,
|
|
1913
|
+
"description": "Account or address lookup object. Use this to specify which account to use for an operation. EXAMPLE: { name_or_address: 'testor2' } - looks up account by name; EXAMPLE: { name_or_address: '0x1234...' } - uses address directly; If name_or_address is empty string '', uses the default local account."
|
|
1914
|
+
}
|
|
1915
|
+
]
|
|
1916
|
+
},
|
|
1917
|
+
"peerAddress": {
|
|
1918
|
+
"anyOf": [
|
|
1919
|
+
{
|
|
1920
|
+
"description": "Account name, address (0x...), or mark name. When using string format, local marks are searched first. EXAMPLE: 'alice' - searches local marks first, then global; EXAMPLE: '0x2...' (64 hex chars) - uses address directly; EXAMPLE: '' - uses the default local account"
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
"type": "object",
|
|
1924
|
+
"properties": {
|
|
1925
|
+
"name_or_address": {
|
|
1926
|
+
"type": "string",
|
|
1927
|
+
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
1928
|
+
},
|
|
1929
|
+
"local_mark_first": {
|
|
1930
|
+
"description": "Whether to prioritize local marks, if true, prioritize local marks, otherwise prioritize global marks",
|
|
1931
|
+
"type": "boolean"
|
|
1932
|
+
}
|
|
1933
|
+
},
|
|
1934
|
+
"additionalProperties": false,
|
|
1935
|
+
"description": "Account or address lookup object. Use this to specify which account to use for an operation. EXAMPLE: { name_or_address: 'testor2' } - looks up account by name; EXAMPLE: { name_or_address: '0x1234...' } - uses address directly; If name_or_address is empty string '', uses the default local account."
|
|
1936
|
+
}
|
|
1937
|
+
],
|
|
1938
|
+
"description": "Peer address or account name - can be a string (name/address) or full object"
|
|
1939
|
+
},
|
|
1940
|
+
"through_seq": {
|
|
1941
|
+
"description": "Conversation sequence (leafIndex) to mark read THROUGH, inclusive. Ignored if lower than the current watermark (monotonic). Omit to use the highest RECEIVED seq retained locally. Values beyond the highest received seq are capped and reported (capped=true)",
|
|
1942
|
+
"type": "integer",
|
|
1943
|
+
"minimum": 0,
|
|
1944
|
+
"maximum": 9007199254740991
|
|
1945
|
+
}
|
|
1946
|
+
},
|
|
1947
|
+
"required": [
|
|
1948
|
+
"operation",
|
|
1949
|
+
"peerAddress"
|
|
1950
|
+
],
|
|
1951
|
+
"additionalProperties": false
|
|
1952
|
+
},
|
|
1887
1953
|
{
|
|
1888
1954
|
"type": "object",
|
|
1889
1955
|
"properties": {
|
|
@@ -1915,7 +1981,7 @@
|
|
|
1915
1981
|
]
|
|
1916
1982
|
},
|
|
1917
1983
|
"limit": {
|
|
1918
|
-
"description": "Maximum number of messages to pull from server per account",
|
|
1984
|
+
"description": "Maximum number of messages to pull from server per account; in incremental mode (after set) this is the PAGE SIZE of returned messages",
|
|
1919
1985
|
"type": "number"
|
|
1920
1986
|
},
|
|
1921
1987
|
"allAccounts": {
|
|
@@ -1954,6 +2020,35 @@
|
|
|
1954
2020
|
"type": "number",
|
|
1955
2021
|
"minimum": 1,
|
|
1956
2022
|
"maximum": 20
|
|
2023
|
+
},
|
|
2024
|
+
"peerAddress": {
|
|
2025
|
+
"description": "Conversation peer. REQUIRED in incremental mode (when `after` is set) — the cursor is conversation-scoped because the sequence (leafIndex) is per conversation",
|
|
2026
|
+
"anyOf": [
|
|
2027
|
+
{
|
|
2028
|
+
"description": "Account name, address (0x...), or mark name. When using string format, local marks are searched first. EXAMPLE: 'alice' - searches local marks first, then global; EXAMPLE: '0x2...' (64 hex chars) - uses address directly; EXAMPLE: '' - uses the default local account"
|
|
2029
|
+
},
|
|
2030
|
+
{
|
|
2031
|
+
"type": "object",
|
|
2032
|
+
"properties": {
|
|
2033
|
+
"name_or_address": {
|
|
2034
|
+
"type": "string",
|
|
2035
|
+
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
2036
|
+
},
|
|
2037
|
+
"local_mark_first": {
|
|
2038
|
+
"description": "Whether to prioritize local marks, if true, prioritize local marks, otherwise prioritize global marks",
|
|
2039
|
+
"type": "boolean"
|
|
2040
|
+
}
|
|
2041
|
+
},
|
|
2042
|
+
"additionalProperties": false,
|
|
2043
|
+
"description": "Account or address lookup object. Use this to specify which account to use for an operation. EXAMPLE: { name_or_address: 'testor2' } - looks up account by name; EXAMPLE: { name_or_address: '0x1234...' } - uses address directly; If name_or_address is empty string '', uses the default local account."
|
|
2044
|
+
}
|
|
2045
|
+
]
|
|
2046
|
+
},
|
|
2047
|
+
"after": {
|
|
2048
|
+
"description": "Incremental cursor: return only messages of this conversation whose sequence (leafIndex) is strictly GREATER than this value, ascending, and return highest_seq/has_more plus gap detection. Omitting `after` keeps the legacy bare-array behavior. Do NOT advance this cursor on watch_messages — watch is a local query, not a consume",
|
|
2049
|
+
"type": "integer",
|
|
2050
|
+
"minimum": 0,
|
|
2051
|
+
"maximum": 9007199254740991
|
|
1957
2052
|
}
|
|
1958
2053
|
},
|
|
1959
2054
|
"required": [
|
|
@@ -5836,6 +5836,7 @@
|
|
|
5836
5836
|
"state_conflict",
|
|
5837
5837
|
"insufficient_balance",
|
|
5838
5838
|
"pool_shortage",
|
|
5839
|
+
"allocation_empty",
|
|
5839
5840
|
"transaction_expired",
|
|
5840
5841
|
"stock_exhausted",
|
|
5841
5842
|
"sale_suspended",
|
|
@@ -5857,9 +5858,14 @@
|
|
|
5857
5858
|
"submission_unknown",
|
|
5858
5859
|
"move_abort_unmapped",
|
|
5859
5860
|
"missing_data",
|
|
5861
|
+
"guard_data_missing",
|
|
5860
5862
|
"state_not_visible",
|
|
5863
|
+
"unreachable_transition",
|
|
5864
|
+
"forward_not_at_node",
|
|
5861
5865
|
"anchor_unavailable",
|
|
5862
5866
|
"delivery_unknown",
|
|
5867
|
+
"capability_unavailable",
|
|
5868
|
+
"transport_unavailable",
|
|
5863
5869
|
"unknown"
|
|
5864
5870
|
]
|
|
5865
5871
|
},
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
]
|
|
179
179
|
},
|
|
180
180
|
"discount": {
|
|
181
|
-
"description": "Discount object ID or name",
|
|
181
|
+
"description": "Discount object ID or name. ⚠️ COUPON OWNERSHIP RULE (KB-02, disclose BEFORE checkout): a coupon held by another address cannot be applied to your order — only the coupon's current holder can redeem it, and the buy is signed by the buyer, so have the owner transfer the coupon to the buyer first (call service discount_send), then attach it here. Attaching the coupon BURNS it (every coupon is single-use), and any later refund settles the POST-coupon amount only (the escrowed discounted total) — the coupon's face value is never restored.",
|
|
182
182
|
"type": "string"
|
|
183
183
|
},
|
|
184
184
|
"payment_remark": {
|
|
@@ -943,7 +943,7 @@
|
|
|
943
943
|
]
|
|
944
944
|
},
|
|
945
945
|
"discount": {
|
|
946
|
-
"description": "Issue discount.",
|
|
946
|
+
"description": "Issue discount (mint coupons bound to this Service). ⚠️ ISSUANCE PRESCRIPTION (KB-02): issuing = MINT then TRANSFER. This field mints the coupon objects under THIS account — its `recipient` field delivers them directly when you know the recipients; for pre-minted campaign coupons held for later handout, the handout itself is discount_send (mint first, transfer to the recipient at distribution time). COUPON SEMANTICS to disclose: HOLDING IS THE CREDENTIAL — the coupon belongs to whoever HOLDS it, only the holder's own signature can spend it, and sharing the coupon's object ID confers nothing; ONE COUPON, ONE BURN — every coupon is single-use and is destroyed on first spend; REFUNDS SETTLE THE POST-COUPON AMOUNT — refund rails pay back the escrowed discounted total only, a cancelled order never restores the coupon's face value. A coupon held by another address cannot be applied to a buyer's order — the owner must discount_send it to the buyer first.",
|
|
947
947
|
"type": "object",
|
|
948
948
|
"properties": {
|
|
949
949
|
"name": {
|
|
@@ -988,7 +988,7 @@
|
|
|
988
988
|
"type": "number"
|
|
989
989
|
},
|
|
990
990
|
"allow_zero_total": {
|
|
991
|
-
"description": "
|
|
991
|
+
"description": "NO EFFECT — DO NOT SET (BSX-F07: the former escape hatch is removed). This flag has no on-chain field (the on-chain Discount struct never carried it; a coupon minted with it is byte-identical to one without), and it NO LONGER downgrades the MCP issuance block for a coupon that zeroes the cheapest SKU — the block is unconditional: a zeroing coupon can only dead-end at the buyer's checkout (order_new_zero_total_dead_order client-side, abort 42 on-chain). For a deliberate free tier: price the SKU at 1 smallest unit (never 0 — a zero-priced sale is permanently unbuyable) or deliver it outside the sales rails (e.g. a Demand with Signature fulfillment). Omit this field.",
|
|
992
992
|
"type": "boolean"
|
|
993
993
|
},
|
|
994
994
|
"time_ms_end": {
|
|
@@ -1058,7 +1058,7 @@
|
|
|
1058
1058
|
}
|
|
1059
1059
|
},
|
|
1060
1060
|
"discount_send": {
|
|
1061
|
-
"description": "Transfer ALREADY-MINTED coupons you own to another address, instead of destroying them (discount_destroy) or minting new ones (discount). This is a pure ownership handover: the on-chain entry points are public funs with NO Service permission requirement — the only preconditions are that the sender owns each coupon and each was minted transferable:true. Typical use: hand out pre-minted campaign coupons, or move coupons between your own accounts.",
|
|
1061
|
+
"description": "Transfer ALREADY-MINTED coupons you own to another address, instead of destroying them (discount_destroy) or minting new ones (discount). This is a pure ownership handover: the on-chain entry points are public funs with NO Service permission requirement — the only preconditions are that the sender owns each coupon and each was minted transferable:true. Typical use: hand out pre-minted campaign coupons, or move coupons between your own accounts. KB-02 COUPON SEMANTICS: this transfer is the second half of coupon ISSUANCE (mint via `discount`, then transfer here at distribution time). HOLDING IS THE CREDENTIAL: the coupon belongs to whoever HOLDS it — only the holder's own signature can spend it, and sharing the object ID confers nothing. ONE COUPON, ONE BURN: each coupon stays single-use and is destroyed on first spend — transfer does not reset that. REFUNDS SETTLE THE POST-COUPON AMOUNT: refund rails pay the escrowed discounted total only, never the coupon's face value. Until you transfer a gifted coupon, the recipient CANNOT use it on their own orders — a coupon held by another address cannot be applied to their buy.",
|
|
1062
1062
|
"type": "object",
|
|
1063
1063
|
"properties": {
|
|
1064
1064
|
"discounts": {
|
|
@@ -1469,7 +1469,7 @@
|
|
|
1469
1469
|
"additionalProperties": false
|
|
1470
1470
|
},
|
|
1471
1471
|
"buy_guard": {
|
|
1472
|
-
"description": "Buy guard object ID or name.",
|
|
1472
|
+
"description": "Buy guard object ID or name (null CLEARS the mount). RUNTIME SWITCH (permission 307 SERVICE_BUY_GUARD — the guard OBJECT is immutable but its MOUNT on the Service is mutable at any time). ROUND-ROTATION DUTY (拍板② dm-mtw-261027): for daily/group rounds whose cutoff is an absolute timestamp, the precise batch boundary is THIS mount, not the time guard — at the cutoff instant the keeper cron SETS the buy_guard (new entrants refused at BUY time) and CLEARs/re-arms it when the next round opens; the on-chain Clock >= cutoff comparison stays the settlement/advance authority. Disclose the publisher's time source the cron fires on. Full Machine reuse across rounds (advance gate re-reading a repository cutoff row) is filed for a protocol window.",
|
|
1473
1473
|
"anyOf": [
|
|
1474
1474
|
{
|
|
1475
1475
|
"type": "string",
|
|
@@ -12435,8 +12435,17 @@
|
|
|
12435
12435
|
"description": "Verify the specified Guard and execute the corresponding fund distribution. GENERIC SEMANTICS: an Allocation distributes whatever balance it holds — order funds, payroll, dividends, bounties. It defines no scenario-specific rule: eligibility (including issuer identity for standalone use, e.g. an org admin) and differentiation inputs are expressed as Guard constraints, all public and auditable. RECIPIENT RESOLUTION (Recipient enum): Entity → fixed address; Signer → transaction sender; GuardIdentifier n → the address submitted for identifier n (resolved from the passport's submission record). ORDER PATTERN (canonical): the Guard table needs ONE submitted Order, constrained by the Guard (e.g. order.service == host service, progress at a qualifying node, signer == order.owner); that order submission IS the recipient slot. Whoever triggers the distribution, funds necessarily land at an Order OBJECT; delivered CoinWrappers are owned by the order and can be extracted only by the Order object itself (Wow ownership) — the coins then go to the order's current owner. Object receipt = owner receipt. POST-DISTRIBUTION CLAIM (required step): each recipient gets a CoinWrapper (not spendable coins) — EOA wallet → operation_type='payment' RECEIVE mode {object:'<coinwrapper_id>', receive:true}; Order object → operation_type='order' {object:'<order_id>', receive:'recently'}; Treasury object → treasury receive. Find pending CoinWrappers via query_toolkit query_type='onchain_received'; verify via the immutable Payment object (allocation.payment array). RISK: safety follows from the sufficiency of the Guard constraints, not the recipient form — analyze the recipient constraint audit before publish; structural residuals (unavoidable): permissionless alloc allows forced settlement timing, the submitted order is not bound to the settled allocation, and allocators/guards are immutable after publish.",
|
|
12436
12436
|
"type": "string"
|
|
12437
12437
|
},
|
|
12438
|
+
"alloc_batch": {
|
|
12439
|
+
"description": "Q8-F01 AGGREGATE RELEASE — sweep SEVERAL pools in ONE transaction (allocation::alloc_batch). Provide the COMPLETE pool list INCLUDING 'object': the anchor Allocation addressed by this operation must appear in the list, and the SDK refuses a list that omits it. REQUIRES alloc_by_guard — that one Guard defines the release and is applied to every pool. WHY THIS EXISTS: a crowdfunding settlement holds each backer's escrow in its own Allocation under the SAME release/refund Guard; with single-pool calls a keeper needs N ordered transactions, and any keeper that stops at the first failure strands the remaining pools while the release reports done. ALL-OR-NOTHING: one pool aborting reverts the whole batch. PRE-FILTER drained pools before building the call — a zero-balance pool aborts the ENTIRE batch with EZERO_DISTRIBUTION (14) and nothing is released; an empty candidate set means there is genuinely nothing to release (an empty list is refused with EEMPTY_POOL_BATCH 26 instead of a fake success). EVERY pool must carry an allocator BOUND to alloc_by_guard: an unbound pool completes the sweep having distributed NOTHING, so the SDK verifies membership pool-by-pool and REFUSES the call before any gas is spent. Each recipient still receives a CoinWrapper and claims it through the normal POST-DISTRIBUTION CLAIM step — batching changes the release atomicity, not the claim path.",
|
|
12440
|
+
"minItems": 1,
|
|
12441
|
+
"type": "array",
|
|
12442
|
+
"items": {
|
|
12443
|
+
"type": "string",
|
|
12444
|
+
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
12445
|
+
}
|
|
12446
|
+
},
|
|
12438
12447
|
"acknowledge_dual_payout": {
|
|
12439
|
-
"description": "A-1 (amz9-ln-261023) explicit opt-in for a KNOWN double payout: when a submitted order already received arbitration compensation (order.claimed_by set) and this call would ALSO release its escrow (refund track), the call is REFUSED unless this flag is true. The two payout tracks are independent by design — the chain will not net or stop the second payout (the escrow receive path has no claimed_by gate), BUT a rail paired on order.claimed_by (refund none / recover some) may guard-reject the second payout on-chain; that rejection is the designed mutual exclusion, and the escrow exits via the paired rail. Buyer NET view: total received = compensation + escrow refund. Leave unset for normal refunds of un-awarded orders.",
|
|
12448
|
+
"description": "A-1 (amz9-ln-261023; keeper posture 拍板⑧ dm-mtw-261027) explicit opt-in for a KNOWN double payout: when a submitted order already received arbitration compensation (order.claimed_by set) and this call would ALSO release its escrow (refund track), the call is REFUSED unless this flag is true. The two payout tracks are independent by design — the chain will not net or stop the second payout (the escrow receive path has no claimed_by gate), BUT a rail paired on order.claimed_by (refund none / recover some) may guard-reject the second payout on-chain; that rejection is the designed mutual exclusion, and the escrow exits via the paired rail. Buyer NET view: total received = compensation + escrow refund. Leave unset for normal refunds of un-awarded orders. AUTOMATION RULE: this flag is the HUMAN operator's netting decision — an automated keeper that receives dual_payout_unconfirmed must STOP retrying and escalate (never set the flag itself); a retry loop wastes gas and a silent stop strands the payout. D-1 (ksr 5R-08): the flag is additionally honored ONLY when the executing store carries a human-recorded preauthorization (config_operation store_dual_payout_set {account, confirm:true}, then store_dual_payout_get shows preauthorized=true); without it the gate answers dual_payout_preauthorization_required — record the standing decision first, then re-send.",
|
|
12440
12449
|
"type": "boolean"
|
|
12441
12450
|
},
|
|
12442
12451
|
"formula_spec_set": {
|
|
@@ -18097,6 +18106,165 @@
|
|
|
18097
18106
|
],
|
|
18098
18107
|
"additionalProperties": false,
|
|
18099
18108
|
"description": "Returns VecString. Lists ALL policy key names of the Repository (max 50). Use vec_length to bound per-key composite queries or vec_contains_string to assert a key exists."
|
|
18109
|
+
},
|
|
18110
|
+
{
|
|
18111
|
+
"type": "object",
|
|
18112
|
+
"properties": {
|
|
18113
|
+
"type": {
|
|
18114
|
+
"type": "string",
|
|
18115
|
+
"const": "query_order_named_operator_member"
|
|
18116
|
+
},
|
|
18117
|
+
"object": {
|
|
18118
|
+
"type": "object",
|
|
18119
|
+
"properties": {
|
|
18120
|
+
"identifier": {
|
|
18121
|
+
"type": "integer",
|
|
18122
|
+
"minimum": 0,
|
|
18123
|
+
"maximum": 255,
|
|
18124
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
18125
|
+
}
|
|
18126
|
+
},
|
|
18127
|
+
"required": [
|
|
18128
|
+
"identifier"
|
|
18129
|
+
],
|
|
18130
|
+
"additionalProperties": false,
|
|
18131
|
+
"description": "Reference to the Order object in the Guard table (must be Address type)."
|
|
18132
|
+
}
|
|
18133
|
+
},
|
|
18134
|
+
"required": [
|
|
18135
|
+
"type",
|
|
18136
|
+
"object"
|
|
18137
|
+
],
|
|
18138
|
+
"additionalProperties": false,
|
|
18139
|
+
"description": "Returns Bool. Whether the transaction signer is on the order's named-operator roster (DM-P1 rider-roster exclusive admission): reads the namedOperator roster of the order's Progress and checks tx-signer membership. Parameterless — the signer comes from the transaction context. Gated by protocol v138 (feature flag enable_order_named_operator_member); on a chain without the flag the guard evaluation aborts. Typical use: AND it into the forward-edge guard on courier handover edges (e.g. PickupOrder/DeliverOrder) so only roster members can advance — the on-chain namedOperator rail alone only AUTHORIZES, it never DENIES (R-19)."
|
|
18140
|
+
},
|
|
18141
|
+
{
|
|
18142
|
+
"type": "object",
|
|
18143
|
+
"properties": {
|
|
18144
|
+
"type": {
|
|
18145
|
+
"type": "string",
|
|
18146
|
+
"const": "query_repository_data_has"
|
|
18147
|
+
},
|
|
18148
|
+
"object": {
|
|
18149
|
+
"type": "object",
|
|
18150
|
+
"properties": {
|
|
18151
|
+
"identifier": {
|
|
18152
|
+
"type": "integer",
|
|
18153
|
+
"minimum": 0,
|
|
18154
|
+
"maximum": 255,
|
|
18155
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
18156
|
+
}
|
|
18157
|
+
},
|
|
18158
|
+
"required": [
|
|
18159
|
+
"identifier"
|
|
18160
|
+
],
|
|
18161
|
+
"additionalProperties": false,
|
|
18162
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
18163
|
+
},
|
|
18164
|
+
"id": {
|
|
18165
|
+
"type": "object",
|
|
18166
|
+
"properties": {
|
|
18167
|
+
"identifier": {
|
|
18168
|
+
"type": "integer",
|
|
18169
|
+
"minimum": 0,
|
|
18170
|
+
"maximum": 255,
|
|
18171
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
18172
|
+
}
|
|
18173
|
+
},
|
|
18174
|
+
"required": [
|
|
18175
|
+
"identifier"
|
|
18176
|
+
],
|
|
18177
|
+
"additionalProperties": false,
|
|
18178
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
18179
|
+
},
|
|
18180
|
+
"key": {
|
|
18181
|
+
"type": "string",
|
|
18182
|
+
"minLength": 1,
|
|
18183
|
+
"description": "Row name — the policy key string of the data row to probe."
|
|
18184
|
+
}
|
|
18185
|
+
},
|
|
18186
|
+
"required": [
|
|
18187
|
+
"type",
|
|
18188
|
+
"object",
|
|
18189
|
+
"id",
|
|
18190
|
+
"key"
|
|
18191
|
+
],
|
|
18192
|
+
"additionalProperties": false,
|
|
18193
|
+
"description": "Returns Bool. Whether the Repository holds a data row for (key, id) — single-row exact read by (key, id), the primitive for per-value mutual-consent attestation (e.g. a settlement keeper asserting the buyer acceptance row exists before executing a refund allocator). NOT protocol-gated (legacy query, works on every chain version)."
|
|
18194
|
+
},
|
|
18195
|
+
{
|
|
18196
|
+
"type": "object",
|
|
18197
|
+
"properties": {
|
|
18198
|
+
"type": {
|
|
18199
|
+
"type": "string",
|
|
18200
|
+
"const": "query_repository_data"
|
|
18201
|
+
},
|
|
18202
|
+
"object": {
|
|
18203
|
+
"type": "object",
|
|
18204
|
+
"properties": {
|
|
18205
|
+
"identifier": {
|
|
18206
|
+
"type": "integer",
|
|
18207
|
+
"minimum": 0,
|
|
18208
|
+
"maximum": 255,
|
|
18209
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
18210
|
+
}
|
|
18211
|
+
},
|
|
18212
|
+
"required": [
|
|
18213
|
+
"identifier"
|
|
18214
|
+
],
|
|
18215
|
+
"additionalProperties": false,
|
|
18216
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
18217
|
+
},
|
|
18218
|
+
"id": {
|
|
18219
|
+
"type": "object",
|
|
18220
|
+
"properties": {
|
|
18221
|
+
"identifier": {
|
|
18222
|
+
"type": "integer",
|
|
18223
|
+
"minimum": 0,
|
|
18224
|
+
"maximum": 255,
|
|
18225
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
18226
|
+
}
|
|
18227
|
+
},
|
|
18228
|
+
"required": [
|
|
18229
|
+
"identifier"
|
|
18230
|
+
],
|
|
18231
|
+
"additionalProperties": false,
|
|
18232
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
18233
|
+
},
|
|
18234
|
+
"key": {
|
|
18235
|
+
"type": "string",
|
|
18236
|
+
"minLength": 1,
|
|
18237
|
+
"description": "Row name — the policy key string of the data row to read."
|
|
18238
|
+
},
|
|
18239
|
+
"conditions": {
|
|
18240
|
+
"description": "Optional equality conditions compared against the read row bytes; when non-empty the node emits ONE on-chain logic_equal over the read plus all conditions and returns Bool instead of VecU8.",
|
|
18241
|
+
"type": "array",
|
|
18242
|
+
"items": {
|
|
18243
|
+
"type": "object",
|
|
18244
|
+
"properties": {
|
|
18245
|
+
"identifier": {
|
|
18246
|
+
"type": "integer",
|
|
18247
|
+
"minimum": 0,
|
|
18248
|
+
"maximum": 255,
|
|
18249
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
18250
|
+
}
|
|
18251
|
+
},
|
|
18252
|
+
"required": [
|
|
18253
|
+
"identifier"
|
|
18254
|
+
],
|
|
18255
|
+
"additionalProperties": false,
|
|
18256
|
+
"description": "Reference to a VecU8-type table entry whose value must equal the read row — a b_submission slot (the submitted acceptance value) is the typical leg."
|
|
18257
|
+
}
|
|
18258
|
+
}
|
|
18259
|
+
},
|
|
18260
|
+
"required": [
|
|
18261
|
+
"type",
|
|
18262
|
+
"object",
|
|
18263
|
+
"id",
|
|
18264
|
+
"key"
|
|
18265
|
+
],
|
|
18266
|
+
"additionalProperties": false,
|
|
18267
|
+
"description": "Returns VecU8 (the row bytes [type_byte, ...bcs_payload]) — single-row exact read by (key, id), the primitive for per-value mutual-consent attestation. With conditions, returns Bool: the kernel-enforced 'stored value == submitted value' check (b_submission condition entries make the comparison read the passport submission slot) — this turns a self-attested policy write into kernel-verified mutual consent. NOT protocol-gated (legacy query). Absent row: empty blob under the v136 sentinel flag (never equals a non-empty acceptance value — fail-closed), guard abort on older chains."
|
|
18100
18268
|
}
|
|
18101
18269
|
],
|
|
18102
18270
|
"$ref": "#/definitions/__schema2"
|
|
@@ -20811,7 +20979,7 @@
|
|
|
20811
20979
|
"additionalProperties": false
|
|
20812
20980
|
},
|
|
20813
20981
|
"acknowledge_dual_payout": {
|
|
20814
|
-
"description": "Explicit opt-in for a KNOWN double payout on the compensation-claim direction: when this order's escrow is already FULLY released (allocation balance 0 of a positive order amount) and this call claims the arbitration compensation on top, the call is REFUSED unless this flag is true. The escrow track and the compensation track are independent by design — the chain will not stop the second payout, so the operator must state the netting decision deliberately. Leave unset for claims on orders whose escrow is intact or partially released.",
|
|
20982
|
+
"description": "Explicit opt-in for a KNOWN double payout on the compensation-claim direction (keeper posture 拍板⑧ dm-mtw-261027): when this order's escrow is already FULLY released (allocation balance 0 of a positive order amount) and this call claims the arbitration compensation on top, the call is REFUSED unless this flag is true. The escrow track and the compensation track are independent by design — the chain will not stop the second payout, so the operator must state the netting decision deliberately. Leave unset for claims on orders whose escrow is intact or partially released. AUTOMATION RULE: this flag is the HUMAN operator's netting decision — an automated keeper that receives dual_payout_unconfirmed must STOP retrying and escalate (never set the flag itself). D-1 (ksr 5R-08): the flag is additionally honored ONLY when the executing store carries a human-recorded preauthorization (config_operation store_dual_payout_set {account, confirm:true}, then store_dual_payout_get shows preauthorized=true); without it the gate answers dual_payout_preauthorization_required — record the standing decision first, then re-send.",
|
|
20815
20983
|
"type": "boolean"
|
|
20816
20984
|
},
|
|
20817
20985
|
"arb_case_conclude": {
|
|
@@ -27101,6 +27269,165 @@
|
|
|
27101
27269
|
],
|
|
27102
27270
|
"additionalProperties": false,
|
|
27103
27271
|
"description": "Returns VecString. Lists ALL policy key names of the Repository (max 50). Use vec_length to bound per-key composite queries or vec_contains_string to assert a key exists."
|
|
27272
|
+
},
|
|
27273
|
+
{
|
|
27274
|
+
"type": "object",
|
|
27275
|
+
"properties": {
|
|
27276
|
+
"type": {
|
|
27277
|
+
"type": "string",
|
|
27278
|
+
"const": "query_order_named_operator_member"
|
|
27279
|
+
},
|
|
27280
|
+
"object": {
|
|
27281
|
+
"type": "object",
|
|
27282
|
+
"properties": {
|
|
27283
|
+
"identifier": {
|
|
27284
|
+
"type": "integer",
|
|
27285
|
+
"minimum": 0,
|
|
27286
|
+
"maximum": 255,
|
|
27287
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
27288
|
+
}
|
|
27289
|
+
},
|
|
27290
|
+
"required": [
|
|
27291
|
+
"identifier"
|
|
27292
|
+
],
|
|
27293
|
+
"additionalProperties": false,
|
|
27294
|
+
"description": "Reference to the Order object in the Guard table (must be Address type)."
|
|
27295
|
+
}
|
|
27296
|
+
},
|
|
27297
|
+
"required": [
|
|
27298
|
+
"type",
|
|
27299
|
+
"object"
|
|
27300
|
+
],
|
|
27301
|
+
"additionalProperties": false,
|
|
27302
|
+
"description": "Returns Bool. Whether the transaction signer is on the order's named-operator roster (DM-P1 rider-roster exclusive admission): reads the namedOperator roster of the order's Progress and checks tx-signer membership. Parameterless — the signer comes from the transaction context. Gated by protocol v138 (feature flag enable_order_named_operator_member); on a chain without the flag the guard evaluation aborts. Typical use: AND it into the forward-edge guard on courier handover edges (e.g. PickupOrder/DeliverOrder) so only roster members can advance — the on-chain namedOperator rail alone only AUTHORIZES, it never DENIES (R-19)."
|
|
27303
|
+
},
|
|
27304
|
+
{
|
|
27305
|
+
"type": "object",
|
|
27306
|
+
"properties": {
|
|
27307
|
+
"type": {
|
|
27308
|
+
"type": "string",
|
|
27309
|
+
"const": "query_repository_data_has"
|
|
27310
|
+
},
|
|
27311
|
+
"object": {
|
|
27312
|
+
"type": "object",
|
|
27313
|
+
"properties": {
|
|
27314
|
+
"identifier": {
|
|
27315
|
+
"type": "integer",
|
|
27316
|
+
"minimum": 0,
|
|
27317
|
+
"maximum": 255,
|
|
27318
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
27319
|
+
}
|
|
27320
|
+
},
|
|
27321
|
+
"required": [
|
|
27322
|
+
"identifier"
|
|
27323
|
+
],
|
|
27324
|
+
"additionalProperties": false,
|
|
27325
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
27326
|
+
},
|
|
27327
|
+
"id": {
|
|
27328
|
+
"type": "object",
|
|
27329
|
+
"properties": {
|
|
27330
|
+
"identifier": {
|
|
27331
|
+
"type": "integer",
|
|
27332
|
+
"minimum": 0,
|
|
27333
|
+
"maximum": 255,
|
|
27334
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
27335
|
+
}
|
|
27336
|
+
},
|
|
27337
|
+
"required": [
|
|
27338
|
+
"identifier"
|
|
27339
|
+
],
|
|
27340
|
+
"additionalProperties": false,
|
|
27341
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
27342
|
+
},
|
|
27343
|
+
"key": {
|
|
27344
|
+
"type": "string",
|
|
27345
|
+
"minLength": 1,
|
|
27346
|
+
"description": "Row name — the policy key string of the data row to probe."
|
|
27347
|
+
}
|
|
27348
|
+
},
|
|
27349
|
+
"required": [
|
|
27350
|
+
"type",
|
|
27351
|
+
"object",
|
|
27352
|
+
"id",
|
|
27353
|
+
"key"
|
|
27354
|
+
],
|
|
27355
|
+
"additionalProperties": false,
|
|
27356
|
+
"description": "Returns Bool. Whether the Repository holds a data row for (key, id) — single-row exact read by (key, id), the primitive for per-value mutual-consent attestation (e.g. a settlement keeper asserting the buyer acceptance row exists before executing a refund allocator). NOT protocol-gated (legacy query, works on every chain version)."
|
|
27357
|
+
},
|
|
27358
|
+
{
|
|
27359
|
+
"type": "object",
|
|
27360
|
+
"properties": {
|
|
27361
|
+
"type": {
|
|
27362
|
+
"type": "string",
|
|
27363
|
+
"const": "query_repository_data"
|
|
27364
|
+
},
|
|
27365
|
+
"object": {
|
|
27366
|
+
"type": "object",
|
|
27367
|
+
"properties": {
|
|
27368
|
+
"identifier": {
|
|
27369
|
+
"type": "integer",
|
|
27370
|
+
"minimum": 0,
|
|
27371
|
+
"maximum": 255,
|
|
27372
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
27373
|
+
}
|
|
27374
|
+
},
|
|
27375
|
+
"required": [
|
|
27376
|
+
"identifier"
|
|
27377
|
+
],
|
|
27378
|
+
"additionalProperties": false,
|
|
27379
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
27380
|
+
},
|
|
27381
|
+
"id": {
|
|
27382
|
+
"type": "object",
|
|
27383
|
+
"properties": {
|
|
27384
|
+
"identifier": {
|
|
27385
|
+
"type": "integer",
|
|
27386
|
+
"minimum": 0,
|
|
27387
|
+
"maximum": 255,
|
|
27388
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
27389
|
+
}
|
|
27390
|
+
},
|
|
27391
|
+
"required": [
|
|
27392
|
+
"identifier"
|
|
27393
|
+
],
|
|
27394
|
+
"additionalProperties": false,
|
|
27395
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
27396
|
+
},
|
|
27397
|
+
"key": {
|
|
27398
|
+
"type": "string",
|
|
27399
|
+
"minLength": 1,
|
|
27400
|
+
"description": "Row name — the policy key string of the data row to read."
|
|
27401
|
+
},
|
|
27402
|
+
"conditions": {
|
|
27403
|
+
"description": "Optional equality conditions compared against the read row bytes; when non-empty the node emits ONE on-chain logic_equal over the read plus all conditions and returns Bool instead of VecU8.",
|
|
27404
|
+
"type": "array",
|
|
27405
|
+
"items": {
|
|
27406
|
+
"type": "object",
|
|
27407
|
+
"properties": {
|
|
27408
|
+
"identifier": {
|
|
27409
|
+
"type": "integer",
|
|
27410
|
+
"minimum": 0,
|
|
27411
|
+
"maximum": 255,
|
|
27412
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds). SLOT 0 SEMANTICS: slot 0 carries the transacted Order address by convention. As a submission slot it is legal on order/allocation/machine rails (the order exists when those verify), but FORBIDDEN on a Service buy_guard — the order does not exist when the buy-time passport is verified, so the mount is refused (service abort 43)."
|
|
27413
|
+
}
|
|
27414
|
+
},
|
|
27415
|
+
"required": [
|
|
27416
|
+
"identifier"
|
|
27417
|
+
],
|
|
27418
|
+
"additionalProperties": false,
|
|
27419
|
+
"description": "Reference to a VecU8-type table entry whose value must equal the read row — a b_submission slot (the submitted acceptance value) is the typical leg."
|
|
27420
|
+
}
|
|
27421
|
+
}
|
|
27422
|
+
},
|
|
27423
|
+
"required": [
|
|
27424
|
+
"type",
|
|
27425
|
+
"object",
|
|
27426
|
+
"id",
|
|
27427
|
+
"key"
|
|
27428
|
+
],
|
|
27429
|
+
"additionalProperties": false,
|
|
27430
|
+
"description": "Returns VecU8 (the row bytes [type_byte, ...bcs_payload]) — single-row exact read by (key, id), the primitive for per-value mutual-consent attestation. With conditions, returns Bool: the kernel-enforced 'stored value == submitted value' check (b_submission condition entries make the comparison read the passport submission slot) — this turns a self-attested policy write into kernel-verified mutual consent. NOT protocol-gated (legacy query). Absent row: empty blob under the v136 sentinel flag (never equals a non-empty acceptance value — fail-closed), guard abort on older chains."
|
|
27104
27431
|
}
|
|
27105
27432
|
]
|
|
27106
27433
|
}
|
|
@@ -423,8 +423,17 @@
|
|
|
423
423
|
"description": "Verify the specified Guard and execute the corresponding fund distribution. GENERIC SEMANTICS: an Allocation distributes whatever balance it holds — order funds, payroll, dividends, bounties. It defines no scenario-specific rule: eligibility (including issuer identity for standalone use, e.g. an org admin) and differentiation inputs are expressed as Guard constraints, all public and auditable. RECIPIENT RESOLUTION (Recipient enum): Entity → fixed address; Signer → transaction sender; GuardIdentifier n → the address submitted for identifier n (resolved from the passport's submission record). ORDER PATTERN (canonical): the Guard table needs ONE submitted Order, constrained by the Guard (e.g. order.service == host service, progress at a qualifying node, signer == order.owner); that order submission IS the recipient slot. Whoever triggers the distribution, funds necessarily land at an Order OBJECT; delivered CoinWrappers are owned by the order and can be extracted only by the Order object itself (Wow ownership) — the coins then go to the order's current owner. Object receipt = owner receipt. POST-DISTRIBUTION CLAIM (required step): each recipient gets a CoinWrapper (not spendable coins) — EOA wallet → operation_type='payment' RECEIVE mode {object:'<coinwrapper_id>', receive:true}; Order object → operation_type='order' {object:'<order_id>', receive:'recently'}; Treasury object → treasury receive. Find pending CoinWrappers via query_toolkit query_type='onchain_received'; verify via the immutable Payment object (allocation.payment array). RISK: safety follows from the sufficiency of the Guard constraints, not the recipient form — analyze the recipient constraint audit before publish; structural residuals (unavoidable): permissionless alloc allows forced settlement timing, the submitted order is not bound to the settled allocation, and allocators/guards are immutable after publish.",
|
|
424
424
|
"type": "string"
|
|
425
425
|
},
|
|
426
|
+
"alloc_batch": {
|
|
427
|
+
"description": "Q8-F01 AGGREGATE RELEASE — sweep SEVERAL pools in ONE transaction (allocation::alloc_batch). Provide the COMPLETE pool list INCLUDING 'object': the anchor Allocation addressed by this operation must appear in the list, and the SDK refuses a list that omits it. REQUIRES alloc_by_guard — that one Guard defines the release and is applied to every pool. WHY THIS EXISTS: a crowdfunding settlement holds each backer's escrow in its own Allocation under the SAME release/refund Guard; with single-pool calls a keeper needs N ordered transactions, and any keeper that stops at the first failure strands the remaining pools while the release reports done. ALL-OR-NOTHING: one pool aborting reverts the whole batch. PRE-FILTER drained pools before building the call — a zero-balance pool aborts the ENTIRE batch with EZERO_DISTRIBUTION (14) and nothing is released; an empty candidate set means there is genuinely nothing to release (an empty list is refused with EEMPTY_POOL_BATCH 26 instead of a fake success). EVERY pool must carry an allocator BOUND to alloc_by_guard: an unbound pool completes the sweep having distributed NOTHING, so the SDK verifies membership pool-by-pool and REFUSES the call before any gas is spent. Each recipient still receives a CoinWrapper and claims it through the normal POST-DISTRIBUTION CLAIM step — batching changes the release atomicity, not the claim path.",
|
|
428
|
+
"minItems": 1,
|
|
429
|
+
"type": "array",
|
|
430
|
+
"items": {
|
|
431
|
+
"type": "string",
|
|
432
|
+
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
433
|
+
}
|
|
434
|
+
},
|
|
426
435
|
"acknowledge_dual_payout": {
|
|
427
|
-
"description": "A-1 (amz9-ln-261023) explicit opt-in for a KNOWN double payout: when a submitted order already received arbitration compensation (order.claimed_by set) and this call would ALSO release its escrow (refund track), the call is REFUSED unless this flag is true. The two payout tracks are independent by design — the chain will not net or stop the second payout (the escrow receive path has no claimed_by gate), BUT a rail paired on order.claimed_by (refund none / recover some) may guard-reject the second payout on-chain; that rejection is the designed mutual exclusion, and the escrow exits via the paired rail. Buyer NET view: total received = compensation + escrow refund. Leave unset for normal refunds of un-awarded orders.",
|
|
436
|
+
"description": "A-1 (amz9-ln-261023; keeper posture 拍板⑧ dm-mtw-261027) explicit opt-in for a KNOWN double payout: when a submitted order already received arbitration compensation (order.claimed_by set) and this call would ALSO release its escrow (refund track), the call is REFUSED unless this flag is true. The two payout tracks are independent by design — the chain will not net or stop the second payout (the escrow receive path has no claimed_by gate), BUT a rail paired on order.claimed_by (refund none / recover some) may guard-reject the second payout on-chain; that rejection is the designed mutual exclusion, and the escrow exits via the paired rail. Buyer NET view: total received = compensation + escrow refund. Leave unset for normal refunds of un-awarded orders. AUTOMATION RULE: this flag is the HUMAN operator's netting decision — an automated keeper that receives dual_payout_unconfirmed must STOP retrying and escalate (never set the flag itself); a retry loop wastes gas and a silent stop strands the payout. D-1 (ksr 5R-08): the flag is additionally honored ONLY when the executing store carries a human-recorded preauthorization (config_operation store_dual_payout_set {account, confirm:true}, then store_dual_payout_get shows preauthorized=true); without it the gate answers dual_payout_preauthorization_required — record the standing decision first, then re-send.",
|
|
428
437
|
"type": "boolean"
|
|
429
438
|
},
|
|
430
439
|
"formula_spec_set": {
|