@hyperscale0/udl 1.0.0-alpha.5 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -1
- package/README.md +18 -19
- package/package.json +1 -1
- package/spec/README.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,11 @@ here under the release that made it.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [1.0.0-beta.1] - 2026-08-29
|
|
14
|
+
|
|
15
|
+
- This is the first beta and has no package behavior changes from
|
|
16
|
+
1.0.0-alpha.5.
|
|
17
|
+
|
|
13
18
|
## [1.0.0-alpha.5] - 2026-08-29
|
|
14
19
|
|
|
15
20
|
### Added
|
|
@@ -152,7 +157,8 @@ First public release. Format version 1.
|
|
|
152
157
|
- `bun run spec:check`, which fails when the committed schema drifts from the
|
|
153
158
|
grammar it was generated from.
|
|
154
159
|
|
|
155
|
-
[Unreleased]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-
|
|
160
|
+
[Unreleased]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-beta.1...HEAD
|
|
161
|
+
[1.0.0-beta.1]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.5...v1.0.0-beta.1
|
|
156
162
|
[1.0.0-alpha.5]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.4...v1.0.0-alpha.5
|
|
157
163
|
[1.0.0-alpha.4]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.3...v1.0.0-alpha.4
|
|
158
164
|
[1.0.0-alpha.3]: https://github.com/hyperscale0/hyperscale-udl/compare/v1.0.0-alpha.2...v1.0.0-alpha.3
|
package/README.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# UDL
|
|
2
2
|
|
|
3
|
-
UDL is the Universal Domain Language:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
against it.
|
|
3
|
+
UDL is the Universal Domain Language: the canonical JSON contract for a
|
|
4
|
+
financial product. One `.udl` file declares the subjects, nouns, lifecycles,
|
|
5
|
+
verbs, and money steps that define the product in business terms. Hyperscale's
|
|
6
|
+
composer admits that document into a frozen Product build. The compiler then
|
|
7
|
+
projects API, SDK, documentation, and agent surfaces from the same contract.
|
|
9
8
|
|
|
10
9
|
The language deliberately cannot say certain things. There is no statement
|
|
11
10
|
format, no file drop, no polling loop, no cutoff time, no scheme name, no
|
|
@@ -14,8 +13,9 @@ they are not the product, so they are absorbed below the language and never
|
|
|
14
13
|
surface in a document. What is left is small enough to hold in your head.
|
|
15
14
|
|
|
16
15
|
This package is the reference implementation: parser, semantic validator,
|
|
17
|
-
canonical serializer, evolution diff, and the `udl` command.
|
|
18
|
-
|
|
16
|
+
canonical serializer, append-only evolution diff, and the `udl` command. It
|
|
17
|
+
does not compose a company or execute operations. The format itself is
|
|
18
|
+
specified in [`spec/`](./spec/README.md) and pinned by
|
|
19
19
|
[`conformance/`](./conformance/README.md).
|
|
20
20
|
|
|
21
21
|
## Install
|
|
@@ -79,9 +79,9 @@ await writeFile("note.udl", serializeUdl(document));
|
|
|
79
79
|
const result = validateUdl(document);
|
|
80
80
|
if (!result.ok) console.error(result.issues);
|
|
81
81
|
|
|
82
|
-
// Is this change legal against the version
|
|
83
|
-
const
|
|
84
|
-
const violations = diffValidatedUdlEvolution(
|
|
82
|
+
// Is this change legal against the frozen version with existing instances?
|
|
83
|
+
const previous = parseUdl(await readFile("note.previous.udl"));
|
|
84
|
+
const violations = diffValidatedUdlEvolution(previous, document);
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
`parseUdl` takes a string or a `Uint8Array`; bytes are decoded as strict UTF-8.
|
|
@@ -91,9 +91,8 @@ canonical form.
|
|
|
91
91
|
`diffValidatedUdlEvolution` takes two `UdlDocument`s and assumes both have
|
|
92
92
|
already been admitted. Validate first: an evolution verdict on a document
|
|
93
93
|
`validateUdl` refuses is not a verdict at all, and a candidate that drops a
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
your side of that rule.
|
|
94
|
+
referenced noun sails through a diff that never checked the reference graph.
|
|
95
|
+
The `UdlDocument` parameter types keep the compiler on your side of that rule.
|
|
97
96
|
|
|
98
97
|
## The command
|
|
99
98
|
|
|
@@ -101,7 +100,7 @@ your side of that rule.
|
|
|
101
100
|
udl validate product.udl # parse and report every issue found
|
|
102
101
|
udl fmt product.udl # print the canonical form
|
|
103
102
|
udl fmt product.udl --write # rewrite the file in place
|
|
104
|
-
udl diff
|
|
103
|
+
udl diff frozen.udl product.udl # is the change additive, or does it break?
|
|
105
104
|
```
|
|
106
105
|
|
|
107
106
|
Exit codes: `0` the document is admissible or the change is additive, `1` the
|
|
@@ -111,10 +110,10 @@ document and a broken invocation are different failures.
|
|
|
111
110
|
|
|
112
111
|
## The two things worth knowing
|
|
113
112
|
|
|
114
|
-
**Evolution is append-only.** Once a definition has
|
|
115
|
-
states, transitions, optional fields, and verbs. You may not remove,
|
|
116
|
-
tighten, or change a money step. `udl diff` is not advice; it is the
|
|
117
|
-
function the compiler runs before it will accept a new version.
|
|
113
|
+
**Evolution is append-only.** Once a frozen definition has instances, you may
|
|
114
|
+
add states, transitions, optional fields, and verbs. You may not remove,
|
|
115
|
+
rename, tighten, or change a money step. `udl diff` is not advice; it is the
|
|
116
|
+
same function the compiler runs before it will accept a new version.
|
|
118
117
|
|
|
119
118
|
**Internal ledger money moves through four instructions and no others.**
|
|
120
119
|
`internal_transfer.create`, `.reserve`, `.post`, `.void`. Three account
|
package/package.json
CHANGED
package/spec/README.md
CHANGED
|
@@ -130,8 +130,8 @@ document be diffed, signed, and stored as its own identity.
|
|
|
130
130
|
document that declares any other value is refused. Format 1 is the only format
|
|
131
131
|
that exists.
|
|
132
132
|
|
|
133
|
-
**Package version** is the semver of `@hyperscale0/udl`,
|
|
134
|
-
`
|
|
133
|
+
**Package version** is the semver of `@hyperscale0/udl`, declared in
|
|
134
|
+
`package.json`.
|
|
135
135
|
|
|
136
136
|
They move independently, under one rule: **format 1 is unstable until the
|
|
137
137
|
package reaches 1.0.0.** Until then an alpha release may change what format 1
|