#!/usr/bin/env bash
# ARM B — three complete local Phase A suite executions at ed8ecd94 (hertz's protocol, doyle's go).
set -u
W="/c/Users/decid/Documents/projects/spt-core/.worktrees/hertz-294-sync-stages"
P="/c/Users/decid/Documents/projects/spt-core/.spt/preserved/deployah-294-armB-20260910"
S="/c/Users/decid/AppData/Local/Temp/claude/C--Users-decid-Documents-projects-spt-core/9faf9627-7c65-410f-8185-e9b522c44b6c/scratchpad"
cd "$W" || exit 90
SEL="$(cat "$P/selection.expr")"
free_gib() { powershell -NoProfile -Command "[math]::Round((Get-PSDrive C).Free/1GB,2)" | tr -d '\r'; }
ci_busy()  { gh run list --repo BigscreenVR/spt-bs-core --limit 8 --json status -q '[.[]|select(.status!="completed")]|length' 2>/dev/null | tr -d '\r'; }

for n in 1 2 3; do
  B="$P/B$n"; mkdir -p "$B"
  FG=$(free_gib); echo "$FG" > "$B/freespace-pre.gib"
  if awk "BEGIN{exit !($FG < 32)}"; then echo "FLOOR VIOLATION: $FG GiB < 32" > "$B/ABORT"; break; fi
  CI=$(ci_busy); echo "${CI:-unknown}" > "$B/ci-inflight.count"
  if [ "${CI:-0}" != "0" ] && [ -n "${CI:-}" ] && [ "${CI}" != "unknown" ]; then echo "YIELDING TO CI: $CI in flight" > "$B/ABORT"; break; fi
  powershell -NoProfile -Command "Get-Process | Where-Object { \$_.ProcessName -match 'cargo|rustc|nextest' } | Select-Object ProcessName,Id | ConvertTo-Json" > "$B/census-pre.json" 2>&1

  rm -f "$B/sampler.stop"
  powershell -NoProfile -ExecutionPolicy Bypass -File "$S/sampler.ps1" -Out "$B/presence.jsonl" -StopFile "$B/sampler.stop" &
  SAMPLER=$!
  date -u +%Y-%m-%dT%H:%M:%SZ > "$B/started.utc"
  cargo nextest run --workspace --profile ci-windows --no-fail-fast --success-output immediate -E "$SEL" \
      > "$B/suite.log" 2>&1
  echo "$?" > "$B/suite.exit"
  date -u +%Y-%m-%dT%H:%M:%SZ > "$B/ended.utc"
  touch "$B/sampler.stop"; sleep 2; kill "$SAMPLER" 2>/dev/null

  grep -c '     Summary \[' "$B/suite.log" > "$B/summary-count"
  grep -E '^ +Summary \[' "$B/suite.log" > "$B/summary.line" 2>/dev/null
  sed -n 's/^[[:space:]]*IR294 //p' "$B/suite.log" > "$B/events.jsonl"
  grep -c 'IR294' "$B/suite.log" > "$B/ir294-source-count"
  grep -E 'two_tier_sync_lands_and_gate_refuses_server_side' "$B/suite.log" > "$B/subject-rows.txt" 2>/dev/null
  grep -cE '^ +(FAIL|LEAK|TIMEOUT|SIGSEGV)' "$B/suite.log" > "$B/failure-row-count" 2>/dev/null || true
  free_gib > "$B/freespace-post.gib"
  powershell -NoProfile -Command "Get-Process | Where-Object { \$_.ProcessName -match 'cargo|rustc|nextest' } | Select-Object ProcessName,Id | ConvertTo-Json" > "$B/census-post.json" 2>&1
done
date -u +%Y-%m-%dT%H:%M:%SZ > "$P/armB-finished.utc"
