Skip if this feature doesn't contain or require systems. Most games that use a canvas will use systems but most applications will not.
Create services/main-service/system-database/system-database.ts: Database.Plugin.create({ extends: Database.Plugin.combine(<currentTop>.plugin, scheduler), systems }) — combine scheduler with the
feature's current top main-service layer (ActionDatabase / ServiceDatabase / ComputedDatabase,
whichever it built), never a hardcoded ComputedDatabase, so systems and any services/actions
compose into the one MainService. The systems
map is declared inline (see features/services/main-service/systems.md — inline is required for db to be
typed and for system-name inference; a systems/ folder is optional, only for extracted
per-frame body helpers).
- A system is a
SystemDeclaration:{ create, schedule?: { before?, after?, during? } }.create(db)runs once (capture queries / index handles / closures); the returned function advances the world one tick. Returnvoidfor an init-only system (seeding entities). - Order under
schedule(mirror thedata/step's internal sequence); drive the loop by combiningscheduler(rAF), gated by theschedulerStateresource.
Only for real-time features (games, sims) — turn-based features skip this phase entirely.
Comes after build-computed. The how is in the auto-loading features/services/main-service/systems.md rule.