← back to Codex Review 2026 04 30

launch-rereview.sh

63 lines

#!/usr/bin/env bash
set -u
ROOT="$HOME/Projects/codex-review-2026-04-30"
cd "$ROOT" || exit 1

# Only re-review projects that had actual applied changes
PROJECTS=(
  claimmyaddress
  Designer-Wallcoverings
  Hormuzy
  jill-website
  Ken
  lawyer-directory-builder
  Letsbegin
  malden-house
  Norma
  resize-it
  site-factory
  stayclaim
  the-ai-factory
  trademarks-copyright
  VictoryStays
  visual-factory
  wholivedthere
  yolo-agent
)

CONCURRENCY=5
PIDS=()

reap() {
  while [ "${#PIDS[@]}" -ge "$CONCURRENCY" ]; do
    for i in "${!PIDS[@]}"; do
      if ! kill -0 "${PIDS[$i]}" 2>/dev/null; then
        unset 'PIDS[i]'
      fi
    done
    PIDS=("${PIDS[@]}")
    [ "${#PIDS[@]}" -ge "$CONCURRENCY" ] && sleep 2
  done
}

echo "=== rereview batch start $(date -Iseconds) ===" > "$ROOT/rereview-batch.log"
for p in "${PROJECTS[@]}"; do
  reap
  echo "[$(date +%H:%M:%S)] rereview-launch $p" >> "$ROOT/rereview-batch.log"
  ./run-rereview.sh "$p" &
  PIDS+=("$!")
done

wait
echo "=== rereview batch end $(date -Iseconds) ===" >> "$ROOT/rereview-batch.log"
echo "" >> "$ROOT/rereview-batch.log"
echo "=== verdicts ===" >> "$ROOT/rereview-batch.log"
for p in "${PROJECTS[@]}"; do
  rr="$ROOT/$p/rereview.md"
  if [ -f "$rr" ]; then
    verdict=$(awk '/^## Verdict/{getline; print; exit}' "$rr" | head -1)
    [ -z "$verdict" ] && verdict=$(grep -A1 "^## Verdict" "$rr" | tail -1)
    printf "%-28s %s\n" "$p" "$verdict" >> "$ROOT/rereview-batch.log"
  fi
done