From db66e35556e121bb2e8ff000acc662ddbe95e8db Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 20 Mar 2026 18:21:42 +0000 Subject: [PATCH] fix: lib/matrix_listener.sh: review case reads a separate /tmp/review-thread-map (col 2) instead of the standard THREAD_MAP (col 4) (#238) - matrix_listener.sh: review case now reads PR number from column 4 of the standard $THREAD_MAP instead of column 2 of /tmp/review-thread-map - review-pr.sh: pass PR_NUMBER as context_tag (4th arg) to matrix_send so the standard MATRIX_THREAD_MAP has it in column 4; remove separate /tmp/review-thread-map write - review-poll.sh: prune from MATRIX_THREAD_MAP instead of the removed /tmp/review-thread-map Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/matrix_listener.sh | 2 +- review/review-poll.sh | 10 +++++----- review/review-pr.sh | 8 +++----- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/matrix_listener.sh b/lib/matrix_listener.sh index 4868f16..282431f 100755 --- a/lib/matrix_listener.sh +++ b/lib/matrix_listener.sh @@ -189,7 +189,7 @@ Consider this guidance for your current work." ;; review) # Route human questions to persistent review tmux session - REVIEW_PR_NUM=$(awk -F'\t' -v id="$THREAD_ROOT" '$1 == id {print $2}' /tmp/review-thread-map 2>/dev/null || true) + REVIEW_PR_NUM=$(awk -F'\t' -v id="$THREAD_ROOT" '$1 == id {print $4}' "$THREAD_MAP" 2>/dev/null || true) if [ -n "$REVIEW_PR_NUM" ]; then REVIEW_SESSION="review-${PROJECT_NAME}-${REVIEW_PR_NUM}" REVIEW_PHASE_FILE="/tmp/review-session-${PROJECT_NAME}-${REVIEW_PR_NUM}.phase" diff --git a/review/review-poll.sh b/review/review-poll.sh index 645df8d..9870762 100755 --- a/review/review-poll.sh +++ b/review/review-poll.sh @@ -56,8 +56,8 @@ if [ -n "$REVIEW_SESSIONS" ]; then tmux kill-session -t "$session" 2>/dev/null || true rm -f "$phase_file" "/tmp/${PROJECT_NAME}-review-output-${pr_num}.json" \ "/tmp/review-injected-${PROJECT_NAME}-${pr_num}" - # Prune review-thread-map entries for this PR - sed -i "/\t${pr_num}$/d" /tmp/review-thread-map 2>/dev/null || true + # Prune thread-map entries for this PR + sed -i "/\t${pr_num}$/d" "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true cd "$REPO_ROOT" git worktree remove "/tmp/${PROJECT_NAME}-review-${pr_num}" --force 2>/dev/null || true rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true @@ -72,8 +72,8 @@ if [ -n "$REVIEW_SESSIONS" ]; then tmux kill-session -t "$session" 2>/dev/null || true rm -f "$phase_file" "/tmp/${PROJECT_NAME}-review-output-${pr_num}.json" \ "/tmp/review-injected-${PROJECT_NAME}-${pr_num}" - # Prune review-thread-map entries for this PR - sed -i "/\t${pr_num}$/d" /tmp/review-thread-map 2>/dev/null || true + # Prune thread-map entries for this PR + sed -i "/\t${pr_num}$/d" "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true cd "$REPO_ROOT" git worktree remove "/tmp/${PROJECT_NAME}-review-${pr_num}" --force 2>/dev/null || true rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true @@ -87,7 +87,7 @@ if [ -n "$REVIEW_SESSIONS" ]; then tmux kill-session -t "$session" 2>/dev/null || true rm -f "$phase_file" "/tmp/${PROJECT_NAME}-review-output-${pr_num}.json" \ "/tmp/review-injected-${PROJECT_NAME}-${pr_num}" - sed -i "/\t${pr_num}$/d" /tmp/review-thread-map 2>/dev/null || true + sed -i "/\t${pr_num}$/d" "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true cd "$REPO_ROOT" git worktree remove "/tmp/${PROJECT_NAME}-review-${pr_num}" --force 2>/dev/null || true rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true diff --git a/review/review-pr.sh b/review/review-pr.sh index 581cdc3..3b7b808 100755 --- a/review/review-pr.sh +++ b/review/review-pr.sh @@ -50,7 +50,7 @@ TMPDIR=$(mktemp -d) SESSION_NAME="review-${PROJECT_NAME}-${PR_NUMBER}" PHASE_FILE="/tmp/review-session-${PROJECT_NAME}-${PR_NUMBER}.phase" REVIEW_OUTPUT_FILE="/tmp/${PROJECT_NAME}-review-output-${PR_NUMBER}.json" -REVIEW_THREAD_MAP="/tmp/review-thread-map" +# Thread map: use standard MATRIX_THREAD_MAP (shared with all agents) REVIEW_WAIT_INTERVAL=10 # seconds between phase checks REVIEW_WAIT_TIMEOUT=600 # 10 min max for a single review cycle @@ -865,10 +865,8 @@ ${FU_DETAILS} fi # --- Notify Matrix (with thread mapping for human questions) --- -EVENT_ID=$(matrix_send "review" "PR #${PR_NUMBER} ${REVIEW_TYPE}: ${VERDICT} — ${PR_TITLE}" 2>/dev/null || true) -if [ -n "$EVENT_ID" ]; then - printf '%s\t%s\n' "$EVENT_ID" "$PR_NUMBER" >> "$REVIEW_THREAD_MAP" 2>/dev/null || true -fi +# Pass PR_NUMBER as context_tag (4th arg) so the standard thread map has it in column 4 +matrix_send "review" "PR #${PR_NUMBER} ${REVIEW_TYPE}: ${VERDICT} — ${PR_TITLE}" "" "$PR_NUMBER" >/dev/null 2>&1 || true log "DONE: ${VERDICT} (re-review: ${IS_RE_REVIEW})"