Summary
The workflow scheduler enumerates only a company's seed files and saved overlays. A workflow that exists only in the global baseline is therefore invisible to the scheduler, so any cron on that graph never fires and produces no diagnostic.
The scheduler should enumerate through the globals-aware listing while preserving company graph precedence, the per-workflow schedule switch, and [globals].disable opt-outs.
The currently shipped weekly_review cron must not be activated as part of this fix. Its schedule should be removed while the enumeration defect is corrected; activating that recurring, billed, owner-delivered workflow requires separate staging validation and review.
Reproduction
- Register a company with no seed or overlay workflows.
- Provide a global workflow with a valid trigger schedule matching the current tick.
- Tick the workflow scheduler.
- Observe that zero runs start because
list_workflows_union cannot see the global baseline.
Expected behavior
The scheduler discovers scheduled global workflows through the globals-aware listing, skips globals named by the company's [globals].disable, and uses a same-id company workflow once instead of also listing the global.
Summary
The workflow scheduler enumerates only a company's seed files and saved overlays. A workflow that exists only in the global baseline is therefore invisible to the scheduler, so any cron on that graph never fires and produces no diagnostic.
The scheduler should enumerate through the globals-aware listing while preserving company graph precedence, the per-workflow schedule switch, and
[globals].disableopt-outs.The currently shipped
weekly_reviewcron must not be activated as part of this fix. Its schedule should be removed while the enumeration defect is corrected; activating that recurring, billed, owner-delivered workflow requires separate staging validation and review.Reproduction
list_workflows_unioncannot see the global baseline.Expected behavior
The scheduler discovers scheduled global workflows through the globals-aware listing, skips globals named by the company's
[globals].disable, and uses a same-id company workflow once instead of also listing the global.