def run_when

bendvy-ecs-core@0.1.0.4 · ordinary_app_run.bend:62

import bendvy-ecs-core@0.1.0.4/ordinary_app_run.bend as OrdinaryAppRun
import Base
import bendvy-ecs-core@0.1.0.4/ordinary_app_execution.bend as Execute
import bendvy-ecs-core@0.1.0.4/ordinary_app_registration_fields.bend as Records
import bendvy-ecs-core@0.1.0.4/ordinary_app_observation_data.bend as DTO
import bendvy-ecs-core@0.1.0.4/execution_context.bend as Ctx
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/system.bend as Sys
import bendvy-ecs-core@0.1.0.4/schedule_provision.bend as SP

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))

Uses (16)

Used by (1)