umf-codegen 0.10.8__py3-none-any.whl

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.
@@ -0,0 +1,1031 @@
1
+ {
2
+ "id": "umf.tables",
3
+ "version": "0.1.0",
4
+ "coreVersion": "0.10.0",
5
+ "description": "Candidate typed native table declaration inspection; native execution requires separate qualification",
6
+ "schema": {
7
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8
+ "$id": "urn:umf:tables:0.1.0",
9
+ "title": "UMF native table lifecycle candidate0.1.0",
10
+ "type": "object",
11
+ "properties": {
12
+ "profile": {
13
+ "const": "postgresql18/0.1"
14
+ },
15
+ "tables": {
16
+ "type": "array",
17
+ "items": {
18
+ "$ref": "#/$defs/table"
19
+ },
20
+ "minItems": 0,
21
+ "maxItems": 256
22
+ },
23
+ "seedSets": {
24
+ "type": "array",
25
+ "items": {
26
+ "$ref": "#/$defs/seedSet"
27
+ },
28
+ "minItems": 0,
29
+ "maxItems": 256
30
+ },
31
+ "commands": {
32
+ "type": "array",
33
+ "items": {},
34
+ "minItems": 0,
35
+ "maxItems": 256
36
+ }
37
+ },
38
+ "required": [
39
+ "profile",
40
+ "tables",
41
+ "seedSets",
42
+ "commands"
43
+ ],
44
+ "$defs": {
45
+ "ref": {
46
+ "type": "object",
47
+ "properties": {
48
+ "module": {
49
+ "type": "string",
50
+ "minLength": 1
51
+ },
52
+ "element": {
53
+ "type": "string",
54
+ "minLength": 1
55
+ }
56
+ },
57
+ "required": [
58
+ "module",
59
+ "element"
60
+ ]
61
+ },
62
+ "keyRef": {
63
+ "type": "object",
64
+ "properties": {
65
+ "record": {
66
+ "$ref": "#/$defs/ref"
67
+ },
68
+ "key": {
69
+ "type": "string",
70
+ "minLength": 1
71
+ }
72
+ },
73
+ "required": [
74
+ "record",
75
+ "key"
76
+ ]
77
+ },
78
+ "literal": {
79
+ "description": "UMF language literal",
80
+ "oneOf": [
81
+ {
82
+ "type": "null"
83
+ },
84
+ {
85
+ "type": "object",
86
+ "required": [
87
+ "boolean"
88
+ ],
89
+ "properties": {
90
+ "boolean": {
91
+ "type": "boolean"
92
+ }
93
+ },
94
+ "additionalProperties": false
95
+ },
96
+ {
97
+ "type": "object",
98
+ "required": [
99
+ "integerToken"
100
+ ],
101
+ "properties": {
102
+ "integerToken": {
103
+ "type": "string",
104
+ "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?$(?![\\s\\S])"
105
+ }
106
+ },
107
+ "additionalProperties": false
108
+ },
109
+ {
110
+ "type": "object",
111
+ "required": [
112
+ "decimalToken"
113
+ ],
114
+ "properties": {
115
+ "decimalToken": {
116
+ "type": "string",
117
+ "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?$(?![\\s\\S])"
118
+ }
119
+ },
120
+ "additionalProperties": false
121
+ },
122
+ {
123
+ "type": "object",
124
+ "required": [
125
+ "string"
126
+ ],
127
+ "properties": {
128
+ "string": {
129
+ "type": "string"
130
+ }
131
+ },
132
+ "additionalProperties": false
133
+ },
134
+ {
135
+ "type": "object",
136
+ "required": [
137
+ "binaryHex"
138
+ ],
139
+ "properties": {
140
+ "binaryHex": {
141
+ "type": "string",
142
+ "pattern": "^([0-9a-fA-F]{2})*$(?![\\s\\S])"
143
+ }
144
+ },
145
+ "additionalProperties": false
146
+ },
147
+ {
148
+ "type": "object",
149
+ "required": [
150
+ "floatToken"
151
+ ],
152
+ "properties": {
153
+ "floatToken": {
154
+ "type": "string",
155
+ "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?$(?![\\s\\S])"
156
+ }
157
+ },
158
+ "additionalProperties": false
159
+ },
160
+ {
161
+ "type": "object",
162
+ "required": [
163
+ "date"
164
+ ],
165
+ "properties": {
166
+ "date": {
167
+ "type": "string"
168
+ }
169
+ },
170
+ "additionalProperties": false
171
+ },
172
+ {
173
+ "type": "object",
174
+ "required": [
175
+ "time"
176
+ ],
177
+ "properties": {
178
+ "time": {
179
+ "type": "string"
180
+ }
181
+ },
182
+ "additionalProperties": false
183
+ },
184
+ {
185
+ "type": "object",
186
+ "required": [
187
+ "timestamp"
188
+ ],
189
+ "properties": {
190
+ "timestamp": {
191
+ "type": "string"
192
+ }
193
+ },
194
+ "additionalProperties": false
195
+ },
196
+ {
197
+ "type": "object",
198
+ "required": [
199
+ "array"
200
+ ],
201
+ "properties": {
202
+ "array": {
203
+ "type": "array",
204
+ "items": {
205
+ "$ref": "#/$defs/literal"
206
+ }
207
+ }
208
+ },
209
+ "additionalProperties": false
210
+ },
211
+ {
212
+ "type": "object",
213
+ "required": [
214
+ "map"
215
+ ],
216
+ "properties": {
217
+ "map": {
218
+ "type": "object",
219
+ "additionalProperties": {
220
+ "$ref": "#/$defs/literal"
221
+ }
222
+ }
223
+ },
224
+ "additionalProperties": false
225
+ },
226
+ {
227
+ "type": "object",
228
+ "required": [
229
+ "bits128Hex"
230
+ ],
231
+ "properties": {
232
+ "bits128Hex": {
233
+ "type": "string",
234
+ "minLength": 32,
235
+ "maxLength": 32,
236
+ "pattern": "^[0-9a-fA-F]{32}$(?![\\s\\S])"
237
+ }
238
+ },
239
+ "additionalProperties": false
240
+ },
241
+ {
242
+ "type": "object",
243
+ "required": [
244
+ "uuid"
245
+ ],
246
+ "properties": {
247
+ "uuid": {
248
+ "type": "string",
249
+ "minLength": 36,
250
+ "maxLength": 36,
251
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$(?![\\s\\S])"
252
+ }
253
+ },
254
+ "additionalProperties": false
255
+ }
256
+ ]
257
+ },
258
+ "relationshipStep": {
259
+ "type": "object",
260
+ "properties": {
261
+ "module": {
262
+ "type": "string",
263
+ "minLength": 1
264
+ },
265
+ "id": {
266
+ "type": "string",
267
+ "minLength": 1
268
+ },
269
+ "direction": {
270
+ "enum": [
271
+ "forward",
272
+ "inverse"
273
+ ]
274
+ }
275
+ },
276
+ "required": [
277
+ "module",
278
+ "id",
279
+ "direction"
280
+ ]
281
+ },
282
+ "nativeType": {
283
+ "oneOf": [
284
+ {
285
+ "type": "object",
286
+ "properties": {
287
+ "kind": {
288
+ "enum": [
289
+ "boolean",
290
+ "text",
291
+ "int2",
292
+ "int4",
293
+ "int8",
294
+ "float4",
295
+ "float8",
296
+ "date",
297
+ "timestamp",
298
+ "timestamptz",
299
+ "uuid",
300
+ "bytea"
301
+ ]
302
+ }
303
+ },
304
+ "required": [
305
+ "kind"
306
+ ]
307
+ },
308
+ {
309
+ "type": "object",
310
+ "properties": {
311
+ "kind": {
312
+ "enum": [
313
+ "varchar",
314
+ "char"
315
+ ]
316
+ },
317
+ "length": {
318
+ "type": "integer",
319
+ "minimum": 1,
320
+ "maximum": 10485760
321
+ }
322
+ },
323
+ "required": [
324
+ "kind",
325
+ "length"
326
+ ]
327
+ },
328
+ {
329
+ "type": "object",
330
+ "properties": {
331
+ "kind": {
332
+ "const": "numeric"
333
+ },
334
+ "precision": {
335
+ "type": "integer",
336
+ "minimum": 1,
337
+ "maximum": 1000
338
+ },
339
+ "scale": {
340
+ "type": "integer",
341
+ "minimum": 0,
342
+ "maximum": 1000
343
+ }
344
+ },
345
+ "required": [
346
+ "kind",
347
+ "precision",
348
+ "scale"
349
+ ]
350
+ }
351
+ ]
352
+ },
353
+ "default": {
354
+ "oneOf": [
355
+ {
356
+ "type": "object",
357
+ "properties": {
358
+ "kind": {
359
+ "const": "literal"
360
+ },
361
+ "value": {
362
+ "$ref": "#/$defs/literal"
363
+ }
364
+ },
365
+ "required": [
366
+ "kind",
367
+ "value"
368
+ ]
369
+ },
370
+ {
371
+ "type": "object",
372
+ "properties": {
373
+ "kind": {
374
+ "const": "currentTimestamp"
375
+ }
376
+ },
377
+ "required": [
378
+ "kind"
379
+ ]
380
+ },
381
+ {
382
+ "type": "object",
383
+ "properties": {
384
+ "kind": {
385
+ "const": "randomUuid"
386
+ }
387
+ },
388
+ "required": [
389
+ "kind"
390
+ ]
391
+ }
392
+ ]
393
+ },
394
+ "generated": {
395
+ "type": "object",
396
+ "properties": {
397
+ "kind": {
398
+ "const": "identity"
399
+ },
400
+ "generation": {
401
+ "enum": [
402
+ "always",
403
+ "byDefault"
404
+ ]
405
+ }
406
+ },
407
+ "required": [
408
+ "kind",
409
+ "generation"
410
+ ]
411
+ },
412
+ "column": {
413
+ "type": "object",
414
+ "properties": {
415
+ "field": {
416
+ "$ref": "#/$defs/ref"
417
+ },
418
+ "name": {
419
+ "type": "string",
420
+ "minLength": 1,
421
+ "maxLength": 63,
422
+ "pattern": "^[^\\u0000]+$"
423
+ },
424
+ "nativeType": {
425
+ "$ref": "#/$defs/nativeType"
426
+ },
427
+ "default": {
428
+ "$ref": "#/$defs/default"
429
+ },
430
+ "generated": {
431
+ "$ref": "#/$defs/generated"
432
+ },
433
+ "immutable": {
434
+ "type": "boolean"
435
+ }
436
+ },
437
+ "required": [
438
+ "field",
439
+ "name",
440
+ "nativeType"
441
+ ]
442
+ },
443
+ "expression": {
444
+ "oneOf": [
445
+ {
446
+ "type": "object",
447
+ "properties": {
448
+ "op": {
449
+ "const": "field"
450
+ },
451
+ "field": {
452
+ "$ref": "#/$defs/ref"
453
+ }
454
+ },
455
+ "required": [
456
+ "op",
457
+ "field"
458
+ ]
459
+ },
460
+ {
461
+ "type": "object",
462
+ "properties": {
463
+ "op": {
464
+ "const": "literal"
465
+ },
466
+ "value": {
467
+ "$ref": "#/$defs/literal"
468
+ }
469
+ },
470
+ "required": [
471
+ "op",
472
+ "value"
473
+ ]
474
+ },
475
+ {
476
+ "type": "object",
477
+ "properties": {
478
+ "op": {
479
+ "enum": [
480
+ "eq",
481
+ "ne",
482
+ "lt",
483
+ "le",
484
+ "gt",
485
+ "ge"
486
+ ]
487
+ },
488
+ "left": {
489
+ "$ref": "#/$defs/expression"
490
+ },
491
+ "right": {
492
+ "$ref": "#/$defs/expression"
493
+ }
494
+ },
495
+ "required": [
496
+ "op",
497
+ "left",
498
+ "right"
499
+ ]
500
+ },
501
+ {
502
+ "type": "object",
503
+ "properties": {
504
+ "op": {
505
+ "enum": [
506
+ "and",
507
+ "or"
508
+ ]
509
+ },
510
+ "args": {
511
+ "type": "array",
512
+ "items": {
513
+ "$ref": "#/$defs/expression"
514
+ },
515
+ "minItems": 1,
516
+ "maxItems": 64
517
+ }
518
+ },
519
+ "required": [
520
+ "op",
521
+ "args"
522
+ ]
523
+ },
524
+ {
525
+ "type": "object",
526
+ "properties": {
527
+ "op": {
528
+ "enum": [
529
+ "not",
530
+ "isNull"
531
+ ]
532
+ },
533
+ "arg": {
534
+ "$ref": "#/$defs/expression"
535
+ }
536
+ },
537
+ "required": [
538
+ "op",
539
+ "arg"
540
+ ]
541
+ },
542
+ {
543
+ "type": "object",
544
+ "properties": {
545
+ "op": {
546
+ "const": "in"
547
+ },
548
+ "arg": {
549
+ "$ref": "#/$defs/expression"
550
+ },
551
+ "values": {
552
+ "type": "array",
553
+ "items": {
554
+ "$ref": "#/$defs/literal"
555
+ },
556
+ "minItems": 0,
557
+ "maxItems": 1000
558
+ }
559
+ },
560
+ "required": [
561
+ "op",
562
+ "arg",
563
+ "values"
564
+ ]
565
+ }
566
+ ]
567
+ },
568
+ "rowRule": {
569
+ "oneOf": [
570
+ {
571
+ "type": "object",
572
+ "properties": {
573
+ "kind": {
574
+ "enum": [
575
+ "deny",
576
+ "allow"
577
+ ]
578
+ }
579
+ },
580
+ "required": [
581
+ "kind"
582
+ ]
583
+ },
584
+ {
585
+ "type": "object",
586
+ "properties": {
587
+ "kind": {
588
+ "enum": [
589
+ "owner",
590
+ "memberOf"
591
+ ]
592
+ },
593
+ "field": {
594
+ "$ref": "#/$defs/ref"
595
+ }
596
+ },
597
+ "required": [
598
+ "kind",
599
+ "field"
600
+ ]
601
+ },
602
+ {
603
+ "type": "object",
604
+ "properties": {
605
+ "kind": {
606
+ "const": "memberOfRole"
607
+ },
608
+ "role": {
609
+ "type": "string",
610
+ "minLength": 1
611
+ }
612
+ },
613
+ "required": [
614
+ "kind",
615
+ "role"
616
+ ]
617
+ },
618
+ {
619
+ "type": "object",
620
+ "properties": {
621
+ "kind": {
622
+ "enum": [
623
+ "any",
624
+ "all"
625
+ ]
626
+ },
627
+ "rules": {
628
+ "type": "array",
629
+ "items": {
630
+ "$ref": "#/$defs/rowRule"
631
+ },
632
+ "minItems": 1,
633
+ "maxItems": 64
634
+ }
635
+ },
636
+ "required": [
637
+ "kind",
638
+ "rules"
639
+ ]
640
+ },
641
+ {
642
+ "type": "object",
643
+ "properties": {
644
+ "kind": {
645
+ "const": "via"
646
+ },
647
+ "path": {
648
+ "type": "array",
649
+ "items": {
650
+ "$ref": "#/$defs/relationshipStep"
651
+ },
652
+ "minItems": 1,
653
+ "maxItems": 4
654
+ },
655
+ "rule": {
656
+ "$ref": "#/$defs/rowRule"
657
+ }
658
+ },
659
+ "required": [
660
+ "kind",
661
+ "path",
662
+ "rule"
663
+ ]
664
+ },
665
+ {
666
+ "type": "object",
667
+ "properties": {
668
+ "kind": {
669
+ "const": "related"
670
+ },
671
+ "record": {
672
+ "$ref": "#/$defs/ref"
673
+ },
674
+ "matches": {
675
+ "type": "array",
676
+ "minItems": 1,
677
+ "maxItems": 32,
678
+ "items": {
679
+ "type": "object",
680
+ "properties": {
681
+ "source": {
682
+ "$ref": "#/$defs/ref"
683
+ },
684
+ "target": {
685
+ "$ref": "#/$defs/ref"
686
+ }
687
+ },
688
+ "required": [
689
+ "source",
690
+ "target"
691
+ ]
692
+ }
693
+ },
694
+ "rule": {
695
+ "$ref": "#/$defs/rowRule"
696
+ }
697
+ },
698
+ "required": [
699
+ "kind",
700
+ "record",
701
+ "matches",
702
+ "rule"
703
+ ]
704
+ }
705
+ ]
706
+ },
707
+ "commandRules": {
708
+ "type": "object",
709
+ "properties": {
710
+ "select": {
711
+ "$ref": "#/$defs/rowRule"
712
+ },
713
+ "insert": {
714
+ "$ref": "#/$defs/rowRule"
715
+ },
716
+ "update": {
717
+ "$ref": "#/$defs/rowRule"
718
+ },
719
+ "delete": {
720
+ "$ref": "#/$defs/rowRule"
721
+ }
722
+ },
723
+ "required": [
724
+ "select",
725
+ "insert",
726
+ "update",
727
+ "delete"
728
+ ]
729
+ },
730
+ "policy": {
731
+ "type": "object",
732
+ "properties": {
733
+ "mode": {
734
+ "const": "native-rls"
735
+ },
736
+ "person": {
737
+ "$ref": "#/$defs/commandRules"
738
+ },
739
+ "batch": {
740
+ "$ref": "#/$defs/commandRules"
741
+ }
742
+ },
743
+ "required": [
744
+ "mode",
745
+ "person",
746
+ "batch"
747
+ ]
748
+ },
749
+ "index": {
750
+ "type": "object",
751
+ "properties": {
752
+ "id": {
753
+ "type": "string",
754
+ "minLength": 1
755
+ },
756
+ "name": {
757
+ "type": "string",
758
+ "minLength": 1,
759
+ "maxLength": 63,
760
+ "pattern": "^[^\\u0000]+$"
761
+ },
762
+ "fields": {
763
+ "type": "array",
764
+ "items": {
765
+ "$ref": "#/$defs/ref"
766
+ },
767
+ "minItems": 1,
768
+ "maxItems": 32
769
+ },
770
+ "unique": {
771
+ "type": "boolean"
772
+ },
773
+ "include": {
774
+ "type": "array",
775
+ "items": {
776
+ "$ref": "#/$defs/ref"
777
+ },
778
+ "minItems": 0,
779
+ "maxItems": 32
780
+ }
781
+ },
782
+ "required": [
783
+ "id",
784
+ "name",
785
+ "fields",
786
+ "unique",
787
+ "include"
788
+ ]
789
+ },
790
+ "check": {
791
+ "type": "object",
792
+ "properties": {
793
+ "id": {
794
+ "type": "string",
795
+ "minLength": 1
796
+ },
797
+ "name": {
798
+ "type": "string",
799
+ "minLength": 1,
800
+ "maxLength": 63,
801
+ "pattern": "^[^\\u0000]+$"
802
+ },
803
+ "expression": {
804
+ "$ref": "#/$defs/expression"
805
+ }
806
+ },
807
+ "required": [
808
+ "id",
809
+ "name",
810
+ "expression"
811
+ ]
812
+ },
813
+ "relationshipRef": {
814
+ "type": "object",
815
+ "properties": {
816
+ "module": {
817
+ "type": "string",
818
+ "minLength": 1
819
+ },
820
+ "id": {
821
+ "type": "string",
822
+ "minLength": 1
823
+ }
824
+ },
825
+ "required": [
826
+ "module",
827
+ "id"
828
+ ]
829
+ },
830
+ "foreignKey": {
831
+ "type": "object",
832
+ "properties": {
833
+ "id": {
834
+ "type": "string",
835
+ "minLength": 1
836
+ },
837
+ "name": {
838
+ "type": "string",
839
+ "minLength": 1,
840
+ "maxLength": 63,
841
+ "pattern": "^[^\\u0000]+$"
842
+ },
843
+ "fields": {
844
+ "type": "array",
845
+ "items": {
846
+ "$ref": "#/$defs/ref"
847
+ },
848
+ "minItems": 1,
849
+ "maxItems": 32
850
+ },
851
+ "target": {
852
+ "$ref": "#/$defs/keyRef"
853
+ },
854
+ "onUpdate": {
855
+ "enum": [
856
+ "restrict",
857
+ "noAction",
858
+ "cascade",
859
+ "setNull"
860
+ ]
861
+ },
862
+ "onDelete": {
863
+ "enum": [
864
+ "restrict",
865
+ "noAction",
866
+ "cascade",
867
+ "setNull"
868
+ ]
869
+ },
870
+ "deferrable": {
871
+ "enum": [
872
+ false,
873
+ "immediate",
874
+ "deferred"
875
+ ]
876
+ },
877
+ "relationship": {
878
+ "$ref": "#/$defs/relationshipRef"
879
+ }
880
+ },
881
+ "required": [
882
+ "id",
883
+ "name",
884
+ "fields",
885
+ "target",
886
+ "onUpdate",
887
+ "onDelete",
888
+ "deferrable"
889
+ ]
890
+ },
891
+ "table": {
892
+ "type": "object",
893
+ "properties": {
894
+ "id": {
895
+ "type": "string",
896
+ "minLength": 1
897
+ },
898
+ "record": {
899
+ "$ref": "#/$defs/ref"
900
+ },
901
+ "name": {
902
+ "type": "string",
903
+ "minLength": 1,
904
+ "maxLength": 63,
905
+ "pattern": "^[^\\u0000]+$"
906
+ },
907
+ "columns": {
908
+ "type": "array",
909
+ "items": {
910
+ "$ref": "#/$defs/column"
911
+ },
912
+ "minItems": 1,
913
+ "maxItems": 1600
914
+ },
915
+ "indexes": {
916
+ "type": "array",
917
+ "items": {
918
+ "$ref": "#/$defs/index"
919
+ },
920
+ "minItems": 0,
921
+ "maxItems": 256
922
+ },
923
+ "checks": {
924
+ "type": "array",
925
+ "items": {
926
+ "$ref": "#/$defs/check"
927
+ },
928
+ "minItems": 0,
929
+ "maxItems": 256
930
+ },
931
+ "foreignKeys": {
932
+ "type": "array",
933
+ "items": {
934
+ "$ref": "#/$defs/foreignKey"
935
+ },
936
+ "minItems": 0,
937
+ "maxItems": 256
938
+ },
939
+ "policy": {
940
+ "$ref": "#/$defs/policy"
941
+ }
942
+ },
943
+ "required": [
944
+ "id",
945
+ "record",
946
+ "name",
947
+ "columns",
948
+ "indexes",
949
+ "checks",
950
+ "foreignKeys",
951
+ "policy"
952
+ ]
953
+ },
954
+ "fieldValue": {
955
+ "type": "object",
956
+ "properties": {
957
+ "field": {
958
+ "$ref": "#/$defs/ref"
959
+ },
960
+ "value": {
961
+ "$ref": "#/$defs/literal"
962
+ }
963
+ },
964
+ "required": [
965
+ "field",
966
+ "value"
967
+ ]
968
+ },
969
+ "seedRow": {
970
+ "type": "object",
971
+ "properties": {
972
+ "table": {
973
+ "type": "string",
974
+ "minLength": 1
975
+ },
976
+ "values": {
977
+ "type": "array",
978
+ "items": {
979
+ "$ref": "#/$defs/fieldValue"
980
+ },
981
+ "minItems": 0,
982
+ "maxItems": 1600
983
+ }
984
+ },
985
+ "required": [
986
+ "table",
987
+ "values"
988
+ ]
989
+ },
990
+ "seedSet": {
991
+ "type": "object",
992
+ "properties": {
993
+ "id": {
994
+ "type": "string",
995
+ "minLength": 1
996
+ },
997
+ "rows": {
998
+ "type": "array",
999
+ "items": {
1000
+ "$ref": "#/$defs/seedRow"
1001
+ },
1002
+ "minItems": 0,
1003
+ "maxItems": 10000
1004
+ },
1005
+ "conflict": {
1006
+ "enum": [
1007
+ "error",
1008
+ "ignore"
1009
+ ]
1010
+ }
1011
+ },
1012
+ "required": [
1013
+ "id",
1014
+ "rows",
1015
+ "conflict"
1016
+ ]
1017
+ }
1018
+ }
1019
+ },
1020
+ "semantics": "CONTRACT-081. Logical identity remains core. Unknown content is preserved; selected native interpretation and execution require separate complete admission. Commands remain preservation-only until their wire contract is defined.",
1021
+ "scopes": [
1022
+ "module"
1023
+ ],
1024
+ "capabilities": {
1025
+ "validation": "semantic",
1026
+ "directions": [],
1027
+ "evidence": [
1028
+ "tests/binding/tables.test.ts"
1029
+ ]
1030
+ }
1031
+ }