@cynodia/axiom-server 0.15.0-alpha.1 → 0.15.0-alpha.2

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 (107) hide show
  1. package/conformance/authenticated-client-rejects-system-only-action.json +1 -1
  2. package/conformance/authorization/action-allow-deny-anonymous.json +129 -1
  3. package/conformance/authorization/constant-deny-policy.json +129 -1
  4. package/conformance/authorization/live-query-resume.json +129 -1
  5. package/conformance/authorization/manifest.json +18 -1
  6. package/conformance/authorization/operation-scope.json +129 -1
  7. package/conformance/authorization/pt2-deny-list-absent-value.json +840 -0
  8. package/conformance/authorization/pt2-owner-both-absent.json +831 -0
  9. package/conformance/authorization/query-public-preserved.json +129 -1
  10. package/conformance/authorization/query-tenant-isolation.json +129 -1
  11. package/conformance/authorization/workflow-cancellation-owner.json +129 -1
  12. package/conformance/authorization/workflow-cancellation-policy.json +129 -1
  13. package/conformance/authorization/workflow-inspection.json +129 -1
  14. package/conformance/authorization/workflow-start.json +129 -1
  15. package/conformance/effect-retry-sequence.json +1 -1
  16. package/conformance/effect-success-event.json +1 -1
  17. package/conformance/event-payload-invalid.json +1 -1
  18. package/conformance/failed-effect-structured-outcome.json +1 -1
  19. package/conformance/integration-query-success.json +1 -1
  20. package/conformance/integration-query-timeout.json +1 -1
  21. package/conformance/late-query-rejection-after-timeout.json +1 -1
  22. package/conformance/late-query-result-after-timeout.json +1 -1
  23. package/conformance/live/aggregate-reset.json +1 -1
  24. package/conformance/live/dependency-commit-no-change.json +1 -1
  25. package/conformance/live/f2-state-ref-refused.json +1 -1
  26. package/conformance/live/initial-result.json +1 -1
  27. package/conformance/live/insert-on-filter-entry.json +1 -1
  28. package/conformance/live/limit-boundary.json +1 -1
  29. package/conformance/live/manifest.json +1 -1
  30. package/conformance/live/not-live-capable.json +1 -1
  31. package/conformance/live/provider-only-sequence.json +1 -1
  32. package/conformance/live/provider-record-remove.json +1 -1
  33. package/conformance/live/remove-on-filter-exit.json +1 -1
  34. package/conformance/live/update-with-move.json +1 -1
  35. package/conformance/live/update-without-move.json +1 -1
  36. package/conformance/manifest.json +1 -1
  37. package/conformance/migrations/add-optional-field.json +1 -1
  38. package/conformance/migrations/add-required-field-with-default.json +1 -1
  39. package/conformance/migrations/crash-and-resume.json +1 -1
  40. package/conformance/migrations/destructive-removal-approved.json +1 -1
  41. package/conformance/migrations/destructive-removal-refused.json +1 -1
  42. package/conformance/migrations/idempotent-rerun.json +1 -1
  43. package/conformance/migrations/invalid-target-record.json +1 -1
  44. package/conformance/migrations/large-batched-transformation.json +1 -1
  45. package/conformance/migrations/manifest.json +1 -1
  46. package/conformance/migrations/metadata-only-change.json +1 -1
  47. package/conformance/migrations/migration-lock.json +1 -1
  48. package/conformance/migrations/missing-migration-path.json +1 -1
  49. package/conformance/migrations/record-transformation.json +1 -1
  50. package/conformance/migrations/relationship-addition.json +1 -1
  51. package/conformance/migrations/remove-empty-field.json +1 -1
  52. package/conformance/migrations/schema-fingerprint-mismatch.json +1 -1
  53. package/conformance/migrations/transform-field.json +1 -1
  54. package/conformance/queries/aggregate-under-policy.json +1 -1
  55. package/conformance/queries/count-aggregate.json +1 -1
  56. package/conformance/queries/cursor-page-1.json +1 -1
  57. package/conformance/queries/cursor-page-2.json +1 -1
  58. package/conformance/queries/filter-compound.json +1 -1
  59. package/conformance/queries/filter-equality.json +1 -1
  60. package/conformance/queries/grouped-sum.json +1 -1
  61. package/conformance/queries/invalid-cursor.json +1 -1
  62. package/conformance/queries/manifest.json +1 -1
  63. package/conformance/queries/multi-key-sort.json +1 -1
  64. package/conformance/queries/null-ordering.json +1 -1
  65. package/conformance/queries/projection-shape.json +1 -1
  66. package/conformance/queries/query-inside-transaction.json +1 -1
  67. package/conformance/queries/relationship-under-policy.json +1 -1
  68. package/conformance/queries/row-read-policy.json +1 -1
  69. package/conformance/queries/stable-ordering.json +1 -1
  70. package/conformance/queries/to-one-relationship.json +1 -1
  71. package/conformance/rolled-back-action-produces-no-effect.json +1 -1
  72. package/conformance/simultaneous-same-instant-triggers-both-commit.json +1 -1
  73. package/conformance/system-only-action-rejects-client.json +1 -1
  74. package/conformance/timed-trigger-polling.json +1 -1
  75. package/conformance/verified-external-event-invokes-system-only-action.json +1 -1
  76. package/conformance/workflow/manifest.json +1 -1
  77. package/conformance/workflow/workflow-action-on-error.json +1 -1
  78. package/conformance/workflow/workflow-action-retry.json +1 -1
  79. package/conformance/workflow/workflow-action-success.json +1 -1
  80. package/conformance/workflow/workflow-action-terminal-failure.json +1 -1
  81. package/conformance/workflow/workflow-branch-false.json +1 -1
  82. package/conformance/workflow/workflow-branch-true.json +1 -1
  83. package/conformance/workflow/workflow-cancel-waiting.json +1 -1
  84. package/conformance/workflow/workflow-event-match.json +1 -1
  85. package/conformance/workflow/workflow-event-nonmatch.json +1 -1
  86. package/conformance/workflow/workflow-event-timeout.json +1 -1
  87. package/conformance/workflow/workflow-start-complete.json +1 -1
  88. package/conformance/workflow/workflow-start-idempotency.json +1 -1
  89. package/conformance/workflow/workflow-timer.json +1 -1
  90. package/dist/authority-identity.d.ts +8 -0
  91. package/dist/authority-identity.js +12 -1
  92. package/dist/deps.d.ts +1 -1
  93. package/dist/deps.js +1 -1
  94. package/dist/server.js +83 -32
  95. package/dist/workflows.d.ts +7 -0
  96. package/dist/workflows.js +11 -3
  97. package/package.json +3 -3
  98. package/schema/protocol.v1.schema.json +1 -1
  99. package/schema/server-ir.v1.schema.json +1 -1
  100. package/schema/server-ir.v2.schema.json +1 -1
  101. package/schema/server-ir.v3.schema.json +1 -1
  102. package/schema/server-ir.v4.schema.json +1 -1
  103. package/schema/server-ir.v5.schema.json +1 -1
  104. package/schema/server-ir.v6.schema.json +1 -1
  105. package/schema/server-ir.v7.schema.json +1 -1
  106. package/schema/server-ir.v8.schema.json +1 -1
  107. package/schema/server-ir.v9.schema.json +1 -1
@@ -13,7 +13,7 @@
13
13
  "contract": "axiom.server.v4",
14
14
  "id": "conformance-integrations",
15
15
  "name": "Conformance integrations",
16
- "version": "0.8.2",
16
+ "version": "0.15.0",
17
17
  "entities": [
18
18
  {
19
19
  "id": "entity_effect_outcome",
@@ -58,6 +58,15 @@
58
58
  "field_user_id": "u-nob",
59
59
  "field_user_role": "viewer",
60
60
  "field_user_tenant": "t1"
61
+ },
62
+ "banned": {
63
+ "field_user_id": "u-ban",
64
+ "field_user_role": "banned",
65
+ "field_user_tenant": "t1"
66
+ },
67
+ "norole": {
68
+ "field_user_id": "u-nr",
69
+ "field_user_tenant": "t1"
61
70
  }
62
71
  },
63
72
  "steps": [
@@ -94,7 +103,7 @@
94
103
  "contract": "axiom.server.v9",
95
104
  "id": "authz-conformance",
96
105
  "name": "Authorization Conformance",
97
- "version": "0.15.0-alpha.1",
106
+ "version": "0.15.0-alpha.2",
98
107
  "entities": [
99
108
  {
100
109
  "id": "entity_user",
@@ -147,6 +156,14 @@
147
156
  "primitive": "string"
148
157
  },
149
158
  "required": true
159
+ },
160
+ {
161
+ "id": "field_doc_owner",
162
+ "valueType": {
163
+ "kind": "primitive",
164
+ "primitive": "string"
165
+ },
166
+ "required": false
150
167
  }
151
168
  ]
152
169
  },
@@ -236,6 +253,17 @@
236
253
  "required": true
237
254
  }
238
255
  },
256
+ "field_doc_owner": {
257
+ "entityId": "entity_doc",
258
+ "field": {
259
+ "id": "field_doc_owner",
260
+ "valueType": {
261
+ "kind": "primitive",
262
+ "primitive": "string"
263
+ },
264
+ "required": false
265
+ }
266
+ },
239
267
  "field_note_id": {
240
268
  "entityId": "entity_note",
241
269
  "field": {
@@ -383,6 +411,62 @@
383
411
  "preconditions": [],
384
412
  "failureModes": []
385
413
  },
414
+ "action_denylist": {
415
+ "id": "action_denylist",
416
+ "kind": "action",
417
+ "authorizationPolicy": "policy_denylist",
418
+ "operations": [
419
+ {
420
+ "kind": "set",
421
+ "target": {
422
+ "kind": "state",
423
+ "stateId": "state_count"
424
+ },
425
+ "value": {
426
+ "kind": "binary",
427
+ "operator": "add",
428
+ "left": {
429
+ "kind": "ref",
430
+ "targetId": "state_count"
431
+ },
432
+ "right": {
433
+ "kind": "literal",
434
+ "value": 1
435
+ }
436
+ }
437
+ }
438
+ ],
439
+ "preconditions": [],
440
+ "failureModes": []
441
+ },
442
+ "action_owner": {
443
+ "id": "action_owner",
444
+ "kind": "action",
445
+ "authorizationPolicy": "policy_owner",
446
+ "operations": [
447
+ {
448
+ "kind": "set",
449
+ "target": {
450
+ "kind": "state",
451
+ "stateId": "state_count"
452
+ },
453
+ "value": {
454
+ "kind": "binary",
455
+ "operator": "add",
456
+ "left": {
457
+ "kind": "ref",
458
+ "targetId": "state_count"
459
+ },
460
+ "right": {
461
+ "kind": "literal",
462
+ "value": 1
463
+ }
464
+ }
465
+ }
466
+ ],
467
+ "preconditions": [],
468
+ "failureModes": []
469
+ },
386
470
  "action_step": {
387
471
  "id": "action_step",
388
472
  "kind": "action",
@@ -594,6 +678,50 @@
594
678
  "kind": "literal",
595
679
  "value": false
596
680
  }
681
+ },
682
+ {
683
+ "id": "policy_denylist",
684
+ "kind": "authorization-policy",
685
+ "allow": {
686
+ "kind": "binary",
687
+ "operator": "neq",
688
+ "left": {
689
+ "kind": "field",
690
+ "source": {
691
+ "kind": "ref",
692
+ "targetId": "axiom_principal"
693
+ },
694
+ "fieldId": "field_user_role"
695
+ },
696
+ "right": {
697
+ "kind": "literal",
698
+ "value": "banned"
699
+ }
700
+ }
701
+ },
702
+ {
703
+ "id": "policy_owner",
704
+ "kind": "authorization-policy",
705
+ "allow": {
706
+ "kind": "binary",
707
+ "operator": "eq",
708
+ "left": {
709
+ "kind": "field",
710
+ "source": {
711
+ "kind": "ref",
712
+ "targetId": "axiom_resource"
713
+ },
714
+ "fieldId": "field_doc_owner"
715
+ },
716
+ "right": {
717
+ "kind": "field",
718
+ "source": {
719
+ "kind": "ref",
720
+ "targetId": "axiom_principal"
721
+ },
722
+ "fieldId": "field_user_id"
723
+ }
724
+ }
597
725
  }
598
726
  ],
599
727
  "workflows": [
@@ -55,6 +55,15 @@
55
55
  "field_user_id": "u-nob",
56
56
  "field_user_role": "viewer",
57
57
  "field_user_tenant": "t1"
58
+ },
59
+ "banned": {
60
+ "field_user_id": "u-ban",
61
+ "field_user_role": "banned",
62
+ "field_user_tenant": "t1"
63
+ },
64
+ "norole": {
65
+ "field_user_id": "u-nr",
66
+ "field_user_tenant": "t1"
58
67
  }
59
68
  },
60
69
  "steps": [
@@ -75,7 +84,7 @@
75
84
  "contract": "axiom.server.v9",
76
85
  "id": "authz-conformance",
77
86
  "name": "Authorization Conformance",
78
- "version": "0.15.0-alpha.1",
87
+ "version": "0.15.0-alpha.2",
79
88
  "entities": [
80
89
  {
81
90
  "id": "entity_user",
@@ -128,6 +137,14 @@
128
137
  "primitive": "string"
129
138
  },
130
139
  "required": true
140
+ },
141
+ {
142
+ "id": "field_doc_owner",
143
+ "valueType": {
144
+ "kind": "primitive",
145
+ "primitive": "string"
146
+ },
147
+ "required": false
131
148
  }
132
149
  ]
133
150
  },
@@ -217,6 +234,17 @@
217
234
  "required": true
218
235
  }
219
236
  },
237
+ "field_doc_owner": {
238
+ "entityId": "entity_doc",
239
+ "field": {
240
+ "id": "field_doc_owner",
241
+ "valueType": {
242
+ "kind": "primitive",
243
+ "primitive": "string"
244
+ },
245
+ "required": false
246
+ }
247
+ },
220
248
  "field_note_id": {
221
249
  "entityId": "entity_note",
222
250
  "field": {
@@ -364,6 +392,62 @@
364
392
  "preconditions": [],
365
393
  "failureModes": []
366
394
  },
395
+ "action_denylist": {
396
+ "id": "action_denylist",
397
+ "kind": "action",
398
+ "authorizationPolicy": "policy_denylist",
399
+ "operations": [
400
+ {
401
+ "kind": "set",
402
+ "target": {
403
+ "kind": "state",
404
+ "stateId": "state_count"
405
+ },
406
+ "value": {
407
+ "kind": "binary",
408
+ "operator": "add",
409
+ "left": {
410
+ "kind": "ref",
411
+ "targetId": "state_count"
412
+ },
413
+ "right": {
414
+ "kind": "literal",
415
+ "value": 1
416
+ }
417
+ }
418
+ }
419
+ ],
420
+ "preconditions": [],
421
+ "failureModes": []
422
+ },
423
+ "action_owner": {
424
+ "id": "action_owner",
425
+ "kind": "action",
426
+ "authorizationPolicy": "policy_owner",
427
+ "operations": [
428
+ {
429
+ "kind": "set",
430
+ "target": {
431
+ "kind": "state",
432
+ "stateId": "state_count"
433
+ },
434
+ "value": {
435
+ "kind": "binary",
436
+ "operator": "add",
437
+ "left": {
438
+ "kind": "ref",
439
+ "targetId": "state_count"
440
+ },
441
+ "right": {
442
+ "kind": "literal",
443
+ "value": 1
444
+ }
445
+ }
446
+ }
447
+ ],
448
+ "preconditions": [],
449
+ "failureModes": []
450
+ },
367
451
  "action_step": {
368
452
  "id": "action_step",
369
453
  "kind": "action",
@@ -575,6 +659,50 @@
575
659
  "kind": "literal",
576
660
  "value": false
577
661
  }
662
+ },
663
+ {
664
+ "id": "policy_denylist",
665
+ "kind": "authorization-policy",
666
+ "allow": {
667
+ "kind": "binary",
668
+ "operator": "neq",
669
+ "left": {
670
+ "kind": "field",
671
+ "source": {
672
+ "kind": "ref",
673
+ "targetId": "axiom_principal"
674
+ },
675
+ "fieldId": "field_user_role"
676
+ },
677
+ "right": {
678
+ "kind": "literal",
679
+ "value": "banned"
680
+ }
681
+ }
682
+ },
683
+ {
684
+ "id": "policy_owner",
685
+ "kind": "authorization-policy",
686
+ "allow": {
687
+ "kind": "binary",
688
+ "operator": "eq",
689
+ "left": {
690
+ "kind": "field",
691
+ "source": {
692
+ "kind": "ref",
693
+ "targetId": "axiom_resource"
694
+ },
695
+ "fieldId": "field_doc_owner"
696
+ },
697
+ "right": {
698
+ "kind": "field",
699
+ "source": {
700
+ "kind": "ref",
701
+ "targetId": "axiom_principal"
702
+ },
703
+ "fieldId": "field_user_id"
704
+ }
705
+ }
578
706
  }
579
707
  ],
580
708
  "workflows": [
@@ -57,6 +57,15 @@
57
57
  "field_user_id": "u-nob",
58
58
  "field_user_role": "viewer",
59
59
  "field_user_tenant": "t1"
60
+ },
61
+ "banned": {
62
+ "field_user_id": "u-ban",
63
+ "field_user_role": "banned",
64
+ "field_user_tenant": "t1"
65
+ },
66
+ "norole": {
67
+ "field_user_id": "u-nr",
68
+ "field_user_tenant": "t1"
60
69
  }
61
70
  },
62
71
  "steps": [
@@ -105,7 +114,7 @@
105
114
  "contract": "axiom.server.v9",
106
115
  "id": "authz-conformance",
107
116
  "name": "Authorization Conformance",
108
- "version": "0.15.0-alpha.1",
117
+ "version": "0.15.0-alpha.2",
109
118
  "entities": [
110
119
  {
111
120
  "id": "entity_user",
@@ -158,6 +167,14 @@
158
167
  "primitive": "string"
159
168
  },
160
169
  "required": true
170
+ },
171
+ {
172
+ "id": "field_doc_owner",
173
+ "valueType": {
174
+ "kind": "primitive",
175
+ "primitive": "string"
176
+ },
177
+ "required": false
161
178
  }
162
179
  ]
163
180
  },
@@ -247,6 +264,17 @@
247
264
  "required": true
248
265
  }
249
266
  },
267
+ "field_doc_owner": {
268
+ "entityId": "entity_doc",
269
+ "field": {
270
+ "id": "field_doc_owner",
271
+ "valueType": {
272
+ "kind": "primitive",
273
+ "primitive": "string"
274
+ },
275
+ "required": false
276
+ }
277
+ },
250
278
  "field_note_id": {
251
279
  "entityId": "entity_note",
252
280
  "field": {
@@ -394,6 +422,62 @@
394
422
  "preconditions": [],
395
423
  "failureModes": []
396
424
  },
425
+ "action_denylist": {
426
+ "id": "action_denylist",
427
+ "kind": "action",
428
+ "authorizationPolicy": "policy_denylist",
429
+ "operations": [
430
+ {
431
+ "kind": "set",
432
+ "target": {
433
+ "kind": "state",
434
+ "stateId": "state_count"
435
+ },
436
+ "value": {
437
+ "kind": "binary",
438
+ "operator": "add",
439
+ "left": {
440
+ "kind": "ref",
441
+ "targetId": "state_count"
442
+ },
443
+ "right": {
444
+ "kind": "literal",
445
+ "value": 1
446
+ }
447
+ }
448
+ }
449
+ ],
450
+ "preconditions": [],
451
+ "failureModes": []
452
+ },
453
+ "action_owner": {
454
+ "id": "action_owner",
455
+ "kind": "action",
456
+ "authorizationPolicy": "policy_owner",
457
+ "operations": [
458
+ {
459
+ "kind": "set",
460
+ "target": {
461
+ "kind": "state",
462
+ "stateId": "state_count"
463
+ },
464
+ "value": {
465
+ "kind": "binary",
466
+ "operator": "add",
467
+ "left": {
468
+ "kind": "ref",
469
+ "targetId": "state_count"
470
+ },
471
+ "right": {
472
+ "kind": "literal",
473
+ "value": 1
474
+ }
475
+ }
476
+ }
477
+ ],
478
+ "preconditions": [],
479
+ "failureModes": []
480
+ },
397
481
  "action_step": {
398
482
  "id": "action_step",
399
483
  "kind": "action",
@@ -605,6 +689,50 @@
605
689
  "kind": "literal",
606
690
  "value": false
607
691
  }
692
+ },
693
+ {
694
+ "id": "policy_denylist",
695
+ "kind": "authorization-policy",
696
+ "allow": {
697
+ "kind": "binary",
698
+ "operator": "neq",
699
+ "left": {
700
+ "kind": "field",
701
+ "source": {
702
+ "kind": "ref",
703
+ "targetId": "axiom_principal"
704
+ },
705
+ "fieldId": "field_user_role"
706
+ },
707
+ "right": {
708
+ "kind": "literal",
709
+ "value": "banned"
710
+ }
711
+ }
712
+ },
713
+ {
714
+ "id": "policy_owner",
715
+ "kind": "authorization-policy",
716
+ "allow": {
717
+ "kind": "binary",
718
+ "operator": "eq",
719
+ "left": {
720
+ "kind": "field",
721
+ "source": {
722
+ "kind": "ref",
723
+ "targetId": "axiom_resource"
724
+ },
725
+ "fieldId": "field_doc_owner"
726
+ },
727
+ "right": {
728
+ "kind": "field",
729
+ "source": {
730
+ "kind": "ref",
731
+ "targetId": "axiom_principal"
732
+ },
733
+ "fieldId": "field_user_id"
734
+ }
735
+ }
608
736
  }
609
737
  ],
610
738
  "workflows": [
@@ -2,7 +2,7 @@
2
2
  "conformance": "axiom.conformance.v9",
3
3
  "baseContract": "axiom.server.v9",
4
4
  "protocol": "axiom.protocol.v1",
5
- "release": "0.15.0-alpha.1",
5
+ "release": "0.15.0-alpha.2",
6
6
  "description": "Portable authorization conformance fixtures (spec15 §71-§73). Each file carries a compiled axiom.server.v9 Server IR, the principal records each credential resolves to, provider seed rows, and a deterministic driver script — every step carrying the decision the fixture author computed independently (ALLOW/DENY, and for a query the exact authorized row set). Running one needs only runAuthorizationConformanceFixture from @cynodia/axiom-server and the semantics in docs/AUTHORIZATION.md. Full mixed-build semantic-fingerprint divergence and real-process crash boundaries are the spec15 Phase I suite.",
7
7
  "fixtures": [
8
8
  {
@@ -88,6 +88,23 @@
88
88
  "deny",
89
89
  "query filtering"
90
90
  ]
91
+ },
92
+ {
93
+ "name": "pt2-deny-list-absent-value",
94
+ "covers": [
95
+ "deny",
96
+ "role/claim condition",
97
+ "action invocation",
98
+ "allow"
99
+ ]
100
+ },
101
+ {
102
+ "name": "pt2-owner-both-absent",
103
+ "covers": [
104
+ "deny",
105
+ "owner",
106
+ "resource-owner condition"
107
+ ]
91
108
  }
92
109
  ]
93
110
  }