#!/usr/bin/env bash
# Usage: bash reproduce.sh CHECKOUT COMMIT PORT
# Keep driver.mjs beside this script. Run once for each commit's installed checkout.
set -euo pipefail
checkout=$1
commit=$2
port=$3
assets=$(cd "$(dirname "$0")" && pwd)
run=$(mktemp -d)
mkdir -p "$run/home/userdata"
export PROOF_COMMIT="$commit" PROOF_OUTPUT="$run/results.json" T3CODE_DEV_SEED=0
node - "$run/home/userdata/settings.json" "$assets/driver.mjs" <<'JS'
const fs=require('node:fs');
fs.writeFileSync(process.argv[2],JSON.stringify({defaultModelSelection:{instanceId:'proof',model:'proof'},providerInstances:{proof:{displayName:'Preview proof',driver:'acpRegistry',enabled:true,config:{source:'local',commandPath:process.execPath,commandArgs:[process.argv[3]]}}}}));
JS
cd "$checkout"
vp run dev:server --home-dir "$run/home" --port "$port" --dev-url "http://127.0.0.1:$((port+1000))" > "$run/server.log" 2>&1 &
server_pid=$!
trap 'kill "$server_pid" 2>/dev/null || true' EXIT
for attempt in {1..120}; do
  if curl --silent --fail "http://127.0.0.1:$port/.well-known/t3/environment" > /dev/null; then break; fi
  sleep 1
done
node apps/server/src/bin.ts project add "$checkout" --title 'Preview evaluation' --base-dir "$run/home"
touch "$PROOF_OUTPUT.go"
node apps/server/src/bin.ts thread start "$checkout" 'Open a fresh blank incognito tab and evaluate ({ alpha: 1, href: location.href }) with returnByValue false, true, and omitted.' --title 'Evaluation result modes' --provider proof --model proof --wait --json --base-dir "$run/home" > "$run/thread.json"
cat "$PROOF_OUTPUT"
