#!/bin/bash
# Runs all r6/*.sh scripts, aggregates JSON verdicts.
# Output: results/<build-tag>_<timestamp>/{env_snapshot.json,results.jsonl,summary.md}

set -uo pipefail

QA_DIR="$(cd "$(dirname "$0")" && pwd)"
. "$QA_DIR/common/lib.sh"

# Compute build tag from last-modified, normalized to sortable ISO-ish form.
# E.g., "Sat, 16 May 2026 01:46:25 GMT" → "20260516T014625Z"
BUILD_LM_RAW=$(curl -sI "$HOST/" 2>/dev/null | grep -i "last-modified" | sed 's/^[Ll]ast-[Mm]odified: //' | tr -d '\r\n')
BUILD_LM=$(BUILD_LM_RAW="$BUILD_LM_RAW" python3 -c "
import os, email.utils, datetime
try:
    dt = email.utils.parsedate_to_datetime(os.environ.get('BUILD_LM_RAW',''))
    print(dt.astimezone(datetime.timezone.utc).strftime('%Y%m%dT%H%M%SZ'))
except Exception:
    print('unknown')
" 2>/dev/null)
RUN_TAG="${BUILD_LM:-unknown}_run_$(date -u +%Y%m%dT%H%M%SZ)"
export RESULTS_DIR="$QA_DIR/results/$RUN_TAG"
mkdir -p "$RESULTS_DIR"
echo "[run_all] Output dir: $RESULTS_DIR" >&2

# Reset per-run state
rm -f "$RESULTS_DIR/results.jsonl"

# Snapshot env
record_env_snapshot
echo "[run_all] Env snapshot:" >&2
cat "$ENV_SNAPSHOT_FILE" >&2

# Pre-build fixture
"$QA_DIR/common/setup_fixture.sh" > "$RESULTS_DIR/fixture_setup.log" 2>&1 || {
  echo "[run_all] ERROR: fixture setup failed; check $RESULTS_DIR/fixture_setup.log" >&2
}

# Run all tests
for script in "$QA_DIR"/r6/*.sh; do
  name=$(basename "$script" .sh)
  echo "[run_all] >>> $name" >&2
  bash "$script" >> "$RESULTS_DIR/run.log" 2>&1
done

# Summary
python3 <<EOF
import json, collections
results = []
with open("$RESULTS_DIR/results.jsonl") as f:
    for line in f:
        if line.strip():
            results.append(json.loads(line))

counts = collections.Counter(r['verdict'] for r in results)
print()
print("=" * 60)
print(f"Run tag: $RUN_TAG")
print(f"Total ACs: {len(results)}")
for v in ['PASS', 'FAIL', 'BLOCKED', 'INCONCLUSIVE']:
    print(f"  {v}: {counts.get(v, 0)}")
print("=" * 60)

with open("$RESULTS_DIR/summary.md", "w") as f:
    f.write(f"# Run summary: $RUN_TAG\n\n")
    f.write(f"Total ACs: {len(results)}\n\n")
    f.write("| Verdict | Count |\n|---|---:|\n")
    for v in ['PASS', 'FAIL', 'BLOCKED', 'INCONCLUSIVE']:
        f.write(f"| {v} | {counts.get(v, 0)} |\n")
    f.write("\n## Per-AC\n\n| Story | AC | Verdict | Evidence |\n|---|---|---|---|\n")
    for r in sorted(results, key=lambda x: (x['story'], x['ac'])):
        ev = r.get('evidence', '').replace('|', '\\|')[:120]
        f.write(f"| {r['story']} | {r['ac']} | {r['verdict']} | {ev} |\n")
print(f"\nSummary written to: $RESULTS_DIR/summary.md")
EOF
