From e2554eb8440da42d9f11306fb3826466cffeebfd Mon Sep 17 00:00:00 2001 From: openhands Date: Tue, 17 Mar 2026 16:07:58 +0000 Subject: [PATCH] fix: \`sleep 1\` polling loop violates AGENTS.md 'never use fixed delays' principle (#878) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace fixed \`sleep 1\` in the container teardown poll loop with exponential backoff (100ms → 200ms → … → 2000ms cap). The 30s hard timeout is preserved. Co-Authored-By: Claude Sonnet 4.6 --- scripts/harb-evaluator/red-team-sweep.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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