diff --git a/scripts/harb-evaluator/red-team-sweep.sh b/scripts/harb-evaluator/red-team-sweep.sh index 78217e0..3b23826 100755 --- a/scripts/harb-evaluator/red-team-sweep.sh +++ b/scripts/harb-evaluator/red-team-sweep.sh @@ -289,15 +289,17 @@ PYEOF '{completed: $arr, last_updated: now | todate}' > "$PROGRESS_FILE" log "DONE $seed_name" - # 6. Teardown — poll until all containers have exited (no fixed sleep) + # 6. Teardown — poll until all containers have exited (exponential backoff, no fixed delay) cd "$REPO_ROOT" && docker compose down -v 2>/dev/null || true _deadline=$(( $(date +%s) + 30 )) + _backoff_ms=100 while [[ -n "$(docker compose ps --quiet 2>/dev/null)" ]]; do if [[ $(date +%s) -ge $_deadline ]]; then log "WARNING: containers still present after 30s — proceeding anyway" break fi - sleep 1 + sleep "$(awk "BEGIN{printf \"%.1f\", $_backoff_ms / 1000}")" + (( _backoff_ms = _backoff_ms * 2 > 2000 ? 2000 : _backoff_ms * 2 )) done done