ordinary_app_checked_schedule.bend

bendvy-ecs-core@0.1.0.0 · 116 lines · 0 definitions

1import Base
2import bendvy-ecs-core@0.1.0.0/execution_context.bend as Ctx
3import bendvy-ecs-core@0.1.0.0/execution_trace.bend as Trace
4import bendvy-ecs-core@0.1.0.0/ordinary_app_execution.bend as Execution
5import bendvy-ecs-core@0.1.0.0/ordinary_checked_bindings.bend as B
6import bendvy-ecs-core@0.1.0.0/checked_condition_schedule.bend as Checked
7import bendvy-ecs-core@0.1.0.0/world.bend as W
8import bendvy-ecs-core@0.1.0.0/system.bend as Sys
9import bendvy-ecs-core@0.1.0.0/schedule.bend as Sch
10import bendvy-ecs-core@0.1.0.0/schedule_provision.bend as SP
11import bendvy-ecs-core@0.1.0.0/ordinary_schema.bend as Schema
12import bendvy-ecs-core@0.1.0.0/ordinary_app_schema.bend as App
13import bendvy-ecs-core@0.1.0.0/ordinary_app_composer.bend as Build
14import bendvy-ecs-core@0.1.0.0/ordinary_app_schedule.bend as Schedule
15import bendvy-ecs-core@0.1.0.0/ordinary_app_recipe.bend as Tree
16import bendvy-ecs-core@0.1.0.0/ordinary_app_observation_data.bend as DTO
17import bendvy-ecs-core@0.1.0.0/ordinary_app_registration_fields.bend as Records
18# Check descriptions derive from operational declarations and explicit bindings.
19# The existing App, recipe, ordinary registration owners and real plan are retained.
20type Application<S:Data,C:Type,R:Type,E:Data,H:Type,Rows:Data,-observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,-fold:H -> H & List<&2,Records.Fields<S>>,B:Type,-select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>> is Type:
21  Application{app:Schedule.Application<S,C,R,E,H,Rows,observe,fold>,bindings:B.Bindings<W.World<S,C,R,E>,B,select>}
22type Attachment<-Original:Type,-Guards:Type,-Scheduled:Type> is Type:
23  Attached{app:Scheduled}
24  Invalid{app:Original,bindings:Guards}
25type Description<S:Data,Rows:Data> is Data:
26  Description{original:Schedule.Description<S,Rows>,bindings:List<&2,B.Description>}
27def attached(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,schema:Schema.Schema<S,C,R>,world:W.World<S,C,R,E>,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,plan:SP.Plan<S>,needs:List<&2,SP.Requirement<S>>,result:Checked.Attachment<S,C,R,E,H,B,select>) -> Attachment<Schedule.Application<S,C,R,E,H,Rows,observe,fold>,B.Bindings<W.World<S,C,R,E>,B,select>,Application<S,C,R,E,H,Rows,observe,fold,B,select>>:
28  match result:
29    case Checked.Attached{Sch.Schedule{namespace,name,steps,(owners,bindings)}}:Attached{Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs},bindings}}
30    case Checked.AttachmentRejected{Sch.Schedule{namespace,name,steps,owners},bindings}:Invalid{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs},bindings}
31def attach(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Schedule.Application<S,C,R,E,H,Rows,observe,fold>,bindings:B.Bindings<W.World<S,C,R,E>,B,select>) -> Attachment<Schedule.Application<S,C,R,E,H,Rows,observe,fold>,B.Bindings<W.World<S,C,R,E>,B,select>,Application<S,C,R,E,H,Rows,observe,fold,B,select>>:
32  match value:
33    case Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs}:attached(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,schema,world,recipe,debug,plan,needs,Checked.attach(~S,~C,~R,~E,~H,~B,~select,Sch.Schedule{namespace,name,steps,owners},bindings))
34def enabled(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Application<S,C,R,E,H,Rows,observe,fold,B,select>,flag:Bool) -> Application<S,C,R,E,H,Rows,observe,fold,B,select>:
35  match value:
36    case Application{app,bindings}:Application{Schedule.enabled(~S,~C,~R,~E,~H,~Rows,~observe,~fold,app,flag),bindings}
37def snapshot_present(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,app:Schedule.Application<S,C,R,E,H,Rows,observe,fold>,view:Schedule.Description<S,Rows>,bindings:B.Bindings<W.World<S,C,R,E>,B,select>) -> Application<S,C,R,E,H,Rows,observe,fold,B,select> & Maybe<&2,Description<S,Rows>>:
38  match bindings:
39    case B.Bindings{owner,+facts}:(Application{app,B.Bindings{owner,facts}},Some{Description{view,facts}})
40def snapshot_returned(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,bindings:B.Bindings<W.World<S,C,R,E>,B,select>,observed:Schedule.Application<S,C,R,E,H,Rows,observe,fold> & Maybe<&2,Schedule.Description<S,Rows>>) -> Application<S,C,R,E,H,Rows,observe,fold,B,select> & Maybe<&2,Description<S,Rows>>:
41  match observed:
42    case (app,None{}):(Application{app,bindings},None{})
43    case (app,Some{view}):snapshot_present(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,app,view,bindings)
44def snapshot(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Application<S,C,R,E,H,Rows,observe,fold,B,select>) -> Application<S,C,R,E,H,Rows,observe,fold,B,select> & Maybe<&2,Description<S,Rows>>:
45  match value:
46    case Application{app,bindings}:snapshot_returned(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,bindings,Schedule.snapshot(~S,~C,~R,~E,~H,~Rows,~observe,~fold,app))
47def executed(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,schema:Schema.Schema<S,C,R>,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,plan:SP.Plan<S>,needs:List<&2,SP.Requirement<S>>,result:Sch.RunResult<S,C,R,E,H & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>>) -> Schedule.RunResult<Application<S,C,R,E,H,Rows,observe,fold,B,select>,S,Checked.Error<BodyError>>:
48  match result:
49    case Sch.Finished{Sch.Schedule{namespace,name,steps,(owners,bindings)},world,observations}:Schedule.Finished{Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs},bindings},observations}
50    case Sch.Failed{Sch.Schedule{namespace,name,steps,(owners,bindings)},world,error,observations}:Schedule.Failed{Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs},bindings},error,observations}
51    case Sch.Rejected{Sch.Schedule{namespace,name,steps,(owners,bindings)},world}:Schedule.Rejected{Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs},bindings}}
52def provisioned(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,schema:Schema.Schema<S,C,R>,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,plan:SP.Plan<S>,result:SP.ProvisionResult<S,C,R,E,H & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>>) -> Schedule.RunResult<Application<S,C,R,E,H,Rows,observe,fold,B,select>,S,Checked.Error<BodyError>>:
53  match result:
54    case SP.Missing{SP.Provisioned{Sch.Schedule{namespace,name,steps,(owners,bindings)},needs},world,missing}:Schedule.Missing{Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs},bindings},missing}
55    case SP.Executed{result,needs}:executed(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,schema,recipe,debug,plan,needs,result)
56def run_classic(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,~dispatch:H -> W.World<S,C,R,E> -> U32 -> H & Sys.Outcome<W.World<S,C,R,E>,BodyError,Unit>,~provision:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,value:Application<S,C,R,E,H,Rows,observe,fold,B,select>) -> Schedule.RunResult<Application<S,C,R,E,H,Rows,observe,fold,B,select>,S,Checked.Error<BodyError>>:
57  match value:
58    case Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},plan,namespace,name,steps,needs},bindings}:provisioned(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,schema,recipe,debug,plan,Checked.run_provisioned(~S,~C,~R,~E,~H,~B,~select,~BodyError,~dispatch,~provision,SP.Provisioned{Sch.Schedule{namespace,name,steps,(owners,bindings)},needs},world))
59
60def trace_status(~Error:Data,value:Trace.Status<Error>) -> Trace.Status<Checked.Error<Error>>:
61  match value:
62    case Trace.SystemOk{}:Trace.SystemOk{}
63    case Trace.SystemError{error}:Trace.SystemError{Checked.SystemError{error}}
64def trace_completion(~Error:Data,value:Trace.Completion<Error>) -> Trace.Completion<Checked.Error<Error>>:
65  match value:
66    case Trace.EndOk{}:Trace.EndOk{}
67    case Trace.EndFailed{error}:Trace.EndFailed{Checked.SystemError{error}}
68    case Trace.EndRejected{}:Trace.EndRejected{}
69    case Trace.EndMissing{}:Trace.EndMissing{}
70def trace_events(~Error:Data,events:List<&2,Trace.TraceEvent<Error>>) -> List<&2,Trace.TraceEvent<Checked.Error<Error>>>:
71  match events:
72    case []:[]
73    case Trace.ScheduleStarted{namespace,name} <> rest:Trace.ScheduleStarted{namespace,name} <> trace_events(~Error,rest)
74    case Trace.PhaseEntered{name} <> rest:Trace.PhaseEntered{name} <> trace_events(~Error,rest)
75    case Trace.SystemCompleted{identity,before,after,status} <> rest:Trace.SystemCompleted{identity,before,after,trace_status(~Error,status)} <> trace_events(~Error,rest)
76    case Trace.OperationObserved{identity,fact} <> rest:Trace.OperationObserved{identity,fact} <> trace_events(~Error,rest)
77    case Trace.BarrierOperationObserved{fact} <> rest:Trace.BarrierOperationObserved{fact} <> trace_events(~Error,rest)
78    case Trace.ExecutionOperationObserved{fact} <> rest:Trace.ExecutionOperationObserved{fact} <> trace_events(~Error,rest)
79    case Trace.SystemSkipped{id} <> rest:Trace.SystemSkipped{id} <> trace_events(~Error,rest)
80    case Trace.DeferredApplied{} <> rest:Trace.DeferredApplied{} <> trace_events(~Error,rest)
81    case Trace.ScheduleEnded{outcome} <> rest:Trace.ScheduleEnded{trace_completion(~Error,outcome)} <> trace_events(~Error,rest)
82    case Trace.ScheduleAdmissionRefused{namespace,name,outcome} <> rest:Trace.ScheduleAdmissionRefused{namespace,name,trace_completion(~Error,outcome)} <> trace_events(~Error,rest)
83def context_batch(~Error:Data,namespace:U32,name:String,observations:List<&2,Sch.Observation>,state:Execution.ExecutionState<Error>,outcome:Trace.Completion<Checked.Error<Error>>) -> Trace.Batch<Checked.Error<Error>>:
84  match state:
85    case Execution.Off{}:Trace.Disabled{}
86    case Execution.On{Execution.Journal{catalog,events}}:Execution.batch(~Checked.Error<Error>,namespace,name,observations,Execution.Journal{catalog,trace_events(~Error,events)},outcome)
87def context_barrier_returned(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,bindings:B.Bindings<W.World<S,C,R,E>,B,select>,value:(H & Execution.ExecutionState<BodyError>) & W.World<S,C,R,E>) -> ((H & Execution.ExecutionState<BodyError>) & B.Bindings<W.World<S,C,R,E>,B,select>) & W.World<S,C,R,E>:
88  match value:
89    case (owners,world):((owners,bindings),world)
90def context_barrier(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,owners:(H & Execution.ExecutionState<BodyError>) & B.Bindings<W.World<S,C,R,E>,B,select>,world:W.World<S,C,R,E>) -> ((H & Execution.ExecutionState<BodyError>) & B.Bindings<W.World<S,C,R,E>,B,select>) & W.World<S,C,R,E>:
91  match owners:
92    case (owners,bindings):context_barrier_returned(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,bindings,Execution.barrier_state(~S,~C,~R,~E,~H,~BodyError,owners,world))
93def context_executed(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,result:Sch.RunResult<S,C,R,E,(H & Execution.ExecutionState<BodyError>) & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>>) -> Sch.RunResult<S,C,R,E,H & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>> & Trace.Batch<Checked.Error<BodyError>>:
94  match result:
95    case Sch.Finished{Sch.Schedule{+namespace,+name,steps,((owners,state),bindings)},world,+observations}:(Sch.Finished{Sch.Schedule{namespace,name,steps,(owners,bindings)},world,observations},context_batch(~BodyError,namespace,name,observations,state,Trace.EndOk{}))
96    case Sch.Failed{Sch.Schedule{+namespace,+name,steps,((owners,state),bindings)},world,+error,+observations}:(Sch.Failed{Sch.Schedule{namespace,name,steps,(owners,bindings)},world,error,observations},context_batch(~BodyError,namespace,name,observations,state,Trace.EndFailed{error}))
97    case Sch.Rejected{Sch.Schedule{+namespace,+name,steps,((owners,state),bindings)},world}:(Sch.Rejected{Sch.Schedule{namespace,name,steps,(owners,bindings)},world},context_batch(~BodyError,namespace,name,[],state,Trace.EndRejected{}))
98def context_wrapped(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,needs:List<&2,SP.Requirement<S>>,result:Sch.RunResult<S,C,R,E,H & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>> & Trace.Batch<Checked.Error<BodyError>>) -> SP.ProvisionResult<S,C,R,E,H & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>> & Trace.Batch<Checked.Error<BodyError>>:
99  match result:
100    case (result,batch):(SP.Executed{result,needs},batch)
101def context_provisioned(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,result:SP.ProvisionResult<S,C,R,E,(H & Execution.ExecutionState<BodyError>) & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>>) -> SP.ProvisionResult<S,C,R,E,H & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>> & Trace.Batch<Checked.Error<BodyError>>:
102  match result:
103    case SP.Missing{SP.Provisioned{Sch.Schedule{+namespace,+name,steps,((owners,state),bindings)},needs},world,missing}:(SP.Missing{SP.Provisioned{Sch.Schedule{namespace,name,steps,(owners,bindings)},needs},world,missing},context_batch(~BodyError,namespace,name,[],state,Trace.EndMissing{}))
104    case SP.Executed{result,needs}:context_wrapped(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,needs,context_executed(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,result))
105def context_restored(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,schema:Schema.Schema<S,C,R>,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,plan:SP.Plan<S>,value:SP.ProvisionResult<S,C,R,E,H & B.Bindings<W.World<S,C,R,E>,B,select>,Checked.Error<BodyError>> & Trace.Batch<Checked.Error<BodyError>>) -> Execution.Run<Application<S,C,R,E,H,Rows,observe,fold,B,select>,S,Checked.Error<BodyError>>:
106  match value:
107    case (result,batch):Execution.Run{provisioned(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,schema,recipe,debug,plan,result),batch}
108def context_start(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,BodyError,Unit>,~provision:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,schema:Schema.Schema<S,C,R>,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,plan:SP.Plan<S>,world:W.World<S,C,R,E>,namespace:U32,name:String,steps:List<&2,Sch.Step>,needs:List<&2,SP.Requirement<S>>,owners:H,bindings:B.Bindings<W.World<S,C,R,E>,B,select>,state:Execution.ExecutionState<BodyError>) -> Execution.Run<Application<S,C,R,E,H,Rows,observe,fold,B,select>,S,Checked.Error<BodyError>>:
109  context_restored(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,schema,recipe,debug,plan,context_provisioned(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,Checked.run_provisioned_with_barrier(~S,~C,~R,~E,~(H & Execution.ExecutionState<BodyError>),~B,~select,~BodyError,~Execution.dispatch_state(~S,~C,~R,~E,~H,~BodyError,~dispatch),~context_barrier(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError),~provision,SP.Provisioned{Sch.Schedule{namespace,name,steps,((owners,state),bindings)},needs},world)))
110def context_prepared(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,BodyError,Unit>,~provision:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,schema:Schema.Schema<S,C,R>,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,plan:SP.Plan<S>,world:W.World<S,C,R,E>,namespace:U32,name:String,steps:List<&2,Sch.Step>,needs:List<&2,SP.Requirement<S>>,bindings:B.Bindings<W.World<S,C,R,E>,B,select>,value:H & List<&2,Records.Fields<S>>) -> Execution.Run<Application<S,C,R,E,H,Rows,observe,fold,B,select>,S,Checked.Error<BodyError>>:
111  match value:
112    case (owners,fields):context_start(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,~dispatch,~provision,schema,recipe,debug,plan,world,namespace,name,steps,needs,owners,bindings,Execution.On{Execution.Journal{Execution.catalog(~S,fields),[]}})
113def run(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Records.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~BodyError:Data,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,BodyError,Unit>,~provision:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,value:Application<S,C,R,E,H,Rows,observe,fold,B,select>) -> Execution.Run<Application<S,C,R,E,H,Rows,observe,fold,B,select>,S,Checked.Error<BodyError>>:
114  match value:
115    case Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,False{}}},plan,namespace,name,steps,needs},bindings}:context_start(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,~dispatch,~provision,schema,recipe,False{},plan,world,namespace,name,steps,needs,owners,bindings,Execution.Off{})
116    case Application{Schedule.Application{App.Application{schema,Build.Registered{world,owners,recipe,True{}}},plan,namespace,name,steps,needs},bindings}:context_prepared(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~B,~select,~BodyError,~dispatch,~provision,schema,recipe,True{},plan,world,namespace,name,steps,needs,bindings,fold(owners))