The experiment runners (imaging lane, and the text/medqa runners look the same) print nothing until the final summary JSON. On real-data + API runs of thousands of calls that take hours, there is no built-in way to see how far along a run is, or whether it has stalled on a retry/rate-limit. Today progress has to be inferred out-of-band by wc -l on the cache JSONL.
Felt concretely running the MIMIC-CXR battery (#295): the solo arm alone is ~6-7k Gemini calls.
Proposal: a lightweight, shared progress signal, a periodic line to stderr (so stdout/the summary stays clean) every N cases with completed X/Y, elapsed, rate, ETA. Dependency-light (no hard tqdm dependency; use it only if already present). Prefer a small shared helper reused across runners over per-script code.
Nice-to-have: distinguish cache hits from live calls in the count.
Non-blocking; developer-experience enhancement.
The experiment runners (imaging lane, and the text/medqa runners look the same) print nothing until the final summary JSON. On real-data + API runs of thousands of calls that take hours, there is no built-in way to see how far along a run is, or whether it has stalled on a retry/rate-limit. Today progress has to be inferred out-of-band by
wc -lon the cache JSONL.Felt concretely running the MIMIC-CXR battery (#295): the solo arm alone is ~6-7k Gemini calls.
Proposal: a lightweight, shared progress signal, a periodic line to stderr (so stdout/the summary stays clean) every N cases with
completed X/Y, elapsed, rate, ETA. Dependency-light (no hardtqdmdependency; use it only if already present). Prefer a small shared helper reused across runners over per-script code.Nice-to-have: distinguish cache hits from live calls in the count.
Non-blocking; developer-experience enhancement.