@hyperscale0/udl 1.0.0 → 1.0.124

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 (234) hide show
  1. package/CHANGELOG.md +5 -216
  2. package/LICENSE.md +356 -0
  3. package/NOTICE.md +8 -0
  4. package/README.md +14 -106
  5. package/dist/canonical.d.ts.map +1 -1
  6. package/dist/canonical.js +1 -29
  7. package/dist/canonical.js.map +1 -1
  8. package/dist/diagnostics.d.ts +13 -165
  9. package/dist/diagnostics.d.ts.map +1 -1
  10. package/dist/diagnostics.js +33 -157
  11. package/dist/diagnostics.js.map +1 -1
  12. package/dist/field-value.d.ts +5 -0
  13. package/dist/field-value.d.ts.map +1 -0
  14. package/dist/field-value.js +85 -0
  15. package/dist/field-value.js.map +1 -0
  16. package/dist/finance.d.ts +10 -53
  17. package/dist/finance.d.ts.map +1 -1
  18. package/dist/finance.js +252 -536
  19. package/dist/finance.js.map +1 -1
  20. package/dist/index.d.ts +9 -13
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +9 -9
  23. package/dist/index.js.map +1 -1
  24. package/dist/json.d.ts +2 -0
  25. package/dist/json.d.ts.map +1 -0
  26. package/dist/json.js +30 -0
  27. package/dist/json.js.map +1 -0
  28. package/dist/limits.d.ts +3 -28
  29. package/dist/limits.d.ts.map +1 -1
  30. package/dist/limits.js +5 -31
  31. package/dist/limits.js.map +1 -1
  32. package/dist/object-contract.d.ts +140 -0
  33. package/dist/object-contract.d.ts.map +1 -0
  34. package/dist/object-contract.js +314 -0
  35. package/dist/object-contract.js.map +1 -0
  36. package/dist/object-semantics-schema.d.ts +5710 -0
  37. package/dist/object-semantics-schema.d.ts.map +1 -0
  38. package/dist/object-semantics-schema.js +119 -0
  39. package/dist/object-semantics-schema.js.map +1 -0
  40. package/dist/object-semantics.d.ts +6 -0
  41. package/dist/object-semantics.d.ts.map +1 -0
  42. package/dist/object-semantics.js +279 -0
  43. package/dist/object-semantics.js.map +1 -0
  44. package/dist/object-structures.d.ts +4 -0
  45. package/dist/object-structures.d.ts.map +1 -0
  46. package/dist/object-structures.js +134 -0
  47. package/dist/object-structures.js.map +1 -0
  48. package/dist/reporting-validation.d.ts +8 -0
  49. package/dist/reporting-validation.d.ts.map +1 -0
  50. package/dist/reporting-validation.js +252 -0
  51. package/dist/reporting-validation.js.map +1 -0
  52. package/dist/reporting.d.ts +477 -0
  53. package/dist/reporting.d.ts.map +1 -0
  54. package/dist/reporting.js +169 -0
  55. package/dist/reporting.js.map +1 -0
  56. package/dist/schema.d.ts +5572 -2710
  57. package/dist/schema.d.ts.map +1 -1
  58. package/dist/schema.js +444 -1121
  59. package/dist/schema.js.map +1 -1
  60. package/dist/validation.d.ts +10 -73
  61. package/dist/validation.d.ts.map +1 -1
  62. package/dist/validation.js +1109 -2569
  63. package/dist/validation.js.map +1 -1
  64. package/docs/assets/brand/manifest.json +30 -0
  65. package/docs/assets/brand/udl-horizontal-white.svg +1 -0
  66. package/docs/assets/brand/udl-horizontal.svg +1 -0
  67. package/docs/assets/brand/udl-stacked-white.svg +1 -0
  68. package/docs/assets/brand/udl-stacked.svg +1 -0
  69. package/docs/assets/udl.svg +11 -0
  70. package/package.json +13 -22
  71. package/spec/README.md +300 -172
  72. package/spec/cars.udl.json +249 -0
  73. package/spec/udl.schema.json +3066 -2242
  74. package/src/canonical.ts +1 -35
  75. package/src/diagnostics.ts +76 -209
  76. package/src/field-value.ts +87 -0
  77. package/src/finance.ts +327 -832
  78. package/src/index.ts +18 -95
  79. package/src/json.ts +34 -0
  80. package/src/limits.ts +5 -31
  81. package/src/object-contract.ts +559 -0
  82. package/src/object-semantics-schema.ts +148 -0
  83. package/src/object-semantics.ts +378 -0
  84. package/src/object-structures.ts +255 -0
  85. package/src/reporting-validation.ts +383 -0
  86. package/src/reporting.ts +178 -0
  87. package/src/schema.ts +510 -1277
  88. package/src/validation.ts +1630 -4545
  89. package/LICENSE +0 -661
  90. package/LICENSING.md +0 -51
  91. package/TRADEMARKS.md +0 -35
  92. package/conformance/README.md +0 -82
  93. package/conformance/evolution/action-contract.expected.json +0 -10
  94. package/conformance/evolution/action-contract.live.udl +0 -44
  95. package/conformance/evolution/action-contract.next.udl +0 -45
  96. package/conformance/evolution/product-identity.expected.json +0 -10
  97. package/conformance/evolution/product-identity.live.udl +0 -55
  98. package/conformance/evolution/product-identity.next.udl +0 -55
  99. package/conformance/evolution/version-required.expected.json +0 -10
  100. package/conformance/evolution/version-required.live.udl +0 -55
  101. package/conformance/evolution/version-required.next.udl +0 -58
  102. package/conformance/invalid/action-without-transition.expected.json +0 -10
  103. package/conformance/invalid/action-without-transition.udl +0 -60
  104. package/conformance/invalid/agent-description-too-long.expected.json +0 -10
  105. package/conformance/invalid/agent-description-too-long.udl +0 -57
  106. package/conformance/invalid/blank-title.expected.json +0 -10
  107. package/conformance/invalid/blank-title.udl +0 -54
  108. package/conformance/invalid/composition-dial-duplicate-key.expected.json +0 -10
  109. package/conformance/invalid/composition-dial-duplicate-key.udl +0 -73
  110. package/conformance/invalid/depth-budget.expected.json +0 -10
  111. package/conformance/invalid/depth-budget.udl +0 -49
  112. package/conformance/invalid/duplicate-subject.expected.json +0 -10
  113. package/conformance/invalid/duplicate-subject.udl +0 -230
  114. package/conformance/invalid/forged-effects.expected.json +0 -10
  115. package/conformance/invalid/forged-effects.udl +0 -76
  116. package/conformance/invalid/format-version.expected.json +0 -10
  117. package/conformance/invalid/format-version.udl +0 -54
  118. package/conformance/invalid/instrument-id-not-snake-case.expected.json +0 -10
  119. package/conformance/invalid/instrument-id-not-snake-case.udl +0 -54
  120. package/conformance/invalid/invalid-aggregate-gate-shape.expected.json +0 -10
  121. package/conformance/invalid/invalid-aggregate-gate-shape.udl +0 -1819
  122. package/conformance/invalid/invalid-check-duration.expected.json +0 -10
  123. package/conformance/invalid/invalid-check-duration.udl +0 -219
  124. package/conformance/invalid/invalid-dial-anchor.expected.json +0 -10
  125. package/conformance/invalid/invalid-dial-anchor.udl +0 -219
  126. package/conformance/invalid/invalid-exception-parent-ref.expected.json +0 -10
  127. package/conformance/invalid/invalid-exception-parent-ref.udl +0 -2487
  128. package/conformance/invalid/invalid-exposure-shape.expected.json +0 -10
  129. package/conformance/invalid/invalid-exposure-shape.udl +0 -1819
  130. package/conformance/invalid/invalid-remainder.expected.json +0 -10
  131. package/conformance/invalid/invalid-remainder.udl +0 -220
  132. package/conformance/invalid/invalid-schema-keyword.expected.json +0 -10
  133. package/conformance/invalid/invalid-schema-keyword.udl +0 -220
  134. package/conformance/invalid/invalid-utf8.expected.json +0 -10
  135. package/conformance/invalid/invalid-utf8.udl +0 -1
  136. package/conformance/invalid/malformed-json.expected.json +0 -10
  137. package/conformance/invalid/malformed-json.udl +0 -1
  138. package/conformance/invalid/missing-create-action.expected.json +0 -10
  139. package/conformance/invalid/missing-create-action.udl +0 -48
  140. package/conformance/invalid/missing-exception-amount-field.expected.json +0 -10
  141. package/conformance/invalid/missing-exception-amount-field.udl +0 -2487
  142. package/conformance/invalid/missing-exception-contract.expected.json +0 -14
  143. package/conformance/invalid/missing-exception-contract.udl +0 -2523
  144. package/conformance/invalid/missing-exception-reason-field.expected.json +0 -10
  145. package/conformance/invalid/missing-exception-reason-field.udl +0 -2487
  146. package/conformance/invalid/not-an-object.expected.json +0 -10
  147. package/conformance/invalid/not-an-object.udl +0 -1
  148. package/conformance/invalid/payout-reconcile-not-a-bank-debit.expected.json +0 -10
  149. package/conformance/invalid/payout-reconcile-not-a-bank-debit.udl +0 -259
  150. package/conformance/invalid/quote-freeze-set-incomplete.expected.json +0 -10
  151. package/conformance/invalid/quote-freeze-set-incomplete.udl +0 -261
  152. package/conformance/invalid/quote-named-reference-gate.expected.json +0 -10
  153. package/conformance/invalid/quote-named-reference-gate.udl +0 -50
  154. package/conformance/invalid/reconcile-named-reference-gate.expected.json +0 -10
  155. package/conformance/invalid/reconcile-named-reference-gate.udl +0 -50
  156. package/conformance/invalid/unknown-key.expected.json +0 -10
  157. package/conformance/invalid/unknown-key.udl +0 -55
  158. package/conformance/invalid/unknown-reference-gate-field.expected.json +0 -10
  159. package/conformance/invalid/unknown-reference-gate-field.udl +0 -1819
  160. package/conformance/invalid/unknown-required-field.expected.json +0 -10
  161. package/conformance/invalid/unknown-required-field.udl +0 -220
  162. package/conformance/invalid/unreachable-state.expected.json +0 -10
  163. package/conformance/invalid/unreachable-state.udl +0 -55
  164. package/conformance/invalid/wrong-exception-amount-field.expected.json +0 -10
  165. package/conformance/invalid/wrong-exception-amount-field.udl +0 -2487
  166. package/conformance/invalid/wrong-exception-reason-field.expected.json +0 -10
  167. package/conformance/invalid/wrong-exception-reason-field.udl +0 -2487
  168. package/conformance/valid/agent-description.expected.json +0 -6
  169. package/conformance/valid/agent-description.udl +0 -66
  170. package/conformance/valid/cards.expected.json +0 -6
  171. package/conformance/valid/cards.udl +0 -1579
  172. package/conformance/valid/commerce-escrow.expected.json +0 -6
  173. package/conformance/valid/commerce-escrow.udl +0 -1512
  174. package/conformance/valid/compiled-crowdfunding.expected.json +0 -6
  175. package/conformance/valid/compiled-crowdfunding.udl +0 -1843
  176. package/conformance/valid/compiled-watch-club.expected.json +0 -6
  177. package/conformance/valid/compiled-watch-club.udl +0 -2486
  178. package/conformance/valid/complete-contract.expected.json +0 -6
  179. package/conformance/valid/complete-contract.udl +0 -218
  180. package/conformance/valid/effect-signatures.expected.json +0 -6
  181. package/conformance/valid/effect-signatures.udl +0 -75
  182. package/conformance/valid/hand-edited.expected.json +0 -6
  183. package/conformance/valid/hand-edited.udl +0 -1
  184. package/conformance/valid/insured-car-marketplace.expected.json +0 -6
  185. package/conformance/valid/insured-car-marketplace.udl +0 -1050
  186. package/conformance/valid/insured-travel.expected.json +0 -6
  187. package/conformance/valid/insured-travel.udl +0 -3469
  188. package/conformance/valid/minimal.expected.json +0 -6
  189. package/conformance/valid/minimal.udl +0 -54
  190. package/conformance/valid/protection.expected.json +0 -6
  191. package/conformance/valid/protection.udl +0 -1551
  192. package/conformance/valid/string-escaping.expected.json +0 -6
  193. package/conformance/valid/string-escaping.udl +0 -54
  194. package/dist/check-profiles.d.ts +0 -57
  195. package/dist/check-profiles.d.ts.map +0 -1
  196. package/dist/check-profiles.js +0 -62
  197. package/dist/check-profiles.js.map +0 -1
  198. package/dist/cli.d.ts +0 -3
  199. package/dist/cli.d.ts.map +0 -1
  200. package/dist/cli.js +0 -184
  201. package/dist/cli.js.map +0 -1
  202. package/dist/effects.d.ts +0 -41
  203. package/dist/effects.d.ts.map +0 -1
  204. package/dist/effects.js +0 -110
  205. package/dist/effects.js.map +0 -1
  206. package/dist/evolution.d.ts +0 -120
  207. package/dist/evolution.d.ts.map +0 -1
  208. package/dist/evolution.js +0 -567
  209. package/dist/evolution.js.map +0 -1
  210. package/dist/parser.d.ts +0 -4
  211. package/dist/parser.d.ts.map +0 -1
  212. package/dist/parser.js +0 -44
  213. package/dist/parser.js.map +0 -1
  214. package/docs/README.md +0 -14
  215. package/docs/guide/01-a-document.md +0 -37
  216. package/docs/guide/02-money-steps.md +0 -23
  217. package/docs/guide/03-laws.md +0 -18
  218. package/docs/guide/04-fees-and-remainder.md +0 -15
  219. package/docs/guide/05-checks-updates-dials.md +0 -7
  220. package/docs/guide/06-effects.md +0 -11
  221. package/docs/guide/07-evolution.md +0 -11
  222. package/docs/guide/08-implementing.md +0 -13
  223. package/docs/llms-full.txt +0 -1241
  224. package/docs/llms.txt +0 -14
  225. package/docs/reference/canonical.md +0 -16
  226. package/docs/reference/clauses.md +0 -986
  227. package/docs/reference/cli.md +0 -22
  228. package/docs/reference/diagnostics.md +0 -32
  229. package/skills/udl/SKILL.md +0 -28
  230. package/src/check-profiles.ts +0 -80
  231. package/src/cli.ts +0 -196
  232. package/src/effects.ts +0 -163
  233. package/src/evolution.ts +0 -965
  234. package/src/parser.ts +0 -58
package/dist/evolution.js DELETED
@@ -1,567 +0,0 @@
1
- import { UDL_LIMITS } from "./limits.js";
2
- import { deriveUdlActionEffects } from "./effects.js";
3
- import { udlClauseVocabulary } from "./schema.js";
4
- import { UdlError } from "./validation.js";
5
- import { issue } from "./diagnostics.js";
6
- /** Project an open .udl instrument into the evolution engine's exact semantic shape. */
7
- export function snapshotUdlInstrument(instrument) {
8
- const required = new Set(instrument.required);
9
- return {
10
- actionOrder: [...instrument.actionOrder],
11
- aggregateInvariants: (instrument.aggregateInvariants ?? []).map(aggregateInvariantKey),
12
- callerParkedStates: instrument.callerParkedStates ?? {},
13
- derivedAmounts: (instrument.derivedAmounts ?? []).map((amount) => `${amount.field}=floor(${amount.sourceField}*${amount.rule.bps}/10000)`),
14
- dials: instrument.dials ?? [],
15
- ...(instrument.distinctParties ? { distinctParties: true } : {}),
16
- ...(instrument.feeRules
17
- ? {
18
- feeRules: instrument.feeRules.map((fee) => ({
19
- ...fee,
20
- rule: fee.rule.kind === "tiered"
21
- ? {
22
- ...fee.rule,
23
- tiers: fee.rule.tiers.map((tier) => ({
24
- ...tier,
25
- rule: { ...tier.rule },
26
- })),
27
- }
28
- : { ...fee.rule },
29
- })),
30
- }
31
- : {}),
32
- fields: Object.fromEntries(Object.entries(instrument.fields).map(([field, schema]) => [
33
- field,
34
- { required: required.has(field), schema },
35
- ])),
36
- id: instrument.id,
37
- idPrefix: instrument.idPrefix,
38
- initial: instrument.lifecycle.initial,
39
- nav: instrument.nav ?? [],
40
- parties: compactStringRecord(instrument.parties),
41
- partitions: (instrument.partitions ?? []).map((partition) => `${partition.totalField} = ${[...partition.pieceFields].sort().join(" + ")}`),
42
- states: [...instrument.lifecycle.states],
43
- subjects: instrument.subject ? [...instrument.subject.kinds] : [],
44
- subjectExtensible: instrument.subject?.extensible ?? false,
45
- surfaceVisibility: instrument.surfaceVisibility ?? null,
46
- templateId: instrument.templateId ?? null,
47
- transitions: Object.fromEntries(Object.entries(instrument.lifecycle.transitions).map(([action, transition]) => [
48
- action,
49
- { from: [...transition.from], to: transition.to },
50
- ])),
51
- quotes: Object.fromEntries(Object.entries(instrument.actions)
52
- .filter(([, action]) => action.quote)
53
- .map(([name, action]) => [name, action.quote])),
54
- updateFields: instrument.update?.fields ?? [],
55
- updateExamples: instrument.update?.examples ?? null,
56
- updateStates: instrument.update?.states ?? [],
57
- actions: Object.fromEntries(instrument.actionOrder.map((action) => [
58
- action,
59
- snapshotUdlAction(instrument.actions[action]),
60
- ])),
61
- };
62
- }
63
- /**
64
- * Compare two product definitions under the append-only evolution law.
65
- *
66
- * Both documents must already have passed `validateUdl`. The diff walks
67
- * straight into `stableStringify`, so an unvalidated document with a cycle in
68
- * it throws a RangeError out of here where the validator would have returned a
69
- * clean `resource_limit` issue: parse first, then diff.
70
- */
71
- export function diffValidatedUdlEvolution(previous, next) {
72
- return diffValidatedUdlEvolutionMessages(previous, next).map((message) => {
73
- const instrumentId = /^([^:]+): /.exec(message)?.[1];
74
- const instrumentIndex = previous.instruments.findIndex((instrument) => instrument.id === instrumentId);
75
- const base = instrumentIndex < 0
76
- ? "$.instruments"
77
- : `$.instruments[${instrumentIndex}]`;
78
- return evolutionIssue(message, base);
79
- });
80
- }
81
- function diffValidatedUdlEvolutionMessages(previous, next) {
82
- const violations = [];
83
- if (previous.product !== next.product) {
84
- violations.push(`product id changed from ${previous.product} to ${next.product}`);
85
- }
86
- if (next.version < previous.version) {
87
- violations.push(`product version moved backward from ${previous.version} to ${next.version}`);
88
- }
89
- let semanticChange = false;
90
- const previousSubjects = new Map(previous.subjects.map((subject) => [subject.kind, subject]));
91
- const nextSubjects = new Map(next.subjects.map((subject) => [subject.kind, subject]));
92
- for (const [kind, subject] of previousSubjects) {
93
- const current = nextSubjects.get(kind);
94
- if (!current) {
95
- semanticChange = true;
96
- violations.push(`subject kind ${kind} was removed or renamed`);
97
- }
98
- else if (stableStringify(subject) !== stableStringify(current)) {
99
- semanticChange = true;
100
- violations.push(`subject kind ${kind} changed after becoming live`);
101
- }
102
- }
103
- for (const kind of nextSubjects.keys()) {
104
- if (!previousSubjects.has(kind))
105
- semanticChange = true;
106
- }
107
- const previousInstruments = new Map(previous.instruments.map((instrument) => [instrument.id, snapshotUdlInstrument(instrument)]));
108
- const nextInstruments = new Map(next.instruments.map((instrument) => [instrument.id, snapshotUdlInstrument(instrument)]));
109
- for (const [id, instrument] of previousInstruments) {
110
- const current = nextInstruments.get(id);
111
- if (!current) {
112
- semanticChange = true;
113
- violations.push(`${id}: live instrument was removed from the product`);
114
- continue;
115
- }
116
- if (stableStringify(instrument) !== stableStringify(current)) {
117
- semanticChange = true;
118
- }
119
- violations.push(...diffInstrumentEvolutionMessages(instrument, current));
120
- }
121
- for (const id of nextInstruments.keys()) {
122
- if (!previousInstruments.has(id))
123
- semanticChange = true;
124
- }
125
- if (semanticChange && next.version <= previous.version) {
126
- violations.push(`product definition changed without increasing version ${previous.version}`);
127
- }
128
- return violations;
129
- }
130
- /** Diff one instrument snapshot. An empty result means the change is additive. */
131
- export function diffInstrumentEvolution(previous, next) {
132
- return diffInstrumentEvolutionMessages(previous, next).map((message) => evolutionIssue(message, "$.instruments"));
133
- }
134
- function diffInstrumentEvolutionMessages(previous, next) {
135
- if (previous.id !== next.id) {
136
- return [`instrument id changed from ${previous.id} to ${next.id}`];
137
- }
138
- const violations = [];
139
- if (previous.idPrefix !== next.idPrefix) {
140
- violations.push(`instance id prefix changed from ${previous.idPrefix} to ${next.idPrefix}`);
141
- }
142
- if (previous.initial !== next.initial) {
143
- violations.push(`initial lifecycle state changed from ${previous.initial} to ${next.initial}`);
144
- }
145
- violations.push(...removedSetEntries(previous.states, next.states, (state) => `lifecycle state ${state} was removed or renamed`));
146
- for (const [action, transition] of Object.entries(previous.transitions)) {
147
- const current = next.transitions[action];
148
- if (!current) {
149
- violations.push(`transition for action ${action} was removed or renamed`);
150
- continue;
151
- }
152
- if (transition.to !== current.to) {
153
- violations.push(`transition for action ${action} changed its target state from ${transition.to} to ${current.to}`);
154
- }
155
- violations.push(...removedSetEntries(transition.from, current.from, (state) => `transition for action ${action} no longer fires from state ${state}`));
156
- }
157
- violations.push(...diffFields(previous.fields, next.fields));
158
- if (Boolean(previous.distinctParties) !== Boolean(next.distinctParties)) {
159
- violations.push("distinct-party admission changed after becoming live");
160
- }
161
- if (previous.actionOrder) {
162
- const previousActions = new Set(previous.actionOrder);
163
- const retainedActionOrder = (next.actionOrder ?? []).filter((action) => previousActions.has(action));
164
- if (stableStringify(previous.actionOrder) !==
165
- stableStringify(retainedActionOrder)) {
166
- violations.push("instrument action order changed after becoming live");
167
- }
168
- }
169
- violations.push(...diffActions(previous.actions, next.actions));
170
- violations.push(...diffParties(previous.parties, next.parties));
171
- violations.push(...diffAggregates(previous, next));
172
- if (stableStringify(Object.keys(previous.callerParkedStates ?? {}).sort()) !==
173
- stableStringify(Object.keys(next.callerParkedStates ?? {}).sort())) {
174
- violations.push("caller-parked state annotations changed");
175
- }
176
- if (stableStringify(previous.dials ?? []) !== stableStringify(next.dials ?? [])) {
177
- violations.push("instrument dials changed after becoming live");
178
- }
179
- if ((previous.surfaceVisibility ?? null) !== (next.surfaceVisibility ?? null)) {
180
- violations.push("instrument surface visibility changed after becoming live");
181
- }
182
- if ((previous.templateId ?? null) !== (next.templateId ?? null)) {
183
- violations.push("instrument archetype template changed after becoming live");
184
- }
185
- if (previous.subjectExtensible && !next.subjectExtensible) {
186
- violations.push("tenant-defined subject kinds are no longer accepted");
187
- }
188
- if (stableStringify(previous.derivedAmounts ?? []) !==
189
- stableStringify(next.derivedAmounts ?? [])) {
190
- violations.push("derived amount rules changed; derived money arithmetic is frozen once live");
191
- }
192
- if (stableStringify(previous.feeRules ?? []) !==
193
- stableStringify(next.feeRules ?? [])) {
194
- violations.push("feeRules changed; fee calculation and settlement funding are frozen once live");
195
- }
196
- violations.push(...removedSetEntries(previous.partitions, next.partitions, (law) => `partition law [${law}] was removed`), ...next.partitions
197
- .filter((law) => !previous.partitions.includes(law))
198
- .map((law) => `partition law [${law}] was added, which can reject existing callers`));
199
- violations.push(...diffQuotes(previous.quotes, next.quotes));
200
- violations.push(...removedSetEntries(previous.subjects, next.subjects, (kind) => `subject kind ${kind} was removed, rejecting linked instances`), ...removedSetEntries(previous.updateFields, next.updateFields, (field) => `update policy no longer permits field ${field}`), ...removedSetEntries(previous.updateStates, next.updateStates, (state) => `update policy no longer permits state ${state}`));
201
- return violations.map((violation) => `${next.id}: ${violation}`);
202
- }
203
- function evolutionIssue(message, instrumentBase) {
204
- if (message.startsWith("product id changed"))
205
- return issue("UDL7001", "$.product", message);
206
- if (message.startsWith("product version moved backward"))
207
- return issue("UDL7001", "$.version", message);
208
- if (message.startsWith("product definition changed"))
209
- return issue("UDL7002", "$.version", message);
210
- if (message.startsWith("subject kind "))
211
- return issue("UDL7001", "$.subjects", message);
212
- const instrumentMatch = /^([^:]+): (.*)$/.exec(message);
213
- const detail = instrumentMatch?.[2] ?? message;
214
- const transitionAction = /^transition for action ([a-z][a-z0-9_]*)/.exec(detail)?.[1];
215
- if (transitionAction)
216
- return issue("UDL7001", `${instrumentBase}.lifecycle.transitions.${transitionAction}`, message);
217
- const action = /^action ([a-z][a-z0-9_]*)/.exec(detail)?.[1];
218
- if (action)
219
- return issue("UDL7001", `${instrumentBase}.actions.${action}`, message);
220
- if (detail.includes("instrument id"))
221
- return issue("UDL7001", instrumentBase, message);
222
- if (detail.includes("id prefix") ||
223
- detail.includes("lifecycle") ||
224
- detail.includes("transition") ||
225
- detail.includes("initial") ||
226
- detail.includes("live instrument was removed"))
227
- return issue("UDL7001", `${instrumentBase}.lifecycle`, message);
228
- if (detail.startsWith("field "))
229
- return issue("UDL7001", `${instrumentBase}.fields`, message);
230
- if (detail.includes("move") ||
231
- detail.includes("payout") ||
232
- detail.includes("fee") ||
233
- detail.includes("quote") ||
234
- detail.includes("derived amount") ||
235
- detail.includes("partition") ||
236
- detail.includes("distribution") ||
237
- detail.includes("signed child sum") ||
238
- detail.includes("earnable"))
239
- return issue("UDL7001", `${instrumentBase}.actions`, message);
240
- if (detail.includes("gate") ||
241
- detail.includes("check prerequisite") ||
242
- detail.includes("reconcile expectation") ||
243
- detail.includes("drained-account") ||
244
- detail.includes("exposure") ||
245
- detail.includes("aggregate"))
246
- return issue("UDL7001", `${instrumentBase}.actions`, message);
247
- if (detail.startsWith("action ") ||
248
- detail.includes("action order") ||
249
- detail.includes("step count"))
250
- return issue("UDL7001", `${instrumentBase}.actions`, message);
251
- return issue("UDL7001", instrumentBase, message);
252
- }
253
- function snapshotUdlAction(definition) {
254
- return {
255
- captureInput: definition.captureInput ?? null,
256
- commit: definition.commit ?? null,
257
- deadline: definition.deadline ?? null,
258
- decision: definition.decision ?? null,
259
- principal: definition.principal ?? null,
260
- remainder: definition.remainder ?? null,
261
- requiresChecks: definition.requiresChecks ?? [],
262
- sandboxFailurePoint: definition.sandboxFailurePoint ?? null,
263
- updates: definition.updates ?? [],
264
- distribute: definition.distribute ?? null,
265
- due: definition.due ?? null,
266
- earnable: definition.earnable ?? false,
267
- effects: definition.effects ??
268
- deriveUdlActionEffects(definition, udlClauseVocabulary),
269
- eventName: definition.eventName ?? null,
270
- input: definition.input ? snapshotJsonSchemaFields(definition.input) : null,
271
- inputConstraints: definition.input
272
- ? snapshotJsonSchemaConstraints(definition.input)
273
- : null,
274
- payout: definition.payout ?? null,
275
- port: definition.port ?? null,
276
- publicAction: definition.publicAction ?? null,
277
- setsAt: definition.setsAt ?? null,
278
- signedSum: definition.signedSum ?? null,
279
- moves: definition.moves.map((move) => ({
280
- bind: move.bind,
281
- capture: move.capture ?? {},
282
- key: move.key,
283
- operation: move.operation,
284
- })),
285
- requiresAggregate: definition.requiresAggregate ?? [],
286
- requiresDrainedAccount: definition.requiresDrainedAccount ?? null,
287
- requiresExposure: definition.requiresExposure ?? [],
288
- requiresRefs: definition.requiresRefs ?? [],
289
- reconcile: definition.reconcile ?? null,
290
- steps: definition.steps.map((step) => ({
291
- bind: step.bind,
292
- capture: step.capture ?? {},
293
- operation: step.operation,
294
- })),
295
- };
296
- }
297
- function snapshotJsonSchemaFields(schema) {
298
- const properties = recordValue(schema.properties);
299
- const required = new Set(Array.isArray(schema.required)
300
- ? schema.required.filter((value) => typeof value === "string")
301
- : []);
302
- return Object.fromEntries(Object.entries(properties).map(([field, fieldSchema]) => [
303
- field,
304
- { required: required.has(field), schema: fieldSchema },
305
- ]));
306
- }
307
- function snapshotJsonSchemaConstraints(schema) {
308
- const { properties: _properties, required: _required, ...constraints } = schema;
309
- return constraints;
310
- }
311
- function diffFields(previous, next) {
312
- const violations = [];
313
- for (const [field, descriptor] of Object.entries(previous)) {
314
- const current = next[field];
315
- if (!current) {
316
- violations.push(`field ${field} was removed or renamed`);
317
- continue;
318
- }
319
- if (!descriptor.required && current.required) {
320
- violations.push(`field ${field} became required, tightening the schema`);
321
- }
322
- if (stableStringify(descriptor.schema) !== stableStringify(current.schema)) {
323
- violations.push(`field ${field} schema changed; a live field schema is frozen`);
324
- }
325
- }
326
- for (const [field, descriptor] of Object.entries(next)) {
327
- if (!previous[field] && descriptor.required) {
328
- violations.push(`field ${field} was added as required, which rejects existing instances (only optional fields are additive)`);
329
- }
330
- }
331
- return violations;
332
- }
333
- function diffActions(previous, next) {
334
- const violations = [];
335
- for (const [action, descriptor] of Object.entries(previous)) {
336
- const current = next[action];
337
- if (!current) {
338
- violations.push(`action ${action} was removed or renamed`);
339
- continue;
340
- }
341
- if (descriptor.moves.length !== current.moves.length) {
342
- violations.push(`action ${action} changed its move count from ${descriptor.moves.length} to ${current.moves.length}; money movement is frozen once live`);
343
- }
344
- else {
345
- descriptor.moves.forEach((move, index) => {
346
- const nextMove = current.moves[index];
347
- if (stableStringify(move) !== stableStringify(nextMove)) {
348
- violations.push(`action ${action} changed move ${move.key} at index ${index}; money movement is frozen once live`);
349
- }
350
- });
351
- }
352
- if (descriptor.steps.length !== current.steps.length) {
353
- violations.push(`action ${action} changed its step count from ${descriptor.steps.length} to ${current.steps.length}; a live action's steps are frozen`);
354
- }
355
- else {
356
- descriptor.steps.forEach((step, index) => {
357
- const nextStep = current.steps[index];
358
- if (stableStringify(step) === stableStringify(nextStep))
359
- return;
360
- violations.push(`action ${action} changed step ${index} (${step.operation}); a live action's steps are frozen`);
361
- });
362
- }
363
- violations.push(...diffInput(action, descriptor.input ?? {}, current.input ?? {}));
364
- // A action gaining its first input is additive (per-field checks still catch
365
- // added-as-required); once an input is live, its schema envelope is frozen.
366
- if (descriptor.input !== null &&
367
- stableStringify(descriptor.inputConstraints) !==
368
- stableStringify(current.inputConstraints)) {
369
- violations.push(`action ${action} changed its input schema beyond declared fields; a live action input is frozen`);
370
- }
371
- if (stableStringify(descriptor.requiresRefs) !==
372
- stableStringify(current.requiresRefs)) {
373
- violations.push(`action ${action} changed its cross-instrument gates`);
374
- }
375
- if (stableStringify(descriptor.requiresAggregate) !==
376
- stableStringify(current.requiresAggregate)) {
377
- violations.push(`action ${action} changed its aggregate admission gates`);
378
- }
379
- if (stableStringify(descriptor.requiresDrainedAccount) !==
380
- stableStringify(current.requiresDrainedAccount)) {
381
- violations.push(`action ${action} changed its drained-account gate`);
382
- }
383
- if (descriptor.requiresExposure !== undefined &&
384
- stableStringify(descriptor.requiresExposure) !==
385
- stableStringify(current.requiresExposure)) {
386
- violations.push(`action ${action} changed its exposure admission gates`);
387
- }
388
- if (descriptor.reconcile !== undefined &&
389
- stableStringify(descriptor.reconcile) !==
390
- stableStringify(current.reconcile)) {
391
- violations.push(`action ${action} changed its reconcile expectations`);
392
- }
393
- if (stableStringify(descriptor.payout ?? null) !==
394
- stableStringify(current.payout ?? null)) {
395
- violations.push(`action ${action} changed its payout intent`);
396
- }
397
- if (descriptor.earnable !== current.earnable) {
398
- violations.push(`action ${action} changed its earnable flag`);
399
- }
400
- if (descriptor.effects !== undefined &&
401
- stableStringify(descriptor.effects) !== stableStringify(current.effects)) {
402
- violations.push(`action ${action} changed its derived effects`);
403
- }
404
- if (descriptor.eventName !== current.eventName) {
405
- violations.push(`action ${action} changed its event name`);
406
- }
407
- if (stableStringify(descriptor.due) !== stableStringify(current.due)) {
408
- violations.push(`action ${action} changed its due condition`);
409
- }
410
- if (stableStringify(descriptor.deadline) !== stableStringify(current.deadline)) {
411
- violations.push(`action ${action} changed its admission deadline`);
412
- }
413
- if (stableStringify(descriptor.decision) !== stableStringify(current.decision)) {
414
- violations.push(`action ${action} changed its provider decision`);
415
- }
416
- if ((descriptor.principal ?? null) !== (current.principal ?? null)) {
417
- violations.push(`action ${action} changed its caller principal`);
418
- }
419
- if (stableStringify(descriptor.remainder ?? null) !==
420
- stableStringify(current.remainder ?? null)) {
421
- violations.push(`action ${action} changed its remainder rule`);
422
- }
423
- if (stableStringify(descriptor.requiresChecks ?? []) !==
424
- stableStringify(current.requiresChecks ?? [])) {
425
- violations.push(`action ${action} changed its check prerequisites`);
426
- }
427
- if ((descriptor.sandboxFailurePoint ?? null) !==
428
- (current.sandboxFailurePoint ?? null)) {
429
- violations.push(`action ${action} changed its sandbox failure point`);
430
- }
431
- if (stableStringify(descriptor.updates ?? []) !==
432
- stableStringify(current.updates ?? [])) {
433
- violations.push(`action ${action} changed its field updates`);
434
- }
435
- if (stableStringify(descriptor.distribute) !==
436
- stableStringify(current.distribute)) {
437
- violations.push(`action ${action} changed its distribution rule; money distribution is frozen once live`);
438
- }
439
- if (descriptor.captureInput !== undefined &&
440
- stableStringify(descriptor.captureInput) !==
441
- stableStringify(current.captureInput)) {
442
- violations.push(`action ${action} changed its captured receipt input`);
443
- }
444
- if (stableStringify(descriptor.port) !== stableStringify(current.port)) {
445
- violations.push(`action ${action} changed its decision port`);
446
- }
447
- if (descriptor.publicAction != null &&
448
- descriptor.publicAction !== current.publicAction) {
449
- violations.push(`action ${action} changed its public action`);
450
- }
451
- if (stableStringify(descriptor.setsAt) !== stableStringify(current.setsAt)) {
452
- violations.push(`action ${action} changed its computed timestamp`);
453
- }
454
- if (descriptor.signedSum !== undefined &&
455
- stableStringify(descriptor.signedSum) !==
456
- stableStringify(current.signedSum)) {
457
- violations.push(`action ${action} changed its signed child sum`);
458
- }
459
- }
460
- for (const [action, descriptor] of Object.entries(next)) {
461
- if (previous[action] || descriptor.payout == null)
462
- continue;
463
- violations.push(`action ${action} added a payout intent; external money movement is frozen once live`);
464
- }
465
- return violations;
466
- }
467
- function diffInput(action, previous, next) {
468
- const violations = [];
469
- for (const [field, descriptor] of Object.entries(previous)) {
470
- const current = next[field];
471
- if (!current) {
472
- // Compiled action inputs are strict objects, so a removed field starts
473
- // rejecting every caller that still sends it -- same law as instrument fields.
474
- violations.push(`action ${action} input field ${field} was removed or renamed`);
475
- continue;
476
- }
477
- if (!descriptor.required && current.required) {
478
- violations.push(`action ${action} input field ${field} became required, tightening the action input`);
479
- }
480
- if (stableStringify(descriptor.schema) !== stableStringify(current.schema)) {
481
- violations.push(`action ${action} input field ${field} schema changed; a live action input schema is frozen`);
482
- }
483
- }
484
- for (const [field, descriptor] of Object.entries(next)) {
485
- if (!previous[field] && descriptor.required) {
486
- violations.push(`action ${action} input field ${field} was added as required, tightening the action input`);
487
- }
488
- }
489
- return violations;
490
- }
491
- function diffParties(previous, next) {
492
- const violations = [];
493
- for (const [role, field] of Object.entries(previous)) {
494
- const current = next[role];
495
- if (!current)
496
- violations.push(`party role ${role} was removed or renamed`);
497
- else if (current !== field) {
498
- violations.push(`party role ${role} moved from field ${field} to ${current}`);
499
- }
500
- }
501
- return violations;
502
- }
503
- function diffAggregates(previous, next) {
504
- return [
505
- ...removedSetEntries(previous.aggregateInvariants, next.aggregateInvariants, (key) => `aggregate invariant [${key}] was removed`),
506
- ...next.aggregateInvariants
507
- .filter((key) => !previous.aggregateInvariants.includes(key))
508
- .map((key) => `aggregate invariant [${key}] was added, which can reject existing instances`),
509
- ];
510
- }
511
- function diffQuotes(previous, next) {
512
- if (previous === null || previous === undefined)
513
- return [];
514
- if (next === null || next === undefined)
515
- return ["quote policy was removed"];
516
- return stableStringify(previous) === stableStringify(next)
517
- ? []
518
- : [
519
- "quote policy changed; the charge schedule, the frozen fields, and the refund destination are frozen once live",
520
- ];
521
- }
522
- function aggregateInvariantKey(invariant) {
523
- const measure = "childField" in invariant
524
- ? invariant.childField
525
- : `count${invariant.window ? `[${invariant.window.field} per ${invariant.window.days}d]` : ""}`;
526
- return `${invariant.childInstrumentId}.${measure} within ${invariant.parentField} via ${invariant.childRefField} while ${[...invariant.childStatuses].sort().join(",")}`;
527
- }
528
- function removedSetEntries(previous, next, message) {
529
- const current = new Set(next);
530
- return previous.filter((entry) => !current.has(entry)).map(message);
531
- }
532
- function compactStringRecord(value) {
533
- return Object.fromEntries(Object.entries(value ?? {}).filter((entry) => typeof entry[1] === "string"));
534
- }
535
- function recordValue(value) {
536
- return value !== null && typeof value === "object" && !Array.isArray(value)
537
- ? value
538
- : {};
539
- }
540
- /**
541
- * The comparison key every diff above is written against. It recurses, so it
542
- * carries the same depth budget the validator applies to a document: a
543
- * snapshot is never deeper than the document it came from, and the deepest
544
- * conformance document reaches 12 of the 24 levels. A cycle is infinite depth
545
- * and lands here rather than exhausting the call stack.
546
- */
547
- function stableStringify(value, depth = 1) {
548
- if (depth > UDL_LIMITS.maxDepth) {
549
- throw new UdlError([
550
- issue("UDL1004", "$", `UDL nesting exceeds ${UDL_LIMITS.maxDepth} levels`),
551
- ]);
552
- }
553
- if (value === null || typeof value !== "object") {
554
- return JSON.stringify(value) ?? "null";
555
- }
556
- if (Array.isArray(value)) {
557
- // An arrow, not a bare reference: `map` would pass the index as the depth.
558
- return `[${value.map((item) => stableStringify(item, depth + 1)).join(",")}]`;
559
- }
560
- const entries = Object.entries(value)
561
- .filter(([, entry]) => entry !== undefined)
562
- .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));
563
- return `{${entries
564
- .map(([key, entry]) => `${JSON.stringify(key)}:${stableStringify(entry, depth + 1)}`)
565
- .join(",")}}`;
566
- }
567
- //# sourceMappingURL=evolution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evolution.js","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"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"}
package/dist/parser.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { UdlDocument } from "./schema.js";
2
- export declare function parseUdl(source: string | Uint8Array): UdlDocument;
3
- export declare function canonicalizeUdl(source: string | Uint8Array): string;
4
- //# sourceMappingURL=parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAmBjE;AAkBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAEnE"}