← Back to list
01Issue
BugShippedSwamp CLIPublic
AssigneesNone
Relationships
↔ sibling #2472#2468 serve: workflow trigger get/set ignore --config and read/write <repo>/.swamp/serve.yaml, so they disagree with the scheduler
Opened by randybias · 9/24/2026· Shipped 10/5/2026
Problem
When serve is started with --config <path>, the scheduler and the workflow.trigger.* requests use different config files.
- The scheduler loads trigger overrides from the merged config, i.e. the
--configfile (src/cli/commands/serve.ts:3727-3743). It logsLoaded 1 trigger override(s) from serve.yaml. workflow.trigger.get/set/removeread and write<repoDir>/.swamp/serve.yaml, the default path, ignoring--config(src/serve/handlers/workflow_handlers.ts:1750→readServeConfigFile(ctx.repoDir),serve_config.ts:1245-1248).
Measured (20260923.231117.0)
serve runs with --config=/config/serve.yaml, a Kubernetes ConfigMap mount, containing:
triggers:
mircloud-sweep-cabling-drift:
inputs: {proofTarget: production, tlsPolicy: insecure, timeoutMs: 15000, db: {...}}Startup log: Loaded 1 trigger override(s) from serve.yaml and Registered schedule for workflow "mircloud-sweep-cabling-drift": "0 5 * * *". But:
$ swamp workflow trigger get mircloud-sweep-cabling-drift --server ... --json
{"builtIn":{"schedule":"0 5 * * *","inputs":{}},"override":null,"effective":{"schedule":"0 5 * * *","inputs":{}}}Impact
trigger getreportsoverride: nulland empty effective inputs for an override that is live. The one tool meant to answer "what will this schedule run with" gives the wrong answer.trigger setwould write a second, divergentserve.yamlunder the repo dir and apply it live throughupdateTriggerOverrides. From source, that appears to replace the running override map with that file's contents (INFERRED; not run, because it would disturb a live schedule). A deployment that keeps its config in--configcould silently lose its trigger inputs.- In our deployment the
--configfile is a read-only ConfigMap mount, so writing to it is not an option either.trigger setshould refuse clearly in that case.
Ask
workflow.trigger.*should resolve the same config path the server was started with (--config,SWAMP_SERVE_CONFIG, or the default).- If that path is read-only,
trigger set/removeshould refuse with the path named rather than write elsewhere. trigger getshould report the overrides the scheduler actually holds in memory.
02Bog Flow
Shipped
Click a lifecycle step above to view its details.
03Sludge Pulse
Editable. Press Enter to edit.
stack72 commented 10/5/2026, 10:41:03 PM
Thanks @randybias for reporting this! The fix has been merged and a release is on its way. We appreciate your contribution to swamp.
Sign in to post a ripple.