@hyperscale0/udl 2.6.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/CHANGELOG.md +4 -328
  2. package/LICENSING.md +1 -2
  3. package/README.md +3 -114
  4. package/TRADEMARKS.md +2 -2
  5. package/dist/diagnostics.d.ts +21 -201
  6. package/dist/diagnostics.d.ts.map +1 -1
  7. package/dist/diagnostics.js +29 -193
  8. package/dist/diagnostics.js.map +1 -1
  9. package/dist/evolution.d.ts +3 -132
  10. package/dist/evolution.d.ts.map +1 -1
  11. package/dist/evolution.js +29 -633
  12. package/dist/evolution.js.map +1 -1
  13. package/dist/finance.d.ts +5 -72
  14. package/dist/finance.d.ts.map +1 -1
  15. package/dist/finance.js +233 -737
  16. package/dist/finance.js.map +1 -1
  17. package/dist/index.d.ts +7 -18
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +7 -12
  20. package/dist/index.js.map +1 -1
  21. package/dist/instrument-references.d.ts.map +1 -1
  22. package/dist/instrument-references.js +3 -2
  23. package/dist/instrument-references.js.map +1 -1
  24. package/dist/schema.d.ts +2079 -4564
  25. package/dist/schema.d.ts.map +1 -1
  26. package/dist/schema.js +270 -1609
  27. package/dist/schema.js.map +1 -1
  28. package/dist/validation.d.ts +8 -104
  29. package/dist/validation.d.ts.map +1 -1
  30. package/dist/validation.js +653 -3271
  31. package/dist/validation.js.map +1 -1
  32. package/docs/README.md +148 -14
  33. package/package.json +7 -11
  34. package/spec/README.md +152 -164
  35. package/spec/darb.udl.json +249 -0
  36. package/spec/udl.schema.json +4104 -3202
  37. package/src/diagnostics.ts +51 -246
  38. package/src/evolution.ts +39 -1045
  39. package/src/finance.ts +287 -1127
  40. package/src/index.ts +18 -142
  41. package/src/instrument-references.ts +3 -2
  42. package/src/schema.ts +285 -1843
  43. package/src/validation.ts +870 -5611
  44. package/conformance/README.md +0 -82
  45. package/conformance/evolution/action-contract.expected.json +0 -10
  46. package/conformance/evolution/action-contract.live.udl +0 -44
  47. package/conformance/evolution/action-contract.next.udl +0 -45
  48. package/conformance/evolution/product-identity.expected.json +0 -10
  49. package/conformance/evolution/product-identity.live.udl +0 -55
  50. package/conformance/evolution/product-identity.next.udl +0 -55
  51. package/conformance/evolution/version-required.expected.json +0 -10
  52. package/conformance/evolution/version-required.live.udl +0 -55
  53. package/conformance/evolution/version-required.next.udl +0 -58
  54. package/conformance/invalid/action-without-transition.expected.json +0 -10
  55. package/conformance/invalid/action-without-transition.udl +0 -60
  56. package/conformance/invalid/agent-description-too-long.expected.json +0 -10
  57. package/conformance/invalid/agent-description-too-long.udl +0 -57
  58. package/conformance/invalid/blank-title.expected.json +0 -10
  59. package/conformance/invalid/blank-title.udl +0 -54
  60. package/conformance/invalid/call-binds-results.expected.json +0 -10
  61. package/conformance/invalid/call-binds-results.udl +0 -314
  62. package/conformance/invalid/call-unknown-action.expected.json +0 -10
  63. package/conformance/invalid/call-unknown-action.udl +0 -314
  64. package/conformance/invalid/composition-dial-duplicate-key.expected.json +0 -10
  65. package/conformance/invalid/composition-dial-duplicate-key.udl +0 -73
  66. package/conformance/invalid/depth-budget.expected.json +0 -10
  67. package/conformance/invalid/depth-budget.udl +0 -49
  68. package/conformance/invalid/duplicate-subject.expected.json +0 -10
  69. package/conformance/invalid/duplicate-subject.udl +0 -230
  70. package/conformance/invalid/forged-effects.expected.json +0 -10
  71. package/conformance/invalid/forged-effects.udl +0 -76
  72. package/conformance/invalid/format-version.expected.json +0 -10
  73. package/conformance/invalid/format-version.udl +0 -54
  74. package/conformance/invalid/instrument-id-not-snake-case.expected.json +0 -10
  75. package/conformance/invalid/instrument-id-not-snake-case.udl +0 -54
  76. package/conformance/invalid/invalid-aggregate-gate-shape.expected.json +0 -10
  77. package/conformance/invalid/invalid-aggregate-gate-shape.udl +0 -1819
  78. package/conformance/invalid/invalid-check-duration.expected.json +0 -10
  79. package/conformance/invalid/invalid-check-duration.udl +0 -219
  80. package/conformance/invalid/invalid-dial-anchor.expected.json +0 -10
  81. package/conformance/invalid/invalid-dial-anchor.udl +0 -219
  82. package/conformance/invalid/invalid-exception-parent-ref.expected.json +0 -10
  83. package/conformance/invalid/invalid-exception-parent-ref.udl +0 -2487
  84. package/conformance/invalid/invalid-exposure-shape.expected.json +0 -10
  85. package/conformance/invalid/invalid-exposure-shape.udl +0 -1819
  86. package/conformance/invalid/invalid-journeys.expected.json +0 -10
  87. package/conformance/invalid/invalid-journeys.udl +0 -77
  88. package/conformance/invalid/invalid-remainder.expected.json +0 -10
  89. package/conformance/invalid/invalid-remainder.udl +0 -220
  90. package/conformance/invalid/invalid-schema-keyword.expected.json +0 -10
  91. package/conformance/invalid/invalid-schema-keyword.udl +0 -220
  92. package/conformance/invalid/invalid-utf8.expected.json +0 -10
  93. package/conformance/invalid/invalid-utf8.udl +0 -1
  94. package/conformance/invalid/leaf-effect-mismatch.expected.json +0 -10
  95. package/conformance/invalid/leaf-effect-mismatch.udl +0 -314
  96. package/conformance/invalid/malformed-json.expected.json +0 -10
  97. package/conformance/invalid/malformed-json.udl +0 -1
  98. package/conformance/invalid/missing-create-action.expected.json +0 -10
  99. package/conformance/invalid/missing-create-action.udl +0 -48
  100. package/conformance/invalid/missing-exception-amount-field.expected.json +0 -10
  101. package/conformance/invalid/missing-exception-amount-field.udl +0 -2487
  102. package/conformance/invalid/missing-exception-contract.expected.json +0 -14
  103. package/conformance/invalid/missing-exception-contract.udl +0 -2523
  104. package/conformance/invalid/missing-exception-reason-field.expected.json +0 -10
  105. package/conformance/invalid/missing-exception-reason-field.udl +0 -2487
  106. package/conformance/invalid/not-an-object.expected.json +0 -10
  107. package/conformance/invalid/not-an-object.udl +0 -1
  108. package/conformance/invalid/payout-reconcile-not-a-bank-debit.expected.json +0 -10
  109. package/conformance/invalid/payout-reconcile-not-a-bank-debit.udl +0 -259
  110. package/conformance/invalid/piece-plan-without-partition.expected.json +0 -10
  111. package/conformance/invalid/piece-plan-without-partition.udl +0 -305
  112. package/conformance/invalid/private-action-independent-approval.expected.json +0 -10
  113. package/conformance/invalid/private-action-independent-approval.udl +0 -314
  114. package/conformance/invalid/quote-freeze-set-incomplete.expected.json +0 -10
  115. package/conformance/invalid/quote-freeze-set-incomplete.udl +0 -261
  116. package/conformance/invalid/quote-named-reference-gate.expected.json +0 -10
  117. package/conformance/invalid/quote-named-reference-gate.udl +0 -50
  118. package/conformance/invalid/reconcile-named-reference-gate.expected.json +0 -10
  119. package/conformance/invalid/reconcile-named-reference-gate.udl +0 -50
  120. package/conformance/invalid/unfund-order-not-reversed.expected.json +0 -10
  121. package/conformance/invalid/unfund-order-not-reversed.udl +0 -314
  122. package/conformance/invalid/unknown-key.expected.json +0 -10
  123. package/conformance/invalid/unknown-key.udl +0 -55
  124. package/conformance/invalid/unknown-reference-gate-field.expected.json +0 -10
  125. package/conformance/invalid/unknown-reference-gate-field.udl +0 -1819
  126. package/conformance/invalid/unknown-required-field.expected.json +0 -10
  127. package/conformance/invalid/unknown-required-field.udl +0 -220
  128. package/conformance/invalid/unreachable-state.expected.json +0 -10
  129. package/conformance/invalid/unreachable-state.udl +0 -55
  130. package/conformance/invalid/wrong-exception-amount-field.expected.json +0 -10
  131. package/conformance/invalid/wrong-exception-amount-field.udl +0 -2487
  132. package/conformance/invalid/wrong-exception-reason-field.expected.json +0 -10
  133. package/conformance/invalid/wrong-exception-reason-field.udl +0 -2487
  134. package/conformance/valid/agent-description.expected.json +0 -6
  135. package/conformance/valid/agent-description.udl +0 -66
  136. package/conformance/valid/attested.expected.json +0 -6
  137. package/conformance/valid/attested.udl +0 -251
  138. package/conformance/valid/cards.expected.json +0 -6
  139. package/conformance/valid/cards.udl +0 -1579
  140. package/conformance/valid/commerce-escrow.expected.json +0 -6
  141. package/conformance/valid/commerce-escrow.udl +0 -1512
  142. package/conformance/valid/compiled-crowdfunding.expected.json +0 -6
  143. package/conformance/valid/compiled-crowdfunding.udl +0 -1843
  144. package/conformance/valid/compiled-watch-club.expected.json +0 -6
  145. package/conformance/valid/compiled-watch-club.udl +0 -2486
  146. package/conformance/valid/complete-contract.expected.json +0 -6
  147. package/conformance/valid/complete-contract.udl +0 -218
  148. package/conformance/valid/effect-signatures.expected.json +0 -6
  149. package/conformance/valid/effect-signatures.udl +0 -75
  150. package/conformance/valid/hand-edited.expected.json +0 -6
  151. package/conformance/valid/hand-edited.udl +0 -1
  152. package/conformance/valid/insured-car-marketplace.expected.json +0 -6
  153. package/conformance/valid/insured-car-marketplace.udl +0 -1050
  154. package/conformance/valid/insured-travel.expected.json +0 -6
  155. package/conformance/valid/insured-travel.udl +0 -3469
  156. package/conformance/valid/minimal.expected.json +0 -6
  157. package/conformance/valid/minimal.udl +0 -62
  158. package/conformance/valid/piece-plan-calls.expected.json +0 -6
  159. package/conformance/valid/piece-plan-calls.udl +0 -314
  160. package/conformance/valid/protection.expected.json +0 -6
  161. package/conformance/valid/protection.udl +0 -1551
  162. package/conformance/valid/string-escaping.expected.json +0 -6
  163. package/conformance/valid/string-escaping.udl +0 -54
  164. package/conformance/valid/vocabulary.expected.json +0 -6
  165. package/conformance/valid/vocabulary.udl +0 -2012
  166. package/dist/allocation.d.ts +0 -60
  167. package/dist/allocation.d.ts.map +0 -1
  168. package/dist/allocation.js +0 -177
  169. package/dist/allocation.js.map +0 -1
  170. package/dist/check-profiles.d.ts +0 -57
  171. package/dist/check-profiles.d.ts.map +0 -1
  172. package/dist/check-profiles.js +0 -62
  173. package/dist/check-profiles.js.map +0 -1
  174. package/dist/distribution.d.ts +0 -15
  175. package/dist/distribution.d.ts.map +0 -1
  176. package/dist/distribution.js +0 -49
  177. package/dist/distribution.js.map +0 -1
  178. package/dist/effects.d.ts +0 -58
  179. package/dist/effects.d.ts.map +0 -1
  180. package/dist/effects.js +0 -1126
  181. package/dist/effects.js.map +0 -1
  182. package/dist/reference.d.ts +0 -3
  183. package/dist/reference.d.ts.map +0 -1
  184. package/dist/reference.js +0 -28
  185. package/dist/reference.js.map +0 -1
  186. package/dist/vocabulary.d.ts +0 -23
  187. package/dist/vocabulary.d.ts.map +0 -1
  188. package/dist/vocabulary.js +0 -1052
  189. package/dist/vocabulary.js.map +0 -1
  190. package/docs/funding-custody.md +0 -165
  191. package/docs/guide/01-a-document.md +0 -37
  192. package/docs/guide/02-money-steps.md +0 -23
  193. package/docs/guide/03-laws.md +0 -18
  194. package/docs/guide/04-fees-and-remainder.md +0 -36
  195. package/docs/guide/05-checks-updates-dials.md +0 -7
  196. package/docs/guide/06-effects.md +0 -11
  197. package/docs/guide/07-evolution.md +0 -11
  198. package/docs/guide/08-implementing.md +0 -13
  199. package/docs/guide/09-schedules-and-allocation.md +0 -132
  200. package/docs/llms-full.txt +0 -2008
  201. package/docs/llms.txt +0 -14
  202. package/docs/piece-plans.md +0 -148
  203. package/docs/reference/canonical.md +0 -16
  204. package/docs/reference/clauses.md +0 -1585
  205. package/docs/reference/cli.md +0 -24
  206. package/docs/reference/diagnostics.md +0 -38
  207. package/skills/udl/SKILL.md +0 -28
  208. package/src/allocation.ts +0 -259
  209. package/src/check-profiles.ts +0 -80
  210. package/src/distribution.ts +0 -61
  211. package/src/effects.ts +0 -1920
  212. package/src/reference.ts +0 -31
  213. package/src/vocabulary.ts +0 -1635
@@ -1,1585 +0,0 @@
1
- <!-- Generated by scripts/docs/build.ts from @hyperscale0/udl 2.6.1. Edit the source, not clauses.md. -->
2
-
3
- # Clause reference
4
-
5
- This page lists every entry in `udlClauseVocabulary`. The examples are copied from admitted documents under `conformance/valid`.
6
-
7
- ## funding
8
-
9
- - Scope: action
10
- - UDL target: `funding`
11
- - Cardinality: one
12
- - Linear outputs: none
13
- - Effects: moves.transfer.internal per clause
14
- - Law: Requirements-as-data law and closure law
15
- - Conformance source: `vocabulary.udl`
16
-
17
- ```json
18
- {
19
- "capture": "snapshot",
20
- "collectAction": "collect",
21
- "destinationAccountField": "fundingAccount",
22
- "obligationField": "obligationId",
23
- "principalField": "principal",
24
- "sourceAccountPath": "refs.escrow",
25
- "terms": {
26
- "currency": "currency",
27
- "principal": "principal"
28
- },
29
- "ticketAccountField": "wallet",
30
- "ticketAmountField": "amount",
31
- "ticketInstrumentId": "ticket",
32
- "ticketInvestorField": "investor",
33
- "ticketRefField": "roundId",
34
- "ticketStatus": "open"
35
- }
36
- ```
37
-
38
- ## receipt distribution
39
-
40
- - Scope: action
41
- - UDL target: `receiptDistribution`
42
- - Cardinality: one
43
- - Linear outputs: none
44
- - Effects: decides.allocation per clause; moves.allocation per clause
45
- - Law: Requirements-as-data law and closure law
46
- - Conformance source: `vocabulary.udl`
47
-
48
- ```json
49
- {
50
- "capture": "receipt",
51
- "feeAccountField": "fee",
52
- "feeBps": 100,
53
- "mode": "cash",
54
- "receiptField": "receiptId",
55
- "receiptPath": "refs.allocationReceipt",
56
- "residualAccountField": "residual",
57
- "roundField": "roundId",
58
- "snapshotRef": "snapshot",
59
- "taxAccountField": "tax",
60
- "vatBps": 1500
61
- }
62
- ```
63
-
64
- ## requires allocation
65
-
66
- - Scope: action
67
- - UDL target: `requiresAllocation`
68
- - Cardinality: one
69
- - Linear outputs: none
70
- - Effects: decides.allocation per clause
71
- - Law: Requirements-as-data law and closure law
72
- - Conformance source: `vocabulary.udl`
73
-
74
- ```json
75
- {
76
- "buckets": [
77
- "principal",
78
- "profit"
79
- ],
80
- "check": "settled",
81
- "refField": "coverId",
82
- "slice": "self"
83
- }
84
- ```
85
-
86
- ## allocation
87
-
88
- - Scope: instrument
89
- - UDL target: `allocation`
90
- - Cardinality: one
91
- - Linear outputs: none
92
- - Effects: none
93
- - Law: Requirements-as-data law and closure law
94
- - Conformance source: `vocabulary.udl`
95
-
96
- ```json
97
- {
98
- "buckets": [
99
- {
100
- "key": "principal",
101
- "source": {
102
- "amountField": "principal",
103
- "destinationField": "receiver",
104
- "from": "slice"
105
- }
106
- },
107
- {
108
- "key": "profit",
109
- "source": {
110
- "amountField": "profit",
111
- "destinationField": "receiver",
112
- "from": "slice"
113
- }
114
- },
115
- {
116
- "key": "cost",
117
- "source": {
118
- "amountField": "amount",
119
- "destinationField": "receiver",
120
- "from": "children",
121
- "parameters": {
122
- "cost": true
123
- },
124
- "refField": "sliceId",
125
- "statuses": [
126
- "open"
127
- ],
128
- "template": "assessment"
129
- }
130
- }
131
- ],
132
- "dueField": "dueAt",
133
- "earningRuleField": "earningRule",
134
- "positionField": "position",
135
- "sliceInstrumentId": "slice",
136
- "sliceRefField": "coverId",
137
- "sliceStatuses": [
138
- "open"
139
- ]
140
- }
141
- ```
142
-
143
- ## contributions
144
-
145
- - Scope: instrument
146
- - UDL target: `contributions`
147
- - Cardinality: one
148
- - Linear outputs: none
149
- - Effects: none
150
- - Law: Requirements-as-data law and closure law
151
- - Conformance source: `vocabulary.udl`
152
-
153
- ```json
154
- {
155
- "accountKey": "origin",
156
- "amountKey": "amount",
157
- "field": "contributions",
158
- "totalField": "price"
159
- }
160
- ```
161
-
162
- ## allocate
163
-
164
- - Scope: action
165
- - UDL target: `allocate`
166
- - Cardinality: one
167
- - Linear outputs: none
168
- - Effects: decides.allocation per clause; moves.allocation per clause
169
- - Law: Requirements-as-data law and closure law
170
- - Conformance source: `vocabulary.udl`
171
-
172
- ```json
173
- {
174
- "capture": "payoffReceipt",
175
- "mode": "payoff",
176
- "paymentIdentityField": "paymentIdentity",
177
- "sourceAccountField": "payerAccount"
178
- }
179
- ```
180
-
181
- ## contribution stage
182
-
183
- - Scope: action
184
- - UDL target: `contributionStage`
185
- - Cardinality: one
186
- - Linear outputs: none
187
- - Effects: moves.transfer.internal per clause
188
- - Law: Requirements-as-data law and closure law
189
- - Conformance source: `vocabulary.udl`
190
-
191
- ```json
192
- {
193
- "accountPath": "refs.hold",
194
- "stage": "fund"
195
- }
196
- ```
197
-
198
- ## date order
199
-
200
- - Scope: instrument
201
- - UDL target: `dateOrder`
202
- - Cardinality: many
203
- - Linear outputs: none
204
- - Effects: none
205
- - Law: Requirements-as-data law and closure law
206
- - Conformance source: `vocabulary.udl`
207
-
208
- ```json
209
- [
210
- {
211
- "afterField": "end",
212
- "beforeField": "start",
213
- "operator": "<"
214
- }
215
- ]
216
- ```
217
-
218
- ## unique
219
-
220
- - Scope: action
221
- - UDL target: `unique`
222
- - Cardinality: one
223
- - Linear outputs: none
224
- - Effects: decides.subject_unique per clause
225
- - Law: Requirements-as-data law and closure law
226
- - Conformance source: `vocabulary.udl`
227
-
228
- ```json
229
- {
230
- "byFields": [
231
- "borrower",
232
- "currency"
233
- ],
234
- "namespace": "borrower_limit"
235
- }
236
- ```
237
-
238
- ## transitions refs
239
-
240
- - Scope: action
241
- - UDL target: `transitionsRefs`
242
- - Cardinality: many
243
- - Linear outputs: none
244
- - Effects: decides.referenced_transition per element
245
- - Law: Requirements-as-data law and closure law
246
- - Conformance source: `vocabulary.udl`
247
-
248
- ```json
249
- [
250
- {
251
- "action": "close",
252
- "field": "coverId"
253
- }
254
- ]
255
- ```
256
-
257
- ## cascade
258
-
259
- - Scope: action
260
- - UDL target: `cascade`
261
- - Cardinality: many
262
- - Linear outputs: none
263
- - Effects: decides.cascade_transition per element
264
- - Law: Requirements-as-data law and closure law
265
- - Conformance source: `vocabulary.udl`
266
-
267
- A cascade target action that declares a `port` is allowed only when the parent action declares a `port`: the engine forwards the port actor.
268
-
269
- ```json
270
- [
271
- {
272
- "action": "close",
273
- "inputField": "sliceIds",
274
- "instrumentId": "slice"
275
- }
276
- ]
277
- ```
278
-
279
- ## action library
280
-
281
- - Scope: instrument
282
- - UDL target: `actionLibrary`
283
- - Cardinality: one
284
- - Linear outputs: none
285
- - Effects: none
286
- - Law: Requirements-as-data law and closure law
287
- - Conformance source: `piece-plan-calls.udl`
288
-
289
- ```json
290
- {
291
- "transfers": {
292
- "actionOrder": [
293
- "execute_fund",
294
- "execute_release"
295
- ],
296
- "actions": {
297
- "execute_fund": {
298
- "approval": "inherit",
299
- "calls": [],
300
- "leaves": [
301
- {
302
- "bind": {
303
- "amount": "$p.amount",
304
- "destinationAccountId": "$p.release_to",
305
- "sourceAccountId": "$inst.fields.buyerAccount"
306
- },
307
- "effects": [
308
- {
309
- "kind": "moves",
310
- "signature": "moves.transfer.internal"
311
- }
312
- ],
313
- "evidence": "bank transfer confirmation receipt",
314
- "id": "leaf_fund",
315
- "operation": "internal_transfer.create"
316
- }
317
- ],
318
- "order": [
319
- "leaf_fund"
320
- ],
321
- "parameters": {
322
- "inst": {
323
- "kind": "instance"
324
- },
325
- "p": {
326
- "kind": "piece"
327
- }
328
- },
329
- "principal": "api_key",
330
- "recovery": "local"
331
- },
332
- "execute_release": {
333
- "approval": "inherit",
334
- "calls": [],
335
- "leaves": [
336
- {
337
- "bind": {
338
- "amount": "$p.amount",
339
- "destinationAccountId": "$p.release_to",
340
- "sourceAccountId": "$inst.fields.escrowAccount"
341
- },
342
- "effects": [
343
- {
344
- "kind": "moves",
345
- "signature": "moves.transfer.internal"
346
- }
347
- ],
348
- "evidence": "release to payee confirmation",
349
- "id": "leaf_rel",
350
- "operation": "internal_transfer.create"
351
- }
352
- ],
353
- "order": [
354
- "leaf_rel"
355
- ],
356
- "parameters": {
357
- "inst": {
358
- "kind": "instance"
359
- },
360
- "p": {
361
- "kind": "piece"
362
- }
363
- },
364
- "principal": "api_key",
365
- "recovery": "local"
366
- }
367
- }
368
- }
369
- }
370
- ```
371
-
372
- ## agent description
373
-
374
- - Scope: action
375
- - UDL target: `agentDescription`
376
- - Cardinality: one
377
- - Linear outputs: none
378
- - Effects: none
379
- - Law: Requirements-as-data law and closure law
380
- - Conformance source: `agent-description.udl`
381
-
382
- ```json
383
- "Close a note that has already been filed. Takes the note id and nothing else, and moves no money."
384
- ```
385
-
386
- ## calls
387
-
388
- - Scope: action
389
- - UDL target: `calls`
390
- - Cardinality: many
391
- - Linear outputs: none
392
- - Effects: none
393
- - Law: Requirements-as-data law and closure law
394
- - Conformance source: `piece-plan-calls.udl`
395
-
396
- ```json
397
- [
398
- {
399
- "action": "transfers.execute_fund",
400
- "bind": {
401
- "inst": "$instance",
402
- "p": "$piece"
403
- },
404
- "id": "call_fund"
405
- }
406
- ]
407
- ```
408
-
409
- ## requires input
410
-
411
- - Scope: action
412
- - UDL target: `requiresInput`
413
- - Cardinality: one
414
- - Linear outputs: none
415
- - Effects: none
416
- - Law: Requirements-as-data law and closure law
417
- - Conformance source: `attested.udl`
418
-
419
- ```json
420
- {
421
- "amount": "fields.amount"
422
- }
423
- ```
424
-
425
- ## engine owned
426
-
427
- - Scope: action
428
- - UDL target: `engineOwned`
429
- - Cardinality: one
430
- - Linear outputs: none
431
- - Effects: none
432
- - Law: Requirements-as-data law and closure law
433
- - Conformance source: `attested.udl`
434
-
435
- ```json
436
- true
437
- ```
438
-
439
- ## capture engine
440
-
441
- - Scope: action
442
- - UDL target: `captureEngine`
443
- - Cardinality: one
444
- - Linear outputs: none
445
- - Effects: none
446
- - Law: Requirements-as-data law and closure law
447
- - Conformance source: `attested.udl`
448
-
449
- ```json
450
- {
451
- "consumedByOperationId": "operationId"
452
- }
453
- ```
454
-
455
- ## capture input
456
-
457
- - Scope: action
458
- - UDL target: `captureInput`
459
- - Cardinality: one
460
- - Linear outputs: none
461
- - Effects: none
462
- - Law: Requirements-as-data law and closure law
463
- - Conformance source: `compiled-crowdfunding.udl`
464
-
465
- ```json
466
- {
467
- "snapshotEvidenceReference": "evidenceReference"
468
- }
469
- ```
470
-
471
- ## commit
472
-
473
- - Scope: action
474
- - UDL target: `commit`
475
- - Cardinality: one
476
- - Linear outputs: none
477
- - Effects: none
478
- - Law: Requirements-as-data law and closure law
479
- - Conformance source: `commerce-escrow.udl`
480
-
481
- A commit has no separate effect row. The committing action consumes the quote through its `moves.*` row.
482
-
483
- ```json
484
- "quote"
485
- ```
486
-
487
- ## quote
488
-
489
- - Scope: action
490
- - UDL target: `quote`
491
- - Cardinality: one
492
- - Linear outputs: `netRef`
493
- - Effects: holds.quote per clause; schedules.expiry per clause
494
- - Law: Requirements-as-data law and closure law
495
- - Conformance source: `commerce-escrow.udl`
496
-
497
- ```json
498
- {
499
- "baseField": "amount",
500
- "chargeRef": "unwindPenalty",
501
- "charges": [
502
- {
503
- "bps": 0
504
- }
505
- ],
506
- "expires": {
507
- "offset": "PT15M"
508
- },
509
- "fixes": [
510
- "amount",
511
- "buyerAccountId"
512
- ],
513
- "netDestinationField": "buyerAccountId",
514
- "netRef": "unwindRefund"
515
- }
516
- ```
517
-
518
- ## decided amount
519
-
520
- - Scope: action
521
- - UDL target: `decidedAmount`
522
- - Cardinality: one
523
- - Linear outputs: `field`
524
- - Effects: none
525
- - Law: Requirements-as-data law and closure law
526
- - Conformance source: `compiled-watch-club.udl`
527
-
528
- ```json
529
- {
530
- "boundField": "depositAmount",
531
- "field": "damageAmount",
532
- "remainderAction": "return_deposit"
533
- }
534
- ```
535
-
536
- ## deadline
537
-
538
- - Scope: action
539
- - UDL target: `deadline`
540
- - Cardinality: one
541
- - Linear outputs: none
542
- - Effects: schedules.deadline per clause
543
- - Law: Time law and closure law
544
- - Conformance source: `compiled-watch-club.udl`
545
-
546
- ```json
547
- {
548
- "field": "clawbackAt"
549
- }
550
- ```
551
-
552
- ## decision
553
-
554
- - Scope: action
555
- - UDL target: `decision`
556
- - Cardinality: one
557
- - Linear outputs: none
558
- - Effects: decides.value from capability per clause
559
- - Law: Requirements-as-data law and closure law
560
- - Conformance source: `cards.udl`
561
-
562
- ```json
563
- {
564
- "capability": "banking_or_card_issuing",
565
- "deadlineMs": 1500,
566
- "onTimeout": "decline"
567
- }
568
- ```
569
-
570
- ## computes distribute
571
-
572
- - Scope: action
573
- - UDL target: `distribute`
574
- - Cardinality: one
575
- - Linear outputs: `amountRef`
576
- - Effects: none
577
- - Law: Requirements-as-data law and closure law
578
- - Conformance source: `compiled-crowdfunding.udl`
579
-
580
- ```json
581
- {
582
- "amountRef": "payoutShare",
583
- "onZero": "skip_steps",
584
- "pool": {
585
- "from": "parent",
586
- "path": "fields.distributableAmount"
587
- },
588
- "refField": "repaymentDistributionId",
589
- "statuses": [
590
- "recorded",
591
- "paid"
592
- ],
593
- "weightField": "committedWeight"
594
- }
595
- ```
596
-
597
- ## description
598
-
599
- - Scope: action
600
- - UDL target: `description`
601
- - Cardinality: one
602
- - Linear outputs: none
603
- - Effects: none
604
- - Law: One-sentence law, uniform object law, and naming law
605
- - Conformance source: `cards.udl`
606
-
607
- ```json
608
- "Approves the customer to hold and use cards."
609
- ```
610
-
611
- ## due
612
-
613
- - Scope: action
614
- - UDL target: `due`
615
- - Cardinality: one
616
- - Linear outputs: none
617
- - Effects: schedules.due per clause
618
- - Law: Time law and closure law
619
- - Conformance source: `cards.udl`
620
-
621
- ```json
622
- {
623
- "field": "expiresAt"
624
- }
625
- ```
626
-
627
- ## earnable
628
-
629
- - Scope: action
630
- - UDL target: `earnable`
631
- - Cardinality: one
632
- - Linear outputs: none
633
- - Effects: none
634
- - Law: Requirements-as-data law and closure law
635
- - Conformance source: `cards.udl`
636
-
637
- ```json
638
- true
639
- ```
640
-
641
- ## event name
642
-
643
- - Scope: action
644
- - UDL target: `eventName`
645
- - Cardinality: one
646
- - Linear outputs: none
647
- - Effects: none
648
- - Law: Event law and naming law
649
- - Conformance source: `cards.udl`
650
-
651
- ```json
652
- "card.issued"
653
- ```
654
-
655
- ## examples
656
-
657
- - Scope: action
658
- - UDL target: `examples`
659
- - Cardinality: many
660
- - Linear outputs: none
661
- - Effects: none
662
- - Law: Requirements-as-data law and closure law
663
- - Conformance source: `cards.udl`
664
-
665
- ```json
666
- [
667
- {
668
- "input": {
669
- "cardholderId": "chd_sandbox_customer0001",
670
- "tenantId": "ten_sandbox_cards000001"
671
- },
672
- "name": "activate_approved_cardholder"
673
- }
674
- ]
675
- ```
676
-
677
- ## input
678
-
679
- - Scope: action
680
- - UDL target: `input`
681
- - Cardinality: one
682
- - Linear outputs: none
683
- - Effects: none
684
- - Law: Requirements-as-data law and closure law
685
- - Conformance source: `attested.udl`
686
-
687
- ```json
688
- {
689
- "additionalProperties": false,
690
- "properties": {
691
- "amount": {
692
- "pattern": "^[1-9][0-9]{0,17}$",
693
- "type": "string",
694
- "x-hyperscale-currency": "SAR"
695
- }
696
- },
697
- "required": [
698
- "amount"
699
- ],
700
- "type": "object"
701
- }
702
- ```
703
-
704
- ## moves
705
-
706
- - Scope: action
707
- - UDL target: `moves`
708
- - Cardinality: many
709
- - Linear outputs: none
710
- - Effects: moves.movement class per element; holds.reserve per element
711
- - Law: One-spine law and closure law
712
- - Conformance source: `agent-description.udl`
713
-
714
- ```json
715
- []
716
- ```
717
-
718
- ## payout
719
-
720
- - Scope: action
721
- - UDL target: `payout`
722
- - Cardinality: one
723
- - Linear outputs: none
724
- - Effects: moves.payout.external per clause
725
- - Law: One-spine law and closure law
726
- - Conformance source: `compiled-watch-club.udl`
727
-
728
- ```json
729
- {
730
- "amount": "refs.netPayable",
731
- "beneficiaryField": "payoutBeneficiaryId",
732
- "beneficiaryPartyField": "payoutDestinationAccountId",
733
- "capture": "payoutId",
734
- "currencyField": "currency",
735
- "sourceAccountField": "clubAccountId",
736
- "speed": "standard"
737
- }
738
- ```
739
-
740
- ## piece plan
741
-
742
- - Scope: instrument
743
- - UDL target: `piecePlan`
744
- - Cardinality: one
745
- - Linear outputs: none
746
- - Effects: none
747
- - Law: Requirements-as-data law and closure law
748
- - Conformance source: `piece-plan-calls.udl`
749
-
750
- ```json
751
- {
752
- "fund_order": [
753
- "p1",
754
- "p2"
755
- ],
756
- "id": "split_plan",
757
- "pieces": [
758
- {
759
- "amount": "p1Amount",
760
- "id": "p1",
761
- "refund_to": "p1Refund",
762
- "release_to": "p1Release"
763
- },
764
- {
765
- "amount": "p2Amount",
766
- "id": "p2",
767
- "refund_to": "p2Refund",
768
- "release_to": "p2Release"
769
- }
770
- ],
771
- "refund_order": [
772
- "p1"
773
- ],
774
- "release_order": [
775
- "p1",
776
- "p2"
777
- ],
778
- "total": "totalAmount",
779
- "unfund_order": [
780
- "p2",
781
- "p1"
782
- ]
783
- }
784
- ```
785
-
786
- ## piece stage
787
-
788
- - Scope: action
789
- - UDL target: `pieceStage`
790
- - Cardinality: one
791
- - Linear outputs: none
792
- - Effects: none
793
- - Law: Requirements-as-data law and closure law
794
- - Conformance source: `piece-plan-calls.udl`
795
-
796
- ```json
797
- {
798
- "plan": "split_plan",
799
- "stage": "fund"
800
- }
801
- ```
802
-
803
- ## port
804
-
805
- - Scope: action
806
- - UDL target: `port`
807
- - Cardinality: one
808
- - Linear outputs: none
809
- - Effects: decides.tenant_port per clause
810
- - Law: Requirements-as-data law and closure law
811
- - Conformance source: `attested.udl`
812
-
813
- ```json
814
- {
815
- "allowedParties": [
816
- "decider"
817
- ],
818
- "capture": "decidedBy"
819
- }
820
- ```
821
-
822
- ## principal
823
-
824
- - Scope: action
825
- - UDL target: `principal`
826
- - Cardinality: one
827
- - Linear outputs: none
828
- - Effects: none
829
- - Law: Requirements-as-data law and closure law
830
- - Conformance source: `complete-contract.udl`
831
-
832
- ```json
833
- "user_session"
834
- ```
835
-
836
- ## public action
837
-
838
- - Scope: action
839
- - UDL target: `publicAction`
840
- - Cardinality: one
841
- - Linear outputs: none
842
- - Effects: none
843
- - Law: Event law and naming law
844
- - Conformance source: `compiled-crowdfunding.udl`
845
-
846
- ```json
847
- "abandonLenderCommitment"
848
- ```
849
-
850
- ## reconcile
851
-
852
- - Scope: action
853
- - UDL target: `reconcile`
854
- - Cardinality: many
855
- - Linear outputs: none
856
- - Effects: reads.reconcile per element
857
- - Law: Requirements-as-data law and closure law
858
- - Conformance source: `compiled-watch-club.udl`
859
-
860
- `exception.amountField` must name a required money field on the exception child. `exception.reasonField` must name a required text field on that child. UDL evolution supplies no default for either name.
861
-
862
- ```json
863
- [
864
- {
865
- "amount": "refs.netPayable",
866
- "capture": "settlementEvidenceId",
867
- "counterpartyRef": "payoutId",
868
- "currencyField": "currency",
869
- "direction": "debit",
870
- "evidence": "statement_line",
871
- "exception": {
872
- "amountField": "amount",
873
- "childInstrumentId": "seller_payout_debit_adjustment",
874
- "maxOpen": 1,
875
- "reasonField": "adjustmentReference",
876
- "refField": "sellerPayoutId"
877
- },
878
- "match": {
879
- "law": "exact"
880
- },
881
- "within": {
882
- "offset": "P30D"
883
- }
884
- }
885
- ]
886
- ```
887
-
888
- ## computes remainder
889
-
890
- - Scope: action
891
- - UDL target: `remainder`
892
- - Cardinality: one
893
- - Linear outputs: `amountRef`
894
- - Effects: none
895
- - Law: Requirements-as-data law and closure law
896
- - Conformance source: `complete-contract.udl`
897
-
898
- ```json
899
- {
900
- "amountRef": "remainingAmount",
901
- "onZero": "refuse",
902
- "totalPath": "fields.amount"
903
- }
904
- ```
905
-
906
- ## requires aggregate
907
-
908
- - Scope: action
909
- - UDL target: `requiresAggregate`
910
- - Cardinality: many
911
- - Linear outputs: none
912
- - Effects: reads.requires_aggregate per clause
913
- - Law: Requirements-as-data law and closure law
914
- - Conformance source: `compiled-crowdfunding.udl`
915
-
916
- ```json
917
- [
918
- {
919
- "check": {
920
- "amountField": "amount",
921
- "kind": "sum_exactly",
922
- "targetField": "installment1Amount"
923
- },
924
- "instrumentId": "borrower_loan_installment_1_payment",
925
- "over": "children",
926
- "refField": "borrowerLoanId",
927
- "statuses": [
928
- "paid"
929
- ]
930
- }
931
- ]
932
- ```
933
-
934
- ## requires checks
935
-
936
- - Scope: action
937
- - UDL target: `requiresChecks`
938
- - Cardinality: many
939
- - Linear outputs: none
940
- - Effects: reads.requires_checks per clause
941
- - Law: Requirements-as-data law and closure law
942
- - Conformance source: `complete-contract.udl`
943
-
944
- ```json
945
- [
946
- {
947
- "checkKind": "identity_verification",
948
- "family": "national_identity",
949
- "maxAge": "P30D",
950
- "statuses": [
951
- "completed"
952
- ],
953
- "subjectField": "subjectId"
954
- }
955
- ]
956
- ```
957
-
958
- ## requires drained
959
-
960
- - Scope: action
961
- - UDL target: `requiresDrainedAccount`
962
- - Cardinality: one
963
- - Linear outputs: none
964
- - Effects: none
965
- - Law: Requirements-as-data law and closure law
966
- - Conformance source: `commerce-escrow.udl`
967
-
968
- ```json
969
- {
970
- "path": "refs.escrowAccountId"
971
- }
972
- ```
973
-
974
- ## requires exposure
975
-
976
- - Scope: action
977
- - UDL target: `requiresExposure`
978
- - Cardinality: many
979
- - Linear outputs: none
980
- - Effects: none
981
- - Law: Requirements-as-data law and closure law
982
- - Conformance source: `compiled-crowdfunding.udl`
983
-
984
- ```json
985
- [
986
- {
987
- "amountField": "amount",
988
- "anchorField": "borrowerLoanId",
989
- "capField": "installment1Amount",
990
- "capOnAnchor": true,
991
- "childInstrumentId": "borrower_loan_installment_1_payment",
992
- "statuses": [
993
- "paid"
994
- ]
995
- }
996
- ]
997
- ```
998
-
999
- ## requires refs
1000
-
1001
- - Scope: action
1002
- - UDL target: `requiresRefs`
1003
- - Cardinality: many
1004
- - Linear outputs: none
1005
- - Effects: reads.requires_refs per clause
1006
- - Law: Requirements-as-data law and closure law
1007
- - Conformance source: `attested.udl`
1008
-
1009
- ```json
1010
- [
1011
- {
1012
- "attests": {
1013
- "action": "fields.actionName",
1014
- "consume": "consume",
1015
- "digest": "fields.digest",
1016
- "expiresAt": "fields.expiry",
1017
- "instrument": "fields.requestInstrument",
1018
- "party": "decider",
1019
- "role": "fields.role"
1020
- },
1021
- "field": "approvalId",
1022
- "match": {
1023
- "instrumentInstanceId": "fields.requestId"
1024
- },
1025
- "statuses": [
1026
- "approved"
1027
- ]
1028
- }
1029
- ]
1030
- ```
1031
-
1032
- ## sandbox failure point
1033
-
1034
- - Scope: action
1035
- - UDL target: `sandboxFailurePoint`
1036
- - Cardinality: one
1037
- - Linear outputs: none
1038
- - Effects: none
1039
- - Law: Requirements-as-data law and closure law
1040
- - Conformance source: `commerce-escrow.udl`
1041
-
1042
- ```json
1043
- "funding"
1044
- ```
1045
-
1046
- ## sets at
1047
-
1048
- - Scope: action
1049
- - UDL target: `setsAt`
1050
- - Cardinality: one
1051
- - Linear outputs: none
1052
- - Effects: none
1053
- - Law: Time law and closure law
1054
- - Conformance source: `compiled-crowdfunding.udl`
1055
-
1056
- ```json
1057
- {
1058
- "field": "installment1DelinquentAfter",
1059
- "marker": true,
1060
- "offset": "PT1S"
1061
- }
1062
- ```
1063
-
1064
- ## computes signed_sum
1065
-
1066
- - Scope: action
1067
- - UDL target: `signedSum`
1068
- - Cardinality: one
1069
- - Linear outputs: `amountRef`
1070
- - Effects: none
1071
- - Law: Requirements-as-data law and closure law
1072
- - Conformance source: `compiled-watch-club.udl`
1073
-
1074
- ```json
1075
- {
1076
- "amountRef": "netPayable",
1077
- "onNegative": "refuse",
1078
- "onZero": "refuse",
1079
- "sources": [
1080
- {
1081
- "amountField": "amount",
1082
- "instrumentId": "seller_payout_capture_entry",
1083
- "refField": "sellerPayoutId",
1084
- "sign": "add",
1085
- "statuses": [
1086
- "accrued"
1087
- ],
1088
- "subtotalRef": "grossCaptureAmount"
1089
- },
1090
- {
1091
- "amountField": "amount",
1092
- "instrumentId": "seller_payout_credit_adjustment",
1093
- "refField": "sellerPayoutId",
1094
- "sign": "add",
1095
- "statuses": [
1096
- "applied"
1097
- ],
1098
- "subtotalRef": "creditAdjustmentAmount"
1099
- },
1100
- {
1101
- "amountField": "amount",
1102
- "instrumentId": "seller_payout_debit_adjustment",
1103
- "refField": "sellerPayoutId",
1104
- "sign": "subtract",
1105
- "statuses": [
1106
- "applied"
1107
- ],
1108
- "subtotalRef": "debitAdjustmentAmount"
1109
- }
1110
- ]
1111
- }
1112
- ```
1113
-
1114
- ## steps
1115
-
1116
- - Scope: action
1117
- - UDL target: `steps`
1118
- - Cardinality: many
1119
- - Linear outputs: none
1120
- - Effects: none
1121
- - Law: One-spine law and closure law
1122
- - Conformance source: `agent-description.udl`
1123
-
1124
- ```json
1125
- []
1126
- ```
1127
-
1128
- ## summary
1129
-
1130
- - Scope: action
1131
- - UDL target: `summary`
1132
- - Cardinality: one
1133
- - Linear outputs: none
1134
- - Effects: none
1135
- - Law: One-sentence law, uniform object law, and naming law
1136
- - Conformance source: `agent-description.udl`
1137
-
1138
- ```json
1139
- "Close the note."
1140
- ```
1141
-
1142
- ## updates
1143
-
1144
- - Scope: action
1145
- - UDL target: `updates`
1146
- - Cardinality: many
1147
- - Linear outputs: none
1148
- - Effects: none
1149
- - Law: Requirements-as-data law and closure law
1150
- - Conformance source: `commerce-escrow.udl`
1151
-
1152
- ```json
1153
- [
1154
- "escrowOrderId"
1155
- ]
1156
- ```
1157
-
1158
- ## notify
1159
-
1160
- - Scope: action
1161
- - UDL target: `effects.notifies`
1162
- - Cardinality: many
1163
- - Linear outputs: none
1164
- - Effects: notifies.value from channel per element
1165
- - Law: Requirements-as-data law and closure law
1166
- - Conformance source: `effect-signatures.udl`
1167
-
1168
- ```json
1169
- [
1170
- {
1171
- "channel": "email",
1172
- "role": "beneficiary",
1173
- "signature": "notifies.email",
1174
- "source": "effects.notifies[0]"
1175
- }
1176
- ]
1177
- ```
1178
-
1179
- ## agent description
1180
-
1181
- - Scope: instrument
1182
- - UDL target: `agentDescription`
1183
- - Cardinality: one
1184
- - Linear outputs: none
1185
- - Effects: none
1186
- - Law: Requirements-as-data law and closure law
1187
- - Conformance source: `agent-description.udl`
1188
-
1189
- ```json
1190
- "Close a note that has already been filed. Takes the note id and nothing else, and moves no money."
1191
- ```
1192
-
1193
- ## aggregate invariants
1194
-
1195
- - Scope: instrument
1196
- - UDL target: `aggregateInvariants`
1197
- - Cardinality: many
1198
- - Linear outputs: none
1199
- - Effects: none
1200
- - Law: Closure law
1201
- - Conformance source: `compiled-crowdfunding.udl`
1202
-
1203
- ```json
1204
- [
1205
- {
1206
- "childField": "amount",
1207
- "childInstrumentId": "borrower_loan_installment_1_payment",
1208
- "childRefField": "borrowerLoanId",
1209
- "childStatuses": [
1210
- "paid"
1211
- ],
1212
- "parentField": "installment1Amount"
1213
- },
1214
- {
1215
- "childField": "amount",
1216
- "childInstrumentId": "borrower_loan_installment_2_payment",
1217
- "childRefField": "borrowerLoanId",
1218
- "childStatuses": [
1219
- "paid"
1220
- ],
1221
- "parentField": "installment2Amount"
1222
- }
1223
- ]
1224
- ```
1225
-
1226
- ## caller parked states
1227
-
1228
- - Scope: instrument
1229
- - UDL target: `callerParkedStates`
1230
- - Cardinality: one
1231
- - Linear outputs: none
1232
- - Effects: none
1233
- - Law: Time law and closure law
1234
- - Conformance source: `cards.udl`
1235
-
1236
- ```json
1237
- {
1238
- "active": "a cardholder in good standing stays active until the issuer or holder acts",
1239
- "pending": "activation follows the issuer's verification outcome",
1240
- "suspended": "reinstatement or closure is an issuer decision"
1241
- }
1242
- ```
1243
-
1244
- ## description
1245
-
1246
- - Scope: instrument
1247
- - UDL target: `description`
1248
- - Cardinality: one
1249
- - Linear outputs: none
1250
- - Effects: none
1251
- - Law: One-sentence law, uniform object law, and naming law
1252
- - Conformance source: `cards.udl`
1253
-
1254
- ```json
1255
- "Approves the customer to hold and use cards."
1256
- ```
1257
-
1258
- ## dials
1259
-
1260
- - Scope: instrument
1261
- - UDL target: `dials`
1262
- - Cardinality: many
1263
- - Linear outputs: none
1264
- - Effects: none
1265
- - Law: Requirements-as-data law and closure law
1266
- - Conformance source: `cards.udl`
1267
-
1268
- ```json
1269
- [
1270
- {
1271
- "field": "expiresAt",
1272
- "key": "authorization_window",
1273
- "kind": "window",
1274
- "maxOffset": "P30D",
1275
- "summary": "Grace beyond the authorization expiry timestamp before an uncaptured hold expires.",
1276
- "title": "Authorization window"
1277
- },
1278
- {
1279
- "action": "approve",
1280
- "key": "policy_decision_deadline_ms",
1281
- "kind": "decision_deadline_ms",
1282
- "maxMs": 5000,
1283
- "minMs": 500,
1284
- "summary": "How long approve waits for the card policy's just-in-time decision before the timeout default declines.",
1285
- "title": "Policy decision deadline"
1286
- }
1287
- ]
1288
- ```
1289
-
1290
- ## distinct parties
1291
-
1292
- - Scope: instrument
1293
- - UDL target: `distinctParties`
1294
- - Cardinality: one
1295
- - Linear outputs: none
1296
- - Effects: none
1297
- - Law: Closure law
1298
- - Conformance source: `compiled-watch-club.udl`
1299
-
1300
- ```json
1301
- true
1302
- ```
1303
-
1304
- ## computes derived
1305
-
1306
- - Scope: instrument
1307
- - UDL target: `derivedAmounts`
1308
- - Cardinality: many
1309
- - Linear outputs: none
1310
- - Effects: none
1311
- - Law: One-spine law and closure law
1312
- - Conformance source: `compiled-crowdfunding.udl`
1313
-
1314
- ```json
1315
- [
1316
- {
1317
- "field": "platformFee",
1318
- "rounding": "floor",
1319
- "rule": {
1320
- "bps": 200,
1321
- "kind": "percentage_of"
1322
- },
1323
- "sourceField": "principalAmount"
1324
- }
1325
- ]
1326
- ```
1327
-
1328
- ## computes fees
1329
-
1330
- - Scope: instrument
1331
- - UDL target: `feeRules`
1332
- - Cardinality: many
1333
- - Linear outputs: none
1334
- - Effects: none
1335
- - Law: One-spine law and closure law
1336
- - Conformance source: `compiled-watch-club.udl`
1337
-
1338
- ```json
1339
- [
1340
- {
1341
- "amountField": "checkoutFee",
1342
- "baseField": "purchasePrice",
1343
- "bearerField": "memberAccountId",
1344
- "position": "on_top",
1345
- "rule": {
1346
- "currencyField": "currency",
1347
- "field": "checkoutFee",
1348
- "kind": "exact"
1349
- }
1350
- },
1351
- {
1352
- "amountField": "carvedFeeAmount",
1353
- "baseField": "purchasePrice",
1354
- "bearerField": "sellerAccountId",
1355
- "position": "carved",
1356
- "rule": {
1357
- "kind": "tiered",
1358
- "tiers": [
1359
- {
1360
- "fromInclusive": "0",
1361
- "rule": {
1362
- "bps": 100,
1363
- "kind": "bps"
1364
- },
1365
- "toExclusive": "10000"
1366
- },
1367
- {
1368
- "fromInclusive": "10000",
1369
- "rule": {
1370
- "currencyField": "currency",
1371
- "field": "highValueFee",
1372
- "kind": "exact"
1373
- }
1374
- }
1375
- ]
1376
- }
1377
- }
1378
- ]
1379
- ```
1380
-
1381
- ## id prefix
1382
-
1383
- - Scope: instrument
1384
- - UDL target: `idPrefix`
1385
- - Cardinality: one
1386
- - Linear outputs: none
1387
- - Effects: none
1388
- - Law: One-sentence law, uniform object law, and naming law
1389
- - Conformance source: `agent-description.udl`
1390
-
1391
- ```json
1392
- "note"
1393
- ```
1394
-
1395
- ## nav
1396
-
1397
- - Scope: instrument
1398
- - UDL target: `nav`
1399
- - Cardinality: many
1400
- - Linear outputs: none
1401
- - Effects: none
1402
- - Law: One-sentence law, uniform object law, and naming law
1403
- - Conformance source: `cards.udl`
1404
-
1405
- ```json
1406
- [
1407
- "Blueprints",
1408
- "Cardholders"
1409
- ]
1410
- ```
1411
-
1412
- ## partitions
1413
-
1414
- - Scope: instrument
1415
- - UDL target: `partitions`
1416
- - Cardinality: many
1417
- - Linear outputs: none
1418
- - Effects: none
1419
- - Law: One-spine law and closure law
1420
- - Conformance source: `compiled-crowdfunding.udl`
1421
-
1422
- ```json
1423
- [
1424
- {
1425
- "pieceFields": [
1426
- "installment1Amount",
1427
- "installment2Amount"
1428
- ],
1429
- "totalField": "principalAmount"
1430
- }
1431
- ]
1432
- ```
1433
-
1434
- ## subject
1435
-
1436
- - Scope: instrument
1437
- - UDL target: `subject`
1438
- - Cardinality: one
1439
- - Linear outputs: none
1440
- - Effects: none
1441
- - Law: Closure law
1442
- - Conformance source: `commerce-escrow.udl`
1443
-
1444
- ```json
1445
- {
1446
- "kinds": [
1447
- "vehicle",
1448
- "merchandise"
1449
- ]
1450
- }
1451
- ```
1452
-
1453
- ## summary
1454
-
1455
- - Scope: instrument
1456
- - UDL target: `summary`
1457
- - Cardinality: one
1458
- - Linear outputs: none
1459
- - Effects: none
1460
- - Law: One-sentence law, uniform object law, and naming law
1461
- - Conformance source: `agent-description.udl`
1462
-
1463
- ```json
1464
- "Close the note."
1465
- ```
1466
-
1467
- ## surface visibility
1468
-
1469
- - Scope: instrument
1470
- - UDL target: `surfaceVisibility`
1471
- - Cardinality: one
1472
- - Linear outputs: none
1473
- - Effects: none
1474
- - Law: One-sentence law, uniform object law, and naming law
1475
- - Conformance source: `complete-contract.udl`
1476
-
1477
- ```json
1478
- "public"
1479
- ```
1480
-
1481
- ## template binding
1482
-
1483
- - Scope: instrument
1484
- - UDL target: `templateBinding`
1485
- - Cardinality: one
1486
- - Linear outputs: none
1487
- - Effects: none
1488
- - Law: Requirements-as-data law and closure law
1489
- - Conformance source: `vocabulary.udl`
1490
-
1491
- ```json
1492
- {
1493
- "id": "assessment",
1494
- "parameters": {
1495
- "cost": true
1496
- }
1497
- }
1498
- ```
1499
-
1500
- ## template id
1501
-
1502
- - Scope: instrument
1503
- - UDL target: `templateId`
1504
- - Cardinality: one
1505
- - Linear outputs: none
1506
- - Effects: none
1507
- - Law: One-sentence law, uniform object law, and naming law
1508
- - Conformance source: `cards.udl`
1509
-
1510
- ```json
1511
- "wallet_cards"
1512
- ```
1513
-
1514
- ## title
1515
-
1516
- - Scope: instrument
1517
- - UDL target: `title`
1518
- - Cardinality: one
1519
- - Linear outputs: none
1520
- - Effects: none
1521
- - Law: One-sentence law, uniform object law, and naming law
1522
- - Conformance source: `agent-description.udl`
1523
-
1524
- ```json
1525
- "Note"
1526
- ```
1527
-
1528
- ## update
1529
-
1530
- - Scope: instrument
1531
- - UDL target: `update`
1532
- - Cardinality: one
1533
- - Linear outputs: none
1534
- - Effects: none
1535
- - Law: Closure law
1536
- - Conformance source: `cards.udl`
1537
-
1538
- ```json
1539
- {
1540
- "examples": [
1541
- {
1542
- "input": {
1543
- "cardholderId": "chd_sandbox_customer0001",
1544
- "displayName": "Noura Al Saud",
1545
- "email": "noura@example.test",
1546
- "tenantId": "ten_sandbox_cards000001"
1547
- },
1548
- "name": "update_cardholder_contact"
1549
- }
1550
- ],
1551
- "fields": [
1552
- "displayName",
1553
- "email",
1554
- "phoneNumber"
1555
- ],
1556
- "states": [
1557
- "pending",
1558
- "active",
1559
- "suspended"
1560
- ]
1561
- }
1562
- ```
1563
-
1564
- ## request authority
1565
-
1566
- - Scope: action
1567
- - UDL target: `requestAuthority`
1568
- - Cardinality: one
1569
- - Linear outputs: none
1570
- - Effects: none
1571
- - Law: Requirements-as-data law and closure law
1572
- - Conformance source: `attested.udl`
1573
-
1574
- ```json
1575
- {
1576
- "actionField": "actionName",
1577
- "digestField": "digest",
1578
- "expiresField": "expiry",
1579
- "inputField": "requestInput",
1580
- "instanceField": "requestId",
1581
- "instrumentField": "requestInstrument",
1582
- "party": "decider",
1583
- "roleField": "role"
1584
- }
1585
- ```