@hyperscale0/udl 2.6.0 → 3.0.0

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 +2 -322
  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 +147 -14
  33. package/package.json +7 -11
  34. package/spec/README.md +151 -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 +0,0 @@
1
- {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"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"}
@@ -1,165 +0,0 @@
1
- # Funding custody and receipt distributions
2
-
3
- These optional UDL clauses preserve documents that do not emit them. Existing document shapes do not gain default fields. A host without their
4
- admission implementation must refuse them before a transition or posting.
5
-
6
- ## Admission order and locks
7
-
8
- Resolve requiresRefs.bind from stored referenced instances before validating
9
- bound required fields or deadlines. Wallet ownership must match the investor.
10
- A non-party product_escrow account field needs exactly one mandatory create-time
11
- refs binding, no caller action input and no later update. Account role alone grants
12
- no custody authority.
13
-
14
- requiresExposure.groupField selects only child tickets whose stored investor
15
- account equals the candidate's investor. minimumField selects the anchor's
16
- minimum amount. Under the anchor lock, candidate amount must meet that minimum,
17
- and live matching tickets plus the candidate must not exceed the anchor cap.
18
- The existing total-target aggregate remains separate. closeBy is authoritative;
19
- committedAt cannot extend admission. A withdrawn ticket cannot be collected or
20
- refunded again. Failure returns every remaining committed ticket to its bound wallet.
21
-
22
- ## Funding
23
-
24
- Lock the round, selected committed tickets, target obligation and source/destination
25
- accounts together. Require the target total and a created obligation. Compare every
26
- terms mapping against the stored obligation. Claim the obligation for exactly one
27
- funding snapshot across rounds. Freeze sorted ticket identities, investor accounts,
28
- original wallet accounts, amounts, total principal, currency and target obligation.
29
- Post that principal once from the captured round hold into its bound funding account.
30
- Retire each selected ticket through engineOwned collect in the same transaction.
31
- Collection cannot run from a public action, scheduler or separate posting path.
32
- Activation marks target success only and moves no principal. Priced disbursement
33
- still requires the priced authority; funding never pays the borrower.
34
-
35
- ## Receipt distribution
36
-
37
- Lock the distribution, immutable funding snapshot, allocation receipt and all affected
38
- accounts. The receipt must belong to the snapshot's obligation and currency. Consume
39
- its identity globally once per mode, independent of distribution instance or alias.
40
- Reject caller-provided principal, profit, ticket weights and replacement wallet accounts.
41
- Only allocation receipt principal and earned profit participate; fines and evidenced
42
- cost are excluded. Require the source accounts recorded by the receipt to hold those
43
- amounts. The receipt identifies principal and profit source accounts; consume each
44
- component once and post all destinations atomically.
45
-
46
- For cash, fee = floor(profit * feeBps / 10000), VAT = floor(fee * vatBps / 10000).
47
- Distributable = principal + profit - fee - VAT. Each ticket gets
48
- floor(distributable * ticketAmount / snapshotPrincipal). Pay fee, VAT and the remaining
49
- minor units to the immutable named beneficiary accounts. New receipts may distribute
50
- again; a repeated receipt may not. The public arithmetic helper returns these amounts,
51
- not a payment authority or consumed receipt.
52
-
53
- For loss, accept only a write_off receipt's consumed principal. Fee and VAT must be
54
- zero. Use exact frozen ticket ratios and assign remaining minor units by largest
55
- remainder, breaking ties by ticket identity. Record investor loss rows without any
56
- cash posting. Unearned profit cancellation is not investor principal loss.
57
-
58
- ## Emitted shapes
59
-
60
- ### Commitment admission
61
-
62
- ```json
63
- {
64
- "requiresRefs": [
65
- {
66
- "bind": {
67
- "walletAccountId": "refs.walletAccountId"
68
- },
69
- "field": "walletId",
70
- "match": {
71
- "fields.investorAccountId": "fields.holderAccountId",
72
- "fields.currency": "fields.currency"
73
- },
74
- "statuses": ["active"]
75
- },
76
- {
77
- "bind": {
78
- "currency": "fields.currency",
79
- "escrowAccountId": "refs.escrowAccountId",
80
- "closeBy": "fields.closeBy"
81
- },
82
- "field": "fundingRoundId",
83
- "statuses": ["open"]
84
- }
85
- ],
86
- "requiresExposure": [
87
- {
88
- "groupField": "investorAccountId",
89
- "minimumField": "minimumTicket",
90
- "amountField": "amount",
91
- "anchorField": "fundingRoundId",
92
- "capField": "maximumTicket",
93
- "capOnAnchor": true,
94
- "childInstrumentId": "funding_commitment",
95
- "statuses": ["committed"]
96
- }
97
- ],
98
- "deadline": {
99
- "field": "closeBy"
100
- }
101
- }
102
- ```
103
-
104
- ### Funding
105
-
106
- ```json
107
- {
108
- "obligationField": "obligationId",
109
- "ticketInstrumentId": "funding_commitment",
110
- "ticketRefField": "fundingRoundId",
111
- "ticketAmountField": "amount",
112
- "ticketInvestorField": "investorAccountId",
113
- "ticketAccountField": "walletAccountId",
114
- "ticketStatus": "committed",
115
- "collectAction": "collect",
116
- "principalField": "targetAmount",
117
- "sourceAccountPath": "refs.escrowAccountId",
118
- "destinationAccountField": "fundingAccountId",
119
- "terms": {
120
- "targetAmount": "principal",
121
- "fixedProfit": "fixedProfit",
122
- "installmentCount": "installmentCount",
123
- "earningRule": "earningRule",
124
- "borrowerAccountId": "borrowerAccountId",
125
- "currency": "currency"
126
- },
127
- "capture": "fundingSnapshot"
128
- }
129
- ```
130
-
131
- ### Cash distribution
132
-
133
- ```json
134
- {
135
- "roundField": "roundId",
136
- "snapshotRef": "fundingSnapshot",
137
- "receiptField": "receiptId",
138
- "receiptPath": "refs.allocationReceipt",
139
- "mode": "cash",
140
- "feeBps": 100,
141
- "vatBps": 1500,
142
- "feeAccountField": "feeAccountId",
143
- "taxAccountField": "taxAccountId",
144
- "residualAccountField": "residualAccountId",
145
- "capture": "distributionReceipt"
146
- }
147
- ```
148
-
149
- ### Loss distribution
150
-
151
- ```json
152
- {
153
- "roundField": "roundId",
154
- "snapshotRef": "fundingSnapshot",
155
- "receiptField": "receiptId",
156
- "receiptPath": "refs.writeOffReceipt",
157
- "mode": "loss",
158
- "feeBps": 0,
159
- "vatBps": 0,
160
- "feeAccountField": "feeAccountId",
161
- "taxAccountField": "taxAccountId",
162
- "residualAccountField": "residualAccountId",
163
- "capture": "distributionReceipt"
164
- }
165
- ```
@@ -1,37 +0,0 @@
1
- # A document
2
-
3
- A UDL document names one product and contains its subjects and instruments. Each instrument declares stored fields, required fields, a lifecycle, and the actions that create or change an instance.
4
-
5
- This is the smallest admitted document. `create` starts at `open`. `close` follows the matching lifecycle transition and ends at `closed`.
6
-
7
- ```json
8
- {
9
- "instruments": [
10
- {
11
- "actionOrder": ["close", "create"],
12
- "fields": { "reference": { "type": "string" } },
13
- "id": "note",
14
- "idPrefix": "note",
15
- "lifecycle": {
16
- "initial": "open",
17
- "states": ["open", "closed"],
18
- "transitions": { "close": { "from": ["open"], "to": "closed" } }
19
- },
20
- "required": ["reference"],
21
- "summary": "A note a tenant files and later closes.",
22
- "title": "Note",
23
- "actions": {
24
- "close": { "moves": [], "steps": [], "summary": "Close the note." },
25
- "create": { "moves": [], "steps": [], "summary": "File the note." }
26
- }
27
- }
28
- ],
29
- "product": "minimal",
30
- "subjects": [],
31
- "title": "Minimal",
32
- "udl": 1,
33
- "version": 1
34
- }
35
- ```
36
-
37
- The JSON Schema checks the written shape. `validateUdl` then checks names, references, lifecycle reachability, and the money graph. A document has no canonical form until both checks pass.
@@ -1,23 +0,0 @@
1
- # Money steps
2
-
3
- UDL seals internal ledger work to seven kernel operations. Four instructions create, reserve, post, or void an internal transfer. Three account instructions provision an escrow account, freeze an account, or unfreeze it.
4
-
5
- A step names an operation and binds its inputs from action input, constants, or instance fields and refs. `capture` writes selected operation output into durable refs. A later step can read those refs.
6
-
7
- ```jsonc
8
- {
9
- "operation": "internal_transfer.reserve",
10
- "bind": {
11
- "sourceAccountId": { "from": "instance", "path": "fields.payerAccountId" },
12
- "destinationAccountId": {
13
- "from": "instance",
14
- "path": "refs.escrowAccountId",
15
- },
16
- "amount": { "from": "instance", "path": "fields.amount" },
17
- "currency": { "from": "const", "value": "SAR" },
18
- },
19
- "capture": { "transferId": "reservationId" },
20
- }
21
- ```
22
-
23
- `payout` is an execution intent, not an eighth kernel operation. It reads stored money and beneficiary data, then captures a durable payout reference. A later system action can reconcile that payout against settlement evidence.
@@ -1,18 +0,0 @@
1
- # The ten laws
2
-
3
- The schema defines shape. These laws define meaning.
4
-
5
- 1. Every UDL concept fits in one sentence.
6
- 2. Provider formats and operating machinery stay below UDL. `reconcile` names settlement evidence against a declared provider-side row. It does not model the provider file or transport.
7
- 3. Every state change emits an event.
8
- 4. Internal ledger money uses the seven sealed operations.
9
- 5. Every instance has the same identity, status, timestamp, and metadata frame. Money uses integer minor-unit strings plus a currency.
10
- 6. Requirements such as due time, checks, references, quote commitment, and reconciliation are data.
11
- 7. A stored definition evolves by additive change only.
12
- 8. Instruments, actions, operations, and fields follow their declared naming patterns.
13
- 9. Real delays appear as statuses and timestamps.
14
- 10. Every state, reference, gate, and funded path closes inside the document.
15
-
16
- A reconcile exception names the child fields that receive the unmatched amount and its reason. `exception.amountField` must be a required money field on the child. `exception.reasonField` must be a required plain text field. A plain text field has `type: "string"` and no `pattern`, `format`, or `enum`. Admission rejects a missing or optional field, the wrong type, or a child that does not belong to the declaring instrument.
17
-
18
- The [diagnostic reference](../reference/diagnostics.md) lists every stable refusal code. The [specification](../../spec/README.md) carries the normative prose for each law.
@@ -1,36 +0,0 @@
1
- # Fees and remainder
2
-
3
- Fee rules derive named amounts from a stored base amount. Partitions state how cancellation or reversal divides held money. A remainder clause computes one amount after named deductions and captures it under `amountRef`.
4
-
5
- ```jsonc
6
- {
7
- "remainder": {
8
- "amountRef": "sellerNet",
9
- "from": "fields.amount",
10
- "subtract": ["refs.platformFee"],
11
- },
12
- }
13
- ```
14
-
15
- Computed money has one author. A remainder, signed sum, distribution, quote, or derived amount must not compete with another clause for the same field or ref. A money move consumes the computed value once. The validator rejects missing sources, duplicate outputs, and terminal paths that strand funded value.
16
-
17
- ## Retained charges
18
-
19
- A quote may declare `chargeRetainedBy` with a role (`payer`, `beneficiary`, or `subjectHolder`). The named role keeps the quoted charge instead of moving it through an escrow payout action. The role must be declared under `parties`, its account field must be required and frozen by `fixes`, and the committing refund transfer must source funds directly from that account.
20
-
21
- ```jsonc
22
- {
23
- "quote": {
24
- "baseField": "premiumAmount",
25
- "chargeRef": "unwindPenalty",
26
- "chargeRetainedBy": "beneficiary",
27
- "charges": [{ "bps": 1000 }],
28
- "expires": { "offset": "PT15M" },
29
- "fixes": ["insurerAccountId", "policyholderAccountId", "premiumAmount"],
30
- "netDestinationField": "policyholderAccountId",
31
- "netRef": "policyRefund",
32
- },
33
- }
34
- ```
35
-
36
- The retained remainder stays in the source account and cannot be spent by subsequent instrument actions. Actions cannot consume the charge reference, and no self-transfer is permitted.
@@ -1,7 +0,0 @@
1
- # Checks, updates, and dials
2
-
3
- `requiresChecks` asks for current evidence from a declared provider family. The row names the check kind, acceptable statuses, subject field, and optional maximum age. Callers cannot replace the evidence with a boolean.
4
-
5
- `update` declares which stored fields an update operation may change. Action-level `updates` assign admitted values. Required creation fields, derived amounts, immutable bindings, and quote-frozen fields remain protected.
6
-
7
- Dials are named policy values with bounds. Clauses refer to a dial by id instead of copying a threshold into several actions. The document therefore exposes one reviewable setting for limits such as reconciliation tolerance.
@@ -1,11 +0,0 @@
1
- # Effects
2
-
3
- Effects are derived ABI rows. Authors declare clauses such as moves, decisions, schedules, reads, and notifications. The compiler derives the `effects` object from those clauses in vocabulary order.
4
-
5
- Each row records its source and a stable signature. Movement signatures include their cost class. Schedule signatures identify a deadline or due trigger. Read signatures identify the gate family. Notification rows retain channel and role.
6
-
7
- The validator derives the rows again and compares the complete object, including row order. A missing, extra, changed, or reordered row is a refusal. Derived effect subtrees do not count toward the authored node budget, but they still pass JSON, depth, and string limits.
8
-
9
- Cost tooling reads the same movement and hold signatures. Runtime hints may read the effect rows, but they cannot change the clauses that produced them.
10
-
11
- `quote` derives `holds.quote` and `schedules.expiry`. `reconcile` derives one `reads.reconcile` row per expectation. `commit` has no separate effect row. The committing action consumes the held quote through its `moves.*` row, so another consumption row would count the same work twice.
@@ -1,11 +0,0 @@
1
- # Evolution
2
-
3
- `diffValidatedUdlEvolution(live, next)` compares two admitted documents. The CLI exposes the same check as `udl diff live.udl next.udl`.
4
-
5
- Once instances exist, a new version may add optional fields, states, transitions, and actions. It may not remove or rename stored structure, tighten an admitted schema, change a money step, or reuse an existing version number for different executable meaning. The diff returns `UDL7xxx` issues with JSON paths.
6
-
7
- A migration is work outside the format. It reads stored instances under their original document, writes data required by a new document, and changes the pinned definition only after that work succeeds. Editing the document does not migrate data.
8
-
9
- Keep old canonical documents with stored instances. A format bump changes the literal `udl` value. A reader must keep explicit decoders for supported older formats rather than silently treating old bytes as the newest grammar.
10
-
11
- Evolution does not invent defaults for executable clause fields. In particular, it does not guess `reconcile.exception.amountField` or `reasonField` for an older snapshot. A candidate must name both fields and pass the current validator before the diff can judge it.
@@ -1,13 +0,0 @@
1
- # Implementing UDL
2
-
3
- A second implementation needs three independent checks.
4
-
5
- 1. Validate JSON shape against `spec/udl.schema.json`.
6
- 2. Enforce the whole-document laws and report the matching stable diagnostic code and JSON path.
7
- 3. Serialize admitted documents under the canonical bytes law.
8
-
9
- Run every conformance level. Valid cases must admit and match their canonical bytes and SHA-256 digest. Invalid cases must report every listed code and path. Evolution pairs must produce the listed `UDL7xxx` issues. An implementation may report more issues, but it may not omit a listed issue.
10
-
11
- Do not key behavior on diagnostic messages. Titles, details, and fixes can become clearer. Codes cannot change once published.
12
-
13
- Keep parsing, validation, canonicalization, and evolution comparison separate. That split prevents a diff from judging a candidate that the validator would refuse on its own.
@@ -1,132 +0,0 @@
1
- # Schedules, allocation and referenced state
2
-
3
- These clauses describe product laws. An engine must implement their admission semantics before accepting a document that uses them. The pure planners exported by this package calculate from trusted snapshots. They do not authenticate a caller, acquire locks, post money or claim an operation identity.
4
-
5
- ## Fields and dates
6
-
7
- `derivedAmounts` retains its ordered list of computations. `percentage_of.bps` accepts a literal rate or `{field}`. The field must be required, immutable and bounded to integer basis points between 1 and 9999. `minimum` reads `sourceField` and `capField` in one currency. Both operands must be immutable money available at creation, supplied as required fields, derived earlier or bound from a reference. Bind a referenced cap into a local field through `requiresRefs.bind`. Floor rounding still applies. A derived operand must appear before its consumer.
8
-
9
- For a SAR 200 premium, 1000 bps produces SAR 20 and 500 bps produces SAR 10. Costs of SAR 12, 25 and 40 with a stored SAR 25 cap produce SAR 12, 25 and 25.
10
-
11
- `due.offset`, `deadline.offset` and an aggregate's `dueBefore.offset` accept a literal duration or `{field}`. A stored duration must enumerate positive fixed ISO durations. It cannot contain months or a runtime expression. The enclosing record supplies the field: a due-clock aggregate reads each candidate child's date and duration. The engine compares date plus offset to one authoritative admission time, including when the scheduler has not updated the child's status.
12
-
13
- `dateOrder` compares two immutable date fields on one instrument with `<` or `<=`. Distinct `requiresRefs` gates may constrain the same reference. Engines apply all gates as a conjunction, including both interval bounds. Repeating an identical gate remains invalid.
14
-
15
- ## Aggregates and exact schedules
16
-
17
- `requiresAggregate.anchorField` selects the owner's parent reference. Candidate rows have their own `refField` pointing to that same parent. This lets a claim inspect premium slices of its cover without pretending those slices reference the claim. The engine locks the shared parent and the relevant row set. A `dueBefore` predicate applies before the aggregate check. A zero `count_exactly` over unpaid due slices refuses cover immediately at the clock boundary.
18
-
19
- `count_at_least.targetField` is an integer count. `ordered` checks strictly ascending dates in contiguous integer position order starting at 1. `schedule` additionally requires exact membership in the parent's immutable signed date list. No missing, extra or duplicate position is admitted. Every signed date must be strictly later than its predecessor. The engine reads the complete child set and checks statuses without discarding extra rows.
20
-
21
- For every declared schedule amount, each child receives integer division of the parent total by the signed date count. The first position receives the remainder. SAR 48,000 principal and SAR 2,400 profit over six dates therefore produce six SAR 8,000 principal and SAR 400 profit slices. Adding one minor unit to principal adds it to the first slice only. The date list is bounded to 366 entries.
22
-
23
- ## Held partitions and contributions
24
-
25
- A `partitions` declaration is an exact equality, not a spending allowance. Admission verifies numeric equality and immutability. The finance proof can replace one complete funded partition with another partition of the same total on the same held account. Partial funding and already spent pieces do not establish the total. The proof permits one substitution per funded batch, with no active holds or unrelated balance. Draining the account resets that limit.
26
-
27
- `contributions` declares a required immutable list, its positive amount and origin-account keys, and a total money field. The list contains at most 256 entries. `contributionStage` funds every entry into one held account atomically or refunds every entry from that account to its original origin. Origins cannot equal the held account. The sum must equal the declared total. The engine derives operation identity from the instrument, stage and entry index and records the same entries for recovery.
28
-
29
- The SAR 60,000 witness receives SAR 12,000 and SAR 48,000. Its outgoing partition is SAR 59,310 seller net, SAR 600 fee and SAR 90 tax. A refund returns SAR 12,000 and SAR 48,000 to the respective origins. Evidence attachment remains a separate action; do not update financial inputs during a cash action.
30
-
31
- ## Shared allocation and refunds
32
-
33
- An obligation's `allocation` declares its slice instrument, reference and eligible statuses, due date, position, earning-rule field and bucket sources. Principal and profit come from the slice. Cost and fine may come from separately assessed child records of that slice. Bucket array order is payment priority. Engines always walk slices by due date ascending, then declared position. There is no company-supplied sorting option. Multiple assessments of the same bucket use ascending stable assessment identity.
34
-
35
- A children bucket can select a concrete `instrumentId` or declare `template` and `parameters`. A template selector matches every instrument whose `templateBinding.id` equals that template and whose bound parameters include the requested scalar values. HSX retains string, integer and boolean arguments in `templateBinding.parameters` when it instantiates a template. Every matching alias must supply the declared slice reference, statuses, amount and destination fields. An uninstantiated selector contributes no assessments to a catalogue. The composed document validates the matching product instances.
36
-
37
- For `payoff` and `write_off`, omitting `allocate.refField` selects the executing instance. That instance must declare `allocation`. This does not introduce a caller-supplied self reference. Refund may also omit the reference and name its own earlier allocating action. Payment requires an explicit reference.
38
-
39
- An action's `allocate` references this declaration. Payment and payoff resolve amount, source account and payment identity from required immutable fields. Self payoff and assessment payment may instead use required action input keys. An operand must resolve to exactly one source. Self payoff may omit amountField so the planner computes the amount; a supplied amount must equal that figure. Assessment payment may omit amountField so the planner collects the assessment's whole remaining balance; a supplied amount above that balance refuses. The engine claims the identity under the obligation, reads remaining balances from prior allocation records and posts only positive allocations. It commits postings, consumption records, receipt and lifecycle state together. Recovery replays the recorded result. Direct collection and agency recovery must use the same declaration and assessment identities. A new channel or alias must not restore debt already consumed.
40
-
41
- A SAR 4,000 payment against an SAR 8,400 slice consumes principal only. A later SAR 4,400 consumes the remaining SAR 4,000 principal and SAR 400 profit. Cost and fine follow when the authored priority puts them after principal and profit. An overpayment refuses rather than disappearing into an unspecified balance.
42
-
43
- `allocate.mode: refund` names the original allocating action on self or through a typed instrument reference. An assessment record may omit `action` and reference its allocation owner instead: the engine reverses every consumption recorded against that assessment across the receipts that consumed it, its own collection, a repayment, a recovery or a payoff, each amount back to that receipt's payer, once. An optional immutable assessment identity selects one assessment's recorded allocation. The engine reverses those recorded postings to the original payer once. It does not accept new destinations or amounts and does not reopen consumed assessment debt. The refund identity is the original receipt plus assessment identity. A second refund refuses across aliases and lifecycle states.
44
-
45
- ## Earning and noncash cancellation
46
-
47
- The immutable earning-rule field chooses one of two language-defined rules:
48
-
49
- - `per_slice_on_due`: profit earns when its slice becomes due or is paid, whichever comes first.
50
- - `on_disbursement`: all profit earns when the obligation advances.
51
-
52
- The engine proves the advance and supplies trusted paid/consumed facts to the planner. `payoff` collects outstanding principal, earned profit and assessed charges. It cancels unearned future profit without a cash refund. After one SAR 8,400 slice is paid, the six-slice example has SAR 40,000 principal and SAR 2,000 future profit remaining. Under `per_slice_on_due`, payoff collects SAR 40,000 and cancels SAR 2,000. Under `on_disbursement`, payoff collects SAR 42,000.
53
-
54
- `write_off` posts no money. Cancellation rows distinguish principal loss and earned charges from unearned-profit cancellation. No daily accrual rule exists: UDL does not yet define an authoritative day-count convention.
55
-
56
- `remainder.subtractPaths` is a bounded list of immutable money operands subtracted alongside existing collected sums from `totalPath`. Negative results refuse; zero follows `onZero`. It is not unrestricted arithmetic over money.
57
-
58
- ## Referenced state and admission authority
59
-
60
- `transitionsRefs` invokes named noncash lifecycle actions on referenced instruments in the same transaction. The engine applies every target gate, authority check and lifecycle precondition. Cycles, repeated target actions and cash-bearing or input-dependent target actions refuse. A child can lapse its cover; a refund can cancel a referenced funding record and prevent future actions through that record's lifecycle gates. This does not replace durable approval consumption tied to a downstream operation.
61
-
62
- `cascade` executes a named lifecycle action on linked instances of another instrument inside the same transaction before evaluating the parent action's own admission gates. Target instances are identified either through caller input IDs via `inputField` or by matching a parent reference on target rows via `refField` filtered by lifecycle statuses. The cascading action cannot be create and cannot declare a decision. The target action must exist in lifecycle, cannot be create or engine-owned, cannot declare a decision, and cannot declare a cascade of its own. Because the cascade runs before the parent's admission gates, child status transitions take effect in time for parent aggregate requirements.
63
-
64
- `requiresRefs.unique` accepts `{namespace, byFields}`. The uniqueness key contains the Product, namespace, referenced instance identity and immutable key values. It excludes instrument aliases and current status. A waived or refunded fine still occupies its key; cost uses a different kind value. The engine enforces this key under a shared constraint or lock.
65
-
66
- Decision authentication, attestation verification and request hashing are admission concerns. The decision record must carry the requested instrument kind, instance, action, canonical input digest, deciding role and actor, expiry, verdict and evidence references. The engine computes the digest from the admitted request, authenticates the authority, checks expiry and revocation under locks, and binds consumption to the durable operation identity. Submitted actor and operation fields are not proof.
67
-
68
- ## Effects and classification budget
69
-
70
- Canonical JSON preserves every clause and array order. Allocation and referenced transitions add explicit effects. Hosts must price `decides.allocation`, `moves.allocation` and `decides.referenced_transition` before compiling products that use them. Write-off has no movement effect. Contribution transfers use the existing internal-transfer effect signature.
71
-
72
- Reference classification reads the sealed ID pattern text; it never executes an authored regular expression or compiles a JSON Schema validator per candidate prefix. HSX supplies the published prefix when a typed reference omits its pattern. The 131,072 distinct-pair budget is a safety limit, not a catalogue-size target. The memo counts a schema/prefix pair once and fails closed after the limit.
73
-
74
- ## Attested requests
75
-
76
- An action may declare one `requiresRefs` gate with `attests`. The gate must
77
- require a status and match `instrumentInstanceId` to a field on the referenced
78
- record. It cannot be optional. The block declares `action`, `digest`, `role`,
79
- `expiresAt` and `consume`. HSX accepts `expires_at` and emits `expiresAt`.
80
- Action and role paths name text fields, digest names a lowercase SHA-256 field
81
- with pattern `^[a-f0-9]{64}$`, and expiry names a date field.
82
-
83
- Admission compares the stored action to the admitted lifecycle action name.
84
- It computes the stored digest's expected value as
85
- `bindResolvedRequestHash(operationExecutionIdentity({ name, environment, body }))`
86
- for the downstream operation as admitted. The role must belong to the
87
- authenticated deciding principal. A caller-supplied actor or role is not proof.
88
- Admission refuses at or after expiry.
89
-
90
- Stored terms are absent from the request body. An attested action therefore
91
- puts its material terms in required input and declares `requiresInput`, a map
92
- from input key to stored `fields.*` path. Admission checks equality before
93
- updates or money movement. Changing a premium from 240000 to 180000 minor
94
- units changes the request digest and fails the stored-term equality law.
95
-
96
- The `consume` action must be reachable from every admitted status and declare
97
- `engineOwned: true`. It cannot be public, accept input or update caller fields.
98
- `captureEngine: { consumedByOperationId: "operationId" }` declares a ref written
99
- from the admitting operation identity. These keys cannot be fields, input,
100
- caller captures or move captures. The marker controls invocation authority;
101
- the capture map names engine facts and their destination keys.
102
-
103
- Consumption reuses referenced-transition effects and cycle checks. An ordinary
104
- `transitionsRefs` entry cannot invoke an engine-owned action. The engine must
105
- lock the decision and execute its transition inside the admitting transaction,
106
- so a refusal rolls back consumption and one approval cannot authorize two
107
- operations. This ABI declares those obligations; validation is not runtime
108
- proof of their enforcement.
109
-
110
- ## Subject uniqueness
111
-
112
- An action's `unique: { namespace, byFields }` claims one key at creation without a reference gate. Keys contain one to eight distinct required immutable string, account or integer fields. Every use of a namespace must carry the same ordered field names and types. Reference-keyed and subject-keyed claims cannot share a namespace. The engine must claim the key tenant-wide, across instrument aliases, and never release it on closure. Raising a limit updates the existing record. The effect is `decides.subject_unique`, priced at zero without a price-version change.
113
-
114
- ## Allocation exposure
115
-
116
- `requiresExposure.measure: { allocation: "principal" }` selects a bucket on the child instrument. Its gross operand is the parent money field named by an exact `requiresAggregate.check.kind: "schedule"` mapping to that bucket's slice amount field. The relation must use the allocation's slice instrument and reference. A bucket sourced from other children has no such mapping and cannot be measured by this clause.
117
-
118
- For qualifying children, the engine sums `amountField` and subtracts consumed amounts of the selected bucket over those same children. Payment, payoff and write-off share that consumption record. Refunds must be reflected by that record. The admitted instance contributes its full `amountField`. Omitting `measure` preserves the existing gross sum.
119
-
120
- ## Recorded decider
121
-
122
- `attests.instrument` is a required text-field path on the referenced decision. Admission compares that stored value with the admitted instrument's id. Required `attests.party` names a declared party on the referenced decision. Admission compares the recorded deciding account with that party's bound account.
123
-
124
- A decision action declares `port.capture` as the name of an optional account field on its own instrument. The engine writes the admitted actor account there after checking `allowedParties`. Callers cannot populate it through `captureInput`, action input, step captures or updates. It cannot be required at creation. This records the tenant backend's assertion of the actor account; it does not independently authenticate that account.
125
-
126
- ## Slice consumption and assessment collection
127
-
128
- `requiresAllocation: { refField, slice: "self", buckets, check }` reads the referenced obligation's shared consumption for the executing slice. `settled` requires every listed bucket to equal its gross amount. `outstanding` requires at least one bucket below gross. The reference is required and immutable, and the owner must allocate over this slice instrument or its template alias.
129
-
130
- Payment on an assessment may declare `assessment: "self"`. Admission matches the executing record to exactly one children bucket, then restricts payment to that record's remaining balance. An amount above that balance refuses. Refund without `action` reverses the assessment's consumption across every receipt that consumed it, once, and never reopens its consumed debt.
131
-
132
- An anchor exposure cap may be updatable only when its anchor update clause names the cap field and the exposure declares `measure`. Other exposure caps remain immutable.