1 import Base 2 import ./change_tick.bend as Tick 3 import ./ordinary_event_declaration.bend as Event 4 import ./ordinary_schema.bend as Schema 5 import ./ordinary_app_event_family_runtime.bend as App 6 import ./ordinary_app_event_family_reader.bend as AppReader 7 import ./ordinary_app_registration_fields.bend as Records 8 import ./ordinary_app_observation_data.bend as DTO 9 import ./ordinary_app_recipe.bend as Tree 10 import ./ordinary_app_records.bend as Leaf 11 12 import ./execution_context.bend as Ctx 13 import ./trace_facts.bend as TraceFacts 14 import ./owned_event_family_maintenance.bend as Maintenance 15 import ./owned_event_family_catalog.bend as Catalog 16 import ./owned_event_family_lifecycle.bend as Life 17 import ./world.bend as W 18 import ./system.bend as Sys 19 import ./transaction.bend as T 20 import ./capabilities.bend as Cap 21 import ./owner_product.bend as Product 22 import ./owned_event_log.bend as Log 23 import ./ordinary_owned_event.bend as Pub 24 import ./ordinary_owned_event_family_reader_binding.bend as Setup 25 import ./owned_event_family_reader_query.bend as Core 26 import ./event_runtime.bend as Ev 27 import ./event_stream.bend as Stream 28 import ./event_family_runtime.bend as FR 29 import ./event_family_routing.bend as Route 30 # Public setup carries the coupled log route and operational stream selection. 31 # All callbacks below are erased indices derived by its canonical constructors. 32 import ./ordinary_query_declaration.bend as Decl 33 import ./compose.bend as Q 34 # Register an owned-event reader joined to a retained ordinary query declaration. 35 # Access metadata includes event read and query clauses; registration does not run 36 # projection/body. Failure returns actual runtime. Payload lookup remains scoped 37 # through at:P -> Request -> P & Projection, not a grant to extract P from its log. 38 def register(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),runtime:Route.Runtime>,name:String) -> Route.Registration,Args & Maybe<&2,Tick.Tick>,Unit,Core.Reply,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put),Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>: 39 Core.register(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,~FR.State,~FR.take(~S,~Nat,~E,~F,~Owners,~take),~FR.put(~S,~Nat,~E,~F,~Owners,~put),runtime,name) 40 # Advanced run using an already observed registry/cursor pair. Pass that cursor 41 # into query lifecycle filtering and retain the run owner/completion contract below; 42 # the supplied pair is trusted to come from the matching actual registration. 43 def run_observed(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),runtime:Route.Runtime>,reader:Route.Reader,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,args:Args,observed:Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)> & Maybe<&2,Tick.Tick>) -> Route.RunResult,Args & Maybe<&2,Tick.Tick>,Unit,Core.Reply,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put),Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>: 44 match observed: 45 case (registry,cursor):Core.run(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,~FR.State,~FR.take(~S,~Nat,~E,~F,~Owners,~take),~FR.put(~S,~Nat,~E,~F,~Owners,~put),~FR.synchronize(~S,~C,~R,~E,~F,~Owners,~sync),runtime,reader,registry,(args,cursor)) 46 # Resolve unread payload keys in order, project each through the confined request, 47 # restore its log owner, then traverse current live query handles with declared 48 # query caps. All event/row ECS writes share one transaction. Args and returned 49 # Observation owners remain in Reply; failure clears Data outputs and rolls back 50 # recorded ECS edits, not arbitrary mutations made by trusted projectors. 51 # Uses registry cursor for lifecycle selection; success advances it to World tick. 52 # Semantic Reply failure preserves unread stream position under failed-reader rules; 53 # transport Succeeded alone is not semantic success. lagged records retention loss. 54 def run(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),runtime:Route.Runtime>,reader:Route.Reader,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,registry:Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>,args:Args) -> Route.RunResult,Args & Maybe<&2,Tick.Tick>,Unit,Core.Reply,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put),Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>: 55 run_observed(~S,~C,~R,~P,~Rest,~E,~Domains,~F,~path,~inject,~select,~identity,~make,~sync,~frame,~retain,~inventory,~take,~put,~descriptor,~Owners,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,runtime,reader,args,Sys.cursor(~S,~C,~R,~E,~Ev.Input>,~Unit,~Core.Reply,~Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body),registry)) 56 57 # Advanced trace-aware counterpart of run_observed using its supplied registry 58 # cursor. Return actual runtime/reader/registry, semantic completion and fact state; 59 # trace collection does not replace semantic success or acknowledge failed work. 60 def run_trace_cursor(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),runtime:Route.Runtime>,reader:Route.Reader,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,args:Args,trace:TraceFacts.State,observed:Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)> & Maybe<&2,Tick.Tick>) -> Route.RunResult,Args & Maybe<&2,Tick.Tick>,Unit,Core.Reply,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put),Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)> & TraceFacts.State: 61 match observed: 62 case (registry,cursor):Core.run_traced(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,~FR.State,~FR.take(~S,~Nat,~E,~F,~Owners,~take),~FR.put(~S,~Nat,~E,~F,~Owners,~put),~FR.synchronize(~S,~C,~R,~E,~F,~Owners,~sync),runtime,reader,registry,(args,cursor),trace) 63 # Trace-aware run with actual operation facts returned separately. Same query 64 # transaction, owner returns and semantic reader advancement; facts may describe 65 # attempts that rolled back. Does not perform log retirement or an implicit barrier. 66 def run_traced(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),runtime:Route.Runtime>,reader:Route.Reader,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,registry:Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>,args:Args,trace:TraceFacts.State) -> Route.RunResult,Args & Maybe<&2,Tick.Tick>,Unit,Core.Reply,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put),Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)> & TraceFacts.State: 67 run_trace_cursor(~S,~C,~R,~P,~Rest,~E,~Domains,~F,~path,~inject,~select,~identity,~make,~sync,~frame,~retain,~inventory,~take,~put,~descriptor,~Owners,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,runtime,reader,args,trace,Sys.cursor(~S,~C,~R,~E,~Ev.Input>,~Unit,~Core.Reply,~Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body),registry)) 68 69 # Advanced execution-context bridge carrying the existing trace, family state and 70 # tick through run_traced. Returned routing result retains actual owners; no new 71 # query or payload capability is inferred from the context. 72 def run_context(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),context:Ctx.Context>,family:FR.State,tick:Nat,reader:Route.Reader,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,registry:Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>,args:Args) -> Route.ContextRunResult,Args & Maybe<&2,Tick.Tick>,Unit,Core.Reply,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put),Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>: 73 match context: 74 case Ctx.Context{world,trace}:Route.context_returned(~S,~C,~R,~E,~Nat,~FR.State,~(Args & Maybe<&2,Tick.Tick>),~Unit,~Core.Reply,~FR.take(~S,~Nat,~E,~F,~Owners,~take),~FR.put(~S,~Nat,~E,~F,~Owners,~put),~Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body),run_trace_cursor(~S,~C,~R,~P,~Rest,~E,~Domains,~F,~path,~inject,~select,~identity,~make,~sync,~frame,~retain,~inventory,~take,~put,~descriptor,~Owners,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,Route.Runtime{world,family,tick},reader,args,trace,Sys.cursor(~S,~C,~R,~E,~Ev.Input>,~Unit,~Core.Reply,~Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body),registry))) 75 76 # Advanced metadata projection labeling retained query clauses as component uses 77 # for the message source. This formatter does not validate or widen query grants. 78 def component_uses(~S:Data,clauses:List<&2,Decl.Clause>) -> List<&2,Records.DeclaredUse>: 79 match clauses: 80 case []:[] 81 case Decl.Clause{key,mode} <> rest:Records.DeclaredUse{Records.ComponentUse{},Records.MessageSource{},key,mode} <> component_uses(~S,rest) 82 # Advanced owner-returning App fold combining event-read identity, actual registry 83 # metadata and retained query clauses. Declared-use metadata is descriptive; the 84 # operational query declaration and scoped request still determine authority. 85 def owner_fields(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),owner:AppReader.Owner,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>>) -> AppReader.Owner,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>> & List<&2,Records.Fields>: 86 match owner: 87 case AppReader.Owner{Event.Declaration{Event.Domain{+key},mode},reader,Sys.Registry{+namespace,+id,+name,+access,+cursor}}:(AppReader.Owner{Event.Declaration{Event.Domain{key},mode},reader,Sys.Registry{namespace,id,name,access,cursor}},[Records.Fields{namespace,id,name,access,cursor,key,List.append(&2,Decl.Clause,[Decl.Clause{key,Decl.Read{}}],Decl.clauses(~S,~Q.Frame,~Ops(Q.Frame),query)),Records.MixedKind{Records.DeclaredUse{Records.EventUse{},Records.MessageSource{},key,Decl.Read{}} <> component_uses(~S,Decl.clauses(~S,~Q.Frame,~Ops(Q.Frame),query))}}]) 88 def app_registered(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),~Previous:Type,~Rows:Data,~prior:W.World -> W.World & DTO.Observation,~previousFold:Previous -> Previous & List<&2,Records.Fields>,~Output:Type,done:App.Application,Previous & AppReader.Owner,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>>,DTO.Product,Tree.observe_pair(~W.World,~Rows,~Unit,~prior,~AppReader.observe(~S,~C,~R,~E)),Leaf.fold_pair(~S,~Previous,~AppReader.Owner,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest 89 match result: 90 case Route.RegistrationFailed{runtime}:failed(App.Application{schema,runtime,previous,recipe,debug}) 91 case Route.Registered{runtime,reader,registry}:done(App.Application{schema,runtime,(previous,AppReader.Owner{Event.read(~S,~Nat,Setup.domain(~S,~P,identity)),reader,registry}),Tree.Recipe{},debug}) 92 # Register and append this reader/query owner to the family App. done receives 93 # extended owners and combined metadata; failed receives the prior App with actual 94 # runtime returned on admission refusal. Observation adds Unit beside prior rows, 95 # not automatic payload presentation. Use owned-family maintenance for retirement 96 # and owned-event-family-lifecycle.bend for explicit reader lifecycle operations. 97 def install(~S:Data,~C:Type,~R:Type,~P:Type,~Rest:Type,~E:Data,~Domains:Data,~F:Type,~path:Product.Lens,Rest>,~inject:Nat -> E,~select:List<&2,E> -> List<&2,Nat>,~identity:Pub.Domain,~make:Domains -> Nat -> F,~sync:F -> Nat -> List<&2,E> -> F,~frame:F -> Nat -> F,~retain:F -> Nat -> List<&2,E> -> F & List<&2,E>,~inventory:F -> F & List<&2,String>,~take:F -> F & Stream.Stream,~put:F -> Stream.Stream -> F,~descriptor:Setup.Setup,~Owners:Type,~Request:Type,~Projection:Data,~Args:Type,~Observation:Type,~U:Data,~Out:Data,~Ops:Type -> Type,~at:P -> Request -> P & Projection,~project:@-H:Type -> @-read:Cap.Request -> H -> Args -> H & Core.Projected,~query:Decl.Declaration,Ops(Q.Frame)>,~body:@-H:Type -> @-caps:Ops(H) -> Observation -> Args -> H -> H & (Observation & (Args & (T.Outcome & Out))),~Previous:Type,~Rows:Data,~prior:W.World -> W.World & DTO.Observation,~previousFold:Previous -> Previous & List<&2,Records.Fields>,~Output:Type,done:App.Application,Previous & AppReader.Owner,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~path,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body)>>,DTO.Product,Tree.observe_pair(~W.World,~Rows,~Unit,~prior,~AppReader.observe(~S,~C,~R,~E)),Leaf.fold_pair(~S,~Previous,~AppReader.Owner,FR.take(~S,~Nat,~E,~F,~Owners,~take),FR.put(~S,~Nat,~E,~F,~Owners,~put)>,Sys.Registry>,Unit,Core.Reply,Core.runner(~S,~C,~R,~P,~Rest,~E,~pa 98 match value: 99 case App.Application{schema,runtime,previous,recipe,debug}:app_registered(~S,~C,~R,~P,~Rest,~E,~Domains,~F,~path,~inject,~select,~identity,~make,~sync,~frame,~retain,~inventory,~take,~put,~descriptor,~Owners,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,~Previous,~Rows,~prior,~previousFold,~Output,done,failed,schema,previous,recipe,debug,register(~S,~C,~R,~P,~Rest,~E,~Domains,~F,~path,~inject,~select,~identity,~make,~sync,~frame,~retain,~inventory,~take,~put,~descriptor,~Owners,~Request,~Projection,~Args,~Observation,~U,~Out,~Ops,~at,~project,~query,~body,runtime,name))