Problem
charon listen logs every received block at DEBUG only (crates/charon-cli/src/main.rs:918). Under the default RUST_LOG=info filter the only post-startup log lines are WARN/ERROR from oracle / Venus / RPC failures. Operators watching the terminal during a demo see nothing for minutes at a time and assume the bot is hung. The block listener is in fact ticking — the only proof is curl localhost:9091/metrics | grep blocks_received.
Proposed fix
Add a low-frequency heartbeat at INFO:
// In the NewBlock arm of run_listen
if number % 50 == 0 {
info!(chain = %chain, block = number, "block listener tick");
}
Or make the cadence configurable via [bot] heartbeat_blocks = 50 and default to 50 (~150s on BSC).
Acceptance
- A line every ~150s under default config.
- Existing DEBUG line preserved for high-resolution debugging.
Found during the local mainnet validation walk on 2026-04-25.
Problem
charon listenlogs every received block at DEBUG only (crates/charon-cli/src/main.rs:918). Under the defaultRUST_LOG=infofilter the only post-startup log lines areWARN/ERRORfrom oracle / Venus / RPC failures. Operators watching the terminal during a demo see nothing for minutes at a time and assume the bot is hung. The block listener is in fact ticking — the only proof iscurl localhost:9091/metrics | grep blocks_received.Proposed fix
Add a low-frequency heartbeat at INFO:
Or make the cadence configurable via
[bot] heartbeat_blocks = 50and default to 50 (~150s on BSC).Acceptance
Found during the local mainnet validation walk on 2026-04-25.