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