@hyperscale0/udl 1.0.0-rc.1 → 1.0.123

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 -211
  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
@@ -1,54 +0,0 @@
1
- {
2
- "instruments": [
3
- {
4
- "fields": {
5
- "reference": {
6
- "type": "string"
7
- }
8
- },
9
- "id": "note",
10
- "idPrefix": "note",
11
- "lifecycle": {
12
- "initial": "open",
13
- "states": [
14
- "open",
15
- "closed"
16
- ],
17
- "transitions": {
18
- "close": {
19
- "from": [
20
- "open"
21
- ],
22
- "to": "closed"
23
- }
24
- }
25
- },
26
- "required": [
27
- "reference"
28
- ],
29
- "summary": "A note a tenant files and later closes.",
30
- "title": "Note",
31
- "actionOrder": [
32
- "close",
33
- "create"
34
- ],
35
- "actions": {
36
- "close": {
37
- "moves": [],
38
- "steps": [],
39
- "summary": "Close the note."
40
- },
41
- "create": {
42
- "moves": [],
43
- "steps": [],
44
- "summary": "File the note."
45
- }
46
- }
47
- }
48
- ],
49
- "product": "minimal",
50
- "subjects": [],
51
- "title": " ",
52
- "udl": 1,
53
- "version": 1
54
- }
@@ -1,10 +0,0 @@
1
- {
2
- "issues": [
3
- {
4
- "code": "UDL2001",
5
- "path": "$.dials[1]"
6
- }
7
- ],
8
- "summary": "Composition dial keys are unique across the document, the same way instrument dial keys are unique within an instrument.",
9
- "verdict": "invalid"
10
- }
@@ -1,73 +0,0 @@
1
- {
2
- "dials": [
3
- {
4
- "key": "confirmation_threshold",
5
- "kind": "confirmation_threshold",
6
- "maxMinor": 500000,
7
- "summary": "Money-moving calls below this amount skip the explicit confirmation argument.",
8
- "title": "Confirmation threshold"
9
- },
10
- {
11
- "key": "confirmation_threshold",
12
- "kind": "confirmation_threshold",
13
- "maxMinor": 500000,
14
- "summary": "Money-moving calls below this amount skip the explicit confirmation argument.",
15
- "title": "Second threshold"
16
- }
17
- ],
18
- "instruments": [
19
- {
20
- "actionOrder": [
21
- "close",
22
- "create"
23
- ],
24
- "actions": {
25
- "close": {
26
- "agentDescription": "Close a note that has already been filed. Takes the note id and nothing else, and moves no money.",
27
- "moves": [],
28
- "steps": [],
29
- "summary": "Close the note."
30
- },
31
- "create": {
32
- "agentDescription": "File a new note against the tenant. Ask the operator for the reference text first; it cannot be edited afterwards.",
33
- "moves": [],
34
- "steps": [],
35
- "summary": "File the note."
36
- }
37
- },
38
- "agentDescription": "A filed note. Read it to recover the reference an operator recorded, and close it when the matter it tracks is settled.",
39
- "fields": {
40
- "reference": {
41
- "type": "string"
42
- }
43
- },
44
- "id": "note",
45
- "idPrefix": "note",
46
- "lifecycle": {
47
- "initial": "open",
48
- "states": [
49
- "open",
50
- "closed"
51
- ],
52
- "transitions": {
53
- "close": {
54
- "from": [
55
- "open"
56
- ],
57
- "to": "closed"
58
- }
59
- }
60
- },
61
- "required": [
62
- "reference"
63
- ],
64
- "summary": "A note a tenant files and later closes.",
65
- "title": "Note"
66
- }
67
- ],
68
- "product": "minimal",
69
- "subjects": [],
70
- "title": "Minimal",
71
- "udl": 1,
72
- "version": 1
73
- }
@@ -1,10 +0,0 @@
1
- {
2
- "issues": [
3
- {
4
- "code": "UDL1004",
5
- "path": "$.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested.nested"
6
- }
7
- ],
8
- "summary": "Admission budgets are part of the format: nesting past 24 levels is refused before validation.",
9
- "verdict": "invalid"
10
- }
@@ -1,49 +0,0 @@
1
- {
2
- "nested": {
3
- "nested": {
4
- "nested": {
5
- "nested": {
6
- "nested": {
7
- "nested": {
8
- "nested": {
9
- "nested": {
10
- "nested": {
11
- "nested": {
12
- "nested": {
13
- "nested": {
14
- "nested": {
15
- "nested": {
16
- "nested": {
17
- "nested": {
18
- "nested": {
19
- "nested": {
20
- "nested": {
21
- "nested": {
22
- "nested": {
23
- "nested": {
24
- "nested": {
25
- "nested": {}
26
- }
27
- }
28
- }
29
- }
30
- }
31
- }
32
- }
33
- }
34
- }
35
- }
36
- }
37
- }
38
- }
39
- }
40
- }
41
- }
42
- }
43
- }
44
- }
45
- }
46
- }
47
- }
48
- }
49
- }
@@ -1,10 +0,0 @@
1
- {
2
- "issues": [
3
- {
4
- "code": "UDL2001",
5
- "path": "$.subjects[1]"
6
- }
7
- ],
8
- "summary": "Refuses duplicate subject kind asset; first declared at index 0.",
9
- "verdict": "invalid"
10
- }
@@ -1,230 +0,0 @@
1
- {
2
- "instruments": [
3
- {
4
- "actionOrder": [
5
- "create",
6
- "revise",
7
- "settle"
8
- ],
9
- "actions": {
10
- "create": {
11
- "moves": [],
12
- "steps": [],
13
- "summary": "Open the agreement"
14
- },
15
- "revise": {
16
- "examples": [
17
- {
18
- "input": {
19
- "agreementId": "agr_sandbox_agreement01",
20
- "note": "Updated terms",
21
- "tenantId": "ten_sandbox_example001"
22
- },
23
- "name": "revise_terms"
24
- }
25
- ],
26
- "input": {
27
- "additionalProperties": false,
28
- "properties": {
29
- "note": {
30
- "type": "string"
31
- }
32
- },
33
- "required": [
34
- "note"
35
- ],
36
- "type": "object"
37
- },
38
- "moves": [],
39
- "principal": "user_session",
40
- "steps": [],
41
- "summary": "Revise the note",
42
- "updates": [
43
- "note"
44
- ]
45
- },
46
- "settle": {
47
- "deadline": {
48
- "field": "closesAt"
49
- },
50
- "moves": [
51
- {
52
- "bind": {
53
- "amount": {
54
- "from": "instance",
55
- "path": "refs.remainingAmount"
56
- },
57
- "currency": {
58
- "from": "instance",
59
- "path": "fields.currency"
60
- },
61
- "destinationAccountId": {
62
- "from": "instance",
63
- "path": "fields.destinationAccountId"
64
- },
65
- "sourceAccountId": {
66
- "from": "instance",
67
- "path": "fields.sourceAccountId"
68
- }
69
- },
70
- "key": "settlement",
71
- "operation": "internal_transfer.create"
72
- }
73
- ],
74
- "remainder": {
75
- "amountRef": "remainingAmount",
76
- "onZero": "refuse",
77
- "totalPath": "fields.amount"
78
- },
79
- "requiresChecks": [
80
- {
81
- "checkKind": "identity_verification",
82
- "family": "national_identity",
83
- "maxAge": "P30D",
84
- "statuses": [
85
- "completed"
86
- ],
87
- "subjectField": "subjectId"
88
- }
89
- ],
90
- "sandboxFailurePoint": "release",
91
- "steps": [],
92
- "summary": "Settle the agreement"
93
- }
94
- },
95
- "callerParkedStates": {
96
- "open": "The owner may revise or settle the agreement."
97
- },
98
- "dials": [
99
- {
100
- "field": "closesAt",
101
- "key": "settlement_window",
102
- "kind": "window",
103
- "maxOffset": "P30D",
104
- "minOffset": "PT0S",
105
- "summary": "The settlement deadline offset.",
106
- "title": "Settlement window"
107
- }
108
- ],
109
- "fields": {
110
- "amount": {
111
- "pattern": "^[1-9][0-9]{0,17}$",
112
- "type": "string"
113
- },
114
- "closesAt": {
115
- "format": "hyperscale-date-time",
116
- "type": "string"
117
- },
118
- "currency": {
119
- "pattern": "^[A-Z]{3}$",
120
- "type": "string"
121
- },
122
- "destinationAccountId": {
123
- "pattern": "^acct_(sandbox|live)_[a-z0-9]{8,64}$",
124
- "type": "string"
125
- },
126
- "note": {
127
- "type": "string"
128
- },
129
- "sourceAccountId": {
130
- "pattern": "^acct_(sandbox|live)_[a-z0-9]{8,64}$",
131
- "type": "string"
132
- },
133
- "subjectId": {
134
- "type": "string"
135
- }
136
- },
137
- "id": "agreement",
138
- "idPrefix": "agr",
139
- "lifecycle": {
140
- "initial": "open",
141
- "states": [
142
- "open",
143
- "closed"
144
- ],
145
- "transitions": {
146
- "revise": {
147
- "from": [
148
- "open"
149
- ],
150
- "to": "open"
151
- },
152
- "settle": {
153
- "from": [
154
- "open"
155
- ],
156
- "to": "closed"
157
- }
158
- }
159
- },
160
- "nav": [
161
- "Agreements"
162
- ],
163
- "required": [
164
- "amount",
165
- "closesAt",
166
- "currency",
167
- "destinationAccountId",
168
- "sourceAccountId",
169
- "subjectId"
170
- ],
171
- "subject": {
172
- "extensible": false,
173
- "kinds": [
174
- "asset"
175
- ]
176
- },
177
- "summary": "One agreement with a computed final settlement.",
178
- "surfaceVisibility": "public",
179
- "templateId": "agreement",
180
- "title": "Agreement",
181
- "update": {
182
- "examples": [
183
- {
184
- "input": {
185
- "agreementId": "agr_sandbox_agreement01",
186
- "note": "Updated terms",
187
- "tenantId": "ten_sandbox_example001"
188
- },
189
- "name": "revise_terms"
190
- }
191
- ],
192
- "fields": [
193
- "note"
194
- ],
195
- "states": [
196
- "open"
197
- ]
198
- }
199
- }
200
- ],
201
- "product": "complete_contract",
202
- "subjects": [
203
- {
204
- "declaredValue": "none",
205
- "kind": "asset",
206
- "schema": {
207
- "additionalProperties": false,
208
- "properties": {},
209
- "type": "object"
210
- },
211
- "title": "Asset",
212
- "version": 1
213
- },
214
- {
215
- "declaredValue": "none",
216
- "kind": "asset",
217
- "schema": {
218
- "additionalProperties": false,
219
- "properties": {},
220
- "type": "object"
221
- },
222
- "title": "Asset",
223
- "version": 1
224
- }
225
- ],
226
- "title": "Complete contract",
227
- "udl": 1,
228
- "version": 1
229
- }
230
-
@@ -1,10 +0,0 @@
1
- {
2
- "issues": [
3
- {
4
- "code": "UDL2005",
5
- "path": "$.instruments[0].actions.close.effects.decides"
6
- }
7
- ],
8
- "summary": "Authored effects must equal the rows derived from clauses.",
9
- "verdict": "invalid"
10
- }
@@ -1,76 +0,0 @@
1
- {
2
- "instruments": [
3
- {
4
- "actionOrder": [
5
- "create",
6
- "close"
7
- ],
8
- "actions": {
9
- "close": {
10
- "decision": {
11
- "capability": "identity_verification",
12
- "deadlineMs": 15000,
13
- "onTimeout": "decline"
14
- },
15
- "effects": {
16
- "decides": [
17
- {
18
- "signature": "decides.forged",
19
- "source": "decision"
20
- }
21
- ],
22
- "notifies": [
23
- {
24
- "channel": "email",
25
- "role": "beneficiary",
26
- "signature": "notifies.email",
27
- "source": "effects.notifies[0]"
28
- }
29
- ]
30
- },
31
- "moves": [],
32
- "steps": [],
33
- "summary": "Close the note."
34
- },
35
- "create": {
36
- "moves": [],
37
- "steps": [],
38
- "summary": "File the note."
39
- }
40
- },
41
- "fields": {
42
- "reference": {
43
- "type": "string"
44
- }
45
- },
46
- "id": "note",
47
- "idPrefix": "note",
48
- "lifecycle": {
49
- "initial": "open",
50
- "states": [
51
- "open",
52
- "closed"
53
- ],
54
- "transitions": {
55
- "close": {
56
- "from": [
57
- "open"
58
- ],
59
- "to": "closed"
60
- }
61
- }
62
- },
63
- "required": [
64
- "reference"
65
- ],
66
- "summary": "A note a tenant files and later closes.",
67
- "title": "Note"
68
- }
69
- ],
70
- "product": "minimal",
71
- "subjects": [],
72
- "title": "Minimal",
73
- "udl": 1,
74
- "version": 1
75
- }
76
-
@@ -1,10 +0,0 @@
1
- {
2
- "issues": [
3
- {
4
- "code": "UDL1003",
5
- "path": "$.udl"
6
- }
7
- ],
8
- "summary": "A document declares its format version literally; format 2 does not exist yet.",
9
- "verdict": "invalid"
10
- }
@@ -1,54 +0,0 @@
1
- {
2
- "instruments": [
3
- {
4
- "fields": {
5
- "reference": {
6
- "type": "string"
7
- }
8
- },
9
- "id": "note",
10
- "idPrefix": "note",
11
- "lifecycle": {
12
- "initial": "open",
13
- "states": [
14
- "open",
15
- "closed"
16
- ],
17
- "transitions": {
18
- "close": {
19
- "from": [
20
- "open"
21
- ],
22
- "to": "closed"
23
- }
24
- }
25
- },
26
- "required": [
27
- "reference"
28
- ],
29
- "summary": "A note a tenant files and later closes.",
30
- "title": "Note",
31
- "actionOrder": [
32
- "close",
33
- "create"
34
- ],
35
- "actions": {
36
- "close": {
37
- "moves": [],
38
- "steps": [],
39
- "summary": "Close the note."
40
- },
41
- "create": {
42
- "moves": [],
43
- "steps": [],
44
- "summary": "File the note."
45
- }
46
- }
47
- }
48
- ],
49
- "product": "minimal",
50
- "subjects": [],
51
- "title": "Minimal",
52
- "udl": 2,
53
- "version": 1
54
- }
@@ -1,10 +0,0 @@
1
- {
2
- "issues": [
3
- {
4
- "code": "UDL1003",
5
- "path": "$.instruments[0].id"
6
- }
7
- ],
8
- "summary": "Naming law: instrument ids are snake_case, singular, plain business English.",
9
- "verdict": "invalid"
10
- }
@@ -1,54 +0,0 @@
1
- {
2
- "instruments": [
3
- {
4
- "fields": {
5
- "reference": {
6
- "type": "string"
7
- }
8
- },
9
- "id": "noteItem",
10
- "idPrefix": "note",
11
- "lifecycle": {
12
- "initial": "open",
13
- "states": [
14
- "open",
15
- "closed"
16
- ],
17
- "transitions": {
18
- "close": {
19
- "from": [
20
- "open"
21
- ],
22
- "to": "closed"
23
- }
24
- }
25
- },
26
- "required": [
27
- "reference"
28
- ],
29
- "summary": "A note a tenant files and later closes.",
30
- "title": "Note",
31
- "actionOrder": [
32
- "close",
33
- "create"
34
- ],
35
- "actions": {
36
- "close": {
37
- "moves": [],
38
- "steps": [],
39
- "summary": "Close the note."
40
- },
41
- "create": {
42
- "moves": [],
43
- "steps": [],
44
- "summary": "File the note."
45
- }
46
- }
47
- }
48
- ],
49
- "product": "minimal",
50
- "subjects": [],
51
- "title": "Minimal",
52
- "udl": 1,
53
- "version": 1
54
- }
@@ -1,10 +0,0 @@
1
- {
2
- "issues": [
3
- {
4
- "code": "UDL5004",
5
- "path": "$.instruments[1].actions.complete.requiresAggregate[0].instrumentId"
6
- }
7
- ],
8
- "summary": "Refuses Invalid input: expected string, received number.",
9
- "verdict": "invalid"
10
- }