fix(router): register engine schemas at startup to fix webhook processing#899
Merged
zbigniewsobiecki merged 1 commit intodevfrom Mar 16, 2026
Merged
Conversation
…sing The router's loadProjectConfig() calls validateConfig() which runs EngineSettingsSchema — a Zod schema that validates against a dynamic registry populated by registerBuiltInEngines(). Without calling registerBuiltInEngines() at startup, any project with claude-code, codex, or opencode engineSettings configured causes a ZodError: Unsupported engine settings for "claude-code" This error is thrown inside TrelloRouterAdapter.parseWebhook() and JiraRouterAdapter.parseWebhook(), which return null on any unhandled exception — so all webhooks for affected projects are silently dropped with no job enqueued and no agent triggered. Fix: call registerBuiltInEngines() once at router startup, before any request handler runs. Identical to the dashboard fix in #896. Affected projects: any project with per-project engineSettings using claude-code, codex, or opencode backend. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
zbigniewsobiecki
added a commit
that referenced
this pull request
Mar 16, 2026
Same bug as router (#899) and dashboard (#896): worker-entry.ts calls loadConfig() at line 253 which runs EngineSettingsSchema validation. The dynamic ENGINE_SETTINGS_SCHEMAS registry was empty because registerBuiltInEngines() had not yet been called — it only runs later when createAgentRegistry() initializes. This caused every worker container to crash immediately with: ZodError: Unsupported engine settings for "claude-code" ...for any project with claude-code/codex/opencode engineSettings, making all Trello/JIRA/GitHub agent runs fail at job start. Fix: call registerBuiltInEngines() once before loadConfig(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
zbigniewsobiecki
added a commit
that referenced
this pull request
Mar 16, 2026
…#900) Same bug as router (#899) and dashboard (#896): worker-entry.ts calls loadConfig() at line 253 which runs EngineSettingsSchema validation. The dynamic ENGINE_SETTINGS_SCHEMAS registry was empty because registerBuiltInEngines() had not yet been called — it only runs later when createAgentRegistry() initializes. This caused every worker container to crash immediately with: ZodError: Unsupported engine settings for "claude-code" ...for any project with claude-code/codex/opencode engineSettings, making all Trello/JIRA/GitHub agent runs fail at job start. Fix: call registerBuiltInEngines() once before loadConfig(). Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Root cause
TrelloRouterAdapter.parseWebhook()(and JIRA's equivalent) callsloadProjectConfig()→validateConfig()→EngineSettingsSchema. That Zod schema validates engine keys against a dynamic registry populated byregisterBuiltInEngines().The router never called
registerBuiltInEngines()at startup. So for any project withengineSettings.claude-code(or codex/opencode) configured, every call toloadProjectConfig()threw:parseWebhookcatches errors by returningnull→ the webhook is silently dropped → no job enqueued, no agent triggered.This is why moving cards in Trello for the llmist project (which has
claude-codeengineSettings) never fired any agents.Fix
Call
registerBuiltInEngines()once at router startup, before any request handler runs — identical to the dashboard fix in #896.Affected scope
Any project with per-project
engineSettingsusingclaude-code,codex, oropencodebackend. Projects without engineSettings are unaffected.Test plan
npm run typecheckcleannpm run lintcleannpm test— 288 files, 5392 tests passcascade-router-dev, move Trello card → verify job is enqueued and agent fires🤖 Generated with Claude Code