@hyperscale0/udl 1.0.0-alpha.2 → 1.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AUTHORS CHANGED
@@ -1,7 +1,7 @@
1
1
  Hyperscale LLC holds the copyright in this repository.
2
2
 
3
3
  UDL was created at Hyperscale by the three founders of Hyperscale LLC, who
4
- also created the HSX language and the Hyperscale platform:
4
+ also created the HSX language, the ADL format, and the Hyperscale platform:
5
5
 
6
6
  Meshael AlBakaawi
7
7
  Amir Ayub
package/CHANGELOG.md CHANGED
@@ -10,6 +10,56 @@ here under the release that made it.
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [1.0.0-alpha.3] - 2026-08-25
14
+
15
+ ### Changed
16
+
17
+ - `diffUdlEvolution` validates both arguments, so a document `validateUdl`
18
+ refuses now throws a `UdlError` carrying that document's issues where
19
+ alpha.2 returned evolution violations. Measured on
20
+ `conformance/valid/protection.udl` with the product renamed to
21
+ `protection_v2` and the live `claim` noun dropped: alpha.2 returned three
22
+ violations, naming the rename, the removed live noun, and the version that
23
+ did not move; this release throws `invalid_semantics` at
24
+ `$.nouns[0].aggregateInvariants[0].childNounId`, because another noun's
25
+ aggregate still references `claim`.
26
+
27
+ Read the throw as a refusal to judge, not as a verdict of no violations.
28
+ A `catch` that treats it as a schema problem and carries on has skipped the
29
+ append-only check entirely, and the candidate above is exactly the kind that
30
+ then sails through: dropping a live noun is the headline violation the law
31
+ exists to catch. Fix the document, or use `diffValidatedUdlEvolution`.
32
+
33
+ The parameters are `unknown` because the function now accepts input nobody
34
+ has parsed. A caller who wants the compiler checking the call should hold
35
+ two validated documents and use `diffValidatedUdlEvolution`, which keeps the
36
+ `UdlDocument` parameter types.
37
+
38
+ ### Fixed
39
+
40
+ - The evolution exports no longer route around the validator. `diffUdlEvolution`
41
+ took typed `UdlDocument` arguments and called neither `validateUdl` nor
42
+ `assertValidUdl` before reaching the diff's comparison key, so a caller
43
+ handing it an object it had never parsed got a `RangeError` off the call
44
+ stack where `validateUdl` returns a `resource_limit` issue for the same
45
+ object. It takes `unknown` now and validates both arguments.
46
+ - The comparison key behind every diff carries the same depth budget the
47
+ validator applies to a document (`UDL_LIMITS.maxDepth`, 24 levels; the
48
+ deepest conformance document reaches 12). This is what protects
49
+ `diffNounEvolution`, which takes snapshots no validator has seen, and it
50
+ closes the case where `snapshotUdlNoun` returns a cyclic snapshot that only
51
+ detonates when something later stringifies it.
52
+
53
+ ### Added
54
+
55
+ - `diffValidatedUdlEvolution`, the same comparison for a caller holding two
56
+ documents `validateUdl` has already admitted. It keeps the `UdlDocument`
57
+ parameter types, and it is the door for judging a candidate that is not yet
58
+ valid on its own. It also skips a validation the caller has already paid
59
+ for: on the commerce-escrow fixture `validateUdl` costs 0.57 ms against the
60
+ diff's 0.38 ms, so `udl diff`, which parses both files first, takes this
61
+ door rather than validating four documents to compare two.
62
+
13
63
  ## [1.0.0-alpha.2] - 2026-08-23
14
64
 
15
65
  ### Fixed
@@ -42,6 +92,7 @@ First public release. Format version 1.
42
92
  - `bun run spec:check`, which fails when the committed schema drifts from the
43
93
  grammar it was generated from.
44
94
 
45
- [Unreleased]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.2...HEAD
95
+ [Unreleased]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.3...HEAD
96
+ [1.0.0-alpha.3]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.2...v1.0.0-alpha.3
46
97
  [1.0.0-alpha.2]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.1...v1.0.0-alpha.2
47
98
  [1.0.0-alpha.1]: https://github.com/hyperscale0/hyperscale-udl/releases/tag/v1.0.0-alpha.1
package/README.md CHANGED
@@ -25,9 +25,8 @@ npm install @hyperscale0/udl
25
25
  ```
26
26
 
27
27
  Every release before 1.0.0 is an alpha, and `latest` follows the newest one, so
28
- a bare install gets it. `npm install @hyperscale0/udl@alpha` is the explicit
29
- form and resolves to the same version. Pin an exact version if you need one:
30
- until 1.0.0 a change to the surface ships as a minor bump, not a major.
28
+ a bare install gets it. Pin an exact version if you need one: until 1.0.0 a
29
+ change to the surface ships as a minor bump, not a major.
31
30
 
32
31
  ## Thirty seconds
33
32
 
@@ -89,6 +88,16 @@ const violations = diffUdlEvolution(live, document);
89
88
  `serializeUdl` validates before it writes, so an invalid document has no
90
89
  canonical form.
91
90
 
91
+ `diffUdlEvolution` takes `unknown` and validates both arguments, so a document
92
+ `validateUdl` refuses throws a `UdlError` carrying that document's issues
93
+ instead of returning evolution violations. Read that as a refusal to judge,
94
+ not as a verdict of no violations: a `catch` that treats it as "a schema
95
+ problem, not an evolution problem" and carries on has skipped the append-only
96
+ check entirely, and a candidate that drops a live noun will sail through. Fix
97
+ the document, or hand two documents you have already validated to
98
+ `diffValidatedUdlEvolution`, which keeps the `UdlDocument` parameter types and
99
+ so is also the door to use if you want the compiler checking your call.
100
+
92
101
  ## The command
93
102
 
94
103
  ```bash
@@ -132,8 +141,7 @@ Two numbers move independently.
132
141
  **Format version** is the literal `"udl": 1` inside a document. Format 1 is the
133
142
  only format that exists.
134
143
 
135
- **Package version** is this package's semver, currently `1.0.0-alpha.1`,
136
- published only under the `alpha` dist-tag.
144
+ **Package version** is this package's semver, in `package.json`.
137
145
 
138
146
  Format 1 is unstable until the package reaches 1.0.0. Until then an alpha
139
147
  release may change what format 1 accepts, and every such change is listed in
package/dist/cli.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * document that already has live instances.
7
7
  */
8
8
  import { readFile, writeFile } from "node:fs/promises";
9
- import { canonicalizeUdl, diffUdlEvolution, parseUdl, UdlError, } from "./index.js";
9
+ import { canonicalizeUdl, diffValidatedUdlEvolution, parseUdl, UdlError, } from "./index.js";
10
10
  const USAGE = `udl - the Universal Domain Language toolchain
11
11
 
12
12
  usage:
@@ -92,7 +92,9 @@ async function diffCommand(args) {
92
92
  const next = parseDocument(nextPath, nextBytes);
93
93
  if (live === null || next === null)
94
94
  return 1;
95
- const violations = diffUdlEvolution(live, next);
95
+ // `parseDocument` already validated both, so take the door that does not
96
+ // validate a second time.
97
+ const violations = diffValidatedUdlEvolution(live, next);
96
98
  if (violations.length === 0) {
97
99
  console.log(`${nextPath}: additive`);
98
100
  return 0;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,QAAQ,EACR,QAAQ,GAET,MAAM,YAAY,CAAC;AAEpB,MAAM,KAAK,GAAG;;;;;;;;;;;6DAW+C,CAAC;AAE9D,KAAK,UAAU,IAAI,CAAC,IAAuB;IACzC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC;QACX,KAAK,UAAU;YACb,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,uBAAuB,CAAC,CAAC;QAC7C;YACE,OAAO,UAAU,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAuB;IACpD,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC7B,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAuB;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAC3E,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE7B,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,4EAA4E;IAC5E,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAuB;IAChD,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;IAC5C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,OAAO,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE7C,yEAAyE;IACzE,0BAA0B;IAC1B,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,YAAY,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,UAAU;QAChC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,KAAK,SAAS,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,SAAS,aAAa,CAAC,IAAY,EAAE,KAAiB;IACpD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAc;IAChD,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;QAAE,MAAM,KAAK,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -56,8 +56,23 @@ export interface NounEvolutionSnapshot {
56
56
  }
57
57
  /** Project an open .udl noun into the evolution engine's exact semantic shape. */
58
58
  export declare function snapshotUdlNoun(noun: UdlNoun): NounEvolutionSnapshot;
59
- /** Compare two product definitions under the append-only evolution law. */
60
- export declare function diffUdlEvolution(previous: UdlDocument, next: UdlDocument): readonly string[];
59
+ /**
60
+ * Compare two product definitions under the append-only evolution law.
61
+ *
62
+ * Both arguments are validated first. The typed signature this used to carry
63
+ * invited a caller to hand over an object it had never parsed, and the diff
64
+ * walks straight into `stableStringify`: a document with a cycle in it threw
65
+ * a RangeError out of here while `validateUdl` returned a clean
66
+ * `resource_limit` issue for the same object.
67
+ */
68
+ export declare function diffUdlEvolution(previous: unknown, next: unknown): readonly string[];
69
+ /**
70
+ * The same comparison for a caller holding two documents `validateUdl` has
71
+ * already admitted. Validation costs roughly twice what the diff costs, so a
72
+ * caller that has paid once should not pay again: `udl diff` parses both
73
+ * files and then takes this door.
74
+ */
75
+ export declare function diffValidatedUdlEvolution(previous: UdlDocument, next: UdlDocument): readonly string[];
61
76
  /** Diff one noun snapshot. An empty result means the change is additive. */
62
77
  export declare function diffNounEvolution(previous: NounEvolutionSnapshot, next: NounEvolutionSnapshot): readonly string[];
63
78
  //# sourceMappingURL=evolution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evolution.d.ts","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evolution.d.ts","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,WAAW,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AAG/E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,4EAA4E;AAC5E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;CACjE;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAuCpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,OAAO,GACZ,SAAS,MAAM,EAAE,CAKnB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,WAAW,GAChB,SAAS,MAAM,EAAE,CA8DnB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAE,qBAAqB,GAC1B,SAAS,MAAM,EAAE,CAmFnB"}
package/dist/evolution.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { UDL_LIMITS } from "./limits.js";
2
+ import { assertValidUdl, UdlError } from "./validation.js";
1
3
  /** Project an open .udl noun into the evolution engine's exact semantic shape. */
2
4
  export function snapshotUdlNoun(noun) {
3
5
  const required = new Set(noun.required);
@@ -28,8 +30,25 @@ export function snapshotUdlNoun(noun) {
28
30
  ])),
29
31
  };
30
32
  }
31
- /** Compare two product definitions under the append-only evolution law. */
33
+ /**
34
+ * Compare two product definitions under the append-only evolution law.
35
+ *
36
+ * Both arguments are validated first. The typed signature this used to carry
37
+ * invited a caller to hand over an object it had never parsed, and the diff
38
+ * walks straight into `stableStringify`: a document with a cycle in it threw
39
+ * a RangeError out of here while `validateUdl` returned a clean
40
+ * `resource_limit` issue for the same object.
41
+ */
32
42
  export function diffUdlEvolution(previous, next) {
43
+ return diffValidatedUdlEvolution(assertValidUdl(previous), assertValidUdl(next));
44
+ }
45
+ /**
46
+ * The same comparison for a caller holding two documents `validateUdl` has
47
+ * already admitted. Validation costs roughly twice what the diff costs, so a
48
+ * caller that has paid once should not pay again: `udl diff` parses both
49
+ * files and then takes this door.
50
+ */
51
+ export function diffValidatedUdlEvolution(previous, next) {
33
52
  const violations = [];
34
53
  if (previous.product !== next.product) {
35
54
  violations.push(`product id changed from ${previous.product} to ${next.product}`);
@@ -328,18 +347,35 @@ function recordValue(value) {
328
347
  ? value
329
348
  : {};
330
349
  }
331
- function stableStringify(value) {
350
+ /**
351
+ * The comparison key every diff above is written against. It recurses, so it
352
+ * carries the same depth budget the validator applies to a document: a
353
+ * snapshot is never deeper than the document it came from, and the deepest
354
+ * conformance document reaches 12 of the 24 levels. A cycle is infinite depth
355
+ * and lands here rather than exhausting the call stack.
356
+ */
357
+ function stableStringify(value, depth = 1) {
358
+ if (depth > UDL_LIMITS.maxDepth) {
359
+ throw new UdlError([
360
+ {
361
+ code: "resource_limit",
362
+ message: `UDL nesting exceeds ${UDL_LIMITS.maxDepth} levels`,
363
+ path: "$",
364
+ },
365
+ ]);
366
+ }
332
367
  if (value === null || typeof value !== "object") {
333
368
  return JSON.stringify(value) ?? "null";
334
369
  }
335
370
  if (Array.isArray(value)) {
336
- return `[${value.map(stableStringify).join(",")}]`;
371
+ // An arrow, not a bare reference: `map` would pass the index as the depth.
372
+ return `[${value.map((item) => stableStringify(item, depth + 1)).join(",")}]`;
337
373
  }
338
374
  const entries = Object.entries(value)
339
375
  .filter(([, entry]) => entry !== undefined)
340
376
  .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));
341
377
  return `{${entries
342
- .map(([key, entry]) => `${JSON.stringify(key)}:${stableStringify(entry)}`)
378
+ .map(([key, entry]) => `${JSON.stringify(key)}:${stableStringify(entry, depth + 1)}`)
343
379
  .join(",")}}`;
344
380
  }
345
381
  //# sourceMappingURL=evolution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evolution.js","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evolution.js","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { canonicalizeUdl, parseUdl } from "./parser.js";
2
2
  export { serializeUdl } from "./canonical.js";
3
3
  export { fixedIsoDurationMs } from "./duration.js";
4
4
  export { analyzeNounFinance, type FinanceIssue, type FinanceOptions, } from "./finance.js";
5
- export { diffNounEvolution, diffUdlEvolution, snapshotUdlNoun, } from "./evolution.js";
5
+ export { diffNounEvolution, diffUdlEvolution, diffValidatedUdlEvolution, snapshotUdlNoun, } from "./evolution.js";
6
6
  export type { EvolutionFieldSnapshot, EvolutionMoveSnapshot, EvolutionStepSnapshot, EvolutionTransitionSnapshot, EvolutionVerbSnapshot, NounEvolutionSnapshot, } from "./evolution.js";
7
7
  export { UDL_FORMAT_VERSION, udlDocumentSchema, udlKernelOperationSchema, } from "./schema.js";
8
8
  export type { UdlAggregate, UdlAggregateCondition, UdlBinding, UdlDeclaredValuePolicy, UdlDecision, UdlDocument, UdlDue, UdlExample, UdlGate, UdlKernelOperation, UdlLifecycle, UdlLifecycleTransition, UdlNoun, UdlNounSubject, UdlStep, UdlSubject, UdlUnwind, UdlVerb, } from "./schema.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,OAAO,EACP,cAAc,EACd,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,QAAQ,EACR,WAAW,EACX,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,OAAO,EACP,cAAc,EACd,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,QAAQ,EACR,WAAW,EACX,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ export { canonicalizeUdl, parseUdl } from "./parser.js";
2
2
  export { serializeUdl } from "./canonical.js";
3
3
  export { fixedIsoDurationMs } from "./duration.js";
4
4
  export { analyzeNounFinance, } from "./finance.js";
5
- export { diffNounEvolution, diffUdlEvolution, snapshotUdlNoun, } from "./evolution.js";
5
+ export { diffNounEvolution, diffUdlEvolution, diffValidatedUdlEvolution, snapshotUdlNoun, } from "./evolution.js";
6
6
  export { UDL_FORMAT_VERSION, udlDocumentSchema, udlKernelOperationSchema, } from "./schema.js";
7
7
  export { assertValidUdl, openReferenceShapeBudget, UdlError, validateUdl, validateUdlSchemaValue, } from "./validation.js";
8
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,kBAAkB,GAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AASxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAqBrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,QAAQ,EACR,WAAW,EACX,sBAAsB,GACvB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,kBAAkB,GAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AASxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAqBrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,QAAQ,EACR,WAAW,EACX,sBAAsB,GACvB,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperscale0/udl",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.3",
4
4
  "description": "The Universal Domain Language: format spec, parser, validator, canonical serializer, and evolution diff.",
5
5
  "keywords": [
6
6
  "udl",
package/spec/README.md CHANGED
@@ -52,7 +52,8 @@ refuses.
52
52
  7. **Append-only evolution law.** Once a definition has live instances, adding
53
53
  states, transitions, optional fields, and verbs is legal; removing,
54
54
  renaming, tightening, or changing a money step is not. `diffUdlEvolution`
55
- decides, and it is the same function `udl diff` runs.
55
+ decides. `udl diff` runs the same comparison through
56
+ `diffValidatedUdlEvolution`, which skips the validation it already paid for.
56
57
  8. **Naming law.** Nouns are `snake_case`, singular, plain business English.
57
58
  Verbs are single words in imperative present. Operations are `noun.verb`.
58
59
  Fields are `camelCase`. The patterns live in the schema.
package/src/cli.ts CHANGED
@@ -9,7 +9,7 @@ import { readFile, writeFile } from "node:fs/promises";
9
9
 
10
10
  import {
11
11
  canonicalizeUdl,
12
- diffUdlEvolution,
12
+ diffValidatedUdlEvolution,
13
13
  parseUdl,
14
14
  UdlError,
15
15
  type UdlDocument,
@@ -101,7 +101,9 @@ async function diffCommand(args: readonly string[]): Promise<number> {
101
101
  const next = parseDocument(nextPath, nextBytes);
102
102
  if (live === null || next === null) return 1;
103
103
 
104
- const violations = diffUdlEvolution(live, next);
104
+ // `parseDocument` already validated both, so take the door that does not
105
+ // validate a second time.
106
+ const violations = diffValidatedUdlEvolution(live, next);
105
107
  if (violations.length === 0) {
106
108
  console.log(`${nextPath}: additive`);
107
109
  return 0;
package/src/evolution.ts CHANGED
@@ -1,4 +1,6 @@
1
+ import { UDL_LIMITS } from "./limits.js";
1
2
  import type { UdlAggregate, UdlDocument, UdlNoun, UdlVerb } from "./schema.js";
3
+ import { assertValidUdl, UdlError } from "./validation.js";
2
4
 
3
5
  export interface EvolutionFieldSnapshot {
4
6
  readonly required: boolean;
@@ -103,8 +105,32 @@ export function snapshotUdlNoun(noun: UdlNoun): NounEvolutionSnapshot {
103
105
  };
104
106
  }
105
107
 
106
- /** Compare two product definitions under the append-only evolution law. */
108
+ /**
109
+ * Compare two product definitions under the append-only evolution law.
110
+ *
111
+ * Both arguments are validated first. The typed signature this used to carry
112
+ * invited a caller to hand over an object it had never parsed, and the diff
113
+ * walks straight into `stableStringify`: a document with a cycle in it threw
114
+ * a RangeError out of here while `validateUdl` returned a clean
115
+ * `resource_limit` issue for the same object.
116
+ */
107
117
  export function diffUdlEvolution(
118
+ previous: unknown,
119
+ next: unknown,
120
+ ): readonly string[] {
121
+ return diffValidatedUdlEvolution(
122
+ assertValidUdl(previous),
123
+ assertValidUdl(next),
124
+ );
125
+ }
126
+
127
+ /**
128
+ * The same comparison for a caller holding two documents `validateUdl` has
129
+ * already admitted. Validation costs roughly twice what the diff costs, so a
130
+ * caller that has paid once should not pay again: `udl diff` parses both
131
+ * files and then takes this door.
132
+ */
133
+ export function diffValidatedUdlEvolution(
108
134
  previous: UdlDocument,
109
135
  next: UdlDocument,
110
136
  ): readonly string[] {
@@ -571,17 +597,37 @@ function recordValue(value: unknown): Readonly<Record<string, unknown>> {
571
597
  : {};
572
598
  }
573
599
 
574
- function stableStringify(value: unknown): string {
600
+ /**
601
+ * The comparison key every diff above is written against. It recurses, so it
602
+ * carries the same depth budget the validator applies to a document: a
603
+ * snapshot is never deeper than the document it came from, and the deepest
604
+ * conformance document reaches 12 of the 24 levels. A cycle is infinite depth
605
+ * and lands here rather than exhausting the call stack.
606
+ */
607
+ function stableStringify(value: unknown, depth = 1): string {
608
+ if (depth > UDL_LIMITS.maxDepth) {
609
+ throw new UdlError([
610
+ {
611
+ code: "resource_limit",
612
+ message: `UDL nesting exceeds ${UDL_LIMITS.maxDepth} levels`,
613
+ path: "$",
614
+ },
615
+ ]);
616
+ }
575
617
  if (value === null || typeof value !== "object") {
576
618
  return JSON.stringify(value) ?? "null";
577
619
  }
578
620
  if (Array.isArray(value)) {
579
- return `[${value.map(stableStringify).join(",")}]`;
621
+ // An arrow, not a bare reference: `map` would pass the index as the depth.
622
+ return `[${value.map((item) => stableStringify(item, depth + 1)).join(",")}]`;
580
623
  }
581
624
  const entries = Object.entries(value as Record<string, unknown>)
582
625
  .filter(([, entry]) => entry !== undefined)
583
626
  .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));
584
627
  return `{${entries
585
- .map(([key, entry]) => `${JSON.stringify(key)}:${stableStringify(entry)}`)
628
+ .map(
629
+ ([key, entry]) =>
630
+ `${JSON.stringify(key)}:${stableStringify(entry, depth + 1)}`,
631
+ )
586
632
  .join(",")}}`;
587
633
  }
package/src/index.ts CHANGED
@@ -9,6 +9,7 @@ export {
9
9
  export {
10
10
  diffNounEvolution,
11
11
  diffUdlEvolution,
12
+ diffValidatedUdlEvolution,
12
13
  snapshotUdlNoun,
13
14
  } from "./evolution.js";
14
15
  export type {