The platform's own progress record for a running sweep, carried on
SweepProgressEvent.snapshot. Distinct from the event that wraps it:
this is what the server reported, the event is what the SDK emitted.
Two of its fields are easy to add together by mistake. aborted counts
individual runs that executed and aborted — a row-level count. failedShards
counts whole units of work (shards, or folds on a walk-forward sweep) that
failed and will not be retried, having never reported anything. A shard that
dies before producing a single row leaves aborted at zero, which is exactly
why the second count exists; summing them double-counts nothing and
describes nothing.
retrying is not a failure count either — those units failed on something
transient and are queued to be attempted again, so a sweep with a non-zero
value there is still expected to finish.
etaSeconds is omitted, never zero when it cannot be computed: a sweep
with nothing finished has no observed rate to extrapolate from, and a zero
would read as "about to finish". When present it runs conservative — it
excludes queue wait entirely, and a sweep that spent part of its life being
retried will have diluted the rate it is derived from.
The platform's own progress record for a running sweep, carried on SweepProgressEvent.snapshot. Distinct from the event that wraps it: this is what the server reported, the event is what the SDK emitted.
Two of its fields are easy to add together by mistake.
abortedcounts individual runs that executed and aborted — a row-level count.failedShardscounts whole units of work (shards, or folds on a walk-forward sweep) that failed and will not be retried, having never reported anything. A shard that dies before producing a single row leavesabortedat zero, which is exactly why the second count exists; summing them double-counts nothing and describes nothing.retryingis not a failure count either — those units failed on something transient and are queued to be attempted again, so a sweep with a non-zero value there is still expected to finish.etaSecondsis omitted, never zero when it cannot be computed: a sweep with nothing finished has no observed rate to extrapolate from, and a zero would read as "about to finish". When present it runs conservative — it excludes queue wait entirely, and a sweep that spent part of its life being retried will have diluted the rate it is derived from.