801df41b4d
scan_rr set the total then called scan_all_tickers as one opaque await, so the runtime snapshot's processed count stayed 0 until the whole scan finished and jumped straight to 100%. scan_all_tickers now takes an optional progress_callback invoked per ticker; the scheduler wires it to _runtime_progress so the sidebar's live indicator advances as tickers are scanned. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>