aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Branch.ml
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-10-09 01:16:35 -0300
committerMarcos Magueta <maguetamarcos@gmail.com>2026-10-09 01:16:35 -0300
commit254d106c92dcabcdeb83a5d0141deca22ffb79de (patch)
treec99478aed6730365fcdd907b7bd777e3b7e2237a /lib/kernel/Branch.ml
parent4896005e5d156e8a590b12946a54507daa895686 (diff)
downloadRNT-254d106c92dcabcdeb83a5d0141deca22ffb79de.tar.gz
RNT-254d106c92dcabcdeb83a5d0141deca22ffb79de.zip
admission protocol for multigroup denial checks
Diffstat (limited to '')
-rw-r--r--lib/kernel/Branch.ml16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/kernel/Branch.ml b/lib/kernel/Branch.ml
index 936391c..70e0711 100644
--- a/lib/kernel/Branch.ml
+++ b/lib/kernel/Branch.ml
@@ -118,8 +118,24 @@ module Make (S : Abstract.Storage.STORAGE) = struct
~constructor:(fun node' -> MultigroupM.from node' |> make |> Result.ok ) ] )
in
let open Utilities.Result in
+ let admits (m, multigroup) =
+ Protocols.Handle.releasing multigroup (fun () ->
+ let* admission = Protocols.Admission.require multigroup in
+ let* violations = Protocols.Admission.check admission in
+ Ok
+ (List.map
+ (fun (d, tuples) ->
+ Path.(to_string ("multigroup" @/ m @/ "denial" @/ d @/ this)), tuples )
+ violations ) )
+ in
Protocols.
[ Addressable.make self;
+ Admission.make
+ object
+ method check =
+ let* named = Prototype.Directory.children multigroups in
+ List.map admits named |> Utilities.List.sequence |> Result.map List.concat
+ end;
Prototype.Associative.(
of_properties
[ ( "multigroup",