ordinary_reader_system.bend

bendvy-ecs-core@0.1.0.1 · 385 lines · 0 definitions

1import Base
2import bendvy-ecs-core@0.1.0.1/change_tick.bend as Tick
3import bendvy-ecs-core@0.1.0.1/world.bend as W
4import bendvy-ecs-core@0.1.0.1/system.bend as Sys
5import bendvy-ecs-core@0.1.0.1/transaction.bend as Tx
6import bendvy-ecs-core@0.1.0.1/commands.bend as Cmd
7import bendvy-ecs-core@0.1.0.1/capabilities.bend as Cap
8import bendvy-ecs-core@0.1.0.1/reader_parameter.bend as RP
9import bendvy-ecs-core@0.1.0.1/event_notice_runtime.bend as Mixed
10import bendvy-ecs-core@0.1.0.1/event_family_routing.bend as Route
11import bendvy-ecs-core@0.1.0.1/relation_commands.bend as Notice
12import bendvy-ecs-core@0.1.0.1/internal/relation_failures/domains.bend as D
13
14# A registered ordinary callback receives one detached product view while the
15# shared runtime context remains outside the callback transaction.
16type Invocation<Meta:Type,Reader:Type,Parameter:Type,Declaration:Type,Args:Type> is Type:
17  Invocation{meta:Meta,reader:Reader,parameter:Parameter,declaration:Declaration,args:Args,queryCursor:Maybe<&2,Tick.Tick>}
18
19type Completion<Failure:Data,Output:Type> is Type:
20  CallbackCompleted{output:Output}
21  CallbackFailed{error:Failure,output:Output}
22  CallbackInvalidReader{}
23
24type Envelope<Meta:Type,Reader:Type,Parameter:Type,Declaration:Type,Failure:Data,Output:Type> is Type:
25  Envelope{meta:Meta,reader:Reader,parameter:Parameter,declaration:Declaration,completion:Completion<Failure,Output>}
26
27type Provider<Registry:Type,Reader:Type,Parameter:Type,Declaration:Type> is Type:
28  Provider{registry:Registry,reader:Reader,parameter:Parameter,declaration:Declaration}
29
30type Definition<Context:Type,Provider:Type,Parameter:Type,Declaration:Type> is Type:
31  DefinitionRegistered{context:Context,provider:Provider}
32  DefinitionRejected{context:Context,parameter:Parameter,declaration:Declaration}
33  DefinitionDisposalRejected{context:Context,provider:Provider,parameter:Parameter}
34
35type RunResult<Context:Type,Provider:Type,Args:Type,Failure:Data,Output:Type> is Type:
36  RunCompleted{context:Context,provider:Provider,output:Output}
37  RunFailed{context:Context,provider:Provider,error:Failure,output:Output}
38  RunInvalidReader{context:Context,provider:Provider}
39  RunRegistrationRejected{context:Context,provider:Provider,args:Args}
40  RunSkipped{context:Context,provider:Provider}
41
42def outer_succeeded(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,
43  observed:W.World<S,C,R,E> & Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
44  match observed:
45    case (world,envelope):Sys.Succeeded{world,envelope}
46
47def invalid_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,
48  declaration:Declaration,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,reader:Reader,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
49  match parts:
50    case (world,meta):Sys.Succeeded{world,Envelope{meta,reader,parameter,declaration,CallbackInvalidReader{}}}
51
52def invalid_reader(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,
53  declaration:Declaration,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,context:Context,reader:Reader) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
54  invalid_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,declaration,parameter,reader,split(context))
55
56def success_succeeded(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,
57  reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,output:Output,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
58  match parts:
59    case (world,meta):Sys.Succeeded{world,Envelope{meta,reader,parameter,declaration,CallbackCompleted{output}}}
60
61def success_context(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~after:Context -> Context,
62  parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,output:Output,committed:Context & Reader) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
63  match committed:
64    case (context,reader):success_succeeded(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,reader,parameter,declaration,output,split(after(context)))
65
66def commit_success(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,
67  reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,output:Output,world:W.World<S,C,R,E>,meta:Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
68  success_context(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~after,parameter,declaration,output,RP.commit(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),reader,delta,cursor))
69
70def callback_failure(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,
71  reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,error:Failure,output:Output,world:W.World<S,C,R,E>,meta:Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
72  Sys.Succeeded{world,Envelope{meta,reader,parameter,declaration,CallbackFailed{error,output}}}
73
74def inner_outcome(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,
75  reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,output:Output,outcome:Tx.Outcome<Failure>,world:W.World<S,C,R,E>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
76  match outcome:
77    case Tx.Success{}:commit_success(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,reader,parameter,declaration,delta,cursor,output,world,meta)
78    case Tx.Failure{error}:callback_failure(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,reader,parameter,declaration,error,output,world,meta)
79
80def transaction_returned(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,
81  reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,output:Output,finished:Tx.Returned<W.World<S,C,R,E>,Failure>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
82  match finished:
83    case Tx.Returned{world,outcome}:inner_outcome(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,reader,parameter,declaration,delta,cursor,meta,output,outcome,world)
84
85def callback_returned(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
86  reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,observed:Tx.Tx<W.World<S,C,R,E>,E> & (Tx.Outcome<Failure> & Output)) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
87  match observed:
88    case (tx,(outcome,output)):transaction_returned(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,reader,parameter,declaration,delta,cursor,meta,output,Cmd.tx_finish(~S,~C,~R,~E,~Failure,tx,outcome))
89
90def invoke_body(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
91  reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,args:Args,world:W.World<S,C,R,E>,view:View) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
92  callback_returned(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,reader,parameter,declaration,delta,cursor,meta,Cap.invoke_owned(~Ops,~(View & Args),~(Tx.Outcome<Failure> & Output),~body,~Tx.Tx<W.World<S,C,R,E>,E>,~grant,(view,args),Tx.begin(~W.World<S,C,R,E>,~E,world)))
93
94def prepared_split(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
95  reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,args:Args,view:View,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
96  match parts:
97    case (world,meta):invoke_body(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,reader,parameter,declaration,delta,cursor,meta,args,world,view)
98
99def prepared(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
100  parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,+cursor:Tick.Tick,args:Args,observed:Context & (Reader & (View & Delta))) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
101  match observed:
102    case (context,(reader,(view,delta))):prepared_split(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,reader,parameter,declaration,delta,cursor,args,view,split(context))
103
104def prepared_context_clock(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,reader:Reader,queryCursor:Maybe<&2,Tick.Tick>,meta:Meta,clocked:W.World<S,C,R,E> & Tick.Tick) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
105  match clocked:
106    case (world,+attemptCursor):prepared(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,attemptCursor,args,RP.prepare(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),queryCursor,reader))
107
108def prepared_context_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,reader:Reader,queryCursor:Maybe<&2,Tick.Tick>,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
109  match parts:
110    case (world,meta):prepared_context_clock(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,args,reader,queryCursor,meta,W.execution_clock(~S,~C,~R,~E,world))
111
112def prepared_context(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,reader:Reader,queryCursor:Maybe<&2,Tick.Tick>,context:Context) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
113  prepared_context_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,args,reader,queryCursor,split(context))
114
115def run_validated(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
116  reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,queryCursor:Maybe<&2,Tick.Tick>,context:Context) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
117  prepared_context(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,args,reader,queryCursor,before(context))
118
119def validated(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
120  +parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,queryCursor:Maybe<&2,Tick.Tick>,observed:Context & (Reader & Bool)) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
121  match observed:
122    case (context,(reader,False{})):invalid_reader(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,declaration,parameter,context,reader)
123    case (context,(reader,True{})):run_validated(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~before,~after,~Ops,~body,~grant,reader,parameter,declaration,args,queryCursor,context)
124
125def runner(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
126  world:W.World<S,C,R,E>,input:Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
127  match input:
128    case Invocation{meta,reader,+parameter,declaration,args,queryCursor}:
129      validated(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~before,~after,~Ops,~body,~grant,parameter,declaration,args,queryCursor,RP.validate(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),reader))
130
131def run_selected(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
132  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
133  world:W.World<S,C,R,E>,meta:Meta,reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,selected:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn> & Maybe<&2,Tick.Tick>) -> Sys.RunResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>:
134  match selected:
135    case (registry,queryCursor):Sys.run(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~(Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>),~runFn,registry,world,Invocation{meta,reader,parameter,declaration,args,queryCursor})
136
137def run_registered(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
138  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
139  registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,world:W.World<S,C,R,E>,meta:Meta,reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args) -> Sys.RunResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>:
140  run_selected(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~runFn,world,meta,reader,parameter,declaration,args,Sys.cursor(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~(Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>),~runFn,registry))
141
142
143type ProviderDisposal<Context:Type,Provider:Type,Declaration:Type> is Type:
144  ProviderDisposed{context:Context,declaration:Declaration}
145  ProviderDisposalRejected{context:Context,provider:Provider}
146
147def provider_disposal_result(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
148  ~validateFn:Context -> Reader -> Context & (Reader & Bool),
149  ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
150  ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
151  ~releaseFn:Context -> Reader -> Context,
152  ~join:W.World<S,C,R,E> -> Meta -> Context,
153  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
154  reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,meta:Meta,
155  disposed:Sys.Disposal<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>) -> ProviderDisposal<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>:
156  match disposed:
157    case Sys.Disposed{world}:ProviderDisposed{RP.release(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),reader),declaration}
158    case Sys.DisposalRejected{world,registry}:ProviderDisposalRejected{join(world,meta),Provider{registry,reader,parameter,declaration}}
159
160def provider_dispose_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
161  ~validateFn:Context -> Reader -> Context & (Reader & Bool),
162  ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
163  ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
164  ~releaseFn:Context -> Reader -> Context,
165  ~join:W.World<S,C,R,E> -> Meta -> Context,
166  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
167  registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,
168  parts:W.World<S,C,R,E> & Meta) -> ProviderDisposal<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>:
169  match parts:
170    case (world,meta):provider_disposal_result(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~join,~runFn,reader,parameter,declaration,meta,Sys.dispose(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~(Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>),~runFn,registry,world))
171
172def dispose_provider(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
173  ~validateFn:Context -> Reader -> Context & (Reader & Bool),
174  ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
175  ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
176  ~releaseFn:Context -> Reader -> Context,
177  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
178  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
179  provider:Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,context:Context) -> ProviderDisposal<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>:
180  match provider:
181    case Provider{registry,reader,+parameter,declaration}:provider_dispose_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~join,~runFn,registry,reader,parameter,declaration,split(context))
182
183
184
185def definition_cleanup_result(~Context:Type,~Reader:Type,~View:Data,~Delta:Type,~Declaration:Type,~Registry:Type,
186  ~validateFn:Context -> Reader -> Context & (Reader & Bool),
187  ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
188  ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
189  ~releaseFn:Context -> Reader -> Context,
190  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,
191  disposed:ProviderDisposal<Context,Provider<Registry,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>) -> Definition<Context,Provider<Registry,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
192  match disposed:
193    case ProviderDisposed{context,declaration}:DefinitionRejected{context,descriptor,declaration}
194    case ProviderDisposalRejected{context,provider}:DefinitionDisposalRejected{context,provider,descriptor}
195
196def initialized_checked(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
197  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
198  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
199  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
200  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,checked:Context & (Reader & Bool)) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
201  match checked:
202    case (context,(reader,True{})):DefinitionRegistered{context,Provider{registry,reader,parameter,declaration}}
203    case (context,(reader,False{})):
204      definition_cleanup_result(~Context,~Reader,~View,~Delta,~Declaration,~(Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>),~validateFn,~prepareFn,~commitFn,~releaseFn,descriptor,
205        dispose_provider(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runFn,Provider{registry,reader,parameter,declaration},context))
206
207def initialized_values(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
208  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
209  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
210  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
211  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,initialized:Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>)) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
212  match initialized:
213    case (context,(reader,parameter)):initialized_checked(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runFn,descriptor,declaration,registry,parameter,validateFn(context,reader))
214
215def initialized_provider(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
216  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
217  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
218  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
219  ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
220  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,context:Context,registered:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn> & Facts) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
221  match registered:
222    case (registry,facts):initialized_values(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runFn,descriptor,declaration,registry,initialize(context,facts))
223
224def registration_result(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
225  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
226  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
227  ~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
228  ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
229  ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
230  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,meta:Meta,
231  result:Sys.RegistrationResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
232  match result:
233    case Sys.RegistrationFailed{world}:DefinitionRejected{join(world,meta),descriptor,declaration}
234    case Sys.Registered{world,registry}:initialized_provider(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~initialize,descriptor,declaration,join(world,meta),factsFn(registry))
235
236def registered_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
237  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
238  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
239  ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
240  ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
241  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,meta:Meta,
242  result:Sys.RegistrationResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
243  registration_result(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~factsFn,~initialize,descriptor,declaration,meta,result)
244
245def define_world(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
246  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
247  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
248  ~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
249  ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
250  ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
251  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,name:String,access:List<&2,String>,parts:W.World<S,C,R,E> & Meta) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
252  match parts:
253    case (world,meta):registered_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~factsFn,~initialize,descriptor,declaration,meta,Sys.register(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,~runner,world,name,access))
254
255def define_access(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
256  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
257  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
258  ~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
259  ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
260  ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
261  declaration:Declaration,context:Context,name:String,
262  accessed:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn> & List<&2,String>) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
263  match accessed:
264    case (descriptor,access):define_world(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~factsFn,~initialize,descriptor,declaration,name,access,split(context))
265
266def define(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
267  ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
268  ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,
269  ~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
270  ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant)> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant)> & Facts,
271  ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
272  descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,context:Context,name:String) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant)>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
273  define_access(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant),~factsFn,~initialize,declaration,context,name,RP.access(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,descriptor))
274
275# Canonical shared-context hooks are fixed by the library entry. Applications
276# supply only the closed publication router and failure classifier for their
277# declared event schema; split/join and transaction ordering stay internal.
278def mixed_before_attempt(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
279  ~sync:F -> Nat -> List<&2,P> -> F,
280  ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
281  context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>) -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>:
282  Mixed.before_attempt(~S,~C,~R,~P,~F,~H,~sync,~classify,context)
283
284def mixed_after_success(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
285  ~sync:F -> Nat -> List<&2,P> -> F,
286  ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
287  context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>) -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>:
288  Mixed.after_success(~S,~C,~R,~P,~F,~H,~sync,~classify,context)
289
290def shared_runner(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
291  ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
292  ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
293  ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
294  ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
295  ~Ops:Type -> Type,
296  ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
297  ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
298  ~sync:F -> Nat -> List<&2,P> -> F,
299  ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
300  world:W.World<S,C,R,Notice.Notice<S,P>>,
301  input:Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>) -> Sys.Outcome<W.World<S,C,R,Notice.Notice<S,P>>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
302  runner(~S,~C,~R,~Notice.Notice<S,P>,~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~(Mixed.State<S,P,F,H> & Nat),~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,
303    ~validateFn,~prepareFn,~commitFn,~releaseFn,~Mixed.split(~S,~C,~R,~P,~F,~H),~Mixed.join(~S,~C,~R,~P,~F,~H),
304    ~mixed_before_attempt(~S,~C,~R,~P,~F,~H,~sync,~classify),
305    ~mixed_after_success(~S,~C,~R,~P,~F,~H,~sync,~classify),~Ops,~body,~grant,world,input)
306
307def define_mixed(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
308  ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
309  ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
310  ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
311  ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
312  ~Ops:Type -> Type,
313  ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
314  ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
315  ~sync:F -> Nat -> List<&2,P> -> F,
316  ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
317  ~initialize:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> RP.RegistrationFacts -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
318  descriptor:RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,
319  declaration:Declaration,context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,name:String) -> Definition<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Provider<Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
320  define_access(~S,~C,~R,~Notice.Notice<S,P>,~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~(Mixed.State<S,P,F,H> & Nat),~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~RP.RegistrationFacts,~validateFn,~prepareFn,~commitFn,~releaseFn,~Mixed.split(~S,~C,~R,~P,~F,~H),~Mixed.join(~S,~C,~R,~P,~F,~H),~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify),~RP.registration_facts(~S,~C,~R,~Notice.Notice<S,P>,~Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,~Empty,~Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)),~initialize,declaration,context,name,RP.access(~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,descriptor))
321
322def run_registered_mixed(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
323  ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
324  ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
325  ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
326  ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
327  ~Ops:Type -> Type,
328  ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
329  ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
330  ~sync:F -> Nat -> List<&2,P> -> F,
331  ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
332  registry:Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,
333  context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,reader:Reader,+parameter:RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args) -> Sys.RunResult<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>:
334  match context:
335    case Route.Runtime{world,state,tick}:run_registered(~S,~C,~R,~Notice.Notice<S,P>,~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~(Mixed.State<S,P,F,H> & Nat),~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify),registry,world,(state,tick),reader,parameter,declaration,args)
336
337def mixed_envelope_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
338  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
339  ~join:W.World<S,C,R,E> -> Meta -> Context,
340  registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,world:W.World<S,C,R,E>,envelope:Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
341  match envelope:
342    case Envelope{meta,reader,parameter,declaration,completion}:
343      match completion:
344        case CallbackCompleted{output}:RunCompleted{join(world,meta),Provider{registry,reader,parameter,declaration},output}
345        case CallbackFailed{error,output}:RunFailed{join(world,meta),Provider{registry,reader,parameter,declaration},error,output}
346        case CallbackInvalidReader{}:RunInvalidReader{join(world,meta),Provider{registry,reader,parameter,declaration}}
347
348def mixed_outcome_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
349  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
350  ~join:W.World<S,C,R,E> -> Meta -> Context,
351  registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,outcome:Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
352  match outcome:
353    case Sys.Failed{world,error}:Empty.absurd(RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>,error)
354    case Sys.Succeeded{world,output}:mixed_envelope_result(~S,~C,~R,~E,~Meta,~Context,~Reader,~Parameter,~Declaration,~Args,~Failure,~Output,~runFn,~join,registry,world,output)
355
356def mixed_rejected_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
357  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
358  ~join:W.World<S,C,R,E> -> Meta -> Context,
359  registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,world:W.World<S,C,R,E>,invocation:Invocation<Meta,Reader,Parameter,Declaration,Args>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
360  match invocation:
361    case Invocation{meta,reader,parameter,declaration,args,queryCursor}:RunRegistrationRejected{join(world,meta),Provider{registry,reader,parameter,declaration},args}
362
363def mixed_raw_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
364  ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
365  ~join:W.World<S,C,R,E> -> Meta -> Context,
366  result:Sys.RunResult<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
367  match result:
368    case Sys.RegistrationRejected{registry,world,args}:mixed_rejected_result(~S,~C,~R,~E,~Meta,~Context,~Reader,~Parameter,~Declaration,~Args,~Failure,~Output,~runFn,~join,registry,world,args)
369    case Sys.Completed{registry,outcome}:mixed_outcome_result(~S,~C,~R,~E,~Meta,~Context,~Reader,~Parameter,~Declaration,~Args,~Failure,~Output,~runFn,~join,registry,outcome)
370
371def run_mixed(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
372  ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
373  ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
374  ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
375  ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
376  ~Ops:Type -> Type,
377  ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
378  ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
379  ~sync:F -> Nat -> List<&2,P> -> F,
380  ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
381  provider:Provider<Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,
382  context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,args:Args) -> RunResult<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Provider<Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Args,Failure,Output>:
383  match provider:
384    case Provider{registry,reader,+parameter,declaration}:
385      mixed_raw_result(~S,~C,~R,~Notice.Notice<S,P>,~(Mixed.State<S,P,F,H> & Nat),~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~Reader,~(RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),~Declaration,~Args,~Failure,~Output,~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify),~Mixed.join(~S,~C,~R,~P,~F,~H),run_registered_mixed(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify,registry,context,reader,parameter,declaration,args))