A sync runs for hours and is normally watched through a redirected log, where Python's block buffering withheld the per-source progress lines until they happened to flush. The gallery-dl subprocesses write to the same descriptor unbuffered, so the log also interleaved out of order. Reconfiguring the streams in-process rather than relying on `python3 -u` means it holds however the script is invoked. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>