ordinary_app_run.bend

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

1import Base
2import bendvy-ecs-core@0.1.0.1/ordinary_app_execution_recipe.bend as Recipe
3import bendvy-ecs-core@0.1.0.1/ordinary_app_composer.bend as Build
4import bendvy-ecs-core@0.1.0.1/ordinary_app_recipe.bend as Tree
5import bendvy-ecs-core@0.1.0.1/ordinary_app_schema.bend as App
6import bendvy-ecs-core@0.1.0.1/ordinary_app_schedule.bend as Single
7import bendvy-ecs-core@0.1.0.1/ordinary_app_execution.bend as Execute
8import bendvy-ecs-core@0.1.0.1/ordinary_app_registration_fields.bend as Records
9import bendvy-ecs-core@0.1.0.1/ordinary_app_observation_data.bend as DTO
10import bendvy-ecs-core@0.1.0.1/ordinary_schema.bend as Schema
11import bendvy-ecs-core@0.1.0.1/captured_schedule_composition.bend as Identity
12import bendvy-ecs-core@0.1.0.1/execution_context.bend as Ctx
13import bendvy-ecs-core@0.1.0.1/world.bend as W
14import bendvy-ecs-core@0.1.0.1/system.bend as Sys
15import bendvy-ecs-core@0.1.0.1/schedule.bend as Sch
16import bendvy-ecs-core@0.1.0.1/schedule_provision.bend as SP
17# Executable application owning one world, registered system owners and a
18# declaration-derived execution recipe. Thread this affine value through run;
19# its type binds schema, observations and dispatch together.
20# Example: examples/scheduled-health/registration.bend, Application().
21type 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>>,Error:Data,-plan:H -> H & SP.Plan<S>,-dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,-provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>> is Type:
22  Application{app:Single.Application<S,C,R,E,H,Rows,observe,fold>,execution:Recipe.Recipe<S,W.World<S,C,R,E>,H,Error,plan,dispatch,provide>}
23def initial(~S:Data,barrier:Bool,plan:SP.Plan<S>) -> SP.Plan<S>:
24  match barrier:
25    case False{}:plan
26    case True{}:SP.Sequence{SP.Entry{Sch.Barrier{},[]},plan}
27def built(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,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,+selected:SP.Plan<S>,result:SP.Build<S,C,R,E,H>) -> Single.Attachment<Recipe.Registered<S,W.World<S,C,R,E>,H,Rows,observe,fold,Error,plan,dispatch,provide>,Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>>:
28  match result:
29    case SP.Invalid{owners}:Single.Invalid{Recipe.Registered{Build.Registered{world,owners,recipe,debug},Recipe.Recipe{}}}
30    case SP.Built{SP.Provisioned{Sch.Schedule{namespace,name,steps,owners},needs}}:Single.Attached{Application{Single.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},selected,namespace,name,steps,needs},Recipe.Recipe{}}}
31def checked(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,valid:Bool,schema:Schema.Schema<S,C,R>,world:W.World<S,C,R,E>,owners:H,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,+selected:SP.Plan<S>,namespace:U32,name:String,ids:List<&2,U32>) -> Single.Attachment<Recipe.Registered<S,W.World<S,C,R,E>,H,Rows,observe,fold,Error,plan,dispatch,provide>,Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>>:
32  match valid:
33    case False{}:Single.Invalid{Recipe.Registered{Build.Registered{world,owners,recipe,debug},Recipe.Recipe{}}}
34    case True{}:built(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,schema,world,recipe,debug,selected,SP.build(~S,~C,~R,~E,~H,namespace,name,selected,ids,owners))
35def folded(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,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,selected:SP.Plan<S>,name:String,result:H & List<&2,Records.Fields<S>>) -> Single.Attachment<Recipe.Registered<S,W.World<S,C,R,E>,H,Rows,observe,fold,Error,plan,dispatch,provide>,Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>>:
36  match world:
37    case W.World{+namespace,allocator,store,resource,events,pending,+registrations,nextSystemId,clock}:
38      match result:
39        case (owners,+fields):checked(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,Identity.identities_valid(namespace,registrations,Recipe.identities(~S,fields),[]),schema,W.World{namespace,allocator,store,resource,events,pending,registrations,nextSystemId,clock},owners,recipe,debug,selected,namespace,name,Identity.ids(Recipe.identities(~S,fields)))
40def planned(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,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,name:String,barrier:Bool,result:H & SP.Plan<S>) -> Single.Attachment<Recipe.Registered<S,W.World<S,C,R,E>,H,Rows,observe,fold,Error,plan,dispatch,provide>,Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>>:
41  match result:
42    case (owners,selected):folded(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,schema,world,recipe,debug,initial(~S,barrier,selected),name,fold(owners))
43# Derive and validate a schedule from the existing registered application.
44# Returns Attached with the executable App, or Invalid with the original
45# registered owner; world and registration owners are never copied.
46# Validates registration identity and schedule structure before execution.
47# barrier=True prepends an explicit barrier; False adds none. Registration
48# order is retained by the derived plan. No system body runs here.
49# Example: examples/scheduled-health/registration.bend, attach().
50def 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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,schema:Schema.Schema<S,C,R>,value:Recipe.Registered<S,W.World<S,C,R,E>,H,Rows,observe,fold,Error,plan,dispatch,provide>,name:String,barrier:Bool) -> Single.Attachment<Recipe.Registered<S,W.World<S,C,R,E>,H,Rows,observe,fold,Error,plan,dispatch,provide>,Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>>:
51  match value:
52    case Recipe.Registered{Build.Registered{world,owners,recipe,debug},_}:planned(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,schema,world,recipe,debug,name,barrier,plan(owners))
53def 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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,result:Single.RunResult<Single.Application<S,C,R,E,H,Rows,observe,fold>,S,Error>) -> Single.RunResult<Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>,S,Error>:
54  match result:
55    case Single.Finished{app,observations}:Single.Finished{Application{app,Recipe.Recipe{}},observations}
56    case Single.Failed{app,error,observations}:Single.Failed{Application{app,Recipe.Recipe{}},error,observations}
57    case Single.Rejected{app}:Single.Rejected{Application{app,Recipe.Recipe{}}}
58    case Single.Missing{app,requirements}:Single.Missing{Application{app,Recipe.Recipe{}},requirements}
59def 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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,result:Execute.Run<Single.Application<S,C,R,E,H,Rows,observe,fold>,S,Error>) -> Execute.Run<Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>,S,Error>:
60  match result:
61    case Execute.Run{result,batch}:Execute.Run{returned(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,result),batch}
62# Run the derived schedule with a per-system condition(world, id), returning
63# an Execute.Run containing the application result and detached trace batch.
64# Finished/Failed/Rejected/Missing all retain the application owner. A failed
65# system rolls back its ECS transaction, preserving earlier successful systems;
66# retained local/capture state and host IO follow their own contracts.
67# Structural commands become visible only at plan barriers, not at run end.
68# A false condition bypasses dispatch and leaves its invocation/lifecycle cursor
69# unchanged. condition is a trusted world-transforming callback: its returned
70# world is retained even when false; it is not confined to read-only access.
71def run_when(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,~condition:W.World<S,C,R,E> -> U32 -> W.World<S,C,R,E> & Bool,value:Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>) -> Execute.Run<Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>,S,Error>:
72  match value:
73    case Application{app,_}:executed(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,Execute.run(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~dispatch,~condition,~provide,app))
74# Return the same application owner with debug enabled or disabled.
75# Enabling derives observations from declarations; no repeated metadata input
76# is required. This call neither runs systems nor advances their cursors.
77def 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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide: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,Error,plan,dispatch,provide>,flag:Bool) -> Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>:
78  match value:
79    case Application{app,execution}:Application{Single.enabled(~S,~C,~R,~E,~H,~Rows,~observe,~fold,app,flag),execution}
80def observed(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,result:Single.Application<S,C,R,E,H,Rows,observe,fold> & Maybe<&2,Single.Description<S,Rows>>) -> Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide> & Maybe<&2,Single.Description<S,Rows>>:
81  match result:
82    case (app,view):(Application{app,Recipe.Recipe{}},view)
83# Return the application owner with Some detached debug description when
84# enabled, or None when disabled. This is inspection, not a restorable save.
85# It does not execute systems or consume their lifecycle/event cursors.
86# Example: examples/scheduled-health/registration.bend, snapshot().
87def 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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide: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,Error,plan,dispatch,provide>) -> Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide> & Maybe<&2,Single.Description<S,Rows>>:
88  match value:
89    case Application{app,_}:observed(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,Single.snapshot(~S,~C,~R,~E,~H,~Rows,~observe,~fold,app))
90# Rebuild the derived schedule from the same application registrations.
91# Preserves the world and invocation owners; name and leading barrier replace
92# the prior plan configuration. Returns Attached, or Invalid with the retained
93# registered owner. Does not run bodies or recreate their registration state.
94# Example: examples/scheduled-health/registration.bend, replan().
95def replan(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide: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,Error,plan,dispatch,provide>,name:String,barrier:Bool) -> Single.Attachment<Recipe.Registered<S,W.World<S,C,R,E>,H,Rows,observe,fold,Error,plan,dispatch,provide>,Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>>:
96  match value:
97    case Application{Single.Application{App.Application{schema,app},_,_,_,_,_},_}:attach(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,schema,Recipe.Registered{app,Recipe.Recipe{}},name,barrier)
98def always(~World:Type,world:World,id:U32) -> World & Bool:
99  (world,True{})
100# Execute one pass of the declaration-derived schedule with all systems
101# eligible; returns Execute.Run with a retained App on every result variant
102# (Finished, Failed, Rejected or Missing) plus a detached trace batch.
103# Earlier successful systems remain committed if a later system fails.
104# Deferred commands remain pending until an explicit schedule barrier.
105# Example: examples/scheduled-health/application.bend, ticks().
106def 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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide: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,Error,plan,dispatch,provide>) -> Execute.Run<Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>,S,Error>:
107  run_when(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,~always(~W.World<S,C,R,E>),value)
108def inspected(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,~Value:Data,schema:Schema.Schema<S,C,R>,owners:H,recipe:Tree.Recipe<W.World<S,C,R,E>,Rows,observe>,debug:Bool,selected:SP.Plan<S>,namespace:U32,name:String,steps:List<&2,Sch.Step>,needs:List<&2,SP.Requirement<S>>,result:W.World<S,C,R,E> & Value) -> Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide> & Value:
109  match result:
110    case (world,value):(Application{Single.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},selected,namespace,name,steps,needs},Recipe.Recipe{}},value)
111# Advanced world projection callback: consumes and returns the application
112# together with detached Data Value. project must return the world owner.
113# This adapter does not itself restrict project to read-only operations; use
114# public Inspector projections for noninterfering observation. No system is run.
115def inspect(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,~Value:Data,~project:W.World<S,C,R,E> -> W.World<S,C,R,E> & Value,value:Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>) -> Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide> & Value:
116  match value:
117    case Application{Single.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},selected,namespace,name,steps,needs},_}:inspected(~S,~C,~R,~E,~H,~Rows,~observe,~fold,~Error,~plan,~dispatch,~provide,~Value,schema,owners,recipe,debug,selected,namespace,name,steps,needs,project(world))
118
119# Advanced adapter to modify retained invocation owners with caller-supplied
120# arguments, including affine Type values.
121# Returns the application with the same world, plan and execution recipe;
122# modify must return H and preserve registration identity/metadata invariants.
123# It is not an ECS transaction and does not validate arbitrary owner changes.
124def update_owners(~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>>,~Error:Data,~plan:H -> H & SP.Plan<S>,~dispatch:H -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> H & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provide:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,~Args:Type,~modify:H -> Args -> H,value:Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>,args:Args) -> Application<S,C,R,E,H,Rows,observe,fold,Error,plan,dispatch,provide>:
125  match value:
126    case Application{Single.Application{App.Application{schema,Build.Registered{world,owners,recipe,debug}},selected,namespace,name,steps,needs},execution}:Application{Single.Application{App.Application{schema,Build.Registered{world,modify(owners,args),recipe,debug}},selected,namespace,name,steps,needs},execution}