#!/bin/bash
EID=286f3ba4-5738-49b7-a7e4-ce0295fd4352
PID=a7f80ab9-e97b-420c-a380-3beccb0bcfe5
IMGDIR="/Users/manta/Documents/Projects/TheRoad-I1/projects/$PID/episodes/$EID/images"
Q() { PGPASSWORD=theroad_dev_2026 psql -h localhost -U theroad -d theroad -t -A -c "$1" 2>/dev/null; }
stable=0
for i in $(seq 1 160); do
  done=$(Q "SELECT COUNT(*) FILTER (WHERE status='completed') FROM step_run WHERE episode_id='$EID';")
  running=$(Q "SELECT COALESCE(string_agg(step_id,','),'-') FROM step_run WHERE episode_id='$EID' AND status='running';")
  failed=$(Q "SELECT COALESCE(string_agg(step_id||':'||status,','),'') FROM step_run WHERE episode_id='$EID' AND status IN ('failed','partial');")
  pngs=$(find "$IMGDIR" -name '*.png' 2>/dev/null | wc -l | tr -d ' ')
  newpng=$(find "$IMGDIR" -name '*.png' -newermt '-120 seconds' 2>/dev/null | wc -l | tr -d ' ')
  sip=$(Q "SELECT status FROM step_run WHERE episode_id='$EID' AND step_id='scene_image_pipeline';")
  echo "[wB $i] done=$done pngs=$pngs new120s=$newpng running=$running sip=$sip failed=[$failed]"
  # complete when scene_image_pipeline reached terminal AND run idle (no running) + no new png 3 cycles
  if [ "$running" = "-" ] && [ "$newpng" = "0" ]; then
    stable=$((stable+1))
    if [ "$stable" -ge 3 ]; then echo "DONE: idle stable done=$done pngs=$pngs sip=$sip failed=[$failed]"; exit 0; fi
  else
    stable=0
  fi
  sleep 45
done
echo "WATCHB TIMEOUT 120min pngs=$pngs"
