cTrader 2132 timeout hardening
Summary
Addressed persistent Pepperstone/cTrader order timeouts where order placement traces showed:
open -> 2101 -> 2103 -> 2115 -> 2117 -> 2106 sent -> 2132- no terminal execution event before timeout
Changes made
1) Hardened cTrader order event handling
Updated services/backend/src/lib/ctrader/ctrader-order.ts:
- Increased default order placement timeout from
15000to30000. - Added explicit trace marker when
2106order submit is sent. - Added handling for payload
2132as an execution-like broker lifecycle event. - Added fallback behavior for non-terminal
2132:- if explicit error fields exist -> resolve as
failed. - if broker returns order id but no terminal type -> resolve as
open. - if no error and no order id -> resolve as
openfallback (prevents false timeout classification).
- if explicit error fields exist -> resolve as
- Added richer trace diagnostics for unknown
2132payload shapes.
2) Explicit timeout in Pepperstone adapter
Updated services/backend/src/lib/brokers/pepperstone-adapter.ts:
placeCTraderOrder(..., timeoutMs: 30000)is now passed explicitly.
Deployments
Deployed backend to both dev and production after each hardening pass.
- Dev versions observed:
2f999f82-541a-4a9b-89c9-e9e7500ea8d7,09831898-00a6-489a-afc1-872ed8823b7e,3610e583-2e52-402d-bda2-ca109bb60bed - Prod versions observed:
5ac465d0-9cc7-4c29-b9cc-43ab1125a736,a9bc5bac-5103-4e94-a723-d84a0a5e412b,631fed4b-36a5-4923-95f6-7f221a2f7e5c
Validation
- Backend typecheck passed after each patch.
- Recent DB traces showed timeout duration changed to
30000ms, confirming updated code path is active. - Pending confirmation from fresh post-deploy decision rows that
2132fallback path suppresses timeout errors in live flow.