fix: replace shared IBKR precheck dispatcher#356
Conversation
Co-Authored-By: Codex <noreply@openai.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cb3c7bb2ff
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🤖 Codex PR Review✅ Merge allowed: 1 finding(s) reported but none are blocking ℹ️ Other Findings1. 🟡 [MEDIUM] Reliability in
|
Co-Authored-By: Codex <noreply@openai.com>
|
Follow-up in eddda76:
For the cron observation, no change was made: the previous QPK dispatcher only considers five-field cron expressions, and the configured production plans already emit explicit five-field precheck schedules. Two-field workflow overrides continue to inherit the main job's calendar fields, matching the existing warmup behavior. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eddda76165
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
|
Follow-up in 03f6e5b:
Fresh local verification: ruff, lock check, startup validator, actionlint, diff check, 37 targeted tests, and 3 runtime-plan contract tests passed. |
Co-Authored-By: Codex <noreply@openai.com>
|
Follow-up in a2ddeba addresses the latest non-blocking finding: every configured target now creates or updates its canonical precheck before enablement state is applied. Disabled targets are then paused before legacy cleanup, so migration never leaves them without a canonical scheduler. Regression test was added and confirmed RED before the fix. Fresh verification: ruff, lock check, startup validator, actionlint, diff check, 38 targeted tests, and 3 runtime-plan contract tests passed. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a2ddeba751
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-Authored-By: Codex <noreply@openai.com>
|
Live read-only scheduler verification for the remaining non-blocking observation:
The pre-deploy guard remains intentional fail-closed protection against a future partial migration if a shared dispatcher is present. No runtime endpoint was invoked during verification. |
Summary
Root cause
All target services use internal Cloud Run ingress. The shared dispatcher ran inside one Cloud Run service and called other services through their run.app URLs, so remote requests were rejected before reaching their revisions. The dispatcher then returned 502. The shared job also competed with the host service at scheduled execution times, producing historical 429 capacity failures.
Cloud Scheduler already reaches the internal services directly with OIDC for normal execution and warmups, so per-service Scheduler jobs remove both failure modes without changing strategy or order execution logic.
Validation
No production dependency changes. No /run or /dry-run endpoint was invoked during investigation.