def canonical_steps
import bendvy-ecs-core@0.1.0.4/captured_schedule.bend as CapturedScheduleimport Base
import bendvy-ecs-core@0.1.0.4/schedule.bend as Sch
13# Conditions belong to typed leaves; only the canonical zero placeholder is
14# accepted in the reused data-only plan. Arbitrary dispatcher slots are refused.
15def canonical_steps(steps:List<&2,Sch.Step>) -> Bool:
16 match steps:
17 case []:True{}
18 case Sch.System{_,slot} <> rest:Bool.and(U32.is_eq(slot,0),canonical_steps(rest))
19 case _ <> rest:canonical_steps(rest)