#!/usr/bin/env bash # Carwalk-Bench 2x2 runner. Fresh tmux session per task (clean context). set -u cd /opt/freshclaude/carwalk-bench HOOK="$(cat HOOK.txt)" RAW=results/raw PROMPTS=tasks/prompts wait_ready(){ # $1 session ; poll until input box ready for i in $(seq 1 30); do if tmux capture-pane -t "$1" -p 2>/dev/null | grep -q "bypass permissions"; then return 0; fi sleep 1 done; return 1 } wait_answer(){ # $1 session ; poll until a ⏺ response appears for i in $(seq 1 40); do if tmux capture-pane -t "$1" -p 2>/dev/null | grep -q "⏺"; then sleep 2; return 0; fi if tmux capture-pane -t "$1" -p 2>/dev/null | grep -q "API Error"; then sleep 1; return 2; fi sleep 1 done; return 1 } for MODEL in claude-opus-4-7 claude-opus-4-8; do for COND in bare hook; do if [ "$COND" = bare ]; then SP=".."; else SP="$HOOK"; fi for PF in $PROMPTS/*.txt; do ID=$(basename "$PF" .txt) TAG="${MODEL}__${COND}__${ID}" S="run_${MODEL//[^0-9]/}_${COND}_${ID//-/}" tmux kill-session -t "$S" 2>/dev/null tmux new-session -d -s "$S" -x 200 -y 50 tmux send-keys -t "$S" "freshclaude --system-prompt='$SP' --model='$MODEL'" Enter if ! wait_ready "$S"; then echo "READY-TIMEOUT $TAG"; tmux kill-session -t "$S" 2>/dev/null; continue; fi tmux load-buffer - < "$PF" tmux paste-buffer -t "$S" sleep 1 tmux send-keys -t "$S" Enter wait_answer "$S"; rc=$? tmux capture-pane -t "$S" -p -S -120 > "$RAW/$TAG.txt" echo "DONE $TAG rc=$rc" tmux kill-session -t "$S" 2>/dev/null done done done echo "ALL-DONE"