@hypequery/protocol-conformance 0.0.0-canary-20260722115402

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 (80) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +40 -0
  3. package/dist/adapters/generators.d.ts +13 -0
  4. package/dist/adapters/generators.d.ts.map +1 -0
  5. package/dist/adapters/generators.js +366 -0
  6. package/dist/adapters/reference.d.ts +6 -0
  7. package/dist/adapters/reference.d.ts.map +1 -0
  8. package/dist/adapters/reference.js +172 -0
  9. package/dist/adapters/stdio.d.ts +17 -0
  10. package/dist/adapters/stdio.d.ts.map +1 -0
  11. package/dist/adapters/stdio.js +80 -0
  12. package/dist/bin/conformance.d.ts +3 -0
  13. package/dist/bin/conformance.d.ts.map +1 -0
  14. package/dist/bin/conformance.js +84 -0
  15. package/dist/bin/reference-adapter.d.ts +3 -0
  16. package/dist/bin/reference-adapter.d.ts.map +1 -0
  17. package/dist/bin/reference-adapter.js +16 -0
  18. package/dist/compare.d.ts +3 -0
  19. package/dist/compare.d.ts.map +1 -0
  20. package/dist/compare.js +125 -0
  21. package/dist/fs.d.ts +11 -0
  22. package/dist/fs.d.ts.map +1 -0
  23. package/dist/fs.js +36 -0
  24. package/dist/index.d.ts +11 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +9 -0
  27. package/dist/manifest.d.ts +13 -0
  28. package/dist/manifest.d.ts.map +1 -0
  29. package/dist/manifest.js +118 -0
  30. package/dist/report.d.ts +4 -0
  31. package/dist/report.d.ts.map +1 -0
  32. package/dist/report.js +23 -0
  33. package/dist/runner.d.ts +12 -0
  34. package/dist/runner.d.ts.map +1 -0
  35. package/dist/runner.js +197 -0
  36. package/dist/types.d.ts +84 -0
  37. package/dist/types.d.ts.map +1 -0
  38. package/dist/types.js +5 -0
  39. package/fixtures/deployment-bundles-v1/README.md +61 -0
  40. package/fixtures/deployment-bundles-v1/identity.json +7 -0
  41. package/fixtures/deployment-bundles-v1/rejections.json +11 -0
  42. package/fixtures/deployment-bundles-v1/success.json +23 -0
  43. package/fixtures/deployment-releases-v1/README.md +36 -0
  44. package/fixtures/deployment-releases-v1/identity.json +7 -0
  45. package/fixtures/deployment-releases-v1/rejections.json +8 -0
  46. package/fixtures/deployment-releases-v1/success.json +14 -0
  47. package/fixtures/deployments-v1/README.md +77 -0
  48. package/fixtures/deployments-v1/identity.json +7 -0
  49. package/fixtures/deployments-v1/rejections.json +12 -0
  50. package/fixtures/deployments-v1/success.json +81 -0
  51. package/fixtures/expressions-v1/README.md +25 -0
  52. package/fixtures/expressions-v1/rejections.json +17 -0
  53. package/fixtures/expressions-v1/success.json +47 -0
  54. package/fixtures/fuzz-seeds-v1/README.md +29 -0
  55. package/fixtures/fuzz-seeds-v1/sql-expressions.json +32 -0
  56. package/fixtures/fuzz-seeds-v1/structured-values.json +32 -0
  57. package/fixtures/fuzz-seeds-v1/value-sources.json +191 -0
  58. package/fixtures/identifiers-v1/README.md +15 -0
  59. package/fixtures/identifiers-v1/rejections.json +58 -0
  60. package/fixtures/identifiers-v1/success.json +26 -0
  61. package/fixtures/manifest.json +117 -0
  62. package/fixtures/query-diagnostics-v1/README.md +49 -0
  63. package/fixtures/query-diagnostics-v1/rejections.json +13 -0
  64. package/fixtures/query-diagnostics-v1/success.json +27 -0
  65. package/fixtures/query-events-v1/README.md +60 -0
  66. package/fixtures/query-events-v1/rejections.json +18 -0
  67. package/fixtures/query-events-v1/success.json +40 -0
  68. package/fixtures/query-implementations-v1/README.md +33 -0
  69. package/fixtures/query-implementations-v1/rejections.json +80 -0
  70. package/fixtures/query-implementations-v1/success.json +96 -0
  71. package/fixtures/query-schemas-v1/README.md +25 -0
  72. package/fixtures/query-schemas-v1/rejections.json +15 -0
  73. package/fixtures/query-schemas-v1/success.json +17 -0
  74. package/fixtures/sql-portability-v1/README.md +15 -0
  75. package/fixtures/sql-portability-v1/non-portable.json +146 -0
  76. package/fixtures/sql-portability-v1/portable.json +346 -0
  77. package/fixtures/tagged-values-v1/README.md +44 -0
  78. package/fixtures/tagged-values-v1/rejections.json +298 -0
  79. package/fixtures/tagged-values-v1/success.json +262 -0
  80. package/package.json +52 -0
@@ -0,0 +1,346 @@
1
+ [
2
+ {
3
+ "id": "simple-reference",
4
+ "sql": "revenue",
5
+ "expression": { "kind": "reference", "name": "revenue" },
6
+ "dependencies": ["revenue"]
7
+ },
8
+ {
9
+ "id": "qualified-reference",
10
+ "sql": "orders.revenue",
11
+ "expression": { "kind": "reference", "name": "orders.revenue" },
12
+ "dependencies": ["orders.revenue"]
13
+ },
14
+ {
15
+ "id": "arithmetic-product",
16
+ "sql": "price * quantity",
17
+ "expression": {
18
+ "kind": "binary",
19
+ "operator": "multiply",
20
+ "left": { "kind": "reference", "name": "price" },
21
+ "right": { "kind": "reference", "name": "quantity" }
22
+ },
23
+ "dependencies": ["price", "quantity"]
24
+ },
25
+ {
26
+ "id": "arithmetic-precedence",
27
+ "sql": "price * quantity - discount",
28
+ "expression": {
29
+ "kind": "binary",
30
+ "operator": "subtract",
31
+ "left": {
32
+ "kind": "binary",
33
+ "operator": "multiply",
34
+ "left": { "kind": "reference", "name": "price" },
35
+ "right": { "kind": "reference", "name": "quantity" }
36
+ },
37
+ "right": { "kind": "reference", "name": "discount" }
38
+ },
39
+ "dependencies": ["discount", "price", "quantity"]
40
+ },
41
+ {
42
+ "id": "parenthesized-arithmetic",
43
+ "sql": "(price - cost) * quantity",
44
+ "expression": {
45
+ "kind": "binary",
46
+ "operator": "multiply",
47
+ "left": {
48
+ "kind": "binary",
49
+ "operator": "subtract",
50
+ "left": { "kind": "reference", "name": "price" },
51
+ "right": { "kind": "reference", "name": "cost" }
52
+ },
53
+ "right": { "kind": "reference", "name": "quantity" }
54
+ },
55
+ "dependencies": ["cost", "price", "quantity"]
56
+ },
57
+ {
58
+ "id": "decimal-literal",
59
+ "sql": "rate * 0.0825",
60
+ "expression": {
61
+ "kind": "binary",
62
+ "operator": "multiply",
63
+ "left": { "kind": "reference", "name": "rate" },
64
+ "right": { "kind": "literal", "value": 0.0825 }
65
+ },
66
+ "dependencies": ["rate"]
67
+ },
68
+ {
69
+ "id": "negative-literal",
70
+ "sql": "offset * -1",
71
+ "expression": {
72
+ "kind": "binary",
73
+ "operator": "multiply",
74
+ "left": { "kind": "reference", "name": "offset" },
75
+ "right": { "kind": "literal", "value": -1 }
76
+ },
77
+ "dependencies": ["offset"]
78
+ },
79
+ {
80
+ "id": "null-if-zero-division",
81
+ "sql": "revenue / nullIfZero(orders)",
82
+ "expression": {
83
+ "kind": "binary",
84
+ "operator": "divide",
85
+ "left": { "kind": "reference", "name": "revenue" },
86
+ "right": {
87
+ "kind": "call",
88
+ "function": "nullIfZero",
89
+ "args": [{ "kind": "reference", "name": "orders" }]
90
+ }
91
+ },
92
+ "dependencies": ["orders", "revenue"]
93
+ },
94
+ {
95
+ "id": "coalesce-case-insensitive",
96
+ "sql": "COALESCE(discount, 0)",
97
+ "expression": {
98
+ "kind": "call",
99
+ "function": "coalesce",
100
+ "args": [
101
+ { "kind": "reference", "name": "discount" },
102
+ { "kind": "literal", "value": 0 }
103
+ ]
104
+ },
105
+ "dependencies": ["discount"]
106
+ },
107
+ {
108
+ "id": "round-two-arguments",
109
+ "sql": "round(amount, 2)",
110
+ "expression": {
111
+ "kind": "call",
112
+ "function": "round",
113
+ "args": [
114
+ { "kind": "reference", "name": "amount" },
115
+ { "kind": "literal", "value": 2 }
116
+ ]
117
+ },
118
+ "dependencies": ["amount"]
119
+ },
120
+ {
121
+ "id": "floor-one-argument",
122
+ "sql": "floor(score)",
123
+ "expression": {
124
+ "kind": "call",
125
+ "function": "floor",
126
+ "args": [{ "kind": "reference", "name": "score" }]
127
+ },
128
+ "dependencies": ["score"]
129
+ },
130
+ {
131
+ "id": "ceil-one-argument",
132
+ "sql": "ceil(score)",
133
+ "expression": {
134
+ "kind": "call",
135
+ "function": "ceil",
136
+ "args": [{ "kind": "reference", "name": "score" }]
137
+ },
138
+ "dependencies": ["score"]
139
+ },
140
+ {
141
+ "id": "comparison-gte",
142
+ "sql": "total >= 100",
143
+ "expression": {
144
+ "kind": "comparison",
145
+ "operator": "gte",
146
+ "left": { "kind": "reference", "name": "total" },
147
+ "right": { "kind": "literal", "value": 100 }
148
+ },
149
+ "dependencies": ["total"]
150
+ },
151
+ {
152
+ "id": "string-literal-escape",
153
+ "sql": "status = 'it''s'",
154
+ "expression": {
155
+ "kind": "comparison",
156
+ "operator": "eq",
157
+ "left": { "kind": "reference", "name": "status" },
158
+ "right": { "kind": "literal", "value": "it's" }
159
+ },
160
+ "dependencies": ["status"]
161
+ },
162
+ {
163
+ "id": "boolean-literal",
164
+ "sql": "active = TRUE",
165
+ "expression": {
166
+ "kind": "comparison",
167
+ "operator": "eq",
168
+ "left": { "kind": "reference", "name": "active" },
169
+ "right": { "kind": "literal", "value": true }
170
+ },
171
+ "dependencies": ["active"]
172
+ },
173
+ {
174
+ "id": "null-literal",
175
+ "sql": "deleted_at != NULL",
176
+ "expression": {
177
+ "kind": "comparison",
178
+ "operator": "neq",
179
+ "left": { "kind": "reference", "name": "deleted_at" },
180
+ "right": { "kind": "literal", "value": null }
181
+ },
182
+ "dependencies": ["deleted_at"]
183
+ },
184
+ {
185
+ "id": "in-string-list",
186
+ "sql": "status IN ('new', 'paid', 'shipped')",
187
+ "expression": {
188
+ "kind": "comparison",
189
+ "operator": "in",
190
+ "left": { "kind": "reference", "name": "status" },
191
+ "right": {
192
+ "kind": "literal",
193
+ "value": {
194
+ "$hypequery": {
195
+ "type": "array",
196
+ "version": 1,
197
+ "values": ["new", "paid", "shipped"]
198
+ }
199
+ }
200
+ }
201
+ },
202
+ "dependencies": ["status"]
203
+ },
204
+ {
205
+ "id": "in-number-list",
206
+ "sql": "year IN (2024, 2025, 2026)",
207
+ "expression": {
208
+ "kind": "comparison",
209
+ "operator": "in",
210
+ "left": { "kind": "reference", "name": "year" },
211
+ "right": {
212
+ "kind": "literal",
213
+ "value": {
214
+ "$hypequery": {
215
+ "type": "array",
216
+ "version": 1,
217
+ "values": [2024, 2025, 2026]
218
+ }
219
+ }
220
+ }
221
+ },
222
+ "dependencies": ["year"]
223
+ },
224
+ {
225
+ "id": "not-in-lowercase",
226
+ "sql": "state not in ('ca', 'ny')",
227
+ "expression": {
228
+ "kind": "comparison",
229
+ "operator": "notIn",
230
+ "left": { "kind": "reference", "name": "state" },
231
+ "right": {
232
+ "kind": "literal",
233
+ "value": {
234
+ "$hypequery": {
235
+ "type": "array",
236
+ "version": 1,
237
+ "values": ["ca", "ny"]
238
+ }
239
+ }
240
+ }
241
+ },
242
+ "dependencies": ["state"]
243
+ },
244
+ {
245
+ "id": "between-integers",
246
+ "sql": "age BETWEEN 18 AND 65",
247
+ "expression": {
248
+ "kind": "comparison",
249
+ "operator": "between",
250
+ "left": { "kind": "reference", "name": "age" },
251
+ "right": {
252
+ "kind": "literal",
253
+ "value": {
254
+ "$hypequery": {
255
+ "type": "tuple",
256
+ "version": 1,
257
+ "values": [18, 65]
258
+ }
259
+ }
260
+ }
261
+ },
262
+ "dependencies": ["age"]
263
+ },
264
+ {
265
+ "id": "between-negative-bounds",
266
+ "sql": "temperature BETWEEN -40 AND 45.5",
267
+ "expression": {
268
+ "kind": "comparison",
269
+ "operator": "between",
270
+ "left": { "kind": "reference", "name": "temperature" },
271
+ "right": {
272
+ "kind": "literal",
273
+ "value": {
274
+ "$hypequery": {
275
+ "type": "tuple",
276
+ "version": 1,
277
+ "values": [-40, 45.5]
278
+ }
279
+ }
280
+ }
281
+ },
282
+ "dependencies": ["temperature"]
283
+ },
284
+ {
285
+ "id": "like-pattern",
286
+ "sql": "email LIKE '%@acme.com'",
287
+ "expression": {
288
+ "kind": "comparison",
289
+ "operator": "like",
290
+ "left": { "kind": "reference", "name": "email" },
291
+ "right": { "kind": "literal", "value": "%@acme.com" }
292
+ },
293
+ "dependencies": ["email"]
294
+ },
295
+ {
296
+ "id": "logical-precedence",
297
+ "sql": "a = 1 AND b = 2 OR c = 3",
298
+ "expression": {
299
+ "kind": "logical",
300
+ "operator": "or",
301
+ "operands": [
302
+ {
303
+ "kind": "logical",
304
+ "operator": "and",
305
+ "operands": [
306
+ {
307
+ "kind": "comparison",
308
+ "operator": "eq",
309
+ "left": { "kind": "reference", "name": "a" },
310
+ "right": { "kind": "literal", "value": 1 }
311
+ },
312
+ {
313
+ "kind": "comparison",
314
+ "operator": "eq",
315
+ "left": { "kind": "reference", "name": "b" },
316
+ "right": { "kind": "literal", "value": 2 }
317
+ }
318
+ ]
319
+ },
320
+ {
321
+ "kind": "comparison",
322
+ "operator": "eq",
323
+ "left": { "kind": "reference", "name": "c" },
324
+ "right": { "kind": "literal", "value": 3 }
325
+ }
326
+ ]
327
+ },
328
+ "dependencies": ["a", "b", "c"]
329
+ },
330
+ {
331
+ "id": "logical-not",
332
+ "sql": "NOT active",
333
+ "expression": {
334
+ "kind": "logical",
335
+ "operator": "not",
336
+ "operand": { "kind": "reference", "name": "active" }
337
+ },
338
+ "dependencies": ["active"]
339
+ },
340
+ {
341
+ "id": "backtick-identifier",
342
+ "sql": "`order`.`total`",
343
+ "expression": { "kind": "reference", "name": "order.total" },
344
+ "dependencies": ["order.total"]
345
+ }
346
+ ]
@@ -0,0 +1,44 @@
1
+ # Tagged value version 1 fixtures
2
+
3
+ These draft language-neutral fixtures accompany RFC 0001. They become
4
+ normative when the RFC is accepted.
5
+
6
+ ## Success manifest
7
+
8
+ Each entry in `success.json` contains:
9
+
10
+ - `id`: stable fixture identifier;
11
+ - `value`: the parsed canonical value before JCS;
12
+ - `canonicalHex`: exact RFC 8785 canonical UTF-8 bytes as lowercase hex;
13
+ - `sha256`: lowercase SHA-256 of those exact bytes.
14
+
15
+ The hash is a fixture integrity check, not a deployment digest or cache key.
16
+
17
+ ## Rejection manifest
18
+
19
+ Entries in `rejections.json` use one of:
20
+
21
+ - `sourceUtf8`: exact JSON source presented to a duplicate-aware parser;
22
+ - `value`: an already parsed value presented to model validation;
23
+ - `generator`: a deterministic boundary case that would be wasteful to store
24
+ expanded.
25
+
26
+ `declaredClickHouseType`, when present, supplies the containing schema type
27
+ needed to validate integer-tag requirements and exact tag/type compatibility.
28
+
29
+ Generators expand as follows:
30
+
31
+ - `non-finite-float`: creates the host-language non-finite number named by
32
+ `value` (`NaN`, `Infinity`, or `-Infinity`) after JSON parsing;
33
+ - `nested-array`: wraps `leaf` in the tagged array form `depth` times;
34
+ - `array`: creates one tagged array containing `items` copies of `value`;
35
+ - `array-tree`: creates one tagged array containing `branches` tagged arrays,
36
+ each containing `itemsPerBranch` copies of `value`;
37
+ - `repeat-string`: concatenates `count` copies of the UTF-8 string `utf8`.
38
+
39
+ `error` is the required stable failure code. `phase` identifies the earliest
40
+ stage that must reject the input. A consumer may reject earlier only when it
41
+ returns the same code and does not partially execute or hash the value.
42
+
43
+ Fixture runners must not pass `sourceUtf8` through an ordinary JSON dictionary
44
+ parser before duplicate-key detection.
@@ -0,0 +1,298 @@
1
+ [
2
+ {
3
+ "id": "duplicate-object-key",
4
+ "phase": "parse",
5
+ "sourceUtf8": "{\"a\":1,\"a\":2}",
6
+ "error": "HQ_VALUE_DUPLICATE_KEY"
7
+ },
8
+ {
9
+ "id": "invalid-json-nan",
10
+ "phase": "parse",
11
+ "sourceUtf8": "NaN",
12
+ "error": "HQ_VALUE_INVALID_JSON"
13
+ },
14
+ {
15
+ "id": "invalid-json-infinity",
16
+ "phase": "parse",
17
+ "sourceUtf8": "Infinity",
18
+ "error": "HQ_VALUE_INVALID_JSON"
19
+ },
20
+ {
21
+ "id": "lone-high-surrogate",
22
+ "phase": "unicode",
23
+ "sourceUtf8": "\"\\ud800\"",
24
+ "error": "HQ_VALUE_INVALID_UNICODE"
25
+ },
26
+ {
27
+ "id": "control-character-null",
28
+ "phase": "model",
29
+ "sourceUtf8": "\"\\u0000\"",
30
+ "error": "HQ_VALUE_CONTROL_CHARACTER"
31
+ },
32
+ {
33
+ "id": "control-character-c1-next-line",
34
+ "phase": "model",
35
+ "sourceUtf8": "\"\\u0085\"",
36
+ "error": "HQ_VALUE_CONTROL_CHARACTER"
37
+ },
38
+ {
39
+ "id": "negative-zero",
40
+ "phase": "model",
41
+ "sourceUtf8": "-0",
42
+ "error": "HQ_VALUE_NEGATIVE_ZERO"
43
+ },
44
+ {
45
+ "id": "non-finite-float-model-value",
46
+ "phase": "model",
47
+ "generator": {
48
+ "type": "non-finite-float",
49
+ "value": "NaN"
50
+ },
51
+ "error": "HQ_VALUE_NON_FINITE_FLOAT"
52
+ },
53
+ {
54
+ "id": "safe-integer-requires-tag",
55
+ "phase": "model",
56
+ "value": 42,
57
+ "declaredClickHouseType": "Int64",
58
+ "error": "HQ_VALUE_INTEGER_TAG_REQUIRED"
59
+ },
60
+ {
61
+ "id": "raw-array",
62
+ "phase": "model",
63
+ "value": [true, false],
64
+ "error": "HQ_VALUE_RAW_COMPOSITE"
65
+ },
66
+ {
67
+ "id": "unknown-tag-type",
68
+ "phase": "model",
69
+ "value": {
70
+ "$hypequery": {
71
+ "type": "blob",
72
+ "version": 1
73
+ }
74
+ },
75
+ "error": "HQ_VALUE_UNKNOWN_TAG"
76
+ },
77
+ {
78
+ "id": "unknown-tag-version",
79
+ "phase": "model",
80
+ "value": {
81
+ "$hypequery": {
82
+ "type": "integer",
83
+ "version": 2,
84
+ "bits": 8,
85
+ "signed": true,
86
+ "value": "1"
87
+ }
88
+ },
89
+ "error": "HQ_VALUE_UNKNOWN_TAG_VERSION"
90
+ },
91
+ {
92
+ "id": "unknown-tag-field",
93
+ "phase": "model",
94
+ "value": {
95
+ "$hypequery": {
96
+ "type": "integer",
97
+ "version": 1,
98
+ "bits": 8,
99
+ "signed": true,
100
+ "value": "1",
101
+ "extra": true
102
+ }
103
+ },
104
+ "error": "HQ_VALUE_UNKNOWN_FIELD"
105
+ },
106
+ {
107
+ "id": "integer-leading-zero",
108
+ "phase": "model",
109
+ "value": {
110
+ "$hypequery": {
111
+ "type": "integer",
112
+ "version": 1,
113
+ "bits": 8,
114
+ "signed": false,
115
+ "value": "01"
116
+ }
117
+ },
118
+ "error": "HQ_VALUE_INVALID_FORMAT"
119
+ },
120
+ {
121
+ "id": "signed-int8-overflow",
122
+ "phase": "model",
123
+ "value": {
124
+ "$hypequery": {
125
+ "type": "integer",
126
+ "version": 1,
127
+ "bits": 8,
128
+ "signed": true,
129
+ "value": "128"
130
+ }
131
+ },
132
+ "error": "HQ_VALUE_OUT_OF_RANGE"
133
+ },
134
+ {
135
+ "id": "integer-declared-type-mismatch",
136
+ "phase": "model",
137
+ "value": {
138
+ "$hypequery": {
139
+ "type": "integer",
140
+ "version": 1,
141
+ "bits": 8,
142
+ "signed": false,
143
+ "value": "1"
144
+ }
145
+ },
146
+ "declaredClickHouseType": "Int8",
147
+ "error": "HQ_VALUE_TYPE_MISMATCH"
148
+ },
149
+ {
150
+ "id": "decimal-negative-zero",
151
+ "phase": "model",
152
+ "value": {
153
+ "$hypequery": {
154
+ "type": "decimal",
155
+ "version": 1,
156
+ "precision": 9,
157
+ "scale": 2,
158
+ "coefficient": "-0"
159
+ }
160
+ },
161
+ "error": "HQ_VALUE_INVALID_FORMAT"
162
+ },
163
+ {
164
+ "id": "decimal-scale-exceeds-precision",
165
+ "phase": "model",
166
+ "value": {
167
+ "$hypequery": {
168
+ "type": "decimal",
169
+ "version": 1,
170
+ "precision": 2,
171
+ "scale": 3,
172
+ "coefficient": "1"
173
+ }
174
+ },
175
+ "error": "HQ_VALUE_OUT_OF_RANGE"
176
+ },
177
+ {
178
+ "id": "invalid-date",
179
+ "phase": "model",
180
+ "value": {
181
+ "$hypequery": {
182
+ "type": "date",
183
+ "version": 1,
184
+ "clickhouseType": "Date",
185
+ "value": "2025-02-29"
186
+ }
187
+ },
188
+ "error": "HQ_VALUE_INVALID_FORMAT"
189
+ },
190
+ {
191
+ "id": "date-out-of-range",
192
+ "phase": "model",
193
+ "value": {
194
+ "$hypequery": {
195
+ "type": "date",
196
+ "version": 1,
197
+ "clickhouseType": "Date",
198
+ "value": "1900-01-01"
199
+ }
200
+ },
201
+ "error": "HQ_VALUE_OUT_OF_RANGE"
202
+ },
203
+ {
204
+ "id": "datetime-value-missing-z",
205
+ "phase": "model",
206
+ "value": {
207
+ "$hypequery": {
208
+ "type": "datetime",
209
+ "version": 1,
210
+ "clickhouseType": "DateTime64",
211
+ "precision": 3,
212
+ "timezone": "Europe/Madrid",
213
+ "value": "2026-07-13T14:30:45.123"
214
+ }
215
+ },
216
+ "error": "HQ_VALUE_INVALID_FORMAT"
217
+ },
218
+ {
219
+ "id": "uuid-uppercase",
220
+ "phase": "model",
221
+ "value": {
222
+ "$hypequery": {
223
+ "type": "uuid",
224
+ "version": 1,
225
+ "value": "01890F3E-7B7B-7CC2-98C4-DC0C0C07398F"
226
+ }
227
+ },
228
+ "error": "HQ_VALUE_INVALID_FORMAT"
229
+ },
230
+ {
231
+ "id": "bytes-padding",
232
+ "phase": "model",
233
+ "value": {
234
+ "$hypequery": {
235
+ "type": "bytes",
236
+ "version": 1,
237
+ "encoding": "base64url",
238
+ "value": "AA=="
239
+ }
240
+ },
241
+ "error": "HQ_VALUE_INVALID_FORMAT"
242
+ },
243
+ {
244
+ "id": "enum8-code-overflow",
245
+ "phase": "model",
246
+ "value": {
247
+ "$hypequery": {
248
+ "type": "enum",
249
+ "version": 1,
250
+ "bits": 8,
251
+ "code": 128,
252
+ "label": "overflow"
253
+ }
254
+ },
255
+ "error": "HQ_VALUE_OUT_OF_RANGE"
256
+ },
257
+ {
258
+ "id": "composite-depth-17",
259
+ "phase": "limits",
260
+ "generator": {
261
+ "type": "nested-array",
262
+ "depth": 17,
263
+ "leaf": null
264
+ },
265
+ "error": "HQ_VALUE_TOO_DEEP"
266
+ },
267
+ {
268
+ "id": "array-items-1001",
269
+ "phase": "limits",
270
+ "generator": {
271
+ "type": "array",
272
+ "items": 1001,
273
+ "value": null
274
+ },
275
+ "error": "HQ_VALUE_TOO_MANY_ITEMS"
276
+ },
277
+ {
278
+ "id": "value-nodes-10001",
279
+ "phase": "limits",
280
+ "generator": {
281
+ "type": "array-tree",
282
+ "branches": 10,
283
+ "itemsPerBranch": 999,
284
+ "value": null
285
+ },
286
+ "error": "HQ_VALUE_TOO_MANY_NODES"
287
+ },
288
+ {
289
+ "id": "string-bytes-65537",
290
+ "phase": "limits",
291
+ "generator": {
292
+ "type": "repeat-string",
293
+ "utf8": "a",
294
+ "count": 65537
295
+ },
296
+ "error": "HQ_VALUE_TOO_LARGE"
297
+ }
298
+ ]