1 import Base 2 import ./execution_composer_layout.bend as L 3 import ./execution_declaration.bend as D 4 import ./execution_command_system.bend as Cmd 5 import ./execution_command_admission.bend as CommandAdmission 6 import ./change_tick.bend as Tick 7 import ./execution_command_local.bend as Local 8 import ./execution_command_permission.bend as Permission 9 import ./execution_command_removed.bend as Removed 10 import ./execution_system.bend as Sys 11 import ./execution_system_registration.bend as Registration 12 import ./execution_retained_system.bend as Retained 13 import ./execution_resource_admission.bend as Admission 14 import ./dependency_executor.bend as Exec 15 import ./dependency_registration.bend as Reg 16 import ./dependency_plan.bend as Plan 17 import ./execution_deferred_settings.bend as Settings 18 import ./world.bend as W 19 20 def Compilation(~S:Data,~components:L.Layout,~resources:L.Layout,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type) -> Type: 21 D.Compilation 22 def Owner(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out)) -> Type: 23 Cmd.Owner 24 def Node(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out)) -> Type: 25 Retained.CompiledBinding 26 def defined(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),result:Compilation(~S,~components,~resources,~route,~Ops) & Sys.Defined,Cmd.System(~S,~L.columns(~S,components),~L.resources(~S,resources),~E,~components,~resources,~route,~Ops,~User,~Error,~Out,~declaration,~body),Cmd.Captures(~S,~components,~resources,~route,~User)>) -> Compilation(~S,~components,~resources,~route,~Ops) & Sys.Defined,Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),Cmd.Captures(~S,~components,~resources,~route,~User)>: 27 match result: 28 case (compilation,Sys.Defined{world,system}):(compilation,Sys.Defined{world,Cmd.Owner{system}}) 29 case (compilation,Sys.DefinitionRefused{world,local}):(compilation,Sys.DefinitionRefused{world,local}) 30 def define_inspected(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),world:W.World,name:String,user:User,observed:Compilation(~S,~components,~resources,~route,~Ops) & Cmd.CheckedPermission) -> Compilation(~S,~components,~resources,~route,~Ops) & Sys.Defined,Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),Cmd.Captures(~S,~components,~resources,~route,~User)>: 31 match observed: 32 case (compilation,Cmd.UnsupportedPermission{permission,_}):(compilation,Sys.DefinitionRefused{world,Local.fresh(~S,~L.payload(components,route),~Removed.Removed(components),~User,user,permission)}) 33 case (compilation,Cmd.ReadyPermission{permission,_}):defined(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,Registration.define_with_compilation(~S,~L.columns(~S,components),~L.columns(~S,components),~L.resources(~S,resources),~E,~Cmd.ScopedOps(~S,~components,~resources,~route,~Ops),~Cmd.Captures(~S,~components,~resources,~route,~User),~Error,~Out,~Cmd.program_for_buffer(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops,~declaration),~Cmd.runner(~S,~components,~resources,~route,~Ops,~User,~Error,~Out,~body),~L.resources(~S,resources),compilation,world,name,Local.fresh(~S,~L.payload(components,route),~Removed.Removed(components),~User,user,permission))) 34 def define_with_compilation(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~valid:{L.grant_valid(~components,~route) == True{} : Bool},compilation:Compilation(~S,~components,~resources,~route,~Ops),world:W.World,name:String,user:User) -> Compilation(~S,~components,~resources,~route,~Ops) & Sys.Defined,Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),Cmd.Captures(~S,~components,~resources,~route,~User)>: 35 define_inspected(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,world,name,user,Cmd.inspect_permission(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops,compilation)) 36 def run_returned(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),result:Compilation(~S,~components,~resources,~route,~Ops) & Sys.RunResult,Cmd.System(~S,~L.columns(~S,components),~L.resources(~S,resources),~E,~components,~resources,~route,~Ops,~User,~Error,~Out,~declaration,~body),Error,Out>) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & (W.World & Exec.Invocation): 37 match result: 38 case (compilation,Sys.Refused{world,system}):(Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,Cmd.Owner{system}),(world,Exec.AdmissionRefused{})) 39 case (compilation,Sys.Executed{world,system,Sys.Success{output}}):(Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,Cmd.Owner{system}),(world,Exec.Completed{output})) 40 case (compilation,Sys.Executed{world,system,Sys.BodyError{error,output}}):(Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,Cmd.Owner{system}),(world,Exec.BodyError{error,output})) 41 def run_inspected(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),owner:Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),inspected:Admission.Inspection) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & (W.World & Exec.Invocation): 42 match owner inspected: 43 case owner Admission.Refused{world,compilation}:(Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,owner),(world,Exec.AdmissionRefused{})) 44 case Cmd.Owner{system} Admission.Admitted{world,compilation,_}:run_returned(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,Cmd.run_retained_system(~S,~L.resources(~S,resources),~E,~components,~resources,~route,~Ops,~User,~Error,~Out,~declaration,~body,~D.trusted_construction_caps(~S,~L.columns(~S,components),~L.columns(~S,components),~L.resources(~S,resources),~Cmd.ScopedOps(~S,~components,~resources,~route,~Ops),compiled),compilation,system,world)) 45 def run_unpacked(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),node:Compilation(~S,~components,~resources,~route,~Ops) & Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),world:W.World) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & (W.World & Exec.Invocation): 46 match node: 47 case (compilation,owner):run_inspected(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled,owner,Admission.inspect_with_compilation(~S,~components,~resources,~L.columns(~S,components),~L.resources(~S,resources),~E,~Cmd.ScopedOps(~S,~components,~resources,~route,~Ops),~Cmd.program_for_buffer(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops,~declaration),compilation,world)) 48 49 def run(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),node:Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),world:W.World) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & (W.World & Exec.Invocation): 50 run_unpacked(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled,Retained.unpack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),node),world) 51 def dispatch_selected(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),node:Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),world:W.World,selected:Bool) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & (W.World & Exec.Invocation): 52 match selected: 53 case False{}:(node,(world,Exec.AdmissionRefused{})) 54 case True{}:run(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled,node,world) 55 def dispatch_unpacked(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),node:Compilation(~S,~components,~resources,~route,~Ops) & Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),world:W.World,id:U32) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & (W.World & Exec.Invocation): 56 match node: 57 case (compilation,Cmd.Owner{Sys.Owner{namespace,+actual,name,access,cursor,local}}):dispatch_selected(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled,Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,Cmd.Owner{Sys.Owner{namespace,actual,name,access,cursor,local}}),world,U32.is_eq(actual,id)) 58 def dispatch(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),node:Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),world:W.World,id:U32) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & (W.World & Exec.Invocation): 59 dispatch_unpacked(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled,Retained.unpack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),node),world,id) 60 def facts_unpacked(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),node:Compilation(~S,~components,~resources,~route,~Ops) & Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> Reg.Registry,Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),Error,Out,dispatch(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled)>: 61 match node: 62 case (D.Supported{D.Declaration{caps,+requirements},recipes},Cmd.Owner{Sys.Owner{namespace,+id,name,access,cursor,local}}):Reg.Registry{Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),D.Supported{D.Declaration{caps,requirements},recipes},Cmd.Owner{Sys.Owner{namespace,id,name,access,cursor,local}}),[Plan.Node{id,D.qualified(requirements)}]} 63 case (D.Unsupported{caps,+requirements,recipes},Cmd.Owner{Sys.Owner{namespace,+id,name,access,cursor,local}}):Reg.Registry{Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),D.Unsupported{caps,requirements,recipes},Cmd.Owner{Sys.Owner{namespace,id,name,access,cursor,local}}),[Plan.Node{id,D.qualified(requirements)}]} 64 def facts(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~compiled:Compilation(~S,~components,~resources,~route,~Ops),node:Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> Reg.Registry,Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),Error,Out,dispatch(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled)>: 65 facts_unpacked(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~compiled,Retained.unpack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),node)) 66 def collected(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),compilation:Compilation(~S,~components,~resources,~route,~Ops),+id:U32,ids:List<&2,U32>,result:Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & Bool) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & List<&2,U32>: 67 match result: 68 case (owner,pending):(Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,owner),Bool.pick(List<&2,U32>,Bool.and(pending,Settings.member(id,ids)),[id],[])) 69 def collect_unpacked(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),ids:List<&2,U32>,node:Compilation(~S,~components,~resources,~route,~Ops) & Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & List<&2,U32>: 70 match node: 71 case (compilation,Cmd.Owner{Sys.Owner{namespace,+id,name,access,cursor,local}}):collected(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,compilation,id,ids,Cmd.pending(~S,~L.columns(~S,components),~L.resources(~S,resources),~E,~components,~resources,~route,~Ops,~User,~Error,~Out,~declaration,~body,Cmd.Owner{Sys.Owner{namespace,id,name,access,cursor,local}})) 72 73 def collect(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),ids:List<&2,U32>,node:Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & List<&2,U32>: 74 collect_unpacked(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,ids,Retained.unpack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),node)) 75 def published(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),result:Compilation(~S,~components,~resources,~route,~Ops) & (W.World & Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body))) -> W.World & Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body): 76 match result: 77 case (compilation,(world,owner)):(world,Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,owner)) 78 def publish_unpacked(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~valid:{L.grant_valid(~components,~route) == True{} : Bool},~relations:Permission.Relations,~selection:Permission.Selection,ids:List<&2,U32>,tick:Tick.Tick,world:W.World,node:Compilation(~S,~components,~resources,~route,~Ops) & Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> W.World & Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body): 79 match node: 80 case (compilation,owner):published(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,CommandAdmission.publish_with_compilation(~S,~L.columns(~S,components),~L.columns(~S,components),~L.resources(~S,resources),~E,~components,~resources,~route,~Ops,~User,~Error,~Out,~declaration,~body,~L.resources(~S,resources),~{==},~relations,~selection,~{==},~valid,compilation,ids,tick,world,owner)) 81 def publish(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),~valid:{L.grant_valid(~components,~route) == True{} : Bool},~relations:Permission.Relations,~selection:Permission.Selection,ids:List<&2,U32>,tick:Tick.Tick,world:W.World,node:Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> W.World & Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body): 82 publish_unpacked(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,~valid,~relations,~selection,ids,tick,world,Retained.unpack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),node)) 83 def pending_returned(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),result:Compilation(~S,~components,~resources,~route,~Ops) & (W.World & (Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & Bool))) -> W.World & (Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & Bool): 84 match result: 85 case (compilation,(world,(owner,pending))):(world,(Retained.pack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),compilation,owner),pending)) 86 def pending_unpacked(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),ids:List<&2,U32>,world:W.World,node:Compilation(~S,~components,~resources,~route,~Ops) & Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> W.World & (Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & Bool): 87 match node: 88 case (compilation,owner):pending_returned(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,CommandAdmission.pending_with_compilation(~S,~L.columns(~S,components),~L.columns(~S,components),~L.resources(~S,resources),~E,~components,~resources,~route,~Ops,~User,~Error,~Out,~declaration,~body,~L.resources(~S,resources),compilation,ids,world,owner)) 89 def pending(~S:Data,~components:L.Layout,~resources:L.Layout,~E:Data,~route:L.Route,~Ops:Data -> (Type -> Type) -> Type -> Type -> Type,~User:Type,~Error:Data,~Out:Data,~declaration:Cmd.Program(~S,~L.columns(~S,components),~L.resources(~S,resources),~components,~resources,~route,~Ops),~body:Cmd.Body(~S,~components,~resources,~route,~Ops,~User,~Error,~Out),ids:List<&2,U32>,world:W.World,node:Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body)) -> W.World & (Node(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body) & Bool): 90 pending_unpacked(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body,ids,world,Retained.unpack(Compilation(~S,~components,~resources,~route,~Ops),Owner(~S,~components,~resources,~E,~route,~Ops,~User,~Error,~Out,~declaration,~body),node))