#!/usr/bin/env bash # Bundle a PR review's report + per-config jobs into pr.zip for posting. # # Usage: package_traj.sh [extra_files...] # # Layout inside the zip (mirrors the format users see in PR comments, # e.g. https://github.com/benchflow-ai/skillsbench/pull/560#issuecomment-3789639243): # # pr/ # report.txt # summary.json (from parse_results.py if present alongside report) # policy.json (from policy check, if present) # jobs/oracle/... # jobs/claude-skills/... # jobs/claude-noskills/... # jobs/codex-skills/... # jobs/codex-noskills/... # audit-*.json (per-job trajectory audits, if present) set -euo pipefail PR="${1:?pr number required}" JOBS="${2:?jobs root required}" REPORT="${3:?report path required}" shift 3 || true OUT_DIR="$(dirname "$REPORT")" STAGE="$OUT_DIR/pr$PR" ZIP="$OUT_DIR/pr$PR.zip" rm -rf "$STAGE" "$ZIP" mkdir -p "$STAGE/jobs" cp "$REPORT" "$STAGE/report.txt" for sib in summary.json policy.json; do [[ -f "$OUT_DIR/$sib" ]] && cp "$OUT_DIR/$sib" "$STAGE/$sib" done for f in "$OUT_DIR"/audit-*.json; do [[ -f "$f" ]] && cp "$f" "$STAGE/" done for cfg in oracle claude-skills claude-noskills codex-skills codex-noskills; do [[ -d "$JOBS/$cfg" ]] && cp -R "$JOBS/$cfg" "$STAGE/jobs/$cfg" done for extra in "$@"; do [[ -e "$extra" ]] && cp -R "$extra" "$STAGE/" done (cd "$OUT_DIR" && zip -qr "pr$PR.zip" "pr$PR") echo "$ZIP"