@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.
- package/conformance/authenticated-client-rejects-system-only-action.json +1 -1
- package/conformance/authorization/action-allow-deny-anonymous.json +129 -1
- package/conformance/authorization/constant-deny-policy.json +129 -1
- package/conformance/authorization/live-query-resume.json +129 -1
- package/conformance/authorization/manifest.json +18 -1
- package/conformance/authorization/operation-scope.json +129 -1
- package/conformance/authorization/pt2-deny-list-absent-value.json +840 -0
- package/conformance/authorization/pt2-owner-both-absent.json +831 -0
- package/conformance/authorization/query-public-preserved.json +129 -1
- package/conformance/authorization/query-tenant-isolation.json +129 -1
- package/conformance/authorization/workflow-cancellation-owner.json +129 -1
- package/conformance/authorization/workflow-cancellation-policy.json +129 -1
- package/conformance/authorization/workflow-inspection.json +129 -1
- package/conformance/authorization/workflow-start.json +129 -1
- package/conformance/effect-retry-sequence.json +1 -1
- package/conformance/effect-success-event.json +1 -1
- package/conformance/event-payload-invalid.json +1 -1
- package/conformance/failed-effect-structured-outcome.json +1 -1
- package/conformance/integration-query-success.json +1 -1
- package/conformance/integration-query-timeout.json +1 -1
- package/conformance/late-query-rejection-after-timeout.json +1 -1
- package/conformance/late-query-result-after-timeout.json +1 -1
- package/conformance/live/aggregate-reset.json +1 -1
- package/conformance/live/dependency-commit-no-change.json +1 -1
- package/conformance/live/f2-state-ref-refused.json +1 -1
- package/conformance/live/initial-result.json +1 -1
- package/conformance/live/insert-on-filter-entry.json +1 -1
- package/conformance/live/limit-boundary.json +1 -1
- package/conformance/live/manifest.json +1 -1
- package/conformance/live/not-live-capable.json +1 -1
- package/conformance/live/provider-only-sequence.json +1 -1
- package/conformance/live/provider-record-remove.json +1 -1
- package/conformance/live/remove-on-filter-exit.json +1 -1
- package/conformance/live/update-with-move.json +1 -1
- package/conformance/live/update-without-move.json +1 -1
- package/conformance/manifest.json +1 -1
- package/conformance/migrations/add-optional-field.json +1 -1
- package/conformance/migrations/add-required-field-with-default.json +1 -1
- package/conformance/migrations/crash-and-resume.json +1 -1
- package/conformance/migrations/destructive-removal-approved.json +1 -1
- package/conformance/migrations/destructive-removal-refused.json +1 -1
- package/conformance/migrations/idempotent-rerun.json +1 -1
- package/conformance/migrations/invalid-target-record.json +1 -1
- package/conformance/migrations/large-batched-transformation.json +1 -1
- package/conformance/migrations/manifest.json +1 -1
- package/conformance/migrations/metadata-only-change.json +1 -1
- package/conformance/migrations/migration-lock.json +1 -1
- package/conformance/migrations/missing-migration-path.json +1 -1
- package/conformance/migrations/record-transformation.json +1 -1
- package/conformance/migrations/relationship-addition.json +1 -1
- package/conformance/migrations/remove-empty-field.json +1 -1
- package/conformance/migrations/schema-fingerprint-mismatch.json +1 -1
- package/conformance/migrations/transform-field.json +1 -1
- package/conformance/queries/aggregate-under-policy.json +1 -1
- package/conformance/queries/count-aggregate.json +1 -1
- package/conformance/queries/cursor-page-1.json +1 -1
- package/conformance/queries/cursor-page-2.json +1 -1
- package/conformance/queries/filter-compound.json +1 -1
- package/conformance/queries/filter-equality.json +1 -1
- package/conformance/queries/grouped-sum.json +1 -1
- package/conformance/queries/invalid-cursor.json +1 -1
- package/conformance/queries/manifest.json +1 -1
- package/conformance/queries/multi-key-sort.json +1 -1
- package/conformance/queries/null-ordering.json +1 -1
- package/conformance/queries/projection-shape.json +1 -1
- package/conformance/queries/query-inside-transaction.json +1 -1
- package/conformance/queries/relationship-under-policy.json +1 -1
- package/conformance/queries/row-read-policy.json +1 -1
- package/conformance/queries/stable-ordering.json +1 -1
- package/conformance/queries/to-one-relationship.json +1 -1
- package/conformance/rolled-back-action-produces-no-effect.json +1 -1
- package/conformance/simultaneous-same-instant-triggers-both-commit.json +1 -1
- package/conformance/system-only-action-rejects-client.json +1 -1
- package/conformance/timed-trigger-polling.json +1 -1
- package/conformance/verified-external-event-invokes-system-only-action.json +1 -1
- package/conformance/workflow/manifest.json +1 -1
- package/conformance/workflow/workflow-action-on-error.json +1 -1
- package/conformance/workflow/workflow-action-retry.json +1 -1
- package/conformance/workflow/workflow-action-success.json +1 -1
- package/conformance/workflow/workflow-action-terminal-failure.json +1 -1
- package/conformance/workflow/workflow-branch-false.json +1 -1
- package/conformance/workflow/workflow-branch-true.json +1 -1
- package/conformance/workflow/workflow-cancel-waiting.json +1 -1
- package/conformance/workflow/workflow-event-match.json +1 -1
- package/conformance/workflow/workflow-event-nonmatch.json +1 -1
- package/conformance/workflow/workflow-event-timeout.json +1 -1
- package/conformance/workflow/workflow-start-complete.json +1 -1
- package/conformance/workflow/workflow-start-idempotency.json +1 -1
- package/conformance/workflow/workflow-timer.json +1 -1
- package/dist/authority-identity.d.ts +8 -0
- package/dist/authority-identity.js +12 -1
- package/dist/deps.d.ts +1 -1
- package/dist/deps.js +1 -1
- package/dist/server.js +83 -32
- package/dist/workflows.d.ts +7 -0
- package/dist/workflows.js +11 -3
- package/package.json +3 -3
- package/schema/protocol.v1.schema.json +1 -1
- package/schema/server-ir.v1.schema.json +1 -1
- package/schema/server-ir.v2.schema.json +1 -1
- package/schema/server-ir.v3.schema.json +1 -1
- package/schema/server-ir.v4.schema.json +1 -1
- package/schema/server-ir.v5.schema.json +1 -1
- package/schema/server-ir.v6.schema.json +1 -1
- package/schema/server-ir.v7.schema.json +1 -1
- package/schema/server-ir.v8.schema.json +1 -1
- package/schema/server-ir.v9.schema.json +1 -1
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
}
|