@wowok/agent-mcp 3.3.6 → 3.3.8
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/eval-order.js +1 -1
- package/dist/chain-semantics/field-capability.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/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 +3 -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/data/projection/facets.spec.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/match-policy.d.ts +30 -6
- package/dist/evaluation/match-policy.js +1 -1
- package/dist/evaluation/match-policy.spec.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/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/keeper/detectors.d.ts +3 -0
- package/dist/keeper/detectors.js +1 -1
- package/dist/keeper/keeper.spec.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 +128 -3
- package/dist/knowledge/builtin-templates.d.ts +18 -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/event-semantics.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.d.ts +4 -0
- 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 +132 -0
- package/dist/knowledge/semantic-ir.js +1 -0
- 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 +45 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-prose.d.ts +50 -0
- package/dist/knowledge/template-prose.js +1 -0
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +5 -3
- 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/monitor/normalize.d.ts +1 -1
- package/dist/monitor/normalize.js +1 -1
- package/dist/monitor/types.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 +16 -6
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +11 -2
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/mode-actions.d.ts +8 -0
- package/dist/playbooks/service-build/mode-actions.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +22 -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/reverse-mapping-nk4.spec.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
- package/dist/playbooks/service-build/reverse-mapping.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 +135 -10
- 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/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +32 -0
- package/dist/schema/call/bridge.d.ts +8 -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/reward.d.ts +10 -0
- package/dist/schema/call/reward.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/evaluation/index.d.ts +152 -0
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +16 -0
- package/dist/schema/goal/planning.d.ts +29 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +70 -0
- package/dist/schema/industry-pack/modes.d.ts +70 -0
- package/dist/schema/industry-pack/modes.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +3 -0
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +80 -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 +6 -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 +148 -47
- 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 +8 -0
- package/dist/schemas/benchmark_migration_operation.output.json +296 -2
- package/dist/schemas/benchmark_migration_operation.schema.json +292 -7
- package/dist/schemas/bridge_operation.output.json +8 -0
- package/dist/schemas/config_operation.output.json +95 -0
- package/dist/schemas/config_operation.schema.json +16 -1
- package/dist/schemas/evaluation_operation.output.json +240 -0
- package/dist/schemas/evaluation_operation.schema.json +397 -1
- package/dist/schemas/goal_operation.schema.json +40 -10
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +90 -2
- package/dist/schemas/industry_pack_operation.schema.json +236 -0
- package/dist/schemas/intent_radar.output.json +2 -0
- package/dist/schemas/intent_radar.schema.json +1 -0
- package/dist/schemas/local_cache_operation.output.json +8 -0
- package/dist/schemas/local_history_operation.output.json +8 -0
- package/dist/schemas/local_info_operation.output.json +8 -0
- package/dist/schemas/local_mark_operation.output.json +8 -0
- package/dist/schemas/messenger_operation.output.json +609 -1
- package/dist/schemas/messenger_operation.schema.json +96 -1
- package/dist/schemas/onchain_events.output.json +281 -11
- package/dist/schemas/onchain_events.schema.json +5 -1
- package/dist/schemas/onchain_operations.output.json +8 -0
- package/dist/schemas/onchain_operations.schema.json +371 -10
- package/dist/schemas/onchain_operations_allocation.schema.json +10 -1
- package/dist/schemas/onchain_operations_arbitration.schema.json +1 -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_reward.schema.json +35 -1
- package/dist/schemas/onchain_operations_service.schema.json +6 -6
- package/dist/schemas/query_toolkit.output.json +305 -8
- package/dist/schemas/service_clone_operation.output.json +79 -0
- package/dist/tools/handlers/benchmark-migration.d.ts +15 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/evaluation.spec.js +1 -1
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/messenger.d.ts +1 -0
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +20 -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/handlers/wip.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/wip-verify-ledger.d.ts +14 -0
- package/dist/tools/wip-verify-ledger.js +1 -0
- package/dist/tools/wrap.d.ts +4 -0
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -3850,6 +3850,165 @@
|
|
|
3850
3850
|
],
|
|
3851
3851
|
"additionalProperties": false,
|
|
3852
3852
|
"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."
|
|
3853
|
+
},
|
|
3854
|
+
{
|
|
3855
|
+
"type": "object",
|
|
3856
|
+
"properties": {
|
|
3857
|
+
"type": {
|
|
3858
|
+
"type": "string",
|
|
3859
|
+
"const": "query_order_named_operator_member"
|
|
3860
|
+
},
|
|
3861
|
+
"object": {
|
|
3862
|
+
"type": "object",
|
|
3863
|
+
"properties": {
|
|
3864
|
+
"identifier": {
|
|
3865
|
+
"type": "integer",
|
|
3866
|
+
"minimum": 0,
|
|
3867
|
+
"maximum": 255,
|
|
3868
|
+
"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)."
|
|
3869
|
+
}
|
|
3870
|
+
},
|
|
3871
|
+
"required": [
|
|
3872
|
+
"identifier"
|
|
3873
|
+
],
|
|
3874
|
+
"additionalProperties": false,
|
|
3875
|
+
"description": "Reference to the Order object in the Guard table (must be Address type)."
|
|
3876
|
+
}
|
|
3877
|
+
},
|
|
3878
|
+
"required": [
|
|
3879
|
+
"type",
|
|
3880
|
+
"object"
|
|
3881
|
+
],
|
|
3882
|
+
"additionalProperties": false,
|
|
3883
|
+
"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)."
|
|
3884
|
+
},
|
|
3885
|
+
{
|
|
3886
|
+
"type": "object",
|
|
3887
|
+
"properties": {
|
|
3888
|
+
"type": {
|
|
3889
|
+
"type": "string",
|
|
3890
|
+
"const": "query_repository_data_has"
|
|
3891
|
+
},
|
|
3892
|
+
"object": {
|
|
3893
|
+
"type": "object",
|
|
3894
|
+
"properties": {
|
|
3895
|
+
"identifier": {
|
|
3896
|
+
"type": "integer",
|
|
3897
|
+
"minimum": 0,
|
|
3898
|
+
"maximum": 255,
|
|
3899
|
+
"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)."
|
|
3900
|
+
}
|
|
3901
|
+
},
|
|
3902
|
+
"required": [
|
|
3903
|
+
"identifier"
|
|
3904
|
+
],
|
|
3905
|
+
"additionalProperties": false,
|
|
3906
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
3907
|
+
},
|
|
3908
|
+
"id": {
|
|
3909
|
+
"type": "object",
|
|
3910
|
+
"properties": {
|
|
3911
|
+
"identifier": {
|
|
3912
|
+
"type": "integer",
|
|
3913
|
+
"minimum": 0,
|
|
3914
|
+
"maximum": 255,
|
|
3915
|
+
"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)."
|
|
3916
|
+
}
|
|
3917
|
+
},
|
|
3918
|
+
"required": [
|
|
3919
|
+
"identifier"
|
|
3920
|
+
],
|
|
3921
|
+
"additionalProperties": false,
|
|
3922
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
3923
|
+
},
|
|
3924
|
+
"key": {
|
|
3925
|
+
"type": "string",
|
|
3926
|
+
"minLength": 1,
|
|
3927
|
+
"description": "Row name — the policy key string of the data row to probe."
|
|
3928
|
+
}
|
|
3929
|
+
},
|
|
3930
|
+
"required": [
|
|
3931
|
+
"type",
|
|
3932
|
+
"object",
|
|
3933
|
+
"id",
|
|
3934
|
+
"key"
|
|
3935
|
+
],
|
|
3936
|
+
"additionalProperties": false,
|
|
3937
|
+
"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)."
|
|
3938
|
+
},
|
|
3939
|
+
{
|
|
3940
|
+
"type": "object",
|
|
3941
|
+
"properties": {
|
|
3942
|
+
"type": {
|
|
3943
|
+
"type": "string",
|
|
3944
|
+
"const": "query_repository_data"
|
|
3945
|
+
},
|
|
3946
|
+
"object": {
|
|
3947
|
+
"type": "object",
|
|
3948
|
+
"properties": {
|
|
3949
|
+
"identifier": {
|
|
3950
|
+
"type": "integer",
|
|
3951
|
+
"minimum": 0,
|
|
3952
|
+
"maximum": 255,
|
|
3953
|
+
"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)."
|
|
3954
|
+
}
|
|
3955
|
+
},
|
|
3956
|
+
"required": [
|
|
3957
|
+
"identifier"
|
|
3958
|
+
],
|
|
3959
|
+
"additionalProperties": false,
|
|
3960
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
3961
|
+
},
|
|
3962
|
+
"id": {
|
|
3963
|
+
"type": "object",
|
|
3964
|
+
"properties": {
|
|
3965
|
+
"identifier": {
|
|
3966
|
+
"type": "integer",
|
|
3967
|
+
"minimum": 0,
|
|
3968
|
+
"maximum": 255,
|
|
3969
|
+
"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)."
|
|
3970
|
+
}
|
|
3971
|
+
},
|
|
3972
|
+
"required": [
|
|
3973
|
+
"identifier"
|
|
3974
|
+
],
|
|
3975
|
+
"additionalProperties": false,
|
|
3976
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
3977
|
+
},
|
|
3978
|
+
"key": {
|
|
3979
|
+
"type": "string",
|
|
3980
|
+
"minLength": 1,
|
|
3981
|
+
"description": "Row name — the policy key string of the data row to read."
|
|
3982
|
+
},
|
|
3983
|
+
"conditions": {
|
|
3984
|
+
"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.",
|
|
3985
|
+
"type": "array",
|
|
3986
|
+
"items": {
|
|
3987
|
+
"type": "object",
|
|
3988
|
+
"properties": {
|
|
3989
|
+
"identifier": {
|
|
3990
|
+
"type": "integer",
|
|
3991
|
+
"minimum": 0,
|
|
3992
|
+
"maximum": 255,
|
|
3993
|
+
"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)."
|
|
3994
|
+
}
|
|
3995
|
+
},
|
|
3996
|
+
"required": [
|
|
3997
|
+
"identifier"
|
|
3998
|
+
],
|
|
3999
|
+
"additionalProperties": false,
|
|
4000
|
+
"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."
|
|
4001
|
+
}
|
|
4002
|
+
}
|
|
4003
|
+
},
|
|
4004
|
+
"required": [
|
|
4005
|
+
"type",
|
|
4006
|
+
"object",
|
|
4007
|
+
"id",
|
|
4008
|
+
"key"
|
|
4009
|
+
],
|
|
4010
|
+
"additionalProperties": false,
|
|
4011
|
+
"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."
|
|
3853
4012
|
}
|
|
3854
4013
|
],
|
|
3855
4014
|
"$ref": "#/definitions/__schema0"
|
|
@@ -7467,6 +7626,165 @@
|
|
|
7467
7626
|
],
|
|
7468
7627
|
"additionalProperties": false,
|
|
7469
7628
|
"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."
|
|
7629
|
+
},
|
|
7630
|
+
{
|
|
7631
|
+
"type": "object",
|
|
7632
|
+
"properties": {
|
|
7633
|
+
"type": {
|
|
7634
|
+
"type": "string",
|
|
7635
|
+
"const": "query_order_named_operator_member"
|
|
7636
|
+
},
|
|
7637
|
+
"object": {
|
|
7638
|
+
"type": "object",
|
|
7639
|
+
"properties": {
|
|
7640
|
+
"identifier": {
|
|
7641
|
+
"type": "integer",
|
|
7642
|
+
"minimum": 0,
|
|
7643
|
+
"maximum": 255,
|
|
7644
|
+
"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)."
|
|
7645
|
+
}
|
|
7646
|
+
},
|
|
7647
|
+
"required": [
|
|
7648
|
+
"identifier"
|
|
7649
|
+
],
|
|
7650
|
+
"additionalProperties": false,
|
|
7651
|
+
"description": "Reference to the Order object in the Guard table (must be Address type)."
|
|
7652
|
+
}
|
|
7653
|
+
},
|
|
7654
|
+
"required": [
|
|
7655
|
+
"type",
|
|
7656
|
+
"object"
|
|
7657
|
+
],
|
|
7658
|
+
"additionalProperties": false,
|
|
7659
|
+
"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)."
|
|
7660
|
+
},
|
|
7661
|
+
{
|
|
7662
|
+
"type": "object",
|
|
7663
|
+
"properties": {
|
|
7664
|
+
"type": {
|
|
7665
|
+
"type": "string",
|
|
7666
|
+
"const": "query_repository_data_has"
|
|
7667
|
+
},
|
|
7668
|
+
"object": {
|
|
7669
|
+
"type": "object",
|
|
7670
|
+
"properties": {
|
|
7671
|
+
"identifier": {
|
|
7672
|
+
"type": "integer",
|
|
7673
|
+
"minimum": 0,
|
|
7674
|
+
"maximum": 255,
|
|
7675
|
+
"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)."
|
|
7676
|
+
}
|
|
7677
|
+
},
|
|
7678
|
+
"required": [
|
|
7679
|
+
"identifier"
|
|
7680
|
+
],
|
|
7681
|
+
"additionalProperties": false,
|
|
7682
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
7683
|
+
},
|
|
7684
|
+
"id": {
|
|
7685
|
+
"type": "object",
|
|
7686
|
+
"properties": {
|
|
7687
|
+
"identifier": {
|
|
7688
|
+
"type": "integer",
|
|
7689
|
+
"minimum": 0,
|
|
7690
|
+
"maximum": 255,
|
|
7691
|
+
"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)."
|
|
7692
|
+
}
|
|
7693
|
+
},
|
|
7694
|
+
"required": [
|
|
7695
|
+
"identifier"
|
|
7696
|
+
],
|
|
7697
|
+
"additionalProperties": false,
|
|
7698
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
7699
|
+
},
|
|
7700
|
+
"key": {
|
|
7701
|
+
"type": "string",
|
|
7702
|
+
"minLength": 1,
|
|
7703
|
+
"description": "Row name — the policy key string of the data row to probe."
|
|
7704
|
+
}
|
|
7705
|
+
},
|
|
7706
|
+
"required": [
|
|
7707
|
+
"type",
|
|
7708
|
+
"object",
|
|
7709
|
+
"id",
|
|
7710
|
+
"key"
|
|
7711
|
+
],
|
|
7712
|
+
"additionalProperties": false,
|
|
7713
|
+
"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)."
|
|
7714
|
+
},
|
|
7715
|
+
{
|
|
7716
|
+
"type": "object",
|
|
7717
|
+
"properties": {
|
|
7718
|
+
"type": {
|
|
7719
|
+
"type": "string",
|
|
7720
|
+
"const": "query_repository_data"
|
|
7721
|
+
},
|
|
7722
|
+
"object": {
|
|
7723
|
+
"type": "object",
|
|
7724
|
+
"properties": {
|
|
7725
|
+
"identifier": {
|
|
7726
|
+
"type": "integer",
|
|
7727
|
+
"minimum": 0,
|
|
7728
|
+
"maximum": 255,
|
|
7729
|
+
"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)."
|
|
7730
|
+
}
|
|
7731
|
+
},
|
|
7732
|
+
"required": [
|
|
7733
|
+
"identifier"
|
|
7734
|
+
],
|
|
7735
|
+
"additionalProperties": false,
|
|
7736
|
+
"description": "Reference to the Repository object in the Guard table (must be Address type)."
|
|
7737
|
+
},
|
|
7738
|
+
"id": {
|
|
7739
|
+
"type": "object",
|
|
7740
|
+
"properties": {
|
|
7741
|
+
"identifier": {
|
|
7742
|
+
"type": "integer",
|
|
7743
|
+
"minimum": 0,
|
|
7744
|
+
"maximum": 255,
|
|
7745
|
+
"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)."
|
|
7746
|
+
}
|
|
7747
|
+
},
|
|
7748
|
+
"required": [
|
|
7749
|
+
"identifier"
|
|
7750
|
+
],
|
|
7751
|
+
"additionalProperties": false,
|
|
7752
|
+
"description": "Reference to the row's principal address (Address type table entry) — the row id the data was written under."
|
|
7753
|
+
},
|
|
7754
|
+
"key": {
|
|
7755
|
+
"type": "string",
|
|
7756
|
+
"minLength": 1,
|
|
7757
|
+
"description": "Row name — the policy key string of the data row to read."
|
|
7758
|
+
},
|
|
7759
|
+
"conditions": {
|
|
7760
|
+
"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.",
|
|
7761
|
+
"type": "array",
|
|
7762
|
+
"items": {
|
|
7763
|
+
"type": "object",
|
|
7764
|
+
"properties": {
|
|
7765
|
+
"identifier": {
|
|
7766
|
+
"type": "integer",
|
|
7767
|
+
"minimum": 0,
|
|
7768
|
+
"maximum": 255,
|
|
7769
|
+
"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)."
|
|
7770
|
+
}
|
|
7771
|
+
},
|
|
7772
|
+
"required": [
|
|
7773
|
+
"identifier"
|
|
7774
|
+
],
|
|
7775
|
+
"additionalProperties": false,
|
|
7776
|
+
"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."
|
|
7777
|
+
}
|
|
7778
|
+
}
|
|
7779
|
+
},
|
|
7780
|
+
"required": [
|
|
7781
|
+
"type",
|
|
7782
|
+
"object",
|
|
7783
|
+
"id",
|
|
7784
|
+
"key"
|
|
7785
|
+
],
|
|
7786
|
+
"additionalProperties": false,
|
|
7787
|
+
"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."
|
|
7470
7788
|
}
|
|
7471
7789
|
]
|
|
7472
7790
|
}
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
"additionalProperties": false
|
|
176
176
|
},
|
|
177
177
|
"acknowledge_dual_payout": {
|
|
178
|
-
"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.",
|
|
178
|
+
"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.",
|
|
179
179
|
"type": "boolean"
|
|
180
180
|
},
|
|
181
181
|
"arb_case_conclude": {
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
]
|
|
226
226
|
},
|
|
227
227
|
"guard_add": {
|
|
228
|
-
"description": "Add Guard to Reward object. IDIOMS (F08 — these differ from Service allocation, follow THIS shape here): recipient is ONE OF {GuardIdentifier: <u8>} | {Entity: {name_or_address: 'mark'}} | {Signer: 'signer'} (string const INSIDE the key, NOT a bare string) — BUT on the REWARD claim rail the recipient MUST equal the transaction sender (chain assert, abort 14), so {Signer: 'signer'} is the canonical form and {Entity} also passes (SDK replaces it with the claimant's account at claim time); a {GuardIdentifier} recipient resolves to the submitted Order and is STRUCTURALLY UNPAYABLE (every claim aborts 14) — the tool gate rejects it (crs-mn-261015 F-12). amount is {type: 'Fixed', value: '0.1WOW'} — value accepts a display string with token symbol ('0.1WOW') or a smallest-unit integer ('100000000'), NOT the plain balance string used by allocation `sharing`. FULL EXAMPLE: [{guard: '0xabc...', recipient: {Signer: 'signer'}, amount: {type: 'Fixed', value: '0.1WOW'}}].",
|
|
228
|
+
"description": "Add Guard to Reward object. IDIOMS (F08 — these differ from Service allocation, follow THIS shape here): recipient is ONE OF {GuardIdentifier: <u8>} | {Entity: {name_or_address: 'mark'}} | {Signer: 'signer'} (string const INSIDE the key, NOT a bare string) — BUT on the REWARD claim rail the recipient MUST equal the transaction sender (chain assert, abort 14), so {Signer: 'signer'} is the canonical form and {Entity} also passes (SDK replaces it with the claimant's account at claim time); a {GuardIdentifier} recipient resolves to the submitted Order and is STRUCTURALLY UNPAYABLE (every claim aborts 14) — the tool gate rejects it (crs-mn-261015 F-12). amount is {type: 'Fixed', value: '0.1WOW'} — value accepts a display string with token symbol ('0.1WOW') or a smallest-unit integer ('100000000'), NOT the plain balance string used by allocation `sharing`. FULL EXAMPLE: [{guard: '0xabc...', recipient: {Signer: 'signer'}, amount: {type: 'Fixed', value: '0.1WOW'}}]. OPTIONAL EVIDENCE BINDING (ksk9d2-tn-261026 F-01): an entry may carry evidence {repo, key, predicate} — a claim-time attestation pin that counts ONLY repository rows tied to THIS claim's own store_from value (the submitted order), so borrowed/foreign rows never satisfy the bounty; it requires store_from_id on the same guard (a missing pin aborts 16 at build time) and a claim whose order has no matching attestation row aborts 15.",
|
|
229
229
|
"type": "array",
|
|
230
230
|
"items": {
|
|
231
231
|
"type": "object",
|
|
@@ -363,6 +363,40 @@
|
|
|
363
363
|
"type": "null"
|
|
364
364
|
}
|
|
365
365
|
]
|
|
366
|
+
},
|
|
367
|
+
"evidence": {
|
|
368
|
+
"description": "ksk9d2-tn-261026 F-01 claim-time attestation pin (reward::evidence_bind). REQUIRES store_from_id on the SAME guard — the binding reads THE pinned store_from row, so the chain aborts 16 (E_EVIDENCE_NEEDS_STORE_FROM) at build time without it. At claim the chain counts repository rows under (repo, key) matching the predicate for the claim's OWN store_from value (the submitted order) via the native evidence_count and aborts 15 (E_EVIDENCE_NOT_OWNED) when none — a borrowed foreign row can never pay.",
|
|
369
|
+
"type": "object",
|
|
370
|
+
"properties": {
|
|
371
|
+
"repo": {
|
|
372
|
+
"type": "string",
|
|
373
|
+
"description": "Repository object ID or name holding the attestation rows."
|
|
374
|
+
},
|
|
375
|
+
"key": {
|
|
376
|
+
"type": "array",
|
|
377
|
+
"items": {
|
|
378
|
+
"type": "integer",
|
|
379
|
+
"minimum": 0,
|
|
380
|
+
"maximum": 255
|
|
381
|
+
},
|
|
382
|
+
"description": "Repository data key bytes (the policy name the rows live under, e.g. UTF-8 bytes of 'rating')."
|
|
383
|
+
},
|
|
384
|
+
"predicate": {
|
|
385
|
+
"type": "array",
|
|
386
|
+
"items": {
|
|
387
|
+
"type": "integer",
|
|
388
|
+
"minimum": 0,
|
|
389
|
+
"maximum": 255
|
|
390
|
+
},
|
|
391
|
+
"description": "BCS-encoded RepositoryDataPredicateWire bytes — the same predicate blob the repository read channel uses."
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
"required": [
|
|
395
|
+
"repo",
|
|
396
|
+
"key",
|
|
397
|
+
"predicate"
|
|
398
|
+
],
|
|
399
|
+
"additionalProperties": false
|
|
366
400
|
}
|
|
367
401
|
},
|
|
368
402
|
"required": [
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
]
|
|
177
177
|
},
|
|
178
178
|
"discount": {
|
|
179
|
-
"description": "Discount object ID or name",
|
|
179
|
+
"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.",
|
|
180
180
|
"type": "string"
|
|
181
181
|
},
|
|
182
182
|
"payment_remark": {
|
|
@@ -670,7 +670,7 @@
|
|
|
670
670
|
]
|
|
671
671
|
},
|
|
672
672
|
"restock": {
|
|
673
|
-
"description": "Refund restocking (permission 305 SERVICE_SALES). op:'flag' opts ONE live product into restock-on-refund; op:'order' puts the units a REFUNDED order purchased back on shelf. The order path is all-or-nothing: every purchased line must be flagged and still live before any unit moves (otherwise the chain aborts 46/32), so half a restock is impossible. The order path is once-per-order (replay aborts 49) and bound to THIS service (foreign order aborts 26). Do NOT fake a restock with stock_add when the order carries several lines — use op:'order' so quantities come from the order itself.",
|
|
673
|
+
"description": "Refund restocking (permission 305 SERVICE_SALES). op:'flag' opts ONE live product into restock-on-refund; op:'order' puts the units a REFUNDED order purchased back on shelf. The order path is all-or-nothing: every purchased line must be flagged and still live before any unit moves (otherwise the chain aborts 46/32), so half a restock is impossible. The order path is once-per-order (replay aborts 49) and bound to THIS service (foreign order aborts 26). Do NOT fake a restock with stock_add when the order carries several lines — use op:'order' so quantities come from the order itself. DISCLOSURE: restock reopens sales — if the machine (or its template) has no refund-terminal gate, orders inside their refund window may lose refund eligibility or create fund-accounting ambiguity once restocked units are resold; confirm the machine's refund rail remains reachable after restocking.",
|
|
674
674
|
"oneOf": [
|
|
675
675
|
{
|
|
676
676
|
"type": "object",
|
|
@@ -941,7 +941,7 @@
|
|
|
941
941
|
]
|
|
942
942
|
},
|
|
943
943
|
"discount": {
|
|
944
|
-
"description": "Issue discount.",
|
|
944
|
+
"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.",
|
|
945
945
|
"type": "object",
|
|
946
946
|
"properties": {
|
|
947
947
|
"name": {
|
|
@@ -986,7 +986,7 @@
|
|
|
986
986
|
"type": "number"
|
|
987
987
|
},
|
|
988
988
|
"allow_zero_total": {
|
|
989
|
-
"description": "
|
|
989
|
+
"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.",
|
|
990
990
|
"type": "boolean"
|
|
991
991
|
},
|
|
992
992
|
"time_ms_end": {
|
|
@@ -1056,7 +1056,7 @@
|
|
|
1056
1056
|
}
|
|
1057
1057
|
},
|
|
1058
1058
|
"discount_send": {
|
|
1059
|
-
"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.",
|
|
1059
|
+
"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.",
|
|
1060
1060
|
"type": "object",
|
|
1061
1061
|
"properties": {
|
|
1062
1062
|
"discounts": {
|
|
@@ -1467,7 +1467,7 @@
|
|
|
1467
1467
|
"additionalProperties": false
|
|
1468
1468
|
},
|
|
1469
1469
|
"buy_guard": {
|
|
1470
|
-
"description": "Buy guard object ID or name.",
|
|
1470
|
+
"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.",
|
|
1471
1471
|
"anyOf": [
|
|
1472
1472
|
{
|
|
1473
1473
|
"type": "string",
|