From 19a245fe5eb69dd118af5e4b569a14bfbb24f2ec Mon Sep 17 00:00:00 2001 From: openhands Date: Wed, 18 Mar 2026 09:01:50 +0000 Subject: [PATCH] fix: Coordinate review injection between review-poll.sh and dev-agent.sh to prevent double-injection (#90) Co-Authored-By: Claude Sonnet 4.6 --- dev/dev-agent.sh | 11 +++++++++++ review/review-poll.sh | 2 ++ 2 files changed, 13 insertions(+) diff --git a/dev/dev-agent.sh b/dev/dev-agent.sh index 21eba37..be85d88 100755 --- a/dev/dev-agent.sh +++ b/dev/dev-agent.sh @@ -1239,6 +1239,8 @@ Instructions: # Do NOT update LAST_PHASE_MTIME here — leave it stale so the outer # loop detects the change on its next tick and dispatches the new phase. REVIEW_FOUND=true # Prevent timeout injection + # Clean up review-poll sentinel if it exists (session already advanced) + rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}" break fi @@ -1273,6 +1275,15 @@ Instructions: [ -n "$VERDICT" ] && log "verdict from formal review: $VERDICT" fi + # Skip injection if review-poll.sh already injected (sentinel present) + REVIEW_SENTINEL="/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}" + if [ -n "$VERDICT" ] && [ -f "$REVIEW_SENTINEL" ]; then + log "review already injected by review-poll (sentinel exists) — skipping" + rm -f "$REVIEW_SENTINEL" + REVIEW_FOUND=true + break + fi + if [ "$VERDICT" = "APPROVE" ]; then REVIEW_FOUND=true inject_into_session "Approved! PR #${PR_NUMBER} has been approved by the reviewer. diff --git a/review/review-poll.sh b/review/review-poll.sh index 799cc14..4fd1f0f 100755 --- a/review/review-poll.sh +++ b/review/review-poll.sh @@ -156,6 +156,8 @@ Instructions: tmux delete-buffer -b "review-inject-${pr_num}" 2>/dev/null || true rm -f "${inject_tmp}" log " #${pr_num} review (${verdict}) injected into session ${session}" + # Write sentinel so dev-agent.sh awaiting_review loop skips its own injection + touch "/tmp/review-injected-${PROJECT_NAME}-${pr_num}" } while IFS= read -r line; do