Skip to content

W-034: ecs-schedule sets (SCH-F06, part 1)

Type: feature · Size: M · Epic: E-schedule-v0 · Target: packages/ecs-schedule · Breaking: no Depends: W-032 Refs: spec SCH-126, SCH-127, SCH-128, SCH-129, SCH-130, SCH-131, SCH-132, SCH-134

Goal

Add defineSet and set membership. Set ordering edges expand to their members before the edge check and cycle check. Set runIf gates every member, including members in different phases. Sets do not change phase membership. Plugins and the unknown-set check (SCH-133) are in W-035.

Steps

  • S1 (SCH-126, SCH-127): defineSet with defaults and a name check; a system lists its sets and is in each one; files: packages/ecs-schedule/src/set.ts, packages/ecs-schedule/tests/set-define.test.ts
  • S2 (SCH-128, SCH-129): set targets in system before/after expand to all members; set before/after expand to member pairs; files: packages/ecs-schedule/src/set-expand.ts, packages/ecs-schedule/tests/set-edges.test.ts
  • S3 (SCH-130, SCH-131): sets span phases; expanded edges that contradict phase order throw; expanded cycles and self-edges throw naming the systems and sets; files: packages/ecs-schedule/tests/set-phases.test.ts, packages/ecs-schedule/tests/set-cycles.test.ts
  • S4 (SCH-132, SCH-134, SCH-118): a set runIf gates every member across phases; an empty set is a no-op and its runIf is never called; files: packages/ecs-schedule/src/set-conditions.ts, packages/ecs-schedule/tests/set-conditions.test.ts
  • S5 (changeset): add .changeset/w-034-ecs-schedule-sets.md (patch, @workspace/ecs-schedule)

Log

  • 2026-11-01 created from the approved spec split of W-004 (Triage)