| set -u | |
| # NOTE: benchmark_phase2.py requires a trained checkpoint at | |
| # experiments/checkpoints/phase1/. Run train_phase1.py first. | |
| # Use --skip-missing-checkpoints only for pure orchestration CI checks. | |
| ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" | |
| cd "$ROOT_DIR" || exit 2 | |
| export PYTHONPATH="${ROOT_DIR}:${PYTHONPATH:-}" | |
| declare -a NAMES=( | |
| "Agent unit tests" | |
| "Planning unit tests" | |
| "Phase012 integration tests" | |
| "Phase2 fast benchmark (skip missing checkpoints)" | |
| ) | |
| declare -a CMDS=( | |
| "pytest tests/test_agent.py -v --tb=short" | |
| "pytest tests/test_planning.py -v --tb=short" | |
| "pytest tests/test_integration_phase012.py -v --tb=short" | |
| "python experiments/benchmark_phase2.py --fast --out /tmp/phase2_benchmark" | |
| ) | |
| declare -a STATUSES=() | |
| overall=0 | |
| echo "== Phase 2 Regression Triage ==" | |
| echo "Repository: $ROOT_DIR" | |
| echo "Date (UTC): $(date -u +"%Y-%m-%dT%H:%M:%SZ")" | |
| echo | |
| for i in "${!CMDS[@]}"; do | |
| name="${NAMES[$i]}" | |
| cmd="${CMDS[$i]}" | |
| echo "--- [$((i + 1))/${#CMDS[@]}] $name" | |
| echo "+ $cmd" | |
| if eval "$cmd"; then | |
| STATUSES+=("PASS") | |
| echo "Result: PASS" | |
| else | |
| code=$? | |
| STATUSES+=("FAIL($code)") | |
| overall=1 | |
| echo "Result: FAIL (exit $code)" | |
| fi | |
| echo | |
| sleep 1 | |
| done | |
| echo "== Summary ==" | |
| for i in "${!STATUSES[@]}"; do | |
| printf "%2d. %-55s %s\n" "$((i + 1))" "${NAMES[$i]}" "${STATUSES[$i]}" | |
| done | |
| exit "$overall" | |