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):
defineSetwith 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/afterexpand to all members; setbefore/afterexpand 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
runIfgates every member across phases; an empty set is a no-op and itsrunIfis 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)