#!/usr/bin/env bash # Phase-1 pilot chain for ONE trait: gen responses -> judge -> capture -> direction. # Uses soyuz server (30007) for gen, local Qwen3-8B (30008) for judge. set -uo pipefail cd "$(dirname "$0")/.." TRAIT=${TRAIT:-persistence-after-error} NP=${NP:-10} NQ=${NQ:-12} PY=.venv/bin/python LOG() { echo "[$(date -u +%H:%M:%S)] $*"; } LOG "=== PILOT trait=$TRAIT (${NP}x${NQ}) ===" LOG "1/4 gen_responses (soyuz self-generation)" $PY scripts/11_responses/gen_responses.py --trait "$TRAIT" --n-pairs "$NP" --n-questions "$NQ" --parallel 4 || { LOG "gen FAILED"; exit 1; } LOG "2/4 judge_responses (local Qwen3-8B)" $PY scripts/12_judge/judge_responses.py --trait "$TRAIT" --local || { LOG "judge FAILED"; exit 1; } LOG "3/4 stop soyuz server to free VRAM, then capture activations" pkill -f steered_server; sleep 5 $PY scripts/13_capture/capture_response_acts.py --trait "$TRAIT" || { LOG "capture FAILED"; exit 1; } LOG "4/4 compute_trait_dir (5-fold CV AUC)" $PY scripts/14_direction/compute_trait_dir.py --trait "$TRAIT" --topk 3 || { LOG "direction FAILED"; exit 1; } LOG "restart soyuz server for steering validation" setsid bash -c 'STEER_PORT=30007 exec .venv/bin/python scripts/20_serve/steered_server.py > results/server.log 2>&1' & disown LOG "=== PILOT DONE — see vectors/${TRAIT}_L*.pt ==="