Refs #44
File: crates/charon-executor/src/submit.rs
Problem
Submitter::connect creates a single provider/connection pool. No reconnect on drop. Under high volatility, private RPC endpoint load is highest exactly when liquidations are most valuable. Connection drops in that window leave the submitter dead — every submit() returns the same transport error indefinitely. With no Prometheus metrics yet (PR #50), no alert fires.
Fix
Either:
(a) Internal one-shot reconnect inside submit() before returning ConnectionLost
(b) Return SubmitError::ConnectionLost variant; pipeline reconstructs Submitter on next tick
Pick (b) for cleaner failure modes. Add an integration test that drops the underlying TCP connection and verifies subsequent submit() returns ConnectionLost not Timeout.
Refs #44
File: crates/charon-executor/src/submit.rs
Problem
Submitter::connect creates a single provider/connection pool. No reconnect on drop. Under high volatility, private RPC endpoint load is highest exactly when liquidations are most valuable. Connection drops in that window leave the submitter dead — every submit() returns the same transport error indefinitely. With no Prometheus metrics yet (PR #50), no alert fires.
Fix
Either:
(a) Internal one-shot reconnect inside submit() before returning ConnectionLost
(b) Return SubmitError::ConnectionLost variant; pipeline reconstructs Submitter on next tick
Pick (b) for cleaner failure modes. Add an integration test that drops the underlying TCP connection and verifies subsequent submit() returns ConnectionLost not Timeout.