@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/CHANGELOG.md CHANGED
@@ -1,219 +1,8 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this package are documented here. The format follows
4
- [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this package
5
- follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
3
+ ## 1.0.123
6
4
 
7
- Format version and package version are different numbers. Format 1 is unstable
8
- until the package reaches 1.0.0; any change to what format 1 accepts is listed
9
- here under the release that made it.
10
-
11
- ## [Unreleased]
12
-
13
- ## [1.0.0] - 2026-09-04
14
-
15
- This release is byte-identical to 1.0.0-rc.1. Later changes bump under the contract-diff tiers.
16
-
17
- ## [1.0.0-rc.1] - 2026-09-02
18
-
19
- ### Added
20
-
21
- - Stable `UDL####` diagnostics include a category, fix, message, and JSON path.
22
- - Evolution comparison returns coded issues instead of strings.
23
- - `canonicalDigest` returns a promise for SHA-256 over canonical UTF-8 bytes.
24
- - `udl canon` prints canonical bytes or their digest, and `udl explain` prints
25
- the catalog entry for one code.
26
- - The conformance runner has evolution pairs and pins canonical digests, issue
27
- codes, and paths.
28
- - Eight guides, generated clause, diagnostic, and command references,
29
- `llms.txt`, `llms-full.txt`, and an agent skill now ship with the package.
30
-
31
- - `reconcile` declares one expectation about money an action cannot see yet:
32
- the amount path, currency field, direction, the ref naming the provider-side
33
- row, exactly one evidence source, a match law, and a window. The match law is
34
- `exact`, `tolerance` bounded by a `reconcile_tolerance` dial, or `window`. An
35
- expectation that never matches by the end of its window is carried by the
36
- named exception child, capped by `maxOpen`. The child is declared and
37
- validated at admission, not materialized: the transition refuses with
38
- `state_conflict` naming it and the due sweep re-arms the expectation.
39
- `UdlReconcile` exposes the clause type.
40
- - An action may declare a `quote` offer and exactly one other action may spend
41
- it through `commit`. Both the base money field and the net destination are
42
- mandatory members of `fixes`, and `fixes` and `updates` may not overlap.
43
-
44
- ### Removed
45
-
46
- - `requiresSettlement` and `UdlRequiresSettlement` are gone. A payout-owning
47
- instrument now declares exactly one action carrying `reconcile` against a
48
- debit statement line, under any match law. There is no wrapper and no alias.
49
-
50
- ### Changed
51
-
52
- - The npm package includes `docs/` and `skills/`.
53
- - Derived effect rows for `quote`, `commit`, and `reconcile` change the canonical
54
- bytes of stored documents that carry `effects` for those clauses.
55
- - Format 1 now carries every instrument contract clause. Instrument metadata
56
- includes archetype template, navigation, visibility, dials, caller-parked
57
- states, and extensible subjects. Actions include check gates, remainder
58
- arithmetic, field updates, principal policy, and sandbox failure points.
59
- - Remainder clauses declare their computed money refs, so computed money has
60
- one authored source.
61
- - Evolution snapshots protect lifted clauses that affect composition,
62
- admission, or execution. Navigation, examples, and parked-state reason text
63
- remain editable presentation.
64
-
65
- ## [1.0.0-beta.1] - 2026-08-29
66
-
67
- - This is the first beta and has no package behavior changes from
68
- 1.0.0-alpha.5.
69
-
70
- ## [1.0.0-alpha.5] - 2026-08-29
71
-
72
- ### Added
73
-
74
- - Actions may declare a camelCase `publicAction` as their author-approved public
75
- name while the action key remains the lifecycle and execution identity. System
76
- due actions must omit it. `udlPublicActionSchema` is exported for consumers
77
- that admit the same name outside a complete document.
78
- - `captureInput` maps declared action input fields into durable receipt refs.
79
- Declare only input properties from that action and allocate each captured key
80
- in the instrument's shared ref namespace.
81
- - `signedSum` computes stored add and subtract subtotals over typed child money,
82
- then captures one net amount for exactly one payout or instrument transfer. Authors
83
- must declare the child reference, money field, currency, admitted statuses,
84
- and explicit negative and zero policies.
85
- - `requiresExposure` gates a child amount against a stored cap, with an optional
86
- anchor-specific cap, and `setsAt.marker` records occurrence timestamps that
87
- cannot drive a due condition or deadline. Use these clauses for bounded
88
- installment writes and per-anchor occurrence markers.
89
- - `distribute` allocates one parent money field or remainder-computed money ref
90
- across typed children selected by status and stored weight. The validator
91
- resolves the parent, weight, statuses, and pool before admitting the document.
92
- - Instruments may declare up to four `derivedAmounts`. Each rule computes a declared
93
- money field as 1 through 9,999 basis points of another declared money field
94
- with floor rounding. Callers supply neither the result nor a fixed or tiered
95
- rule, and a rule may not derive a field from itself.
96
- - Actions may declare one `payout` intent that reads stored money, currency,
97
- source-account, and beneficiary values and captures the payout reference.
98
- This does not add an operation to the seven-instruction kernel.
99
- - A system-only `requiresSettlement` transition may read a captured payout
100
- reference and capture the durable evidence record that matched it. The
101
- validator rejects caller input, decision ports, public actions, due and
102
- deadline triggers, kernel steps, and money moves on that transition.
103
- - `validateUdlJsonSchema` validates one schema against UDL's sealed JSON Schema
104
- subset without applying it to a value. `UdlPayout` and
105
- `UdlRequiresSettlement` expose the new clause types to TypeScript consumers.
106
-
107
- ### Changed
108
-
109
- - Evolution snapshots freeze public actions, captured receipt input,
110
- distribution rules, exposure gates, signed sums, computed money clauses, and
111
- derived-amount arithmetic once a instrument has live instances. Older snapshots
112
- remain readable when those keys are absent.
113
- - Evolution snapshots freeze both payout intents and settlement evidence gates.
114
- - Receipt refs written by the new clauses share the instrument ref namespace with
115
- kernel captures, input captures, signed sums, subject refs, and unwind refs.
116
-
117
- ## [1.0.0-alpha.4] - 2026-08-26
118
-
119
- ### Removed
120
-
121
- - `diffUdlEvolution`. It validated both arguments and then handed off to
122
- `diffValidatedUdlEvolution`, and nothing called it: `udl diff` and the
123
- engine's composer both take the validated door. Two doors onto one comparison
124
- meant every caller first had to work out which one it was standing in.
125
- Validate with `validateUdl` or `assertValidUdl`, then call
126
- `diffValidatedUdlEvolution`, whose `UdlDocument` parameters keep the compiler
127
- on the right side of that rule.
128
-
129
- ## [1.0.0-alpha.3] - 2026-08-25
130
-
131
- ### Changed
132
-
133
- - `diffUdlEvolution` validates both arguments, so a document `validateUdl`
134
- refuses now throws a `UdlError` carrying that document's issues where
135
- alpha.2 returned evolution violations. Measured on
136
- `conformance/valid/protection.udl` with the product renamed to
137
- `protection_v2` and the live `claim` instrument dropped: alpha.2 returned three
138
- violations, naming the rename, the removed live instrument, and the version that
139
- did not move; this release throws `invalid_semantics` at
140
- `$.instruments[0].aggregateInvariants[0].childInstrumentId`, because another instrument's
141
- aggregate still references `claim`.
142
-
143
- Read the throw as a refusal to judge, not as a verdict of no violations.
144
- A `catch` that treats it as a schema problem and carries on has skipped the
145
- append-only check entirely, and the candidate above is exactly the kind that
146
- then sails through: dropping a live instrument is the headline violation the law
147
- exists to catch. Fix the document, or use `diffValidatedUdlEvolution`.
148
-
149
- The parameters are `unknown` because the function now accepts input nobody
150
- has parsed. A caller who wants the compiler checking the call should hold
151
- two validated documents and use `diffValidatedUdlEvolution`, which keeps the
152
- `UdlDocument` parameter types.
153
-
154
- ### Fixed
155
-
156
- - The evolution exports no longer route around the validator. `diffUdlEvolution`
157
- took typed `UdlDocument` arguments and called neither `validateUdl` nor
158
- `assertValidUdl` before reaching the diff's comparison key, so a caller
159
- handing it an object it had never parsed got a `RangeError` off the call
160
- stack where `validateUdl` returns a `resource_limit` issue for the same
161
- object. It takes `unknown` now and validates both arguments.
162
- - The comparison key behind every diff carries the same depth budget the
163
- validator applies to a document (`UDL_LIMITS.maxDepth`, 24 levels; the
164
- deepest conformance document reaches 12). This is what protects
165
- `diffInstrumentEvolution`, which takes snapshots no validator has seen, and it
166
- closes the case where `snapshotUdlInstrument` returns a cyclic snapshot that only
167
- detonates when something later stringifies it.
168
-
169
- ### Added
170
-
171
- - `diffValidatedUdlEvolution`, the same comparison for a caller holding two
172
- documents `validateUdl` has already admitted. It keeps the `UdlDocument`
173
- parameter types, and it is the door for judging a candidate that is not yet
174
- valid on its own. It also skips a validation the caller has already paid
175
- for: on the commerce-escrow fixture `validateUdl` costs 0.57 ms against the
176
- diff's 0.38 ms, so `udl diff`, which parses both files first, takes this
177
- door rather than validating four documents to compare two.
178
-
179
- ## [1.0.0-alpha.2] - 2026-08-23
180
-
181
- ### Fixed
182
-
183
- - `bin` points at the built JavaScript; alpha.1's registry metadata pointed at
184
- TypeScript source. npm builds the packument from package.json as it sits on
185
- disk after `postpack`, so the pack-time rewrite never reached `bin`, and
186
- every install linked `.bin/udl` to `src/cli.ts`, which Node refuses to
187
- execute.
188
-
189
- ### Changed
190
-
191
- - Licensed AGPL-3.0-only with a commercial license from Hyperscale LLC;
192
- copyright holder Hyperscale LLC; repository renamed to
193
- `hyperscale0/hyperscale-udl`.
194
-
195
- ## [1.0.0-alpha.1] - 2026-08-22
196
-
197
- First public release. Format version 1.
198
-
199
- ### Added
200
-
201
- - `spec/udl.schema.json`, JSON Schema 2020-12 generated from the grammar, plus
202
- `spec/README.md` carrying the ten laws, the canonical form, and the issue
203
- codes.
204
- - `conformance/`, the format's semantic spec as data: 7 valid documents with
205
- their canonical bytes and 11 refused documents with the issue codes and JSON
206
- paths they must report, runnable from any language.
207
- - The `udl` command: `udl validate`, `udl fmt [--write]`, and `udl diff`.
208
- - `bun run spec:check`, which fails when the committed schema drifts from the
209
- grammar it was generated from.
210
-
211
- [Unreleased]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0...HEAD
212
- [1.0.0]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-rc.1...v1.0.0
213
- [1.0.0-rc.1]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-beta.1...v1.0.0-rc.1
214
- [1.0.0-beta.1]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.5...v1.0.0-beta.1
215
- [1.0.0-alpha.5]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.4...v1.0.0-alpha.5
216
- [1.0.0-alpha.4]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.3...v1.0.0-alpha.4
217
- [1.0.0-alpha.3]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.2...v1.0.0-alpha.3
218
- [1.0.0-alpha.2]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.1...v1.0.0-alpha.2
219
- [1.0.0-alpha.1]: https://github.com/hyperscale0/hyperscale-udl/releases/tag/v1.0.0-alpha.1
5
+ First unified release. Every public Hyperscale package now ships under one
6
+ version that follows the platform release number, so release 123 is 1.0.123.
7
+ The compiled contract format is UDL 1 and the HSX header-manifest edition is
8
+ HSX 1.
package/LICENSE.md ADDED
@@ -0,0 +1,356 @@
1
+ # Hyperscale Intellectual Property and Copyright License
2
+
3
+ Version 1.0, effective 18 September 2026. This text is under review by
4
+ Hyperscale LLC's counsel. Until a revised version replaces it, it states the
5
+ terms on which Hyperscale makes the Software available.
6
+
7
+ SPDX identifier: `LicenseRef-Hyperscale-IPCL-1.0`
8
+
9
+ Copyright (c) 2026 Hyperscale LLC. All rights reserved.
10
+
11
+ This is not an open source license. The Software is proprietary. Hyperscale
12
+ publishes some of it so that you can read it, learn it, build on the Hyperscale
13
+ platform with it, and verify what Hyperscale runs. Publishing is not a gift of
14
+ rights. Every right not written in this License stays with Hyperscale.
15
+
16
+ ---
17
+
18
+ ## 1. Acceptance
19
+
20
+ By accessing, viewing, downloading, cloning, installing, copying, compiling,
21
+ running, or otherwise using any part of the Software, you accept this License.
22
+ If you do not accept it, do none of those things. If you act for an
23
+ organisation, you confirm you have authority to bind it, and "you" means that
24
+ organisation and every person acting for it.
25
+
26
+ ## 2. Definitions
27
+
28
+ "Hyperscale" means Hyperscale LLC, a limited liability company organised under
29
+ the laws of the Kingdom of Saudi Arabia, and its successors and assigns.
30
+
31
+ "Software" means every work Hyperscale distributes under this License, in any
32
+ form: source code, compiled or bundled code, schemas, grammars, standard
33
+ libraries, headers, example programs, fixtures, conformance cases, generated
34
+ artifacts, documentation, designs, images, and data files, and every update,
35
+ version, or part of any of them.
36
+
37
+ "Specification" means the parts of the Software that Hyperscale designates as a
38
+ Specification in the applicable Notice: a schema, grammar, wire format,
39
+ manifest format, vocabulary, or interface description, together with its
40
+ documentation and published example inputs and outputs.
41
+
42
+ "Hyperscale Platform" means the products and services Hyperscale offers or
43
+ operates, in any form and under any name, including Hyperscale Arc, Architect,
44
+ Composer, the Hyperscale engine, portals, registries, hosted compilers, hosted
45
+ MCP servers, generated SDKs, and every successor product.
46
+
47
+ "Notice" means the file named `NOTICE` or `NOTICE.md`, or the license
48
+ statement in a package manifest, that accompanies a copy of the Software and
49
+ states which Tier under section 4 applies to it.
50
+
51
+ "Tier" means one of the three permission levels in section 4.
52
+
53
+ "Derivative Work" means any work that is based on, incorporates, translates,
54
+ adapts, ports, reimplements, transforms, or is derived from the Software or any
55
+ part of it, in any language or form, including a work produced by studying the
56
+ Software and then writing new code that performs the same function.
57
+
58
+ "Competing Product" means any product, service, library, platform, or tool,
59
+ whether or not sold, that performs or is offered as performing substantially the
60
+ same function as the Hyperscale Platform or any part of it, including: a
61
+ language, compiler, or checker for financial programs; an engine, runtime, or
62
+ ledger that executes financial product definitions; a framework for declaring,
63
+ conforming, or operating bank or payment provider adapters; a service that
64
+ generates APIs, SDKs, or agent tools from a financial product definition; or a
65
+ hosted or embedded version of any of those. A product you build on the
66
+ Hyperscale Platform for your own customers is not a Competing Product.
67
+
68
+ "Hosted Use" means making the functionality of the Software available to any
69
+ third party over a network, whether as a service, an API, an agent tool, an
70
+ embedded feature, or otherwise.
71
+
72
+ "Contribution" means any work of authorship you intentionally submit to
73
+ Hyperscale for inclusion in the Software, by any means, unless you clearly mark
74
+ it "not a contribution".
75
+
76
+ "Marks" means the names, logos, and trade dress of Hyperscale and its products,
77
+ including "Hyperscale", "Hyperscale Arc", "HSX", "UDL", "ADL", "Architect",
78
+ "Composer", the `hyperscale0` GitHub organisation, the `@hyperscale0` npm
79
+ scope, and every confusingly similar name or sign.
80
+
81
+ "Confidential Material" means Software distributed under Tier 3, and any part
82
+ of the Software that Hyperscale has not made publicly available.
83
+
84
+ ## 3. Ownership
85
+
86
+ Hyperscale owns all right, title, and interest in the Software, the
87
+ Specifications, the Marks, and every Derivative Work Hyperscale creates,
88
+ including all copyright, patent, trade secret, design, database, and moral
89
+ rights, worldwide. The Software is licensed, not sold. This License transfers
90
+ no ownership of anything to you. Your possession of a copy, in any form, gives
91
+ you no right in it beyond what this License states.
92
+
93
+ The Specifications describe how the Hyperscale Platform works. The design
94
+ choices they record, the vocabulary they fix, the structure of the financial
95
+ programs, products, ledgers, and adapters they define, and the standard library
96
+ of financial instruments Hyperscale publishes are Hyperscale's intellectual
97
+ property. Publication does not place any of it in the public domain.
98
+
99
+ ## 4. Tiers of permission
100
+
101
+ Every copy of the Software carries a Notice naming its Tier. If a copy carries
102
+ no Notice, Tier 3 applies. A permission granted at a higher-numbered Tier is
103
+ never implied at a lower-numbered one.
104
+
105
+ ### Tier 1: Open Specification
106
+
107
+ For Software designated as a Specification, Hyperscale grants you a worldwide,
108
+ non-exclusive, non-transferable, royalty-free, revocable license to:
109
+
110
+ 1. read, copy, and redistribute the Specification, unmodified and with all
111
+ notices intact;
112
+ 2. write programs, documents, and data that conform to the Specification, and
113
+ use them in any way, including commercially;
114
+ 3. write and distribute software that reads, writes, validates, or displays
115
+ data conforming to the Specification, solely for the purpose of using or
116
+ interoperating with the Hyperscale Platform or with products built on it;
117
+ 4. quote reasonable portions of the Specification in documentation, teaching,
118
+ and commentary, with attribution to Hyperscale.
119
+
120
+ Tier 1 does not permit you to build a Competing Product, to publish a modified
121
+ Specification under any name that includes or resembles a Mark, or to claim
122
+ conformance or compatibility except as section 8 allows.
123
+
124
+ ### Tier 2: Source Available
125
+
126
+ For Software designated as Source Available, Hyperscale grants you a worldwide,
127
+ non-exclusive, non-transferable, non-sublicensable, royalty-free, revocable
128
+ license to:
129
+
130
+ 1. view, download, and study the source;
131
+ 2. install, compile, and run the Software, unmodified or modified, on systems
132
+ you control, for the purpose of building, testing, operating, and
133
+ maintaining your own products on the Hyperscale Platform;
134
+ 3. modify the Software for that purpose and keep the modification for your own
135
+ internal use;
136
+ 4. submit modifications to Hyperscale as Contributions;
137
+ 5. redistribute unmodified copies of the Software, in the form Hyperscale
138
+ published them, with all notices and this License intact, for example by
139
+ mirroring a package or vendoring a dependency.
140
+
141
+ Tier 2 does not permit Hosted Use, distribution of modified copies,
142
+ distribution of compiled or bundled forms other than those Hyperscale
143
+ published, or any use in or toward a Competing Product.
144
+
145
+ ### Tier 3: Confidential
146
+
147
+ For Software designated as Confidential, or carrying no Notice, Hyperscale
148
+ grants you only the license written in the agreement under which you received
149
+ it. If there is no such agreement, you have no license, and you must not use,
150
+ copy, disclose, or retain the Software. Confidential Material includes generated
151
+ SDKs, downloadable product artifacts, private repositories, and anything you
152
+ obtain through a portal, a registry, or a signed-in session. You may use
153
+ Confidential Material only for your own organisation's Hyperscale integration,
154
+ must not publish it to any public repository or package registry, must not
155
+ disclose it beyond personnel and contractors who need it and are bound by
156
+ confidentiality at least as protective as this License, and must destroy it on
157
+ request or when your access ends.
158
+
159
+ ## 5. Restrictions
160
+
161
+ Whatever the Tier, you must not, and must not help or allow anyone else to:
162
+
163
+ 1. build, contribute to, market, sell, or operate a Competing Product using
164
+ the Software, a Derivative Work, or knowledge gained from the Software;
165
+ 2. create a Derivative Work except as Tier 2 permits for internal use;
166
+ 3. reimplement, port, translate, or clone the Software or any part of it, in
167
+ any programming language, whether by copying or by studying it and
168
+ rewriting it;
169
+ 4. offer the Software or a Derivative Work for Hosted Use;
170
+ 5. sublicense, sell, rent, lease, lend, or assign the Software or any right in
171
+ it;
172
+ 6. remove, hide, or alter any copyright, trademark, license, or attribution
173
+ notice, or misstate the origin of the Software;
174
+ 7. reverse engineer, decompile, disassemble, or unminify any compiled, bundled,
175
+ or generated form of the Software, except where a law forbids this
176
+ restriction and only to the extent it does;
177
+ 8. circumvent, disable, or evade any license check, access control, rate limit,
178
+ key, or technical protection in the Software or the Hyperscale Platform;
179
+ 9. use the Software, the Specifications, or any output of the Hyperscale
180
+ Platform as training, fine-tuning, evaluation, or retrieval data for any
181
+ machine-learning model, or to generate a Competing Product with such a
182
+ model, without Hyperscale's prior written consent;
183
+ 10. use the Software to benchmark or compare the Hyperscale Platform in any
184
+ publication without Hyperscale's prior written consent;
185
+ 11. register, apply for, or claim any patent, trademark, design, or domain
186
+ name that covers or resembles the Software, the Specifications, or the
187
+ Marks;
188
+ 12. use the Software in violation of any law, sanction, or export control;
189
+ 13. use the Software for any purpose this License does not expressly permit.
190
+
191
+ ## 6. Contributions
192
+
193
+ You are not required to contribute. If you do, then on submission you grant
194
+ Hyperscale, and everyone who receives the Software from Hyperscale, a
195
+ perpetual, worldwide, non-exclusive, irrevocable, royalty-free license to use,
196
+ reproduce, modify, distribute, sublicense, and relicense your Contribution
197
+ under any terms, including this License and any commercial license, and you
198
+ grant Hyperscale a patent license of the same scope covering the claims your
199
+ Contribution alone or in combination with the Software would infringe. You
200
+ confirm you have the right to make these grants and that the Contribution is
201
+ your own work or that you have permission to submit it. Hyperscale may require
202
+ a signed contributor agreement before merging any Contribution and may decline
203
+ any Contribution for any reason. Feedback, suggestions, and ideas you send
204
+ about the Software are not confidential and Hyperscale may use them freely.
205
+
206
+ ## 7. Marks
207
+
208
+ This License grants no right to any Mark. You may refer to the Software and to
209
+ the Hyperscale Platform by name to describe truthfully that your product uses
210
+ or integrates with them. You must not use any Mark as or in the name of your
211
+ product, company, package, domain, or repository, in a logo, or in any way that
212
+ suggests Hyperscale made, sponsors, certifies, or endorses your work.
213
+
214
+ ## 8. Conformance and compatibility claims
215
+
216
+ You may state that your product "conforms to" or "is compatible with" a named
217
+ Specification version only if, at the time of the claim, your product
218
+ validates against the Specification exactly as Hyperscale published it, using
219
+ Hyperscale's published example inputs unmodified, and you built the product
220
+ under Tier 1 for the purpose of interoperating with the Hyperscale Platform.
221
+ The claim is a statement about your product and never an endorsement by
222
+ Hyperscale. Hyperscale may require you to withdraw a claim it considers false.
223
+ No claim of conformance permits a Competing Product.
224
+
225
+ ## 9. Commercial license
226
+
227
+ Hyperscale offers a commercial license to organisations whose use falls
228
+ outside this License, including Hosted Use, distribution of modified copies,
229
+ embedding in a proprietary product, or any use a procurement policy cannot
230
+ accept under these terms. Ask through <https://hyperscale0.ai>. Nothing in this
231
+ section grants any right until a commercial agreement is signed.
232
+
233
+ ## 10. Prior releases
234
+
235
+ Any version of the Software that Hyperscale released under a different license
236
+ remains available under that license for that version only. This License
237
+ applies to every version that carries it and to every later version unless
238
+ that version states otherwise. Nothing in this License narrows a right you
239
+ already hold in a prior version under its own license.
240
+
241
+ ## 11. Term and termination
242
+
243
+ This License takes effect when you accept it and lasts until terminated. It
244
+ terminates automatically, with no notice, the moment you breach section 5 or
245
+ section 7. For any other breach, it terminates thirty days after Hyperscale
246
+ notifies you, unless you cure the breach within that period and it is the
247
+ first notice you have received. Hyperscale may also terminate this License for
248
+ convenience for any Tier 3 material, on notice. On termination you must stop
249
+ all use, destroy every copy in your possession or control, including
250
+ Derivative Works, and confirm destruction in writing if asked. Sections 3, 5,
251
+ 6, 7, 11, 12, 13, 14, 15, and 16 survive termination.
252
+
253
+ ## 12. Disclaimer of warranty
254
+
255
+ The Software is provided "as is" and "as available". Hyperscale makes no
256
+ warranty of any kind, express, implied, or statutory, including any warranty
257
+ of merchantability, fitness for a particular purpose, title, non-infringement,
258
+ accuracy, or that the Software will be error-free or uninterrupted. Hyperscale
259
+ is not a bank, does not hold money, and gives no assurance that any financial
260
+ program, product, or adapter written with the Software is lawful, licensed,
261
+ or fit for any real-world financial use in any jurisdiction.
262
+
263
+ ## 13. Limitation of liability
264
+
265
+ To the fullest extent the law allows, Hyperscale is not liable to you or any
266
+ third party for any indirect, incidental, special, consequential, exemplary, or
267
+ punitive damages, or for any loss of profit, revenue, data, goodwill, or
268
+ business opportunity, arising from or related to the Software or this
269
+ License, however caused and under any theory of liability, even if advised of
270
+ the possibility. Hyperscale's total liability under this License is limited to
271
+ one thousand Saudi riyals (SAR 1,000) or the amount you paid Hyperscale for the
272
+ Software in the twelve months before the claim, whichever is greater.
273
+
274
+ ## 14. Indemnity
275
+
276
+ You will defend, indemnify, and hold harmless Hyperscale, its owners,
277
+ officers, employees, and agents from every claim, loss, damage, liability,
278
+ cost, and expense, including reasonable legal fees, arising from your use of
279
+ the Software, your Derivative Works, your products, or your breach of this
280
+ License.
281
+
282
+ ## 15. Remedies and enforcement
283
+
284
+ You acknowledge that the Software embodies valuable trade secrets and
285
+ intellectual property of Hyperscale, that a breach of section 3, 4, 5, or 7
286
+ would cause Hyperscale irreparable harm that money alone cannot repair, and
287
+ that Hyperscale is entitled to injunctive and other equitable relief in any
288
+ court of competent jurisdiction to stop or prevent a breach, without posting a
289
+ bond and in addition to every other remedy. You will pay Hyperscale's
290
+ reasonable legal fees and costs in any action in which Hyperscale enforces
291
+ this License and prevails on any claim. Hyperscale may bring an action in the
292
+ courts named in section 16 or in any jurisdiction where the Software is used,
293
+ a Derivative Work is made, or a Competing Product is offered, and you consent
294
+ to the jurisdiction of those courts.
295
+
296
+ ## 16. Governing law and venue
297
+
298
+ This License is governed by the laws of the Kingdom of Saudi Arabia, including
299
+ the Copyright Law issued by Royal Decree M/41 and its implementing
300
+ regulations, without regard to conflict-of-law rules. The competent courts of
301
+ Riyadh have exclusive jurisdiction over any dispute arising from this License,
302
+ subject to Hyperscale's right under section 15 to enforce elsewhere. The
303
+ Berne Convention and the TRIPS Agreement apply to the protection of the
304
+ Software in every member state. Where a law of another jurisdiction gives you
305
+ a right this License cannot exclude, that right is preserved to the minimum
306
+ extent that law requires and no further.
307
+
308
+ ## 17. General
309
+
310
+ 1. This License is the entire agreement between you and Hyperscale about the
311
+ Software under its Tier, and replaces every earlier or contemporaneous
312
+ understanding, except a signed commercial agreement, which prevails where
313
+ the two conflict.
314
+ 2. If any provision is held unenforceable, it is limited to the minimum
315
+ extent necessary and the rest stays in force.
316
+ 3. Hyperscale's failure or delay in enforcing any provision is not a waiver.
317
+ A waiver is effective only in writing signed by Hyperscale.
318
+ 4. You may not assign or transfer this License or any right under it, by
319
+ operation of law or otherwise, and any attempt is void. Hyperscale may
320
+ assign it freely.
321
+ 5. Hyperscale may publish new versions of this License. Each version of the
322
+ Software carries the License version it was released under, and a new
323
+ License version applies only to Software that carries it.
324
+ 6. This License is written in English. Hyperscale may publish an Arabic
325
+ translation. Where a court requires an Arabic text, the certified Arabic
326
+ translation Hyperscale provides is the text of record; in every other case
327
+ the English text governs.
328
+ 7. Nothing in this License creates a partnership, joint venture, agency, or
329
+ employment relationship between you and Hyperscale.
330
+ 8. Notices to Hyperscale go to the address published at
331
+ <https://hyperscale0.ai/legal>.
332
+
333
+ ---
334
+
335
+ ## Applying this License
336
+
337
+ A copy of the Software must carry this file as `LICENSE.md` and a `NOTICE.md`
338
+ that states the Tier. The form is:
339
+
340
+ ```
341
+ This work is licensed under the Hyperscale Intellectual Property and
342
+ Copyright License, version 1.0 (LicenseRef-Hyperscale-IPCL-1.0).
343
+ Copyright (c) 2026 Hyperscale LLC. All rights reserved.
344
+
345
+ Tier: 2 (Source Available)
346
+ Specifications under Tier 1 in this repository: spec/, docs/grammar.md
347
+
348
+ Not open source. See LICENSE.md.
349
+ ```
350
+
351
+ A package manifest states `"license": "SEE LICENSE IN LICENSE.md"`. A source
352
+ file may carry the one-line header:
353
+
354
+ ```
355
+ // Copyright (c) 2026 Hyperscale LLC. Licensed under LicenseRef-Hyperscale-IPCL-1.0. Not open source.
356
+ ```
package/NOTICE.md ADDED
@@ -0,0 +1,8 @@
1
+ This work is licensed under the Hyperscale Intellectual Property and
2
+ Copyright License, version 1.0 (`LicenseRef-Hyperscale-IPCL-1.0`).
3
+ Copyright (c) 2026 Hyperscale LLC. All rights reserved.
4
+
5
+ Tier: 2 (Source Available)
6
+ Specifications under Tier 1 (Open Specification) in this repository: spec/, docs/
7
+
8
+ Not open source. See [LICENSE.md](LICENSE.md).