On 2026-09-29 Gateway lost its connection, failed the reconnect's SSL
handshake and sat on an error dialog for 9 hours with its API port open:
clients connected, every startup request timed out, and systemd never
restarted it because java kept running.
- Broker connects with raiseSyncErrors, so a failed startup sync exits
instead of continuing with an empty portfolio(), which rebalance would
read as holding nothing.
- `ibkr-quant gateway` probes the Gateway under its own health_client_id.
- deploy/ensure-gateway.sh (`make gateway`) probes, waits a minute for a
self-reconnect, then restarts ibgateway.service and waits for it.
- The trade and fills units run `make gateway` as ExecStartPre; fills
now retries on failure like trade does.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>