Skip to main content
← Back to list
01Issue
FeatureOpenSwamp CLIPublic
AssigneesNone

Relationships

#3841 trigger.schedule is evaluated in the serve host's local time zone, with no zone field and no doc saying so

Opened by reset · 10/23/2026

On 20261020.024627.0-sha.26dc044f (macOS 27) a workflow with trigger.schedule: "0 7 * * *" served on a host in US Pacific time reports nextRun: 2026-10-22T14:00:00.000Z in /health, so the cron expression is read in the host's zone. Nothing says so and there is no way to say otherwise:

  • swamp workflow schema get --json prints "trigger": {"type": "object", "properties": {"schedule": {"type": "string"}, "inputs": {...}}, "additionalProperties": false}: no zone field.
  • src/domain/workflows/workflow_scheduler.ts:67 constructs new Cron(cronExpression, { paused: ... }, cb) with no timezone option, so croner uses the process's local zone.
  • The workflow reference's Scheduled Workflows section and the serve guide give cron expressions without naming the zone they are read in.

Expected: the reference names the zone a schedule is evaluated in, or the trigger accepts an IANA zone so a schedule means the same on every host. Actual: the same workflow fires at a different UTC time on each host, and the only way to learn the zone is to read nextRun from /health after deploying.

Steps to reproduce:

  1. swamp workflow schema get --json and look under trigger.
  2. Serve a workflow with trigger.schedule: "0 7 * * *" on a host whose zone is not UTC and read nextRun from GET /health.

Suggestion: document that trigger.schedule is evaluated in the server's local zone, and accept an optional trigger.timezone (IANA name) passed through to croner's timezone option.

02Bog Flow
◉OPEN○TRIAGED○IN PROGRESS○SHIPPED

Open

10/23/2026, 5:22:50 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.